JP2014510351A - マスクレジスタを用いてジャンプを行うシステム、装置、および方法 - Google Patents
マスクレジスタを用いてジャンプを行うシステム、装置、および方法 Download PDFInfo
- Publication number
- JP2014510351A JP2014510351A JP2014502547A JP2014502547A JP2014510351A JP 2014510351 A JP2014510351 A JP 2014510351A JP 2014502547 A JP2014502547 A JP 2014502547A JP 2014502547 A JP2014502547 A JP 2014502547A JP 2014510351 A JP2014510351 A JP 2014510351A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- field
- jkzd
- write mask
- pointer
- 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
- 238000000034 method Methods 0.000 title claims abstract description 48
- 239000013598 vector Substances 0.000 claims description 93
- 239000000203 mixture Substances 0.000 abstract 1
- 230000015654 memory Effects 0.000 description 121
- VOXZDWNPVJITMN-ZBRFXRBCSA-N 17β-estradiol Chemical compound OC1=CC=C2[C@H]3CC[C@](C)([C@H](CC4)O)[C@@H]4[C@@H]3CCC2=C1 VOXZDWNPVJITMN-ZBRFXRBCSA-N 0.000 description 56
- 238000006073 displacement reaction Methods 0.000 description 41
- 238000010586 diagram Methods 0.000 description 29
- 238000006243 chemical reaction Methods 0.000 description 20
- 238000012545 processing Methods 0.000 description 15
- 230000003416 augmentation Effects 0.000 description 14
- 238000007667 floating Methods 0.000 description 14
- 230000009471 action Effects 0.000 description 10
- 230000000873 masking effect Effects 0.000 description 9
- 230000008859 change Effects 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 7
- 230000003068 static effect Effects 0.000 description 5
- 230000000295 complement effect Effects 0.000 description 4
- 238000012217 deletion Methods 0.000 description 4
- 230000037430 deletion Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001629 suppression Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 229910003460 diamond Inorganic materials 0.000 description 1
- 239000010432 diamond Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000013604 expression vector Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002789 length control Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000001020 rhythmical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000758 substrate Substances 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/324—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address using program counter relative addressing
-
- 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/30018—Bit or string 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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch 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/30094—Condition code generation, e.g. Carry, Zero flag
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)
- Complex Calculations (AREA)
Abstract
【解決手段】いくつかの実施形態において、書き込みマスクの全てのビットがゼロの場合、ブレンド命令を実行することにより、当該命令の命令ポインタおよび相対オフセットを用いて計算される、ターゲット命令のアドレスへの条件付きジャンプが行われる。
【選択図】図1
Description
以下に、いくつかのジャンプ命令のいくつかの実施形態、並びに、ジャンプ命令を実行するのに用いられ得るシステム、アーキテクチャ、命令形式などの実施形態を説明する。これらジャンプ命令は、当該命令に含まれる書き込みマスクの値に基づいて、プログラムの制御フローの順序を条件付きで変更するのに用いられ得る。これら命令は、ベクトル化されたコードの制御フローを変更するのに「書き込みマスク」を用いる。当該マスクの各ビットは、制御フロー、つまりループの繰り返しにおける1つのSIMDフィールドのインスタンスに関連する。書き込みマスクの実施形態の詳細を以下に詳述する。
KORTEST k1,k1 //(OR(k1,k1)==0x0)=>ZF
JNZ target_addr
最初に、jump near if the writemask is zero(JKZD)命令について説明する。プロセッサがこの命令を実行することにより、ソース書き込みマスクの全ての書き込みマスクビットが「0」に設定されているかどうか、当該ソース書き込みマスクの値が確認され、設定されていれば、プロセッサに、宛て先オペランドおよび現在の命令ポインタによって少なくとも部分的に特定されるターゲット命令へのジャンプを実行させる。書き込みマスクビットの全てが「0」ではない場合(よってジャンプ条件が満たされない場合)、ジャンプは実行されず、JKZD命令に続く命令の実行へと続く。
JKZD FARLABEL このファージャンプを実行すべく、代わりに以下の2つの命令を用い得る。
JKNZD BEYOND;
JMP FARLABEL;
BEYOND:
次に、jump near if the writemask is not zero(JKNZD)命令について説明する。プロセッサがこの命令を実行することにより、ソース書き込みマスクの全ての書き込みマスクビットが「0」に設定されているかどうか、当該ソース書き込みマスクの値が確認され、設定されていなければ、プロセッサに、宛て先オペランドおよび現在の命令ポインタによって少なくとも部分的に特定されるターゲット命令へのジャンプを実行させる。書き込みマスクビットの全てが「0」である場合(よってジャンプ条件が満たされない場合)、ジャンプは実行されず、JKNZD命令に続く命令の実行へと続く。
JKNZD FARLABEL
このファージャンプを実行すべく、代わりに以下の2つの命令を用い得る。
JKZD
BEYOND;
JMP FARLABEL;
BEYOND:
次に、jump near if the writemask is all ones(JKOD)命令について説明する。プロセッサがこの命令を実行することにより、ソース書き込みマスクの全ての書き込みマスクビットが「1」に設定されているかどうか、当該ソース書き込みマスクの値が確認され、設定されていれば、プロセッサに、宛て先オペランドおよび現在の命令ポインタによって少なくとも部分的に特定されるターゲット命令へのジャンプを実行させる。書き込みマスクビットの全てが「1」でない場合(よってジャンプ条件が満たされない場合)、ジャンプは実行されず、JKOD命令に続く命令の実行へと続く。
次に、jump near if the writemask is not all ones(JKNOD)命令について説明する。プロセッサがこの命令を実行することにより、ソース書き込みマスクの少なくとも1つの書き込みマスクビットが「0」に設定されているかどうか、当該ソース書き込みマスクの値が確認され、設定されていれば、プロセッサに、宛て先オペランドおよび現在の命令ポインタによって少なくとも部分的に特定されるターゲット命令へのジャンプを実行させる。書き込みマスクビットのうち1つも「0」でない場合(よってジャンプ条件が満たされない場合)、ジャンプは実行されず、JKNOD命令に続く命令の実行へと続く。
図9Aおよび図9Bは、本願発明の実施形態に係る、汎用のベクトルフレンドリーな命令形式、および、その命令テンプレートを示すブロック図である。図9Aは、本願発明の実施形態に係る、汎用のベクトルフレンドリーな命令形式、および、そのクラスAの命令テンプレートを示すブロック図である。図9Bは、本願発明の実施形態に係る、汎用のベクトルフレンドリーな命令形式、および、そのクラスB命令テンプレートを示すブロック図である。詳細には、汎用のベクトルフレンドリーな命令形式900には、それぞれが非メモリアクセス905命令テンプレートおよびメモリアクセス920命令テンプレートを含む、クラスAおよびクラスB命令テンプレートが定義されている。ベクトルフレンドリーな命令形式という表現において汎用という用語は、命令形式が何ら特定の命令セットに関連付けられていないことを意味する。ベクトルフレンドリーな命令形式の命令が、レジスタ(非メモリアクセス905命令テンプレート)およびレジスタ/メモリ(メモリアクセス920命令テンプレート)のうちいずれかをソースとするベクトルに対して動作する実施形態を説明するが、本願発明の代替的な実施形態においては、これらのうちいずれか一方だけをサポートしてもよい。また、ベクトル命令形式のロード命令および格納命令がある本願発明の実施形態を説明するが、代替的な実施形態においては、代わりに、或いは、加えて、レジスタへ、またはレジスタからベクトル(例えば、メモリからレジスタへ、レジスタからメモリへ、レジスタ間で、など)を移動させる異なる命令形式の命令が用いられる。さらに、2つのクラスの命令テンプレートをサポートする本願発明の実施形態を説明するが、代替的な実施形態においては、これらのうち一方のみ、または3つ以上がサポートされる。
汎用のベクトルフレンドリーな命令形式900は、図9Aおよび図9Bに示される順序で、以下に列挙するフィールドを含む。
クラスフィールド968−このコンテンツは複数の異なるクラスの命令を区別する。図2Aおよび図2Bを参照すると、このフィールドのコンテンツは、クラスAの命令およびクラスBの命令のうちから選択する。図9Aおよび図9Bにおいて、角が丸められた正方形は、特定値がフィールド内に存在することを示すのに用いられている(例えば、図9AのクラスA968A、および図9BのクラスB968B)。
クラスAの非メモリアクセス905命令テンプレートの場合、アルファフィールド952は、含まれるコンテンツが複数の異なるオーグメンテーション動作タイプのうち何れが実行されるかを区別する(例えば、丸め952A.1およびデータ変換952A.2がそれぞれ、非メモリアクセス丸めタイプ演算910および非メモリアクセスデータ変換タイプ演算915命令テンプレートに関して特定される)RSフィールド952Aとして解釈され、ベータフィールド954は、特定されたタイプの動作のうち何れが実行されるかを区別する。図9Aおよび図9Bにおいて、角が丸められたブロックは、特定値が存在することを示すのに用いられている(例えば、修飾子フィールド946の非メモリアクセス946A、アルファフィールド952/RSフィールド952Aの丸め952A.1およびデータ変換952A.2)。非メモリアクセス905命令テンプレートにおいて、スケールフィールド960、変位フィールド962A、および変位スケールフィールド962Bは存在しない。
非メモリアクセス完全丸め制御タイプ演算910命令テンプレートにおいて、ベータフィールド954は、含まれるコンテンツが静的な丸めを提供する丸め制御フィールド954Aとして解釈される。本願発明の説明される実施形態においては、丸め制御フィールド954Aは全浮動小数点例外抑制(SAE)フィールド956、および、丸め演算制御フィールド958を含むが、代替的な実施形態においては、これらのコンセプトの両方を同じフィールドにエンコードする、または、これらのコンセプト/フィールドのうち一方、または他方のみを有する(例えば、丸め演算制御フィールド958のみを有する)。
非メモリアクセスデータ変換タイプ演算915命令テンプレートにおいて、ベータフィールド954は、複数のデータ変換(例えば、データ変換、スウィズル、ブロードキャスト)のうち何れが実行されるかを含まれるコンテンツが区別するデータ変換フィールド954Bとして解釈される。
クラスAのメモリアクセス920命令テンプレートの場合、アルファフィールド952は、含まれるコンテンツが削除ヒントのうちいずれが用いられるかを区別する(図9Aにおいて、一時的952B.1および非一時的952B.2がそれぞれ、メモリアクセス一時的925命令テンプレートおよびメモリアクセス非一時的930命令テンプレートに関して特定される)削除ヒントフィールド952Bとして解釈され、ベータフィールド954は、含まれるコンテンツが複数のデータ操作動作(プリミティブとしても知られる)のうちいずれが実行されるか(例えば、操作なし、ブロードキャスト、ソースのアップコンバート、および宛て先のダウンコンバート)を区別するデータ操作フィールド954Cとして解釈される。メモリアクセス920命令テンプレートは、スケールフィールド960を含み、場合によっては、変位フィールド962Aまたは変位スケールフィールド962Bを含む。
一時的データは、キャッシュするのが有利である程度に直ぐに再度用いられる可能性が高いデータである。しかし、これはヒントであり、複数の異なるプロセッサが、ヒントを全く無視するなど複数の異なるやり方で実行し得る。
非一時的データは、第1レベルキャッシュでキャッシュするのが有利ではない程度に直ぐには再度用いられる可能性が低く、削除の高い優先度を与えられるべきデータである。しかし、これはヒントであり、複数の異なるプロセッサが、ヒントを全く無視するなど複数の異なるやり方で実行し得る。
クラスB命令テンプレートの場合、アルファフィールド952は、書き込みマスクフィールド970により制御される書き込みマスキングがマージングであるかゼロ化であるかを含まれるコンテンツが区別する書き込みマスク制御(Z)フィールド952Cとして解釈される。
クラスBの非メモリアクセス905命令テンプレートの場合、ベータフィールド954の一部は、含まれるコンテンツが複数の異なるオーグメンテーション動作タイプのうちいずれが実行されるのかを区別する(例えば、丸め957A.1およびベクトル長さ(VSIZE)957A.2がそれぞれ、非メモリアクセス書き込みマスク制御部分的丸め制御タイプ演算912命令テンプレート、および非メモリアクセス書き込みマスク制御VSIZEタイプ演算917命令テンプレートに関して特定される)RLフィールド957Aとして解釈され、ベータフィールド954の残りは、特定されたタイプの動作のうちいずれが実行されるのかを区別する。図9Aおよび9Bにおいて、角が丸められたブロックは、特定値(例えば、修飾子フィールド946の非メモリアクセス946A、RLフィールド957Aの丸め957A.1およびVSIZE957A.2)が存在することを示すのに用いられている。非メモリアクセス905命令テンプレートにおいて、スケールフィールド960、変位フィールド962A、および、変位スケールフィールド962Bは存在しない。
非メモリアクセス書き込みマスク制御部分的丸め制御タイプ演算910命令テンプレートにおいて、ベータフィールド954の残りは、丸め演算フィールド959Aとして解釈され、例外イベント報告が無効化される(任意の命令はあらゆるタイプの浮動小数点例外フラグを報告せず、浮動小数点例外ハンドラを立ち上げない)。
非メモリアクセス書き込みマスク制御VSIZEタイプ演算917命令テンプレートにおいて、ベータフィールド954の残りは、複数のデータベクトル長さ(例えば、128、956、または1112バイト)のうち何れで実行されるかを含まれるコンテンツが区別するベクトル長さフィールド959Bとして解釈される。
クラスAのメモリアクセス920命令テンプレートの場合、ベータフィールド954の一部は、ブロードキャストタイプデータ操作が実行されるかどうかを含まれるコンテンツが区別するブロードキャストフィールド957Bとして解釈され、ベータフィールド954の残りは、ベクトル長さフィールド959Bとして解釈される。メモリアクセス920命令テンプレートは、スケールフィールド960を含み、場合によっては、変位フィールド962Aまたは変位スケールフィールド962Bを含む。
汎用のベクトルフレンドリーな命令形式900に関し、フルオペコードフィールド974は、形式フィールド940、ベース動作フィールド942、およびデータ要素幅フィールド964を含むものとして示した。フルオペコードフィールド974がこれらのフィールド全てを含む一実施形態を示したが、これらのフィールド全てをサポートしない実施形態においては、フルオペコードフィールド974はこれらのフィールドの全ては含まない。フルオペコードフィールド974は演算コードを提供する。
図10A、図10B、および図10Cは、本願発明の実施形態に係る例示的な特定のベクトルフレンドリーな命令形式を示すブロック図である。図10A、図10B、および図10Cは、フィールドの場所、サイズ、解釈、および順序、並びに、これらのフィールドのうちいくつかの値を特定するという意味で特定的である、特定のベクトルフレンドリーな命令形式1000を示す。特定のベクトルフレンドリーな命令形式1000を用いて、x86命令の拡張を行ってもよく、よって、フィールのうちいくつかは、既存のx86命令のセット、およびその拡張(例えばAVX)に用いられるものと同様、または同じである。この形式は、拡張された既存のx86命令のセットのプレフィックスエンコードフィールド、リアルオペコードバイトフィールド、MOD R/Mフィールド、SIBフィールド、変位フィールド、および、即値フィールドに対応したままである。図10A、図10B、および図10Cからのフィールドがマッピングされる図9Aおよび図9Bのフィールドが示されている。
汎用のベクトルフレンドリーな命令形式900は、図10A、図10B、および図10Cで示される順序で以下に列挙するフィールドを含む。
即値フィールド972は上述したように動作する。
図11は、本願発明の一実施形態に係るレジスタアーキテクチャ1100のブロック図である。レジスタアーキテクチャのレジスタファイルおよびレジスタを以下に列挙する。
示される実施形態において、1112ビットの幅を有する32個のベクトルレジスタがある。これらのレジスタをzmm0〜zmm31と呼ぶ。最初の16個のレジスタの下位956ビットは、レジスタymm0〜16にオーバーレイされて(overlaid)いる。最初の16zmmレジスタの下位128ビット(ymmレジスタの下位128ビット)は、レジスタxmm0〜15にオーバーレイされている。特定のベクトルフレンドリーな命令形式1000は以下の表に示すようにこれらオーバーレイされたレジスタファイルに対して動作する。
図12Aおよび図12Bは、例示的なインオーダープロセッサアーキテクチャのブロック図を示す。これらの例示的な実施形態は、ワイドベクトルプロセッサ(VPU)で補強されたインオーダーCPUコアの複数のインスタンシエイションに基づいて設計されている。コアはe14tアプリケーションに応じて、何らかの所定の関数ロジック、メモリI/Oインタフェース、および、他の必要なI/Oロジックと高帯域幅インターコネクトネットワークを介して通信を行う。例えば、スタンドアローンGPUとしての本実施形態の実施は、典型的にはPCIeバスを含む。
図13は、本願発明の実施形態に係る例示的なアウトオブオーダーアーキテクチャを示すブロック図である。詳細には、図13は、ベクトルフレンドリーな命令形式およびその実行に対応するよう修正された周知の例示的なアウトオブオーダーアーキテクチャを示す。図13において、矢印は2以上のユニットの結合を示し、矢印の方向はそれらユニット間のデータフローの方向を示す。図13は、実行エンジンユニット1310およびメモリユニット1315に結合されたフロントエンドユニット1305を含む。実行エンジンユニット1310はさらに、メモリユニット1315に結合されている。
図18は、本願発明の実施形態に係る、集積メモリコントローラおよび集積グラフィックを備えたシングルコアプロセッサおよびマルチコアプロセッサ1800を示すブロック図である。図18において、実線の四角はシングルコア1802A、システムエージェント1810、および1以上のバスコントローラユニット1816からなるセットを含むプロセッサ1800を示し、破線の四角は、複数のコア1802A〜N、システムエージェントユニット1810内の1以上の集積メモリコントローラユニット1814からなるセット、および集積グラフィックロジック1808を含む代替的なプロセッサ1800を任意的な追加として示す。
図14〜16は、プロセッサ1800を含めるのに適した例示的なシステムを示す。図17は、1以上のコア1802を含みうる例示的なシステムオンチップ(SoC)を示す。ラップトップ、デスクトップ、ハンドヘルドPC、パーソナルデジタルアシスタント、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、埋め込み型プロセッサ、デジタル信号プロセッサ(DSP)、グラフィックデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、携帯型メディアプレーヤ、ハンドヘルドデバイス、および様々な他の電子デバイスに関する当分野で公知の他のシステム設計および構成も適している。一般的に、本明細書で開示されるプロセッサ、および/または他の実行ロジックを組み込むことが可能な非常に幅広い種類のシステムまたは電子デバイスが適している。
ベクトルフレンドリーな命令形式がネイティブに実行される実施形態を説明してきたが、代替的な実施形態においては、異なる命令セットを実行する(例えば、米国カリフォルニア州サニーベールのMIPS TechnologiesのMIPS命令セットを実行するプロセッサ、米国カリフォルニア州サニーベールのARM HoldingsのARM命令セットを実行するプロセッサなどの)プロセッサ上で実行されるエミュレーションレイヤーを介してベクトルフレンドリーな命令形式を実行してもよい。また、図中のフロー図は本願発明の特定の実施形態によって実行される動作の特定の順序を示すが、そのような順序は例示であることが理解されるべきである(例えば、代替的な実施形態においては、それらの動作を異なる順序で実行する、特定の動作を組み合わせる、または特定の動作を同時に行うなど)。
Claims (20)
- コンピュータプロセッサでjump near if the writemask is zero(JKZD)命令を実行する方法であり、
書き込みマスクオペランドおよび相対オフセットを含む前記JKZD命令をフェッチする工程と、
フェッチされた前記JKZD命令をデコードする工程と、
前記書き込みマスクの全てのビットがゼロである場合に、前記フェッチされたJKZD命令を実行し、前記JKZD命令の命令ポインタおよび前記相対オフセットを用いて計算されるターゲット命令のアドレスへ条件付きでジャンプする工程と
を備える方法。 - 前記書き込みマスクが16ビットレジスタである、請求項1に記載の方法。
- 前記相対オフセットが8ビットの即値である、請求項1または2に記載の方法。
- 前記相対オフセットが32ビットの即値である、請求項1または2に記載の方法。
- 前記JKZD命令の前記命令ポインタがEIPレジスタに格納される、請求項1から4のいずれか1項に記載の方法。
- 前記JKZD命令の前記命令ポインタがRIPレジスタに格納される、請求項1から4のいずれか1項に記載の方法。
- 前記JKZD命令を実行する工程がさらに、
前記JKZD命令の前記命令ポインタに前記相対オフセットを加えた一時的命令ポインタを生成する工程と、
前記一時的命令ポインタが前記JKZD命令を含むプログラムのコードセグメントリミット外でない場合、前記一時的命令ポインタを前記ターゲット命令の前記アドレスに設定する工程と、
前記一時的命令ポインタが前記JKZD命令を含む前記プログラムの前記コードセグメントリミット外である場合、フォルトを生成する工程と
を有する、請求項1から6のいずれか1項に記載の方法。 - 前記JKZD命令を実行する工程がさらに、前記一時的命令ポインタが前記JKZD命令を含む前記プログラムの前記コードセグメントリミット外でない場合、前記JKZD命令のオペランドサイズが16ビットであれば、前記一時的命令ポインタを前記ターゲット命令の前記アドレスに設定する工程の前に、前記一時的命令ポインタの上位2バイトをクリアする工程を有する、請求項7に記載の方法。
- コンピュータプロセッサでjump near if the writemask is not zero(JKNZD)命令を実行する方法であり、
書き込みマスクオペランドおよび相対オフセットを含む前記JKNZD命令をフェッチする工程と、
フェッチされた前記JKNZD命令をデコードする工程と、
前記書き込みマスクの少なくとも1つのビットがゼロでない場合に、前記フェッチされたJKNZD命令を実行し、前記JKNZD命令の命令ポインタおよび前記相対オフセットを用いて計算されるターゲット命令のアドレスへ条件付きでジャンプする工程と
を備える方法。 - 前記書き込みマスクが16ビットレジスタである、請求項9に記載の方法。
- 前記相対オフセットが8ビットの即値である、請求項9または10に記載の方法。
- 前記相対オフセットが32ビットの即値である、請求項9または10に記載の方法。
- 前記JKNZD命令の前記命令ポインタがEIPレジスタに格納される、請求項9から12のいずれか1項に記載の方法。
- 前記JKNZD命令の前記命令ポインタがRIPレジスタに格納される、請求項9から12のいずれか1項に記載の方法。
- 前記JKNZD命令を実行する工程がさらに、
前記JKNZD命令の前記命令ポインタに前記相対オフセットを加えた一時的命令ポインタを生成する工程と、
前記一時的命令ポインタが前記JKNZD命令を含むプログラムのコードセグメントリミット外でない場合、前記一時的命令ポインタを前記ターゲット命令の前記アドレスに設定する工程と、
前記一時的命令ポインタが前記JKNZD命令を含む前記プログラムの前記コードセグメントリミット外である場合、フォルトを生成する工程と
を有する、請求項9から14のいずれか1項に記載の方法。 - 前記実行する工程がさらに、前記一時的命令ポインタが前記JKNZD命令を含む前記プログラムの前記コードセグメントリミット外でない場合、前記JKNZD命令のオペランドサイズが16ビットであれば、前記一時的命令ポインタを前記ターゲット命令の前記アドレスに設定する工程の前に、前記一時的命令ポインタの上位2バイトをクリアする工程を有する、請求項15に記載の方法。
- 第1書き込みマスクオペランドおよび第1相対オフセットを含むjump near if the writemask is zero(JKZD)命令、並びに、第2書き込みマスクオペランドおよび第2相対オフセットを含むjump near if the writemask is not zero(JKNZD)命令をデコードするハードウェアデコーダと、
デコードされた前記JKZD命令および前記JKNZD命令を実行する実行ロジックと
を備え、
前記デコードされたJKZD命令の実行は、前記第1書き込みマスクオペランドの全てのビットがゼロである場合に、前記JKZD命令の命令ポインタおよび前記第1相対オフセットを用いて計算される第1ターゲット命令のアドレスへの条件付きのジャンプを行い、
前記デコードされたJKNZD命令の実行は、前記第2書き込みマスクオペランドの少なくとも1つのビットがゼロでない場合に、前記JKNZD命令の命令ポインタおよび前記第2相対オフセットを用いて計算される第2ターゲット命令のアドレスへの条件付きのジャンプを行う、装置。 - 前記実行ロジックは、ベクトル実行ロジックを有する、請求項17に記載の装置。
- 前記JKZD命令の前記第1書き込みマスクオペランドおよび前記JKNZD命令の前記第2書き込みマスクオペランドは、専用の16ビットレジスタである、請求項18に記載の装置。
- 前記JKZD命令および前記JKNZD命令の前記命令ポインタがEIPレジスタに格納される、請求項18または19に記載の装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/078,901 | 2011-04-01 | ||
US13/078,901 US20120254593A1 (en) | 2011-04-01 | 2011-04-01 | Systems, apparatuses, and methods for jumps using a mask register |
PCT/US2011/064487 WO2012134561A1 (en) | 2011-04-01 | 2011-12-12 | Systems, apparatuses, and methods for jumps using a mask register |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2014510351A true JP2014510351A (ja) | 2014-04-24 |
JP2014510351A5 JP2014510351A5 (ja) | 2015-05-21 |
JP5947879B2 JP5947879B2 (ja) | 2016-07-06 |
Family
ID=46928903
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014502547A Active JP5947879B2 (ja) | 2011-04-01 | 2011-12-12 | マスクレジスタを用いてジャンプを行うシステム、装置、および方法 |
Country Status (8)
Country | Link |
---|---|
US (1) | US20120254593A1 (ja) |
JP (1) | JP5947879B2 (ja) |
KR (1) | KR101618669B1 (ja) |
CN (1) | CN103718157B (ja) |
DE (1) | DE112011105123T5 (ja) |
GB (1) | GB2502754B (ja) |
TW (1) | TWI467478B (ja) |
WO (1) | WO2012134561A1 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015158940A (ja) * | 2011-04-01 | 2015-09-03 | インテル コーポレイション | ベクトルフレンドリ命令フォーマット及びその実行 |
US10157061B2 (en) | 2011-12-22 | 2018-12-18 | Intel Corporation | Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks |
JP2022535982A (ja) * | 2019-06-13 | 2022-08-10 | フアシア ジェネラル プロセッサー テクノロジーズ インコーポレイテッド | Gpuにおける明示的な個別マスクレジスタのマスク操作方法 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5976930B2 (ja) * | 2012-08-08 | 2016-08-24 | インテル コーポレイション | バーチャルファンクションを無効にするコールのためのサポートを含むisaブリッジング |
JP6187478B2 (ja) * | 2013-01-11 | 2017-08-30 | 日本電気株式会社 | インデックスキー生成装置及びインデックスキー生成方法並びに検索方法 |
US9207942B2 (en) * | 2013-03-15 | 2015-12-08 | Intel Corporation | Systems, apparatuses,and methods for zeroing of bits in a data element |
US9411600B2 (en) * | 2013-12-08 | 2016-08-09 | Intel Corporation | Instructions and logic to provide memory access key protection functionality |
US9715432B2 (en) * | 2014-12-23 | 2017-07-25 | Intel Corporation | Memory fault suppression via re-execution and hardware FSM |
CN117591184B (zh) * | 2023-12-08 | 2024-05-07 | 超睿科技(长沙)有限公司 | Risc-v向量压缩乱序执行的实现方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS57101938A (en) * | 1980-12-18 | 1982-06-24 | Fujitsu Ltd | Operation controlling system by first read of mask |
JPH05274143A (ja) * | 1992-03-30 | 1993-10-22 | Toshiba Corp | 複合条件処理方式 |
US20110153990A1 (en) * | 2009-12-23 | 2011-06-23 | Ottoni Guilherme D | System, apparatus, and method for supporting condition codes |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4084226A (en) * | 1976-09-24 | 1978-04-11 | Sperry Rand Corporation | Virtual address translator |
JPH0683858A (ja) * | 1992-06-02 | 1994-03-25 | Nec Corp | ベクトル命令処理装置 |
JP3565314B2 (ja) * | 1998-12-17 | 2004-09-15 | 富士通株式会社 | 分岐命令実行制御装置 |
US20100274988A1 (en) * | 2002-02-04 | 2010-10-28 | Mimar Tibet | Flexible vector modes of operation for SIMD processor |
TWI244035B (en) * | 2004-01-30 | 2005-11-21 | Ip First Llc | A mechanism and a microprocessor apparatus for performing an indirect near jump operation |
US7409535B2 (en) * | 2005-04-20 | 2008-08-05 | International Business Machines Corporation | Branch target prediction for multi-target branches by identifying a repeated pattern |
US9529592B2 (en) * | 2007-12-27 | 2016-12-27 | Intel Corporation | Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation |
TWI379230B (en) * | 2008-11-14 | 2012-12-11 | Realtek Semiconductor Corp | Instruction mode identification apparatus and instruction mode identification method |
-
2011
- 2011-04-01 US US13/078,901 patent/US20120254593A1/en not_active Abandoned
- 2011-12-12 JP JP2014502547A patent/JP5947879B2/ja active Active
- 2011-12-12 GB GB1316934.7A patent/GB2502754B/en active Active
- 2011-12-12 DE DE112011105123.9T patent/DE112011105123T5/de not_active Ceased
- 2011-12-12 WO PCT/US2011/064487 patent/WO2012134561A1/en active Application Filing
- 2011-12-12 KR KR1020137026009A patent/KR101618669B1/ko active IP Right Grant
- 2011-12-12 CN CN201180069925.6A patent/CN103718157B/zh not_active Expired - Fee Related
- 2011-12-14 TW TW100146252A patent/TWI467478B/zh not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS57101938A (en) * | 1980-12-18 | 1982-06-24 | Fujitsu Ltd | Operation controlling system by first read of mask |
JPH05274143A (ja) * | 1992-03-30 | 1993-10-22 | Toshiba Corp | 複合条件処理方式 |
US20110153990A1 (en) * | 2009-12-23 | 2011-06-23 | Ottoni Guilherme D | System, apparatus, and method for supporting condition codes |
Non-Patent Citations (2)
Title |
---|
JPN6014041372; インテル株式会社: インテル・アーキテクチャ・ソフトウェア・ディベロッパーズ・マニュアル 中巻 命令セット・リファレンス , 1997, 3-242頁〜3-244頁, CQ出版株式会社 * |
JPN6014041374; 'インテル(R) エクステンデッド・メモリ64 テクノロジ・ソフトウェア・デベロッパーズ・ガイド 第1巻' [OnLine] , 2005, 1-5頁, インテル株式会社 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015158940A (ja) * | 2011-04-01 | 2015-09-03 | インテル コーポレイション | ベクトルフレンドリ命令フォーマット及びその実行 |
US9513917B2 (en) | 2011-04-01 | 2016-12-06 | Intel Corporation | Vector friendly instruction format and execution thereof |
JP2017079078A (ja) * | 2011-04-01 | 2017-04-27 | インテル コーポレイション | ベクトルフレンドリ命令フォーマット及びその実行 |
US10795680B2 (en) | 2011-04-01 | 2020-10-06 | Intel Corporation | Vector friendly instruction format and execution thereof |
US11210096B2 (en) | 2011-04-01 | 2021-12-28 | Intel Corporation | Vector friendly instruction format and execution thereof |
US11740904B2 (en) | 2011-04-01 | 2023-08-29 | Intel Corporation | Vector friendly instruction format and execution thereof |
US10157061B2 (en) | 2011-12-22 | 2018-12-18 | Intel Corporation | Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks |
JP2022535982A (ja) * | 2019-06-13 | 2022-08-10 | フアシア ジェネラル プロセッサー テクノロジーズ インコーポレイテッド | Gpuにおける明示的な個別マスクレジスタのマスク操作方法 |
JP7410186B2 (ja) | 2019-06-13 | 2024-01-09 | フアシア ジェネラル プロセッサー テクノロジーズ インコーポレイテッド | Gpuにおける明示的な個別マスクレジスタのマスク操作方法 |
Also Published As
Publication number | Publication date |
---|---|
KR101618669B1 (ko) | 2016-05-09 |
JP5947879B2 (ja) | 2016-07-06 |
TWI467478B (zh) | 2015-01-01 |
CN103718157A (zh) | 2014-04-09 |
DE112011105123T5 (de) | 2014-03-06 |
TW201250585A (en) | 2012-12-16 |
CN103718157B (zh) | 2017-05-24 |
GB201316934D0 (en) | 2013-11-06 |
US20120254593A1 (en) | 2012-10-04 |
GB2502754B (en) | 2020-09-02 |
WO2012134561A1 (en) | 2012-10-04 |
KR20130140143A (ko) | 2013-12-23 |
GB2502754A (en) | 2013-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6274672B2 (ja) | 装置および方法 | |
JP6109910B2 (ja) | メモリ・ソースを宛先レジスタに展開し、ソース・レジスタを宛先メモリ位置に圧縮するためのシステム、装置および方法 | |
JP6408524B2 (ja) | 書込マスクを用いて2つのソースオペランドを単一のデスティネーションに融合するシステム、装置及び方法 | |
JP5764257B2 (ja) | レジスタをアライメントするためのシステム、装置、および方法 | |
JP6699845B2 (ja) | 方法及びプロセッサ | |
KR101817034B1 (ko) | 반복 종속 조건을 갖는 반복들의 벡터 루프들을 구현하기 위한 명령어 | |
JP6456867B2 (ja) | 密結合ヘテロジニアスコンピューティングのためのハードウェアプロセッサ及び方法 | |
JP5947879B2 (ja) | マスクレジスタを用いてジャンプを行うシステム、装置、および方法 | |
KR101722346B1 (ko) | 적분 이미지 계산 명령어를 위한 방법 및 장치 | |
KR101776227B1 (ko) | 슬라이딩 윈도 인코딩 알고리즘들을 위한 명령어들 | |
TWI489381B (zh) | 多暫存器散布指令 | |
JP6835436B2 (ja) | マスクをマスク値のベクトルに拡張するための方法および装置 | |
JP2018500659A (ja) | 高速ベクトルによる動的なメモリ競合検出 | |
JP2017539010A (ja) | ベクトル飽和ダブルワード/クワッドワードの加算を実行するための命令およびロジック | |
TWI697836B (zh) | 處理包括高功率及標準指令之指令集的方法與處理器 | |
JP2018500666A (ja) | ベクトルビットギャザーを実行するための方法および装置 | |
JP2018500665A (ja) | マスク値を圧縮するための方法および装置 | |
JP2018503162A (ja) | スピンループジャンプを実行するための装置および方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140930 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20141226 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20150130 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20150227 |
|
A524 | Written submission of copy of amendment under article 19 pct |
Free format text: JAPANESE INTERMEDIATE CODE: A524 Effective date: 20150330 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150908 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20151208 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20160108 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20160208 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160308 |
|
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: 20160405 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20160502 |
|
R155 | Notification before disposition of declining of application |
Free format text: JAPANESE INTERMEDIATE CODE: R155 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160603 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5947879 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |