JP5692760B2 - 独立ロード/ストア機構およびそのための命令を実行するための方法、システム、およびコンピュータ・プログラム - Google Patents
独立ロード/ストア機構およびそのための命令を実行するための方法、システム、およびコンピュータ・プログラム Download PDFInfo
- Publication number
- JP5692760B2 JP5692760B2 JP2012553198A JP2012553198A JP5692760B2 JP 5692760 B2 JP5692760 B2 JP 5692760B2 JP 2012553198 A JP2012553198 A JP 2012553198A JP 2012553198 A JP2012553198 A JP 2012553198A JP 5692760 B2 JP5692760 B2 JP 5692760B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- memory
- operand
- register
- independent
- 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
- 238000000034 method Methods 0.000 title claims description 106
- 238000004590 computer program Methods 0.000 title claims description 7
- 230000007246 mechanism Effects 0.000 title description 26
- 238000006073 displacement reaction Methods 0.000 claims description 39
- 238000012545 processing Methods 0.000 claims description 20
- 230000004044 response Effects 0.000 claims description 20
- 238000004891 communication Methods 0.000 claims description 7
- 230000000694 effects Effects 0.000 claims description 6
- 238000003860 storage Methods 0.000 description 112
- 230000008569 process Effects 0.000 description 54
- 230000006870 function Effects 0.000 description 44
- 238000012360 testing method Methods 0.000 description 27
- 238000013519 translation Methods 0.000 description 17
- 230000014616 translation Effects 0.000 description 17
- 238000007667 floating Methods 0.000 description 12
- 230000009471 action Effects 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 7
- 230000006399 behavior Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 6
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000007774 longterm Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000013475 authorization Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- PWPJGUXAGUPAHP-UHFFFAOYSA-N lufenuron Chemical compound C1=C(Cl)C(OC(F)(F)C(C(F)(F)F)F)=CC(Cl)=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F PWPJGUXAGUPAHP-UHFFFAOYSA-N 0.000 description 2
- 239000003607 modifier Substances 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 101000764644 Homo sapiens Trimethyllysine dioxygenase, mitochondrial Proteins 0.000 description 1
- 102100026223 Trimethyllysine dioxygenase, mitochondrial Human genes 0.000 description 1
- 238000012884 algebraic function Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- BWHMMNNQKKPAPP-UHFFFAOYSA-L potassium carbonate Substances [K+].[K+].[O-]C([O-])=O BWHMMNNQKKPAPP-UHFFFAOYSA-L 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 230000002250 progressing effect Effects 0.000 description 1
- 229920000638 styrene acrylonitrile Polymers 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
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/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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/30163—Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
2.長く複雑なクリティカル・セクションは、マルチプロセッサ・システムにおける性能上のボトルネックである。クリティカル・セクションには一度に1つのプロセスしか入ることができないため、他のプロセスが同じクリティカル・セクションに入らなければならない場合、それらは使用可能になるまで待機しなければならず、この間、強制的にアイドル状態となる可能性がある。この問題に対する望ましい解決策は、任意のクリティカル・セクションの外部で読み取り/修正/書き込みを実行する命令のシーケンスを用いて、共有変数を更新することである。この修正は、整合性が維持されるように、注意深く制御されなければならない。
3.クリティカル・セクションは多くの命令を含むため、プロセスに関する時間量子がクリティカル・セクション内で終わる可能性があり、他のプロセスがプロセッサを制御する一方で、そのプロセスは長い期間中断する可能性がある。クリティカル・セクションに対するロックを保持するプロセスの中断期間中、他のプロセスがクリティカル・セクションに入って、そのクリティカル・セクションによって制御される共有変数を更新することはできない。
ソフトウェア・プログラム・コードをメモリ内、物理メディア上で具体化する、あるいは、ネットワークを介してソフトウェア・コードを配布する、またはそれらすべてのための、技法および方法は、良く知られているため、本明細書ではこれ以上考察しない。プログラム・コードは、有形のメディア(電子メモリモジュール(RAM)、フラッシュ・メモリ、コンパクト・ディスク(CD)、DVD、磁気テープなどを含むがこれらに限定されない)上で作成および格納された場合、しばしば「コンピュータ・プログラム製品」と呼ばれる。コンピュータ・プログラム製品メディアは、通常、好ましくはコンピュータ・システム内の処理回路によって、処理回路による実行のために読み取り可能である。
コンピュータ・システムは、メイン・ストレージ内に、情報、ならびにアドレス指定、保護、参照および変更の記録を含める。アドレス指定のいくつかの態様には、アドレスの形式、アドレス・スペースの概念、様々なタイプのアドレス、および、1タイプのアドレスが他のタイプのアドレスに変換される際の様式が含まれる。メイン・ストレージの一部には、永続的に割り当てられたストレージ位置が含まれる。メイン・ストレージは、データの直接アドレス指定可能な高速アクセス・ストレージを、システムに提供する。データおよびプログラムは、どちらも処理の前に(入力デバイスから)メイン・ストレージにロードしなければならない。
通常、CPUの動作は、ストレージ・アドレスの昇順で1つずつ左から右へと順次実行される、ストレージ内の命令によって制御される。分岐、LOAD PSW、割り込み、SIGNAL PROCESSOR順序、または手動介入によって、順次動作における変更が生じる可能性がある。
・実行されることになる演算を指定する、演算コード(op code)
・オプションで、関与するオペランドの指定
省略表記を使用することによって完全なアドレスを指定する
オペランドに対して汎用レジスタを採用する命令を使用して、アドレス操作を実行する
他のプログラムから受け取ったアドレスを直接使用することによって、データ領域の位置とは無関係な命令streamOperateを変更することなく、プログラム手段によってアドレスを修正する
・RISは、レジスタおよび即時動作、ならびにストレージ動作を示す。
・RRSは、レジスタおよびレジスタ動作、ならびにストレージ動作を示す。
・SILは、16ビットの即時フィールドを備えた、ストレージおよび即時動作を示す。
X2およびB2フィールドによって指定された汎用レジスタのコンテンツが、第2のオペランド・アドレスを形成するためにD2フィールドまたはDH2およびDL2フィールドのコンテンツに追加される。RISおよびRRS形式、ならびに1つのSS形式では、B4フィールドによって指定された汎用レジスタのコンテンツが、第4のオペランド・アドレスを形成するためにD4フィールドのコンテンツに追加される。
・24ビット・アドレス指定モードでは、どちらの命令も、戻りアドレスを汎用レジスタR1のビット位置40〜63に配置し、そのレジスタのビット0〜31は未変更のままとする。BRANCH AND LINKは、命令に関する命令長コード、ならびに現行PSWからの条件コードおよびプログラム・マスクも、汎用レジスタR1のビット位置32〜39に配置し、BRANCH AND SAVEはそれらビット位置にゼロを配置する。
・31ビット・アドレス指定モードでは、どちらの命令も、汎用レジスタR1のビット位置33〜63に戻りアドレスを、ビット位置32に1を配置し、レジスタのビット0〜31は未変更のままとする。
・64ビット・アドレス指定モードでは、どちらの命令も、汎用レジスタR1のビット位置0〜63に戻りアドレスを配置する。
・いずれのアドレス指定モードでも、どちらの命令も、現行のアドレス指定モードの制御の下で分岐アドレスを生成する。命令は、分岐アドレスのビット0〜63をPSWのビット位置64〜127に配置する。RR形式では、命令のR2フィールドがゼロである場合、どちらの命令も分岐を実行しない。
・BRANCH ANDSAVE AND SET MODEは、BRANCH AND SAVEと同様に汎用レジスタR1のコンテンツを設定する。加えて、命令は、拡張アドレス指定モード・ビット、PSWのビット31を、レジスタのビット位置63に配置する。
・R1が非ゼロの場合、BRANCHAND SET MODEは以下のように実行する。24または31ビット・モードでは、PSWのビット32を汎用レジスタR1のビット位置32に配置し、レジスタのビット0〜31および33〜63を未変更のままとする。レジスタが命令アドレスを含む場合、レジスタのビット63はゼロとなるはずであることに留意されたい。64ビット・モードでは、命令は、PSWのビット31(1)を汎用レジスタR1のビット位置63に配置し、レジスタのビット0〜62を未変更のままとする。
・R2が非ゼロの場合、どちらの命令もアドレス指定モードを設定し、以下のように分岐を実行する。汎用レジスタR2のビット63は、PSWのビット位置31に配置される。ビット63がゼロの場合、レジスタのビット32はPSWのビット位置32に配置される。ビット63が1の場合、PSWビット32は1に設定される。次に分岐アドレスはレジスタのコンテンツから生成されるが、新しいアドレス指定モードの制御の下で、レジスタのビット63がゼロとして扱われる点を除く。命令は分岐アドレスのビット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がゼロである。b.PSWのビット31および32がゼロであって、24ビット・アドレス指定モードを示し、PSWのビット64〜103がすべてゼロではない。c.PSWのビット31がゼロであり、ビット32が1であって、31ビット・アドレス指定モードを示し、PSWのビット64〜96がすべてゼロではない。これは、初期のPSW指定例外として処理される。
4.PSWが奇数命令アドレスを含む。
5.オペランド・アドレスが、整数境界を、こうした整数境界指定を必要とする命令内に指定しない。
6.奇数番号付けされた汎用レジスタが、偶数番号付けされたレジスタ指定を必要とする命令のRフィールドによって指定される。
7.0、1、4、5、8、9、12、または13以外の浮動小数点レジスタが、拡張オペランドに対して指定される。
8.10進演算の乗数または除数が15桁および符号を超える。
9.10進の乗算または除算において、第1オペランド・フィールドの長さが第2オペランド・フィールドの長さよりも短いかまたは等しい。
10.CIPHERMESSAGE、CIPHER MESSAGE WITH CHAINING、COMPUTE INTERMEDIATE MESSAGE DIGEST、COMPUTE LAST MESSAGE DIGEST、またはCOMPUTE MESSAGE AUTHENTICATION CODEの実行が試行され、汎用レジスタ0のビット57〜63内の機能コードが割り当てられていないかまたは導入されていない機能コードを含む。
11.CIPHERMESSAGEまたはCIPHER MESSAGE WITH CHAININGの実行が試行され、R1またはR2フィールドが奇数番号付けされたレジスタまたは汎用レジスタ0を指定する。
12.CIPHERMESSAGE、CIPHER MESSAGE WITH CHAINING、COMPUTE INTERMEDIATE MESSAGE DIGEST、またはCOMPUTE MESSAGE AUTHENTICATION CODEの実行が試行され、第2のオペランド長さが指定された機能のデータ・ブロック・サイズの倍数でない。この指定例外条件は照会機能に適用されない。
13.COMPAREAND FORM CODEWORDの実行が試行され、汎用レジスタ1、2、および3が初期に偶数値を含まない。
32.COMPAREAND SWAP AND STOREの実行が試行され、以下の条件のいずれかが存在する。
・機能コードが割り当てられていない値を指定する。
・ストア特徴が割り当てられていない値を指定する。
・機能コードが0であり、第1のオペランドがワード境界上に指定されていない。
・機能コードが1であり、第1のオペランドがダブルワード境界上に指定されていない。
・第2のオペランドが、ストア値のサイズに対応する整数境界上に指定されていない。
33.COMPARELOGICAL LONG UNICODEまたはMOVE LONG UNICODEの実行が試行され、汎用レジスタR1+1またはR3+1のいずれかのコンテンツが偶数バイトを指定しない。
34.COMPARELOGICAL STRING、MOVE STRING、またはSEARCH STRINGの実行が試行され、汎用レジスタ0のビット32〜55がすべてゼロではない。
35.COMPRESSIONCALLの実行が試行され、汎用レジスタ0のビット48〜51が2進値0000および0110〜1111のいずれかを有する。
36.COMPUTEINTERMEDIATE MESSAGE DIGEST、COMPUTE LAST MESSAGE DIGEST、またはCOMPUTE MESSAGE AUTHENTICATION CODEの実行が試行され、以下のいずれかがあてはまる。
・R2フィールドが奇数番号付けされたレジスタまたは汎用レジスタ0を指定する。
・汎用レジスタ0のビット56がゼロでない。
37.CONVERTHEP TO BFP、CONVERT TO FIXED(BFPまたはHFP)、またはLOAD FP INTEGER(BFP)の実行が試行され、M3フィールドが有効な修正子を指定しない。
38.DIVIDE TOINTEGERの実行が試行され、M4フィールドが有効な修正子を指定しない。
39.EXECUTEの実行が試行され、ターゲット・アドレスが奇数である。
40.EXTRACTSTACKED STATEの実行が試行され、汎用レジスタR2のビット位置56〜63のコードが、ASNおよびLX再使用機構がインストールされていない場合に4より大きいか、またはこの機構がインストールされている場合に5より大きい。
41.FINDLEFTMOST ONEの実行が試行され、R1フィールドが奇数番号付けされたレジスタを指定する。
42.INVALIDATEDAT TABLE ENTRYの実行が試行され、汎用レジスタR2のビット44〜51がすべてゼロではない。
43.LOAD FPCの実行が試行され、FPCレジスタ内のサポートされていないビットに対応する第2のオペランドの1つまたは複数のビットが1である。
44.LOADPAGE-TABLE-ENTRY ADDRESSの実行が試行され、命令のM4フィールドが2進0000〜0100以外のいずれかの値を含む。
45.LOAD PSWの実行が試行され、第2のオペランド・アドレスでダブルワードのビット12がゼロである。これは、この例外が認識されるか否かにかかわらず、モデルに依存している。
46.MONITORCALLの実行が試行され、命令のビット位置8〜11がゼロを含まない。
47.MOVE PAGEの実行が試行され、汎用レジスタ0のビット位置48〜51がゼロを含まないか、またはレジスタのビット52および53がどちらも1である。
48.PACKASCIIの実行が試行され、L2フィールドが31より大きい。
49.PACKUNICODEの実行が試行され、L2フィールドが63より大きいかまたは偶数である。
50.PERFORM FLOATINGPOINT OPERATIONの実行が試行され、汎用レジスタ0のビット32がゼロであり、ビット33〜63の1つまたは複数のフィールドが無効であるかまたは導入されていない機能を指定する。
51.PERFORMLOCKED OPERATIONの実行が試行され、いかのいずれかがあてはまる。・Tビット、汎用レジスタ0のビット55がゼロであR、レジスタのビット56〜63の機能コードが無効である。・汎用レジスタ0のビット32〜54がすべてゼロではない。・アクセス・レジスタ・モードで、ALETを含むパラメータ・リストを使用させる機能コードについて、R3フィールドがゼロである。
52.PERFORMTIMING FACILITY FUNCTIONの実行が試行され、以下のどちらかがあてはまる。・汎用レジスタ0のビット56がゼロでない。・汎用レジスタ0のビット57〜63が割り当てられていないかまたは導入されていない機能コードを指定する。
53.PROGRAMTRANSFERまたはPROGRAM TRANSFER WITH INSTANCEの実行が試行され、以下のすべてにあてはまる。・PSWの拡張アドレス指定モード・ビットがゼロである。・命令のR2フィールドによって指定された汎用レジスタ内の基本アドレス指定モード・ビット、ビット32がゼロである。・同じレジスタ内の命令アドレスのビット33〜39がすべてゼロではない。
54.RESUMEPROGRAMの実行が試行され、以下のどちらかがあてはまる。
・第2のオペランド内のPSWフィールドのビット31、32、および64〜127が、現行PSW内の配置に有効でない。この例外は、以下のいずれかにあてはまる場合に認識される。−ビット31および32がどちらもゼロであり、ビット64〜103がすべてゼロではない。−ビット31および32がそれぞれゼロおよび1であり、ビット64〜96がすべてゼロではない。−ビット31および32がそれぞれ1およびゼロである。−ビット127が1である。
・パラメータ・リストのビット0〜12がすべてゼロではない。
55.SEARCHSTRING UNICODEの実行が試行され、汎用レジスタ0のビット32〜47がすべてゼロではない。
56.SETADDRESS SPACE CONTROLまたはSET ADDRESS SPACE CONTROL FASTの実行が試行され、第2のオペランド・アドレスのビット52および53がどちらもゼロではない。
57.SETADDRESSING MODE(SAM24)の実行が試行され、PSW内の未更新命令アドレスのビット0〜39、PSWのビット64〜103が、すべてゼロではない。
58.SETADDRESSING MODE(SAM31)の実行が試行され、PSW内の未更新命令アドレスのビット0〜32、PSWのビット64〜96が、すべてゼロではない。
59.SET CLOCKPROGRAMMABLE FIELDの実行が試行され、汎用レジスタ0のビット32〜47がすべてゼロではない。
60.SET FPCの実行が試行され、FPCレジスタ内のサポートされていないビットに対応する第1のオペランドの1つまたは複数のビットが1である。
61.STORESYSTEM INFORMATIONの実行が試行され、汎用レジスタ0の機能コードが有効であり、以下のどちらかにあてはまる。 ・汎用レジスタ0のビット36〜55および汎用レジスタ1のビット32〜47が、すべてゼロではない。 ・第2のオペランド・アドレスが4Kバイト境界と整合しない。
62.TRANSLATETWO TO ONEまたはTRANSLATE TWO TO TWOの実行が試行され、汎用レジスタR1+1内の長さが偶数バイトを指定しない。
63.UNPACKASCIIの実行が試行され、L1フィールドが31より大きい。
64.UNPACKUNICODEの実行が試行され、L1フィールドが63より大きいかまたは偶数である。
65.UPDATETREEの実行が試行され、汎用レジスタ4および5の初期コンテンツが24ビットまたは31ビットのアドレス指定モードで8の倍数でないか、または64ビット・アドレス指定モードで16の倍数でない。古いPSWによって識別された命令の実行が抑制される。しかしながら、初期のPSW指定例外の場合(原因1〜3)、新しいPSWを導入する演算は完了するが、その後すぐに割り込みが発生する。好ましくは、命令長コード(ILC)は1、2、または3であり、例外を発生させる命令の長さを示す。命令アドレスが奇数の場合(ページ6〜33の原因4)、ILCが1、2、または3であるかどうかは予測不能である。初期のPSW指定例外によって例外が認識され(原因1〜3)、LOAD PSW、LOAD PSW EXTENDED、PROGRAM RETURN、または割り込みによって、例外が導入された場合、ILCは0である。SET ADDRESSING MODE(SAM24、SAM31)によって例外が導入された場合、ILCは1であるか、またはSET ADDRESSING MODEがEXECUTEのターゲットであった場合は2である。SET SYSTEM MASKによって、またはSTORE THEN OR SYSTEM MASKによって、例外が導入された場合、ILCは2である。
ストレージ・オペランドのバイトがソースとしてのみ命令実行に関与している場合、オペランドはフェッチ・タイプ・オペランドと呼ばれ、この位置への参照はストレージ・オペランド・フェッチ参照と呼ばれる。フェッチ・タイプ・オペランドは、アクセス例外がフェッチに関するものであることを示すことによって、個々の命令定義において識別される。
ストレージ・オペランドのバイトが宛先としてのみ命令実行に関与している場合、その結果に置き換えられるという点で、オペランドはストア・タイプ・オペランドと呼ばれ、位置への参照はストレージ・オペランド・ストア参照と呼ばれる。ストア・タイプ・オペランドは、アクセス例外が格納に関するものであることを示すことによって、個々の命令定義内で識別される。
いくつかの参照では、ハーフワード、ワード、ダブルワード、またはカッドワード内の、すべてのバイトへのアクセスは、他のCPUおよびチャネル・プログラムによって観察されるように、ブロック同時と見られるように指定される。ハーフワード、ワード、ダブルワード、またはカッドワードは、このセクションでブロックと呼ばれる。フェッチ・タイプ参照がブロック内で同時と見られるように指定された場合、ブロックに含まれるバイトがフェッチされている期間、他のCPUまたはチャネル・プログラムによるブロックへのストア・アクセスは許可されない。ストア・タイプ参照がブロック内で同時と見られるように指定された場合、ブロック内のバイトが格納されている期間、他のCPUまたはチャネル・プログラムによるブロックへのフェッチまたはストアのいずれかのアクセスは許可されない。
以下の考察では、シリアル化命令という用語は、1つまたは複数のシリアル化機能を実行させる命令を言い表す。シリアル化演算という用語は、シリアル化機能を実行させる割り込みなどの、命令内の演算の単位またはマシン動作を言い表す。
1.他のCPUおよびチャネル・プログラムによって観察されるように、CPUによる概念上は以前すべてのストレージ・アクセスが完了する。これには、ストレージ・キーへの概念上は以前すべてのストアおよび変更が含まれる。
2.シリアル化演算に関連付けられた通常の機能が実行される。命令実行の場合、オペランドがフェッチされ、結果の格納が完了する。例外は、以前格納が完了する前にオペランドのフェッチが可能なLOAD PSW、LOAD PSW EXTENDED、およびSET PREFIX、ならびに、割り込みコードおよび関連付けられたフィールドがシリアル化の前に格納可能な割り込みである。シリアル化命令のフェッチは命令の実行の前に発生し、以前命令の実行よりも先行することが可能であるが、いかなる以前シリアル化演算の完了よりも先行することはできない。割り込みの場合、古いPSW、割り込みコード、および他の情報があれば格納され、新しいPSWがフェッチされるが、必ずしもその順序であるとは限らない。
3.最後に、概念上は後続の演算に関する命令フェッチおよびオペランド・アクセスが開始可能である。
ある一定の命令は、命令のオペランドに対して特定オペランド・シリアル化を実行させる。他のCPUおよびチャネル・プログラムによって観察されるように、特定オペランド・シリアル化演算は、命令の特定ストレージ・オペランドへの概念上は後続のアクセスが発生する前に、CPUによる概念上は以前のすべてのストレージ・アクセスを完了することにある。特定オペランド・シリアル化を発生させる命令の完了時に、他のCPUおよびチャネル・プログラムによって観察されるように、命令のストアが完了する。
命令が実行される場合、特に、命令が他のプロセッサと共有するリソースにアクセス可能なマルチプロセッサ・システム内で実行される場合、プログラムは、命令が実行されている間に他のプロセッサがリソースにアクセスするのを防ぐために、他のプロセッサに対するリソース可用性をインターロックする必要がある。インターロックしない場合、予測不能な結果が生じる可能性がある。いくつかのアーキテクチャは、命令実行の重要な部分でリソースがインターロックされる命令機能を提供する。共有プロセッサによる混乱にさらされているリソースには、ほとんどのマルチプロセッサ内のメモリおよびメモリ・キャッシュが含まれる。共有可能なプロセッサの他のリソースは知られており、対応するアーキテクチャ文書によって指定されている。リソースをインターロックしないいくつかの命令実行機能は、たとえば、すでに説明した、ストレージ・オペランド・フェッチ参照、ストレージ・オペランド・ストア参照、ブロック同時参照、CPUシリアル化、および特定オペランド・シリアル化である。
Java(R)のようなマルチスレッド・プログラミング言語は、アプリケーション・スレッド全体にわたる状態の正確さおよび一貫性を保証するために、データ構造およびオブジェクトを同期化する必要がある。こうした一貫性を強化するための典型的なメカニズムの1つが、スレッド間で共有されるデータ構造またはオブジェクト内にロック・ワードを埋め込むことである。その後、比較およびスワップのようなアトミック更新命令を使用して、データ構造の所有を同期化することができる。たとえばオブジェクトOについて以下のように考察してみる。
lock_idは、アンロックされた場合にNULL値を保持する。所与のスレッドがオブジェクトOの読み取りまたは書き込みを希望する場合、そのthread_idをlock_idに正常に比較およびスワップ(CAS)して、オブジェクトの所有を要求しなければならない。たとえば、以下のようになる。
本発明は、独立ペア・ロード(LPD)と呼ばれる新しいハードウェア機構を教示する。この機構は、独立メモリ要素のペアをアトミックに読み取るために使用される。これによって、2つの要素に一貫性があったこと、あるいはより精密に言えば、2つの独立メモリ位置がロードされた場合にこれらへの介入する更新が存在しなかったことを、保証するためのメカニズムが提供される。たとえば以下の通りである。
好ましくは(図18)、LSD命令演算コードに基づいて実行された場合903、アトミックにデータをメモリからロード/メモリへストアすること、および、演算がアトミックであるように見えるか否かを示す条件コードを設定することを試行する、1つまたは複数の独立ロード/ストア(LSD)命令を含むプログラムが実行可能である901。プロセッサが、他のプロセッサまたはI/Oデバイスからの介入ストアが、メモリからロードされる(またはメモリにストアされる)データを破損させる可能性がある旨を決定した場合、条件コードはある値(たとえばcc=3)に設定される。プログラムはこの値を(たとえば条件に応じた分岐命令を用いて)チェックし904、演算が非アトミック(cc=3)であるように見える場合、成功するまでLSD命令の試行を所定回数(たとえば10回)反復するなどの処置を講じる。この実施形態では、所定のカウント値が0でなければ906、減分され、LPD命令は再実行される901。試行回数内に成功しなかった場合、LSDストレージ動作をアトミックに実行するための他のインターロック手段を使用する、特別ルーチン909が呼び出される。異なる実施形態が、動作のロードまたは動作のストア、アトミックにアクセスされる1つまたは複数の独立オペランド、および条件コード以外のインジケータの、いずれかをサポートする。
ある実施形態では、図19のマルチプロセッサ・システムのプロセッサ内で、独立ロード/ストア(LSD)命令が実行される。図16を参照すると、独立ロード/ストア命令は、プロセッサのメモリ708から汎用レジスタ707へデータをロードするための実行用に取得され701、独立ロード/ストア命令は演算コードを備え、実行は、取得された演算コードに基づいてLSD指定の演算702を実行することを含み、演算702は、メモリ内の1つまたは複数のオペランドにアクセスすることを含む。マルチプロセッサ・システムの他のプロセッサからのストア・イベントが、メモリ内の1つまたは複数のオペランドへのアクセス時に1つまたは複数のオペランドのうちの1つを修正した可能性があるかどうかの判定703に応答して、第1のインジケータ値を設定し705 706、当該第1のインジケータ値は、マルチプロセッサ・システムの他のプロセッサからのストア・イベントが、メモリ内の1つまたは複数のオペランドへのアクセス時に1つまたは複数のオペランドのうちの1つを修正した可能性があるかどうかを示す。
メモリ内の第2のオペランドの第2のアドレスは、第2の汎用レジスタ・フィールドによって識別された第2の汎用レジスタから取得され802、取得された第2のアドレスはメモリ内の第2のオペランドをフェッチするために使用される。独立ペア・ロード動作は、第3の汎用レジスタ・フィールドによって識別された汎用レジスタの高位部分である第1のレジスタ806内に、第1のオペランドを格納すること、および、第3の汎用レジスタ・フィールドによって識別された汎用レジスタの低位部分である第2のレジスタ807内に、第2のオペランドを格納することを含む。
0 インターロック・フェッチによってロードされたレジスタ・ペア
1 −
2 −
3 インターロック・フェッチによってロードされないレジスタ・ペア
プログラム例外
・アクセス(フェッチ、オペランド1および2)
・オペレーション(インタロック・アクセス機構はインストールされない)
・指定
1.条件コードの設定は、構成内の他のCPUによってアクセスされるストレージに依存する。
2.結果として生じる条件コードが3の場合、プログラムはLOAD PAIR DISJOINT命令を再実行するために分岐を戻ることができる。しかしながら、インターロック・フェッチを達成するために正常でない試行が繰り返された後には、プログラムは、ストレージ・オペランドへのアクセスをシリアル化する代替手段を使用しなければならない。プログラムのLOAD PAIR DISJOINT命令の再実行は、代替経路へ分岐するまでに、多くとも10回までとすることが推奨される。
3. プログラムは、条件コード0が決して設定されない状況に対処できるべきである。
Claims (19)
- マルチプロセッサ・システムのプロセッサ内で独立ロード/ストア(LSD)命令を実行するためのコンピュータ実装方法であって、
実行のための独立ロード/ストア(LSD)命令を取得することを含み、前記独立ロード/ストア(LSD)命令は演算コードを含み、且つ、メモリ内の互いに異なるオペランドとして扱われる複数のオペランドにアクセスするためのものであり、前記実行は、
前記取得された演算コードに基づいてLSD指定演算を実行することであって、前記演算は、メモリ内の前記複数のオペランドにアクセスすることを含む、前記実行することと、
前記マルチプロセッサ・システムの他のプロセッサからのストア・イベントが、メモリ内の前記複数のオペランドへの前記アクセス時に前記複数のオペランドのうちの1つを修正した可能性があるかどうかの判定に応答して、第1のインジケータ値を設定することであって、前記第1のインジケータ値は、前記マルチプロセッサ・システムの他のプロセッサからのストア・イベントが、メモリ内の前記複数のオペランドへの前記アクセス時に前記複数のオペランドのうちの1つを修正した可能性があるかどうかを示す、前記設定することと
を含む、前記方法。 - 前記第1のインジケータ値は、第1の条件コード値または第2の条件コード値のいずれか1つを備え、
前記方法はさらに、
ストア・イベントが、前記複数のオペランドのうちの、前記メモリ内の第1のオペランドまたは前記メモリ内の第2のオペランドのうちのいずれか1つを前記アクセス時に修正した可能性がある旨の判定に応答して、前記第1の条件コード値を設定することであって、前記第1の条件コード値は、前記メモリ内の前記第1のオペランドまたは前記メモリ内の前記第2のオペランドのいずれかが前記アクセス時に修正された可能性があることを示す、前記設定することと、
前記メモリ内の前記第1のオペランドまたは前記メモリ内の前記第2のオペランドのいずれかを前記アクセス時に修正したストア・イベントはない旨の判定に応答して、前記第2の条件コード値を設定することであって、前記第2の条件コード値は、前記メモリ内の前記第1のオペランドまたは前記メモリ内の前記第2のオペランドのいずれも前記アクセス時に修正されていないことを示す、前記設定することと
を含む、請求項1に記載の方法。 - 前記LSD命令は独立ペア・ロード(LPD)命令であり、メモリ内の前記複数のオペランドにアクセスすることは、メモリから第1のオペランドおよび第2のオペランドをフェッチすることを含み、
前記方法はさらに、
前記フェッチされた第1のオペランドおよび前記フェッチされた第2のオペランドを、前記LPD命令によって指定された1つまたは複数のレジスタ内に格納すること
を含む、請求項2に記載の方法。 - 前記独立ペア・ロード(LPD)命令によって指定された前記1つまたは複数のレジスタは、第1のレジスタおよび第2のレジスタからなるレジスタ・ペアであり、
前記独立ペア・ロード(LPD)命令は、第1の汎用レジスタを識別する第1の汎用レジスタ・フィールドと、第2の汎用レジスタを識別する第2の汎用レジスタ・フィールドと、前記第1のレジスタおよび前記第2のレジスタを識別する第3の汎用レジスタ・フィールドとを備え、
前記第1のレジスタは前記第3の汎用レジスタ・フィールドによって指定された偶数アドレスにより番号付けされるレジスタであり、
前記第2のレジスタは前記第3の汎用レジスタ・フィールドによって指定された偶数アドレスの次のアドレスである奇数アドレスにより番号付けされるレジスタであり、
前記方法はさらに、前記独立ペア・ロード(LPD)命令に応じて、
前記第1の汎用レジスタ・フィールドによって識別された前記第1の汎用レジスタから第1のアドレスを取得することと、
前記取得された第1のアドレスを、前記メモリ内の前記第1のオペランドをフェッチするために使用することと、
前記第2の汎用レジスタ・フィールドによって識別された前記第2の汎用レジスタから第2のアドレスを取得することと、
前記取得された第2のアドレスを、前記メモリ内の前記第2のオペランドをフェッチするために使用することと、
前記第1のオペランドを前記第1のレジスタに格納することと、
前記第2のオペランドを前記第2のレジスタに格納することと、からなる独立ペア・ロード(LPD)演算を実行することを含む、請求項3に記載の方法。 - 前記取得された独立ペア・ロード(LPD)命令は、第1の変位フィールドおよび第2の変位フィールドをさらに備え、
前記方法はさらに、
前記メモリ内の前記第1のオペランドをフェッチするための第1のメモリ・アドレスを作成するために、前記第1の変位フィールドおよび前記取得された第1のアドレスを算術的に加算することと、
前記メモリ内の前記第2のオペランドをフェッチするための第2のメモリ・アドレスを作成するために、前記第2の変位フィールドおよび前記取得された第2のアドレスを算術的に加算することと
を含む、請求項4に記載の方法。 - 前記方法はさらに、
前記マルチプロセッサ・システムの複数のプロセッサからストア・イベントを受信することと、
前記受信したストア・イベントに係るストア動作のデータを前記メモリに格納することと
を含む、請求項1に記載の方法。 - コンピュータ・アーキテクチャ用に定義された前記独立ペア・ロード(LPD)命令が、代替コンピュータ・アーキテクチャの中央処理ユニットによってフェッチおよび実行され、
前記独立ペア・ロード(LPD)命令を、前記独立ペア・ロード(LPD)命令の動作をエミュレートするための所定のソフトウェア・ルーチンを識別するために解釈することと、
マシン命令を実行するための方法の諸ステップを実行するために前記所定のソフトウェア・ルーチンを実行することを含む、前記独立ペア・ロード(LPD)命令を実行することと
をさらに含む、請求項5に記載の方法。 - マルチプロセッサ・システムのプロセッサ内で独立ロード/ストア(LSD)命令を実行するためのコンピュータ・システムであって、
メモリと、
前記メモリと通信する処理ユニットとを備え、前記処理ユニットは、メモリから命令をフェッチするための命令フェッチ・ユニットと、フェッチされた命令を実行するための1つまたは複数の実行ユニットとを備え、
前記コンピュータ・システムは、
実行のための独立ロード/ストア(LSD)命令を取得することを含む方法を実行することが可能であり、前記独立ロード/ストア(LSD)命令は演算コードを含み、前記実行は、
前記取得された演算コードに基づいてLSD指定演算を実行することを含み、前記演算は、メモリ内の互いに異なるオペランドとして扱われる複数のオペランドにアクセスすることを含み、
前記方法は、
前記マルチプロセッサ・システムの他のプロセッサからのストア・イベントが、メモリ内の前記複数のオペランドへの前記アクセス時に前記複数のオペランドのうちの1つを修正した可能性があるかどうかの判定に応答して、第1のインジケータ値を設定することであって、前記第1のインジケータ値は、前記マルチプロセッサ・システムの他のプロセッサからのストア・イベントが、メモリ内の前記複数のオペランドへの前記アクセス時に前記複数のオペランドのうちの1つを修正した可能性があるかどうかを示す、前記設定すること
を含む、前記コンピュータ・システム。 - 前記第1のインジケータ値は、第1の条件コード値または第2の条件コード値のいずれか1つを備え、前記方法は、
ストア・イベントが、前記複数のオペランドのうちの、前記メモリ内の第1のオペランドまたは前記メモリ内の第2のオペランドのうちのいずれか1つを前記アクセス時に修正した可能性がある旨の判定に応答して、前記第1の条件コード値を設定することであって、前記第1の条件コード値は、前記メモリ内の前記第1のオペランドまたは前記メモリ内の前記第2のオペランドのいずれかが前記アクセス時に修正された可能性があることを示す、設定すること、および
前記メモリ内の前記第1のオペランドまたは前記メモリ内の前記第2のオペランドのいずれかを前記アクセス時に修正したストア・イベントはない旨の判定に応答して、前記第2の条件コード値を設定することであって、前記第2の条件コード値は、前記メモリ内の前記第1のオペランドまたは前記メモリ内の前記第2のオペランドのいずれも前記アクセス時に修正されていないことを示す、設定すること、
をさらに含む、請求項8に記載のコンピュータ・システム。 - 前記LSD命令は独立ペア・ロード(LPD)命令であり、メモリ内の前記複数のオペランドにアクセスすることは、メモリから第1のオペランドおよび第2のオペランドをフェッチすることを含み、前記方法は、
前記フェッチされた第1のオペランドおよび前記フェッチされた第2のオペランドを、前記LPD命令によって指定された1つまたは複数のレジスタ内に格納すること、をさらに含む、請求項9に記載のコンピュータ・システム。 - 前記独立ペア・ロード(LPD)命令によって指定された前記1つまたは複数のレジスタは、第1のレジスタおよび第2のレジスタからなるレジスタ・ペアであり、
前記独立ペア・ロード(LPD)命令は、第1の汎用レジスタを識別する第1の汎用レジスタ・フィールドと、第2の汎用レジスタを識別する第2の汎用レジスタ・フィールドと、前記第1のレジスタおよび前記第2のレジスタを識別する第3の汎用レジスタ・フィールドとを備え、
前記第1のレジスタは前記第3の汎用レジスタ・フィールドによって指定された偶数アドレスにより番号付けされるレジスタであり、
前記第2のレジスタは前記第3の汎用レジスタ・フィールドによって指定された偶数アドレスの次のアドレスである奇数アドレスにより番号付けされるレジスタであり、
前記方法はさらに、前記独立ペア・ロード(LPD)命令に応じて、
前記第1の汎用レジスタ・フィールドによって識別された前記第1の汎用レジスタから第1のアドレスを取得することと、
前記取得された第1のアドレスを、前記メモリ内の前記第1のオペランドをフェッチするために使用することと、
前記第2の汎用レジスタ・フィールドによって識別された前記第2の汎用レジスタから第2のアドレスを取得することと、
前記取得された第2のアドレスを、前記メモリ内の前記第2のオペランドをフェッチするために使用することと、
前記第1のオペランドを前記第1のレジスタに格納することと、
前記第2のオペランドを前記第2のレジスタに格納することと、からなる独立ペア・ロード(LPD)演算を実行することを含む、請求項10に記載のコンピュータ・システム。 - 前記取得された独立ペア・ロード(LPD)命令は、第1の変位フィールドおよび第2の変位フィールドをさらに備え、前記方法は、
前記メモリ内の前記第1のオペランドをフェッチするための第1のメモリ・アドレスを作成するために、前記第1の変位フィールドおよび前記取得された第1のアドレスを算術的に加算することと、
前記メモリ内の前記第2のオペランドをフェッチするための第2のメモリ・アドレスを作成するために、前記第2の変位フィールドおよび前記取得された第2のアドレスを算術的に加算することと
をさらに含む、請求項11に記載のコンピュータ・システム。 - 前記マルチプロセッサ・システムの複数のプロセッサからストア・イベントを受信することと、
前記受信したストア・イベントに係るストア動作のデータを前記メモリに格納することと
をさらに実行するものである、請求項8に記載のコンピュータ・システム。 - コンピュータ・アーキテクチャ用に定義された前記独立ペア・ロード(LPD)命令が、代替コンピュータ・アーキテクチャの中央処理ユニットによってフェッチおよび実行され、前記方法は、
前記独立ペア・ロード(LPD)命令を、前記独立ペア・ロード(LPD)命令の動作をエミュレートするための所定のソフトウェア・ルーチンを識別するために解釈することと、
マシン命令を実行するための方法の諸ステップを実行するために前記所定のソフトウェア・ルーチンを実行することを含む、前記独立ペア・ロード(LPD)命令を実行することと
をさらに含む、請求項12に記載のコンピュータ・システム。 - 独立メモリ・オペランドをフェッチするためのコンピュータ実装方法であって、
プロセッサにより、独立メモリ・オペランドをフェッチするための1つまたは複数の命令を備える第1のルーチンを実行することであって、前記命令は、メモリから互いに異なるオペランドとして扱われる2つの独立オペランドをロードするため、および条件コード値を設定するための、独立ペア・ロード(LPD)命令を備える、前記実行することと、
前記2つの独立オペランドが他のプロセッサからの前記2つの独立オペランドのいずれかへの介入ストアを伴ってロードされた可能性があることを示す前記条件コード値に応答して、前記独立メモリ・オペランドをメモリからフェッチするための命令を含む第2のルーチンを実行させることと、
前記2つの独立オペランドが前記2つの独立オペランドのいずれかへの介入ストアを伴わずにロードされたことを示す前記条件コード値に応答して、前記ロードされた2つの独立オペランドを使用するための第3のルーチンへ進むことと
を含む、前記方法。 - 前記条件コード値が、前記2つの独立オペランドが前記2つの独立オペランドのいずれかへの介入ストアを伴わずにロードされたことを示すまで、前記第2のルーチンを反復させることをさらに含む、請求項15に記載の方法。
- 反復の制限値を設定すること、
前記2つの独立オペランドが、前記2つの独立オペランドのいずれかへの介入ストアを伴ってロードされた可能性があることを示す、前記条件コード値に応答して、前記第2のルーチンを、前記第2のルーチンの実行を前記制限値によって指定された回数だけ反復するまで、または、前記2つの独立オペランドが前記2つの独立オペランドのいずれかへの介入ストアを伴わずにロードされたことを前記条件コード値が示すまで、反復させること
をさらに含む、請求項15に記載の方法。 - 前記方法は、前記2つの独立オペランドを汎用レジスタのそれぞれの位置にロードすることをさらに含む、請求項15に記載の方法。
- 前記プロセッサに、請求項1乃至7のいずれか一項に記載の方法、または、請求項15乃至18のいずれか一項に記載の方法を実行させるための、コンピュータ・プログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/708,284 | 2010-02-18 | ||
US12/708,284 US8850166B2 (en) | 2010-02-18 | 2010-02-18 | Load pair disjoint facility and instruction therefore |
PCT/EP2010/067049 WO2011101048A1 (en) | 2010-02-18 | 2010-11-08 | Load/store disjoint facility and instruction therefore |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013519955A JP2013519955A (ja) | 2013-05-30 |
JP5692760B2 true JP5692760B2 (ja) | 2015-04-01 |
Family
ID=43736136
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012553198A Active JP5692760B2 (ja) | 2010-02-18 | 2010-11-08 | 独立ロード/ストア機構およびそのための命令を実行するための方法、システム、およびコンピュータ・プログラム |
Country Status (6)
Country | Link |
---|---|
US (2) | US8850166B2 (ja) |
EP (1) | EP2430525B1 (ja) |
JP (1) | JP5692760B2 (ja) |
CN (1) | CN102754069B (ja) |
RU (1) | RU2554546C2 (ja) |
WO (1) | WO2011101048A1 (ja) |
Families Citing this family (57)
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 |
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 |
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 |
US9710277B2 (en) * | 2010-09-24 | 2017-07-18 | Intel Corporation | Processor power management based on class and content of instructions |
US9384004B2 (en) | 2012-06-15 | 2016-07-05 | International Business Machines Corporation | Randomized testing within transactional execution |
US9336046B2 (en) | 2012-06-15 | 2016-05-10 | International Business Machines Corporation | Transaction abort processing |
US9348642B2 (en) | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
US10437602B2 (en) * | 2012-06-15 | 2019-10-08 | International Business Machines Corporation | Program interruption filtering in transactional execution |
US9448796B2 (en) | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
US8688661B2 (en) | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
US9436477B2 (en) | 2012-06-15 | 2016-09-06 | International Business Machines Corporation | Transaction abort instruction |
US9361115B2 (en) | 2012-06-15 | 2016-06-07 | International Business Machines Corporation | Saving/restoring selected registers in transactional processing |
US8682877B2 (en) | 2012-06-15 | 2014-03-25 | International Business Machines Corporation | Constrained transaction execution |
US9772854B2 (en) * | 2012-06-15 | 2017-09-26 | International Business Machines Corporation | Selectively controlling instruction execution in transactional processing |
US9740549B2 (en) | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US20130339680A1 (en) | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
US9715385B2 (en) | 2013-01-23 | 2017-07-25 | International Business Machines Corporation | Vector exception code |
US9823924B2 (en) | 2013-01-23 | 2017-11-21 | International Business Machines Corporation | Vector element rotate and insert under mask instruction |
US9778932B2 (en) | 2013-01-23 | 2017-10-03 | International Business Machines Corporation | Vector generate mask instruction |
US9804840B2 (en) | 2013-01-23 | 2017-10-31 | International Business Machines Corporation | Vector Galois Field Multiply Sum and Accumulate instruction |
US9513906B2 (en) * | 2013-01-23 | 2016-12-06 | International Business Machines Corporation | Vector checksum instruction |
US9471308B2 (en) | 2013-01-23 | 2016-10-18 | International Business Machines Corporation | Vector floating point test data class immediate instruction |
US9424034B2 (en) * | 2013-06-28 | 2016-08-23 | Intel Corporation | Multiple register memory access instructions, processors, methods, and systems |
US11029997B2 (en) * | 2013-07-15 | 2021-06-08 | Texas Instruments Incorporated | Entering protected pipeline mode without annulling pending instructions |
GB2518613A (en) | 2013-09-25 | 2015-04-01 | Ibm | Multiple core processing with high throughput atomic memory operations |
US9459931B2 (en) * | 2014-01-06 | 2016-10-04 | International Business Machines Corporation | Administering a lock for resources in a distributed computing environment |
US10209992B2 (en) * | 2014-04-25 | 2019-02-19 | Avago Technologies International Sales Pte. Limited | System and method for branch prediction using two branch history tables and presetting a global branch history register |
CN104063329B (zh) * | 2014-06-30 | 2017-04-12 | 龙芯中科技术有限公司 | 64位立即数处理方法及装置 |
GB2529892B (en) * | 2014-09-08 | 2017-04-12 | Imagination Tech Ltd | Efficient loading and storing of data |
US9710398B2 (en) * | 2014-11-18 | 2017-07-18 | International Business Machines Corporation | RE-MRU of metadata tracks to reduce lock contention |
US20160232006A1 (en) * | 2015-02-09 | 2016-08-11 | Qualcomm Incorporated | Fan out of result of explicit data graph execution instruction |
CN104809079B (zh) * | 2015-04-14 | 2018-01-16 | 昆腾微电子股份有限公司 | 分页寄存器的访问方法和装置 |
US10191747B2 (en) * | 2015-06-26 | 2019-01-29 | Microsoft Technology Licensing, Llc | Locking operand values for groups of instructions executed atomically |
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
WO2017006235A1 (en) * | 2015-07-09 | 2017-01-12 | Centipede Semi Ltd. | Processor with efficient memory access |
US10061584B2 (en) * | 2015-09-19 | 2018-08-28 | Microsoft Technology Licensing, Llc | Store nullification in the target field |
KR102457183B1 (ko) * | 2016-01-05 | 2022-10-21 | 한국전자통신연구원 | 공유 번역 블록 캐시 기반의 멀티-코어 시뮬레이션 시스템 및 방법 |
US10521351B2 (en) * | 2017-01-12 | 2019-12-31 | International Business Machines Corporation | Temporarily suppressing processing of a restrained storage operand request |
US10621090B2 (en) | 2017-01-12 | 2020-04-14 | International Business Machines Corporation | Facility for extending exclusive hold of a cache line in private cache |
US10732858B2 (en) * | 2017-01-19 | 2020-08-04 | International Business Machines Corporation | Loading and storing controls regulating the operation of a guarded storage facility |
US10901738B2 (en) * | 2017-11-14 | 2021-01-26 | International Business Machines Corporation | Bulk store and load operations of configuration state registers |
US10572387B2 (en) | 2018-01-11 | 2020-02-25 | International Business Machines Corporation | Hardware control of CPU hold of a cache line in private cache where cache invalidate bit is reset upon expiration of timer |
CN111656335B (zh) * | 2018-01-29 | 2023-11-17 | 美光科技公司 | 存储器控制器 |
US10719387B2 (en) * | 2018-04-25 | 2020-07-21 | Oracle International Corporation | Memory interface with tamper-evident features to enhance software security |
CN111258950B (zh) * | 2018-11-30 | 2022-05-31 | 上海寒武纪信息科技有限公司 | 原子访存方法、存储介质、计算机设备、装置和系统 |
GB2580664B (en) * | 2019-01-22 | 2021-01-13 | Graphcore Ltd | Double load instruction |
RU2713709C1 (ru) * | 2019-06-20 | 2020-02-06 | Федеральное государственное унитарное предприятие "Научно-производственный центр автоматики и приборостроения имени академика Н.А. Пилюгина" (ФГУП "НПЦАП") | Устройство преобразования информации |
CN110515660B (zh) * | 2019-08-28 | 2021-08-06 | 中国人民解放军国防科技大学 | 一种加速原子指令执行的方法和装置 |
CN110781016B (zh) * | 2019-10-30 | 2021-04-23 | 支付宝(杭州)信息技术有限公司 | 一种数据处理方法、装置、设备及介质 |
US11422932B2 (en) | 2019-12-20 | 2022-08-23 | Microsoft Technology Licensing, Llc | Integrated reference and secondary marking |
US11392427B2 (en) * | 2020-01-06 | 2022-07-19 | Microsoft Technology Licensing, Llc | Lock-free reading of unitary value sets |
US11314509B2 (en) * | 2020-03-19 | 2022-04-26 | Arm Limited | Processing of plural-register-load instruction |
US11914511B2 (en) | 2020-06-22 | 2024-02-27 | Apple Inc. | Decoupling atomicity from operation size |
US11748101B2 (en) * | 2021-07-13 | 2023-09-05 | Arm Limited | Handling of single-copy-atomic load/store instruction with a memory access request shared by micro-operations |
US11934255B2 (en) | 2022-01-04 | 2024-03-19 | Bank Of America Corporation | System and method for improving memory resource allocations in database blocks for executing tasks |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3603934A (en) * | 1968-07-15 | 1971-09-07 | Ibm | Data processing system capable of operation despite a malfunction |
JPS5368530A (en) * | 1976-12-01 | 1978-06-19 | Hitachi Ltd | Order retrial control unit |
US4439828A (en) * | 1981-07-27 | 1984-03-27 | International Business Machines Corp. | Instruction substitution mechanism in an instruction handling unit of a data processing system |
JP2500101B2 (ja) * | 1992-12-18 | 1996-05-29 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 共用変数の値を更新する方法 |
WO1994027215A1 (en) * | 1993-05-07 | 1994-11-24 | Apple Computer, Inc. | Method for decoding guest instructions for a host computer |
US5551013A (en) * | 1994-06-03 | 1996-08-27 | International Business Machines Corporation | Multiprocessor for hardware emulation |
US5748950A (en) * | 1994-09-20 | 1998-05-05 | Intel Corporation | Method and apparatus for providing an optimized compare-and-branch instruction |
US5694587A (en) * | 1995-03-31 | 1997-12-02 | International Business Machines Corporation | Specialized millicode instructions for test PSW validity, load with access test, and character translation assist |
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 |
US6785803B1 (en) * | 1996-11-13 | 2004-08-31 | Intel Corporation | Processor including replay queue to break livelocks |
JPH10149285A (ja) * | 1996-11-18 | 1998-06-02 | Hitachi Ltd | 命令実行制御方法および情報処理装置 |
US5860126A (en) * | 1996-12-17 | 1999-01-12 | Intel Corporation | Controlling shared memory access ordering in a multi-processing system using an acquire/release consistency model |
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 |
US6463582B1 (en) * | 1998-10-21 | 2002-10-08 | Fujitsu Limited | Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method |
US6408380B1 (en) * | 1999-05-21 | 2002-06-18 | Institute For The Development Of Emerging Architectures, L.L.C. | Execution of an instruction to load two independently selected registers in a single cycle |
US7089404B1 (en) * | 1999-06-14 | 2006-08-08 | Transmeta Corporation | Method and apparatus for enhancing scheduling in an advanced microprocessor |
US6681317B1 (en) * | 2000-09-29 | 2004-01-20 | Intel Corporation | Method and apparatus to provide advanced load ordering |
JP3729064B2 (ja) * | 2000-11-29 | 2005-12-21 | 日本電気株式会社 | データ依存関係検出装置 |
US6922666B2 (en) * | 2000-12-22 | 2005-07-26 | Bull Hn Information Systems Inc. | Method and data processing system for performing atomic multiple word reads |
US7302380B2 (en) * | 2002-12-12 | 2007-11-27 | Matsushita Electric, Industrial Co., Ltd. | Simulation apparatus, method and program |
US7020746B2 (en) | 2003-01-28 | 2006-03-28 | Microsoft Corporation | Method and system for an atomically updated, central cache memory |
US7680990B2 (en) * | 2003-05-30 | 2010-03-16 | Hewlett-Packard Development Company, L.P. | Superword memory-access instructions for data processor |
US20050120185A1 (en) * | 2003-12-01 | 2005-06-02 | Sony Computer Entertainment Inc. | Methods and apparatus for efficient multi-tasking |
GB2409066B (en) * | 2003-12-09 | 2006-09-27 | Advanced Risc Mach Ltd | A data processing apparatus and method for moving data between registers and memory |
US7296120B2 (en) * | 2004-11-18 | 2007-11-13 | International Business Machines Corporation | Mechanism that provides efficient multi-word load atomicity |
JP4228241B2 (ja) * | 2006-12-13 | 2009-02-25 | ソニー株式会社 | 演算処理装置 |
US8321637B2 (en) | 2007-05-14 | 2012-11-27 | International Business Machines Corporation | Computing system with optimized support for transactional memory |
US20090182992A1 (en) * | 2008-01-11 | 2009-07-16 | International Business Machines Corporation | Load Relative and Store Relative Facility and Instructions Therefore |
JP2010102623A (ja) * | 2008-10-27 | 2010-05-06 | Nec Electronics Corp | キャッシュメモリ及びその制御方法 |
US8438340B2 (en) | 2010-02-18 | 2013-05-07 | International Business Machines Corporation | Executing atomic store disjoint instructions |
-
2010
- 2010-02-18 US US12/708,284 patent/US8850166B2/en active Active
- 2010-11-08 JP JP2012553198A patent/JP5692760B2/ja active Active
- 2010-11-08 CN CN201080063865.2A patent/CN102754069B/zh active Active
- 2010-11-08 RU RU2012147005/08A patent/RU2554546C2/ru active
- 2010-11-08 EP EP10776354.2A patent/EP2430525B1/en active Active
- 2010-11-08 WO PCT/EP2010/067049 patent/WO2011101048A1/en active Application Filing
-
2012
- 2012-12-26 US US13/726,746 patent/US9052889B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20110202748A1 (en) | 2011-08-18 |
EP2430525B1 (en) | 2019-03-27 |
JP2013519955A (ja) | 2013-05-30 |
CN102754069A (zh) | 2012-10-24 |
EP2430525A1 (en) | 2012-03-21 |
US9052889B2 (en) | 2015-06-09 |
CN102754069B (zh) | 2014-12-24 |
US8850166B2 (en) | 2014-09-30 |
US20130117546A1 (en) | 2013-05-09 |
RU2554546C2 (ru) | 2015-06-27 |
WO2011101048A1 (en) | 2011-08-25 |
RU2012147005A (ru) | 2014-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5692760B2 (ja) | 独立ロード/ストア機構およびそのための命令を実行するための方法、システム、およびコンピュータ・プログラム | |
JP5357181B2 (ja) | コンピュータ・システム、その動作方法、及び、コンピュータ・プログラム | |
JP5039905B2 (ja) | 2つのオペランドに対して演算を行い、その後オペランドの元の値を格納するための命令 | |
US8516195B2 (en) | Extract cache attribute facility and instruction therefore | |
US10963391B2 (en) | Extract target cache attribute facility and instruction therefor | |
US20090182983A1 (en) | Compare and Branch Facility and Instruction Therefore | |
US20140164739A1 (en) | Modify and Execute Next Sequential Instruction Facility and Instructions Therefore | |
US20090182988A1 (en) | Compare Relative Long Facility and Instructions Therefore | |
JP2011509475A5 (ja) | ||
KR20110139098A (ko) | 명령어가 이용할 수 있는 범용 레지스터의 수를 확장하는 상위-워드 기능 | |
KR101285072B1 (ko) | 실행 관련 명령어 | |
US20090182992A1 (en) | Load Relative and Store Relative Facility and Instructions Therefore | |
US20090182985A1 (en) | Move Facility and Instructions Therefore | |
KR20100106436A (ko) | 선택된 비트를 회전 후 삽입하는 기능 및 그 기능을 위한 명령어 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130802 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140827 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140902 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20141106 Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20141106 |
|
RD12 | Notification of acceptance of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7432 Effective date: 20141106 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20141107 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20141211 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20141211 Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20141211 |
|
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: 20150109 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20150113 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20150113 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150128 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5692760 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |