JP2012009021A - 2つのオペランドに対して演算を行い、その後オペランドの元の値を格納するための命令 - Google Patents
2つのオペランドに対して演算を行い、その後オペランドの元の値を格納するための命令 Download PDFInfo
- Publication number
- JP2012009021A JP2012009021A JP2011133183A JP2011133183A JP2012009021A JP 2012009021 A JP2012009021 A JP 2012009021A JP 2011133183 A JP2011133183 A JP 2011133183A JP 2011133183 A JP2011133183 A JP 2011133183A JP 2012009021 A JP2012009021 A JP 2012009021A
- Authority
- JP
- Japan
- Prior art keywords
- operand
- register
- bit
- instruction
- result
- 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.)
- Granted
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
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【解決手段】 インターロックされたメモリ・オペランドを有する算術/論理命令が実行され、実行時に、メモリ内の位置から第2オペランドを取得し、第2オペランドの一時コピーを保存し、実行は、第2オペランド及び第3オペランドに基づいて、算術演算又は論理演算を行い、結果を第2オペランドのメモリ位置に格納し、その後、一時コピーを第1のレジスタに格納する。
【選択図】 図15
Description
コンピュータ・システムは、主ストレージ内の情報、並びに、アドレッシング、保護、参照、及び変更の記録を含む。アドレッシングの幾つかの態様は、アドレスの形式、アドレス空間の概念、種々のタイプのアドレス、及び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である。
・算術又は論理演算のソース・オペランドとして。
・算術又は論理演算のターゲット・オペランドとして。
・メモリ・オペランドのアドレスとして(基底レジスタ、指標レジスタ、又は直接)。
・メモリ・オペランドの長さとして。
・命令との間で機能コード又は他の情報を提供するといった他の使用。
・プログラム設計(モジュラー・プログラミングのように単純な)は、基底レジスタの過剰使用を最小限にするのに役立った。
・コンパイラは、レジスタの動的な再割り当てを管理するために、レジスタの「色分け」のような技術を使用している。
・以下を用いて、基底レジスタの使用を減らすことができる。:即ち、
・(命令内に)即値定数を有するよりより新しい算術及び論理命令。
・相対−即値オペランド・アドレスを有するより新しい命令。
・長変位を有するより新しい命令。
1つの例示的なz/Architectureの実施形態においては、単一命令においてインターロック更新により(比較及びスワップ(compare−and−swap)タイプの更新を使用するのとは対照的に)、ロード、更新、及びストア操作を行うことを可能にする手段を提供する、interlocked−access(インターロック・アクセス)ファシリティを利用することができる。このファシリティはまた、インターロック・フェッチ方式により、2つの別個の記憶位置からのロードを試みる命令を提供する。このファシリティは、以下の命令、
・LOAD AND ADD
・LOAD AND ADD LOGICAL
・LOAD AND AND
・LOAD AND EXCLUSIVE OR
・LOAD AND OR
・LOAD PAIR DISJOINT
を提供する。
1つの例示的なz/Architectureの実施形態においては、load/store−on−condition(条件付きロード/ストア)ファシリティは、命令の条件コード・マスク・フィールドがPSW内の現在の条件コードに合致したときにのみ、選択された操作を実行できる手段を提供することができる。このファシリティは、以下の命令、
・LOAD ON CONDITION
・STORE ON CONDITION
を提供する。
1つの例示的なz/Architectureの実施形態においては、distinct−operands(独立オペランド)ファシリティは、結果レジスタが、ソース・レジスタのいずれとも異なり得る、代替的な形態の選択された算術命令及び論理命令を提供することができる。このファシリティは、以下の命令、
・ADD
・ADD IMMEDIATE
・ADD LOGICAL
・ADD LOGICAL WITH SIGNED IMMEDIATE
・AND
・EXCLUSIVE OR
・OR
・SHIFT LEFT SINGLE
・SHIFT LEFT SINGLE LOGICAL
・SHIFT RIGHT SINGLE
・SHIFT RIGHT SINGLE LOGICAL
・SUBTRACT
・SUBTRACT LOGICAL
についての代替的な形態を提供する。
1つの例示的なz/Architectureの実施形態においては、population−count(ポピュレーション・カウント)ファシリティは、汎用レジスタの各バイトの1のビット数のカウントを提供するPOPULATION−COUNT命令を提供することができる。
特定の特殊な命令の場合、多数のオペランドについてのフェッチ参照が、他のCPU及びチャネル・プログラムによる特定のアクセスに対して、インターロックされているように見えることがある。そのようなフェッチ参照は、インターロック・フェッチ参照と呼ばれる。インターロック・フェッチ参照と関連したフェッチ・アクセスは、必ずしも連続して行われるとは限らず、インターロック・フェッチ参照のフェッチ・アクセス間に、他のCPUによるストア・アクセスが、インターロック・フェッチ参照と同じ記憶位置において行われないことがある。LOAD PAIR DISJOINT命令に対するストレージ・オペランド・フェッチ参照は、インターロック・フェッチ参照とすることができる。インターロック・フェッチにより、LOAD PAIR DISJOINTが、両方のオペランドをフェッチできるかどうかは、条件コードにより示される。特定の特殊な命令の場合、他のCPU及びチャネル・プログラムによる特定のアクセスに対して、更新参照がインターロックされることがある。このような更新参照を、インターロック更新参照(interlocked-update reference)と呼ぶ。インターロック更新参照と関連したフェッチ・アクセス及びストア・アクセスは、必ずしも連続して行われるとは限らないが、インターロック更新参照のフェッチ・アクセスとストア・アクセスとの間に、他のCPU及びチャネル・プログラムによる全てのストア・アクセス、並びに、他のCPUによるインターロック更新参照と関連したフェッチ・アクセス及びストア・アクセスが、同じ記憶位置で行なわれることが防止される。
一部の参照では、ハーフワード(2バイト)、ワード(4バイト)、ダブルワード(8バイト)、又はクワドワード(16バイト)内の全てのバイト(8ビット)へのアクセスが、他のCPU及びチャネル・プログラムから見ると、ブロック並行処理(block concurrent)に見えるように指定される。このセクションでは、ハーフワード、ワード、ダブルワード、又はクワドワードを、ブロックと呼ぶ。フェッチ・タイプ参照が、ブロック内での並行処理のように見えるよう指定されている場合、そのブロックに含まれるバイトがフェッチされている間、別のCPU又はチャネル・プログラムによるそのブロックへのストア・アクセスは許可されない。ストア・タイプ参照が、ブロック内での並行処理のように見えるよう指定されている場合、そのブロック内のバイトがストアされている間、別のCPU又はチャネル・プログラムによるそのブロックへのアクセス(フェッチ又はストア)は許可されない。
特定の命令は、命令のオペランドに対して、特定オペランドの逐次化(specific-operand-serialization)を行わせることができる。他のCPU及びチャネル・サブシステムから見ると、特定オペランドの逐次化操作は、概念上前にある全てのストレージ・アクセスが、概念上後にある命令の特定ストレージ・アクセスへのアクセスが行われる前に完了されることから成る。他のCPU及びチャネル・プログラムから見ると、特定オペランドの逐次化を行わせる命令が完了すると、その命令のストアが完了する。特定オペランドの逐次化は、以下の命令:
・インターロック・アクセス・ファシリティがインストールされており、第1オペランドが、オペランドのサイズに対して整数である境界上に位置合わせされている場合の、第1オペランドに対する、ADD IMMEDIATE(ASI、AGSI)及びADD LOGICAL WITH SIGNED IMMEDIATE
・第2オペランドに対する、LOAD AND ADD、LOAD AND ADD LOGICAL、LOAD AND AND、LOAD AND EXCLUSIVE OR、LOAD AND OR
の実行によって行われる。
IBM z/Architecture及びその前身のマルチプロセッサ・アーキテクチャ(後のSystem360まで遡る)は、特定の「インターロック更新(interlocked−update)」命令を実装している。インターロック更新命令は、命令を実行するCPUが、メモリがフェッチされた時点からこれが再びストアされるまで、そのメモリ位置に対する排他的なアクセスを有することを保証する。これにより、同じ記憶位置にアクセスしようとするマルチ・プロセッサ構成の複数のCPUが、間違った結果を見ないことが保証される。
この命令グループは、メモリ位置(第2オペランド)から汎用レジスタ(第1オペランド)に値をロードし、汎用レジスタ(第3オペランド)内の値に算術演算又はブール演算を行い、演算の結果を、再びメモリ位置に入れる。第2オペランドのフェッチ及びストアは、他のCPUには、ブロック並行処理のインターロック更新であるように見える。
この命令グループは、異なる別個のメモリ位置(第1オペランド及び第2オペランド)からの2つの値を、偶数/奇数対の汎用レジスタ(第3オペランドとして指定される)にロードしようと試みる。インターロック方式で(即ち、値の1つが別のCPUにより変更されることなく)、2つの異なるメモリ位置にアクセスできるかは、条件コードにより示される。
従来技術のSystem z10は、命令内の即値定数を使用してメモリ位置への加算を行うために幾つかの命令:即ち、ADD IMMEDIATE(ASI、AGSI)及びADD LOGICAL WITH SIGNED IMMEDIATE(ALSI、ALGSI)を導入した。本来の定義では、これらの命令によるメモリ・アクセスは、インターロック更新ではなかった。インターロック更新ファシリティがインストールされており、これらの命令についてのメモリ・オペランドが整数境界上に位置合わせされている場合、オペランドのフェッチ/加算/ストアは、ブロック並行処理のインターロック更新であるように定義される。
以下は、Interlocked−Storage−Access(インターロック・ストレージ・アクセス)命令の例である。
命令がコンピュータ・システムにより実行されると、第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.LOAD AND ADD、LOAD AND ADD LOGICAL、LOAD AND AND、LOAD AND EXCLUSIVE OR、及びLOAD AND ORの操作は、以下のように表現することができる。
temp←operand_2;operand_2←operand_2 OP operand_3;operand_1←temp;OPは、命令によって実行される算術操作又は論理操作を表す。
命令がコンピュータ・システムにより実行されると、第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)
・操作例外(インターロック・アクセス・ファシリティがインストールされていない場合)
・指定例外
プログラミング上の注意:LOAD AND ADDについてのプログラミング上の注意を参照されたい。
命令がコンピュータ・システムにより実行されると、第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)
・操作例外(インターロック・アクセス・ファシリティがインストールされていない場合)
・指定例外
プログラミング上の注意:LOAD AND ADDについてのプログラミング上の注意を参照されたい。
命令がコンピュータ・システムにより実行されると、第2オペランドと第3オペランドの排他的論理和(EXCLUSIVE OR)が、第2オペランド位置に入れられる。その後、第2オペランドの元の内容(排他的論理和演算前の)は変更されずに、第1オペランド位置に入れられる。LAXオペコードの場合、オペランドは32ビットである。LAXGオペコードの場合、オペランドは64ビットである。連結子exclusive ORは、ビット単位でオペランドに適用される。2つのオペランドの対応するビット位置のビットが異なる場合には、結果のビット位置の内容が1に設定され、そうでない場合には、結果ビットが0に設定される。ロード目的の第2オペランドのフェッチ、及び第2オペランド位置へのストアは、他のCPUから見ると、ブロック並行処理のインターロック更新参照であるように見える。特定オペランドの逐次化操作が行われる。変位は、20ビットの符号付き2進整数として扱われる。LAXの第2オペランドは、ワード境界上に指定されなければならない。LAXGの第2オペランドは、ダブルワード境界上に指定されなければならない。そうでない場合、指定例外が生じる。
結果として得られる条件コード:
0 結果は0である
1 結果は0でない
2 −−
3 −−
プログラム例外:
・アクセス例外(フェッチ及びストア、オペランド2)
・操作例外(インターロック・アクセス・ファシリティがインストールされていない場合)
・指定例外
プログラミング上の注意:LOAD AND ADDについてのプログラミング上の注意を参照されたい。
命令がコンピュータ・システムにより実行されると、第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)
・操作例外(インターロック・アクセス・ファシリティがインストールされていない場合)
・指定例外
プログラミング上の注意:LOAD AND ADDについてのプログラミング上の注意を参照されたい。
命令がコンピュータ・システムにより実行されると、汎用レジスタR3は、偶数/奇数レジスタ対の偶数レジスタを指定する。第1オペランドは変更されずに、第3オペランドの偶数レジスタに入れられ、第2オペランドは変更されずに、第3オペランドの奇数レジスタに入れられる。条件コードは、第1及び第2オペランドが、ブロック並行処理のインターロック・フェッチによってフェッチされたように見えるかどうかを示す。LPDオペコードの場合、第1及び第2オペランドは、ストレージ内のワードであり、第3オペランドは、汎用レジスタR3及びR3+1のビット32−63にあり、レジスタのビット0−31は変更されない。LPDGオペコードの場合、第1及び第2オペランドは、ストレージ内のダブルワードであり、第3オペランドは、汎用レジスタR3及びR3+1のビット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である場合、プログラムは分岐し、LOAD PAIR DISJOINT命令を再実行することができる。しかしながら、インターロック・フェッチを得ようとする試みが繰り返し不成功に終わった後、プログラムは、ストレージ・オペランドへのアクセスを逐次化する代替的な手段を使用すべきである。代替的な経路に分岐する前に、プログラムが、LOAD PAIR DISJOINTを10回以上再実行しないことが推奨される。
3.プログラムは、決して条件コード0が設定されない状況に適合できなくてはならない。
以下は、例示的Load/Store−on−condition命令である:
命令がコンピュータ・システムにより実行されると、条件コードが、M3により指定された値のうちの1つを有する場合には、第2オペランドは、変更されずに、第1オペランド位置に入れられ、そうでない場合には、第1オペランドは変更されないままである。LOC及びLROCの場合、第1及び第2オペランドは32ビットであり、LGOCオペコード及びLGROCオペコードの場合、第1及び第2オペランドは64ビットである。M3フィールドは、4ビットのマスクとして使用される。4つの条件コード(0、1、2、及び3)は、次のように左から右へ、マスクの4つのビットに対応する。
条件コード:コードは変更されないままである。
プログラム例外:
・アクセス例外(フェッチ、LOC及びLGOCのオペランド2)
・操作例外(load/store−on−conditionファシリティがインストールされていない場合)
プログラミング上の注意:
1.M3フィールドが0を含む場合、命令は、NOPとして機能する。M3フィールドが全て1を含み、例外条件が存在しない場合、常にロード操作が実行される。しかしながら、これらは、それぞれNOP又は条件なしロードを実施する好ましい手段ではない。
2.LOC及びLGOCの場合、M3フィールドにより指定された条件が満たされないとき、第2オペランドがキャッシュに持ち込まれるかどうかは、モデルによって決まる。
3.LOAD ON CONDITIONが指標レジスタを提供しない点を除いて、LOAD ON CONDITIONは、別個のBRANCH ON CONDITION命令にLOAD命令が続くのと似た機能を提供する。例えば、以下の2つの命令シーケンスは等しい。予測分岐を実施するモデルにおいては、CPUが分岐条件を成功裏に予測できるとき、BRANCH ON CONDITION命令とLOAD命令の組み合わせは、LOAD ON CONDITION命令よりも幾分良好に機能し得る。しかしながら、条件がより不規則であるときのように、CPUが分岐条件を成功裏に予測できないモデルにおいては、LOAD ON CONDITION命令は、著しい性能の改善をもたらすことができる。
命令がコンピュータ・システムにより実行されると、条件コードが、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)アクセス例外が生じる、(b)PERストレージ変更イベントが生じる、(c)PERゼロ・アドレス検出イベントが生じる、又は(d)変更ビットが設定される、のいずれか又は全てが発生するかどうかは、モデルによって決まる。
条件コード:コードは変更されないままである。
プログラム例外:
・アクセス例外(ストア、オペランド2)
・操作例外(load/store−on−conditionファシリティがインストールされていない場合)
プログラミング上の注意:
1.M3フィールドが0を含む場合、命令は、NOPとして機能する。M3フィールドが全て1を含み、例外条件が存在しない場合、常にストア操作が実行される。しかしながら、これらは、それぞれNOP又は条件なしストアを実施する好ましい手段ではない。
2.M3フィールドにより指定された条件が満たされないとき、第2オペランドがキャッシュに持ち込まれるかどうかは、モデルによって決まる。
3.STORE ON CONDITIONが指標レジスタを提供しない点を除いて、STORE ON CONDITIONは、別個のBRANCH ON CONDITION命令にSTORE命令が続くのと似た機能を提供する。例えば、以下の2つの命令シーケンスは等しい。予測分岐を実施するモデルにおいては、CPUが分岐条件を成功裏に予測できるとき、BRANCH ON CONDITION命令とSTORE命令の組み合わせは、STORE ON CONDITION命令よりも幾分良好に機能し得る。しかしながら、条件がより不規則であるときのように、CPUが分岐条件を成功裏に予測できないモデルにおいては、STORE ON CONDITION命令は、著しい性能の改善をもたらすことができる。
以下は、例示的なDistinct−operandsファシリティ命令である:
命令がコンピュータ・システムにより実行されると、ADD(A、AG、AGF、AGFR、AGR、AR、及びAYオペコード)及びADD IMMEDIATE(AFI、AGFI、AGSI、及びASIオペコード)の場合は、第2オペランドが第1オペランドに加算され、和が第1オペランド位置に入れられる。ADD(AGRK及びARK)及びADD IMMEDIATE(AGHIK及びAHIKオペコード)の場合は、第2オペランドが第3オペランドに加算され、和が第1オペランド位置に入れられる。
結果として得られる条件コード:
0 結果が0であり、オーバーフローは発生しない
1 結果が0より小さく、オーバーフローは発生しない
2 結果が0より大きく、オーバーフローは発生しない
3 オーバーフロー
・アクセス例外(フェッチ及びストア、AGSI及びASIのオペランド1のみ;フェッチ、A、AY、AG、及びAGFのオペランド2のみ)
・固定小数点オーバーフロー例外
・操作例外(AY、長変位ファシリティがインストールされていない場合;AFI及びAGFI、extended immediateファシリティがインストールされていない場合;AGSI及びASI、一般命令拡張ファシリティがインストールされていない場合;ARK、AGRK、AHIK及びAGHIK、distinct−operandsファシリティがインストールされていない場合)
プログラミング上の注意:
1.ADD IMMEDIATE(AGSI及びASI)の第1オペランドへのアクセスは、ストレージから第1オペランドをフェッチし、その後、更新された値をストアすることから成る。インターロック・アクセス・ファシリティがインストールされていない場合、又は、第1オペランドが、そのサイズに対応する整数境界上に位置合わせされていない場合、第1オペランドへのフェッチ・アクセス及びストア・アクセスは、必ずしもフェッチ・アクセスの直後にストア・アクセスが行われるとは限らない。このような条件下では、別のCPU又はチャネル・サブシステムもまたその記憶位置を更新できる可能性がある場合には、ストレージ内の位置を更新するのに、ADD IMMEDIATE(AGSI及びASI)を安全に使用することができない。インターロック・アクセス・ファシリティがインストールされており、第1オペランドが、そのサイズに対応する整数境界上に位置合わせされている場合、ブロック並行処理のインターロック更新を使用して、オペランドにアクセスされる。
2.算術演算におけるオーバーフロー条件を無視する特定のプログラミング言語の場合、条件コード3を設定することにより、結果の符号が不明瞭になる。しかしながら、ADD IMMEDIATEの場合、分岐マスクを設定する際、I2フィールドの符号(コード生成の時点で既知である)を使用することができ、これにより、結果の符号が正確に決定される。
命令がコンピュータ・システムにより実行されると、ADD LOGICAL(AL、ALG、ALGF、ALGFR、ALGR、ALR、及びALYオペコード)及びADD LOGICAL IMMEDIATE(ALGFI及びALFIオペコード)の場合は、第2オペランドが第1オペランドに加算され、和が第1オペランド位置に入れられる。
結果として得られる条件コード:
0 結果は0であり、繰り上がりはない
1 結果は0でなく、繰り上がりはない
2 結果は0であり、繰り上がる
3 結果は0でなく、繰り上がる
プログラム例外:
・アクセス例外(フェッチ、AL、ALY、ALG、及びALGFのオペランド2のみ)
・操作例外(ALY、長変位ファシリティがインストールされていない場合;ALFI及びALGFI、extended immediateファシリティがインストールされていない場合;ALRK及びALGRK、distinct−operandsファシリティがインストールされていない場合)
命令がコンピュータ・システムにより実行されると、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進整数として扱われる。
結果として得られる条件コード:
0 結果は0であり、繰り上がりはない
1 結果は0でなく、繰り上がりはない
2 結果は0であり、繰り上がる
3 結果は0でなく、繰り上がる
命令がコンピュータ・システムにより実行されると、N、NC、NG、NGR、NI、NIY、NR、及びNYオペコードの場合は、第1オペランドと第2オペランドの論理積(AND)が、第1オペランド位置に入れられる。NGRK及びNRKの場合、第2オペランドと第3オペランドの論理積は、第1オペランド位置に入れられる。連結子ANDは、ビット単位でオペランドに適用される。両方のオペランドの対応するビット位置が1を含む場合、結果のビット位置の内容が1に設定され、そうでない場合には、結果ビットが0に設定される。AND(NCオペコード)の場合、各々のオペランドは、左から右へと処理される。オペランドがオーバーラップするときは、オペランドが一度に1バイトずつ処理され、各々の結果バイトは、必要なオペランド・バイトをフェッチした直後に格納されるかのように、結果が取得される。AND(NI及びNIYオペコード)の場合、第1オペランドの長さは1バイトであり、1バイトのみが格納される。AND(N、NR、NRK、及びNY)の場合、オペランドは32ビットであり、AND(NG、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、distinct operandsファシリティがインストールされていない場合)
命令がコンピュータ・システムにより実行されると、X、XC、XG、XGR、XI、XIY、XR、及びXYオペコードの場合、第1オペランドと第2オペランドの排他的論理和(EXCLUSIVE OR)が、第1オペランド位置に入れられる。XGRK及びXRKオペコードの場合、第2オペランドと第3オペランドの排他的論理和が、第1オペランド位置に入れられる。連結子EXCLUSIVE ORは、ビット単位でオペランドに適用される。2つのオペランドの対応するビット位置のビットが異なる場合、結果のビット位置の内容が1に設定され、そうでない場合には、結果ビットが0に設定される。EXCLUSIVE OR(XCオペコード)の場合、各々のオペランドは、左から右へと処理される。オペランドがオーバーラップするときは、オペランドが一度に1バイトずつ処理され、各々の結果バイトは、必要なオペランド・バイトをフェッチした直後に格納されるかのように、結果が取得される。EXCLUSIVE OR(XI、XIYオペコード)の場合、第1オペランドの長さは1バイトであり、1バイトのみが格納される。EXCLUSIVE OR(X、XR、XRK、及びXYオペコード)の場合、オペランドは32ビットであり、EXCLUSIVE OR(XG、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、distinct operandsファシリティがインストールされていない場合)
プログラミング上の注意:
1.−
2.EXCLUSIVE ORは、ビットを反転するために使用することができ、この操作は、プログラム式2進スイッチのテスト及び設定の際に特に有用である。
3.あるフィールドとそのフィールド自体との排他的論理和は、全て0になる。
4.EXCLUSIVE OR(XR又はXGR)の場合、A EXCLUSIVE−OR B、B EXCLUSIVE−OR A、A EXCLUSIVE−OR Bというシーケンスの結果、付加的な汎用レジスタを使用することなく、AとBの内容が交換される。
5.EXCLUSIVE OR(XI)及びEXCLUSIVE OR(XC)の第1オペランドへのアクセスは、ストレージから第1オペランドのバイトをフェッチし、その後、更新された値をストアすることから成る。特定のバイトへのこれらのフェッチ・アクセス及びストア・アクセスは、必ずしもフェッチ・アクセスの直後にストア・アクセスが行われるとは限らない。従って、別のCPU又はチャネル・プログラムもまたその記憶位置を更新できる可能性がある場合には、ストレージ内の記憶位置を更新するのに、EXCLUSIVE ORを安全に使用することはできない。
命令がコンピュータ・システムにより実行されると、O、OC、OG、OGR、OI、OIY、OR、及びOYオペコードの場合は、第1オペランドと第2オペランドの論理和(OR)が、第1オペランド位置に入れられる。OGRK及びORKの場合、第2オペランドと第3オペランドの論理和が、第1オペランド位置に入れられる。連結子ORは、ビット単位でオペランドに適用される。一方又は両方のオペランドの対応するビット位置が1を含む場合には、結果のビット位置の内容が1に設定され、そうでない場合には、結果ビットが0に設定される。OR(OCオペコード)の場合、各々のオペランドは、左から右へと処理される。オペランドがオーバーラップするときは、オペランドが一度に1バイトずつ処理され、各々の結果バイトは、必要なオペランド・バイトをフェッチした直後に格納されるかのように、結果が取得される。OR(OI、OIYオペコード)の場合、第1オペランドの長さは1バイトであり、1バイトのみが格納される。OR(O、OR、ORK、及びOYオペコード)の場合、オペランドは32ビットであり、OR(OG、OGR、及びOGRKオペコード)の場合、オペランドは64ビットである。O、OI、及びOCの両オペランドの変位は、12ビットの符号なし2進整数として扱われる。OY、OIY、及びOGの変位は、20ビットの符号付き2進整数として扱われる。
結果として得られる条件コード:
0 結果は0である
1 結果は0でない
2 −−
3 −−
命令がコンピュータ・システムにより実行されると、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ファシリティがインストールされていない場合)
命令がコンピュータ・システムにより実行されると、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ファシリティがインストールされていない場合)
命令がコンピュータ・システムにより実行されると、SRAオペコードの場合は、符号付き第1オペランドの31ビットの数値部分が、第2オペランド・アドレスにより指定されるビット数だけ右にシフトされ、結果は、第1オペランド位置に入れられる。汎用レジスタR1のビット0−32は、変更されないままである。SRAKオペコードの場合は、符号付き第3オペランドの31ビットの数値部分が、第2オペランド・アドレスにより指定されるビット数だけ右にシフトされ、結果の左側に第3オペランドの符号ビットを付加したものが、第1オペランド位置に入れられる。汎用レジスタR1のビット0−32は、変更されないままである。SHIFT RIGHT SINGLE(SRAGオペコード)の場合は、符号付き第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.SHIFT RIGHT SINGLE(SRA及びSRAK)の場合は、シフト量が31から63までの範囲内である場合、数値部分の全体がレジスタから外にシフトされ、初期内容が負であったかどうかによって、−1又は0の結果が残る。SHIFT RIGHT SINGLE(SRAG)の場合は、シフト量が63の場合に同じ結果が生じる。
命令がコンピュータ・システムにより実行されると、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ファシリティがインストールされていない場合)
命令がコンピュータ・システムにより実行されると、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になり、オーバーフローは発生しない。
命令がコンピュータ・システムにより実行されると、SUBTRACT LOGICAL(SL、SLG、SLGF、SLGFR、SLGR、SLR、SLY)及びSUBTRACT LOGICAL IMMEDIATEの場合は、第1オペランドから第2オペランドが減算され、差が第1オペランド位置に入れられる。SUBTRACT LOGICAL(SLGRK及びSLRK)の場合は、第2オペランドから第3オペランドが減算され、差が第1オペランド位置に入れられる。SUBTRACT LOGICAL(SL、SLR、SLRK、及びSLY)及びSUBTRACT LOGICAL IMMEDIATE(SLFI)の場合は、オペランドと差は、32ビットの符号なし2進整数として扱われる。SUBTRACT LOGICAL(SLG、SLGR、及びSLGRK)の場合は、それらは、64ビットの符号なし2進整数として扱われる。SUBTRACT LOGICAL(SLGFR,SLGF)及びSUBTRACTLOGICAL IMMEDIATE(SLGFI)の場合は、第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、extended immediateファシリティがインストールされていない場合;SLRK及びSLGRK、distinct−operandsファシリティがインストールされていない場合)
プログラミング上の注意:
1.論理減算は、第2オペランドの1の補数と値1とを、第1オペランドに加算することによって行われる。第2オペランドの2の補数の代わりに、1の補数と値1を使用するため、第2オペランドが0のときは繰り上がりが生じる。
2.SUBTRACT LOGICALがSUBTRACTと異なるのは、条件コードの意味、及びオーバーフローについての割り込みが発生しないという点のみである。
3.差が0のときは、常に、SLGR、SLGFR、SLG、及びSLGFではビット位置0からの、又は、SLR、SL、及びSLYではビット位置32からの繰り上がりが生じ、従って、繰り下がりはない。
4.SUBTRACT LOGICALについての条件コード設定は、繰り上がりの有無を示すものと解釈することもできる。
以下は、Population Count命令の一例である:
命令がコンピュータ・システムにより実行されると、汎用レジスタ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のビット総数を求めることができる。
701:オペレーティング・システム(OS)
702、703:アプリケーション・プログラム
OP:オペコード
R1:第1のレジスタ・フィールド
B2:第2のレジスタ・フィールド
R3:第3のレジスタ・フィールド
DH2:第1の変位フィールド
DL2:第2の変位フィールド
Claims (21)
- インターロックされたメモリ・オペランドを有する算術/論理命令を実行するためにコンピュータに実装される方法であって、前記算術/論理命令は、オペコード・フィールドと、第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に記載のコンピュータ・システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/820,768 US20110314263A1 (en) | 2010-06-22 | 2010-06-22 | Instructions for performing an operation on two operands and subsequently storing an original value of operand |
US12/820768 | 2010-06-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012009021A true JP2012009021A (ja) | 2012-01-12 |
JP5039905B2 JP5039905B2 (ja) | 2012-10-03 |
Family
ID=43498494
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011133183A Expired - Fee Related JP5039905B2 (ja) | 2010-06-22 | 2011-06-15 | 2つのオペランドに対して演算を行い、その後オペランドの元の値を格納するための命令 |
Country Status (13)
Country | Link |
---|---|
US (1) | US20110314263A1 (ja) |
EP (1) | EP2419821A1 (ja) |
JP (1) | JP5039905B2 (ja) |
KR (1) | KR101464809B1 (ja) |
CN (1) | CN102298515A (ja) |
AU (1) | AU2010355816A1 (ja) |
BR (1) | BRPI1103258A2 (ja) |
CA (1) | CA2786045A1 (ja) |
MX (1) | MX2012014532A (ja) |
RU (1) | RU2012149548A (ja) |
SG (1) | SG186102A1 (ja) |
WO (1) | WO2011160725A1 (ja) |
ZA (1) | ZA201108701B (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015527632A (ja) * | 2012-06-15 | 2015-09-17 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 動的アドレス変換テーブルを管理する方法、システムおよびコンピュータ・プログラム |
JP2016509715A (ja) * | 2013-01-23 | 2016-03-31 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | VectorChecksum命令を実行するためのコンピュータ・プログラム、コンピュータ・システム及び方法 |
JP2016527650A (ja) * | 2013-08-06 | 2016-09-08 | インテル・コーポレーション | ベクトルポピュレーションカウント機能性を提供する方法、装置、命令、およびロジック |
JP2016529617A (ja) * | 2013-08-06 | 2016-09-23 | インテル・コーポレーション | ゲノム配列決定および配列比較のためのポピュレーションカウント機能性を提供する方法、装置、命令、およびロジック |
JP2020505674A (ja) * | 2017-01-19 | 2020-02-20 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 間接的に指定された位置への条件付き分岐 |
Families Citing this family (63)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5357475B2 (ja) * | 2008-09-09 | 2013-12-04 | ルネサスエレクトロニクス株式会社 | データプロセッサ |
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 |
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 |
WO2013095648A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Three input operand vector add instruction that does not raise arithmetic flags for cryptographic applications |
US9329861B2 (en) * | 2011-12-29 | 2016-05-03 | International Business Machines Corporation | Convert to zoned format from decimal floating point format |
US20140365749A1 (en) * | 2011-12-29 | 2014-12-11 | Venkateswara R. Madduri | Using a single table to store speculative results and architectural results |
US9335993B2 (en) * | 2011-12-29 | 2016-05-10 | International Business Machines Corporation | Convert from zoned format to decimal floating point format |
US9268566B2 (en) | 2012-03-15 | 2016-02-23 | International Business Machines Corporation | Character data match determination by loading registers at most up to memory block boundary and comparing |
US9459868B2 (en) | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Instruction to load data up to a dynamically determined memory boundary |
US9715383B2 (en) | 2012-03-15 | 2017-07-25 | International Business Machines Corporation | Vector find element equal instruction |
US9459864B2 (en) | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Vector string range compare |
US9459867B2 (en) | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Instruction to load data up to a specified memory boundary indicated by the instruction |
US9454366B2 (en) | 2012-03-15 | 2016-09-27 | International Business Machines Corporation | Copying character data having a termination character from one memory location to another |
US9710266B2 (en) * | 2012-03-15 | 2017-07-18 | International Business Machines Corporation | Instruction to compute the distance to a specified memory boundary |
US9280347B2 (en) | 2012-03-15 | 2016-03-08 | International Business Machines Corporation | Transforming non-contiguous instruction specifiers to contiguous instruction specifiers |
US9454367B2 (en) | 2012-03-15 | 2016-09-27 | International Business Machines Corporation | Finding the length of a set of character data having a termination character |
US9588762B2 (en) | 2012-03-15 | 2017-03-07 | International Business Machines Corporation | Vector find element not equal instruction |
US9400650B2 (en) * | 2012-09-28 | 2016-07-26 | Intel Corporation | Read and write masks update instruction for vectorization of recursive computations over interdependent data |
US9804840B2 (en) * | 2013-01-23 | 2017-10-31 | International Business Machines Corporation | Vector Galois Field Multiply Sum and Accumulate instruction |
US9715385B2 (en) | 2013-01-23 | 2017-07-25 | International Business Machines Corporation | Vector exception code |
US9778932B2 (en) | 2013-01-23 | 2017-10-03 | International Business Machines Corporation | Vector generate mask instruction |
US9471308B2 (en) | 2013-01-23 | 2016-10-18 | International Business Machines Corporation | Vector floating point test data class immediate instruction |
US9823924B2 (en) | 2013-01-23 | 2017-11-21 | International Business Machines Corporation | Vector element rotate and insert under mask instruction |
US9582279B2 (en) * | 2013-03-15 | 2017-02-28 | International Business Machines Corporation | Execution of condition-based instructions |
US9448939B2 (en) | 2014-06-30 | 2016-09-20 | International Business Machines Corporation | Collecting memory operand access characteristics during transactional execution |
US9336047B2 (en) | 2014-06-30 | 2016-05-10 | International Business Machines Corporation | Prefetching of discontiguous storage locations in anticipation of transactional execution |
US9710271B2 (en) | 2014-06-30 | 2017-07-18 | International Business Machines Corporation | Collecting transactional execution characteristics during transactional execution |
US9348643B2 (en) | 2014-06-30 | 2016-05-24 | International Business Machines Corporation | Prefetching of discontiguous storage locations as part of transactional execution |
US9600286B2 (en) | 2014-06-30 | 2017-03-21 | International Business Machines Corporation | Latent modification instruction for transactional execution |
US9582413B2 (en) * | 2014-12-04 | 2017-02-28 | International Business Machines Corporation | Alignment based block concurrency for accessing memory |
US20160179548A1 (en) * | 2014-12-22 | 2016-06-23 | Intel Corporation | Instruction and logic to perform an inverse centrifuge operation |
US10310854B2 (en) | 2015-06-30 | 2019-06-04 | International Business Machines Corporation | Non-faulting compute instructions |
US10061539B2 (en) | 2015-06-30 | 2018-08-28 | International Business Machines Corporation | Inaccessibility status indicator |
US11275590B2 (en) | 2015-08-26 | 2022-03-15 | Huawei Technologies Co., Ltd. | Device and processing architecture for resolving execution pipeline dependencies without requiring no operation instructions in the instruction memory |
US9846579B1 (en) | 2016-06-13 | 2017-12-19 | Apple Inc. | Unified integer and floating-point compare circuitry |
US10761979B2 (en) * | 2016-07-01 | 2020-09-01 | Intel Corporation | Bit check processors, methods, systems, and instructions to check a bit with an indicated check bit value |
US10296342B2 (en) * | 2016-07-02 | 2019-05-21 | Intel Corporation | Systems, apparatuses, and methods for cumulative summation |
US9852202B1 (en) * | 2016-09-23 | 2017-12-26 | International Business Machines Corporation | Bandwidth-reduced coherency communication |
US10127015B2 (en) * | 2016-09-30 | 2018-11-13 | International Business Machines Corporation | Decimal multiply and shift instruction |
US10564965B2 (en) * | 2017-03-03 | 2020-02-18 | International Business Machines Corporation | Compare string processing via inline decode-based micro-operations expansion |
CN109754061B (zh) * | 2017-11-07 | 2023-11-24 | 上海寒武纪信息科技有限公司 | 卷积扩展指令的执行方法以及相关产品 |
CN111258645B (zh) * | 2018-11-30 | 2022-12-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258642B (zh) * | 2018-11-30 | 2022-10-04 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258652B (zh) * | 2018-11-30 | 2022-12-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258643B (zh) * | 2018-11-30 | 2022-08-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258644B (zh) * | 2018-11-30 | 2022-08-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258635B (zh) * | 2018-11-30 | 2022-12-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258637B (zh) * | 2018-11-30 | 2022-08-05 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258646B (zh) * | 2018-11-30 | 2023-06-13 | 上海寒武纪信息科技有限公司 | 指令拆解方法、处理器、指令拆解装置及存储介质 |
CN111258647B (zh) * | 2018-11-30 | 2022-12-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258640B (zh) * | 2018-11-30 | 2022-10-04 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258638B (zh) * | 2018-11-30 | 2022-10-04 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258770B (zh) * | 2018-11-30 | 2023-10-10 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
CN111258639B (zh) * | 2018-11-30 | 2022-10-04 | 上海寒武纪信息科技有限公司 | 数据处理方法、处理器、数据处理装置及存储介质 |
US10884664B2 (en) | 2019-03-14 | 2021-01-05 | Western Digital Technologies, Inc. | Executable memory cell |
US10884663B2 (en) * | 2019-03-14 | 2021-01-05 | Western Digital Technologies, Inc. | Executable memory cells |
US20200401412A1 (en) * | 2019-06-24 | 2020-12-24 | Intel Corporation | Hardware support for dual-memory atomic operations |
CN112905528A (zh) * | 2021-02-09 | 2021-06-04 | 深圳市众芯诺科技有限公司 | 基于物联网的智能家居芯片 |
CN113835927B (zh) * | 2021-09-23 | 2023-08-11 | 武汉深之度科技有限公司 | 一种指令执行方法、计算设备及存储介质 |
CN114116005B (zh) * | 2021-11-29 | 2022-12-23 | 海飞科(南京)信息技术有限公司 | 基于aigpu架构的立即数数据存储方法 |
CN114816526B (zh) * | 2022-04-19 | 2022-11-11 | 北京微核芯科技有限公司 | 基于操作数域复用的多操作数指令的处理方法及其装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH096614A (ja) * | 1995-06-21 | 1997-01-10 | Sanyo Electric Co Ltd | データ処理装置 |
JP2004038750A (ja) * | 2002-07-05 | 2004-02-05 | Fujitsu Ltd | プロセッサ及び命令制御方法 |
WO2006018822A1 (en) * | 2004-08-20 | 2006-02-23 | Koninklijke Philips Electronics, N.V. | Combined load and computation execution unit |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2835103B2 (ja) * | 1989-11-01 | 1998-12-14 | 富士通株式会社 | 命令指定方法及び命令実行方式 |
KR100379837B1 (ko) * | 2000-06-30 | 2003-04-11 | 주식회사 에이디칩스 | 확장명령어 축약장치 |
EP1470476A4 (en) * | 2002-01-31 | 2007-05-30 | Arc Int | CONFIGURABLE DATA PROCESSOR WITH MULTI-LENGTH INSTRUCTION KIT ARCHITECTURE |
US7437537B2 (en) * | 2005-02-17 | 2008-10-14 | Qualcomm Incorporated | Methods and apparatus for predicting unaligned memory access |
US7627723B1 (en) * | 2006-09-21 | 2009-12-01 | Nvidia Corporation | Atomic memory operators in a parallel processor |
US20090182988A1 (en) * | 2008-01-11 | 2009-07-16 | International Business Machines Corporation | Compare Relative Long Facility and Instructions Therefore |
-
2010
- 2010-06-22 US US12/820,768 patent/US20110314263A1/en not_active Abandoned
- 2010-11-08 RU RU2012149548/08A patent/RU2012149548A/ru unknown
- 2010-11-08 WO PCT/EP2010/067047 patent/WO2011160725A1/en active Application Filing
- 2010-11-08 CA CA2786045A patent/CA2786045A1/en not_active Abandoned
- 2010-11-08 MX MX2012014532A patent/MX2012014532A/es not_active Application Discontinuation
- 2010-11-08 EP EP10776352A patent/EP2419821A1/en not_active Withdrawn
- 2010-11-08 SG SG2012087854A patent/SG186102A1/en unknown
- 2010-11-08 AU AU2010355816A patent/AU2010355816A1/en not_active Abandoned
-
2011
- 2011-05-27 KR KR1020110050924A patent/KR101464809B1/ko not_active IP Right Cessation
- 2011-06-15 JP JP2011133183A patent/JP5039905B2/ja not_active Expired - Fee Related
- 2011-06-22 BR BRPI1103258A patent/BRPI1103258A2/pt not_active Application Discontinuation
- 2011-06-22 CN CN201110168746XA patent/CN102298515A/zh active Pending
- 2011-11-25 ZA ZA2011/08701A patent/ZA201108701B/en unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH096614A (ja) * | 1995-06-21 | 1997-01-10 | Sanyo Electric Co Ltd | データ処理装置 |
JP2004038750A (ja) * | 2002-07-05 | 2004-02-05 | Fujitsu Ltd | プロセッサ及び命令制御方法 |
WO2006018822A1 (en) * | 2004-08-20 | 2006-02-23 | Koninklijke Philips Electronics, N.V. | Combined load and computation execution unit |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015527632A (ja) * | 2012-06-15 | 2015-09-17 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 動的アドレス変換テーブルを管理する方法、システムおよびコンピュータ・プログラム |
JP2016509715A (ja) * | 2013-01-23 | 2016-03-31 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | VectorChecksum命令を実行するためのコンピュータ・プログラム、コンピュータ・システム及び方法 |
JP2016527650A (ja) * | 2013-08-06 | 2016-09-08 | インテル・コーポレーション | ベクトルポピュレーションカウント機能性を提供する方法、装置、命令、およびロジック |
JP2016529617A (ja) * | 2013-08-06 | 2016-09-23 | インテル・コーポレーション | ゲノム配列決定および配列比較のためのポピュレーションカウント機能性を提供する方法、装置、命令、およびロジック |
US10223120B2 (en) | 2013-08-06 | 2019-03-05 | Intel Corporation | Methods, apparatus, instructions and logic to provide population count functionality for genome sequencing and alignment |
JP2019050039A (ja) * | 2013-08-06 | 2019-03-28 | インテル・コーポレーション | ゲノム配列決定および配列比較のためのポピュレーションカウント機能性を提供する方法、装置、命令、およびロジック |
US10678546B2 (en) | 2013-08-06 | 2020-06-09 | Intel Corporation | Methods, apparatus, instructions and logic to provide population count functionality for genome sequencing and alignment |
JP2020505674A (ja) * | 2017-01-19 | 2020-02-20 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 間接的に指定された位置への条件付き分岐 |
JP7324142B2 (ja) | 2017-01-19 | 2023-08-09 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 間接的に指定された位置への条件付き分岐 |
Also Published As
Publication number | Publication date |
---|---|
MX2012014532A (es) | 2013-04-03 |
CN102298515A (zh) | 2011-12-28 |
JP5039905B2 (ja) | 2012-10-03 |
AU2010355816A1 (en) | 2012-07-05 |
ZA201108701B (en) | 2012-08-29 |
KR20110139100A (ko) | 2011-12-28 |
BRPI1103258A2 (pt) | 2016-01-12 |
EP2419821A1 (en) | 2012-02-22 |
KR101464809B1 (ko) | 2014-11-27 |
SG186102A1 (en) | 2013-01-30 |
WO2011160725A1 (en) | 2011-12-29 |
US20110314263A1 (en) | 2011-12-22 |
CA2786045A1 (en) | 2011-12-29 |
RU2012149548A (ru) | 2014-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5039905B2 (ja) | 2つのオペランドに対して演算を行い、その後オペランドの元の値を格納するための命令 | |
JP5357181B2 (ja) | コンピュータ・システム、その動作方法、及び、コンピュータ・プログラム | |
JP5657074B2 (ja) | 命令が利用可能な汎用レジスタの数を拡張するための上位ワード・ファシリティ | |
US9250904B2 (en) | Modify and execute sequential instruction facility and instructions therefor | |
JP5052678B2 (ja) | コンピュータを動作させる方法及びシステム | |
JP2011509475A5 (ja) | ||
US20090182988A1 (en) | Compare Relative Long Facility and Instructions Therefore | |
US9280480B2 (en) | Extract target cache attribute facility and instruction therefor | |
KR101285072B1 (ko) | 실행 관련 명령어 | |
US20090182985A1 (en) | Move Facility and Instructions Therefore | |
JP2011509473A (ja) | Rotatetheninsertselectedbitsファシリティ及びそのための命令 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20111115 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120117 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120301 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20120417 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20120417 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120511 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150720 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |