JP6408524B2 - 書込マスクを用いて2つのソースオペランドを単一のデスティネーションに融合するシステム、装置及び方法 - Google Patents
書込マスクを用いて2つのソースオペランドを単一のデスティネーションに融合するシステム、装置及び方法 Download PDFInfo
- Publication number
- JP6408524B2 JP6408524B2 JP2016153777A JP2016153777A JP6408524B2 JP 6408524 B2 JP6408524 B2 JP 6408524B2 JP 2016153777 A JP2016153777 A JP 2016153777A JP 2016153777 A JP2016153777 A JP 2016153777A JP 6408524 B2 JP6408524 B2 JP 6408524B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- write mask
- bits
- field
- register
- 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 description 21
- 239000013598 vector Substances 0.000 claims description 149
- 230000015654 memory Effects 0.000 claims description 136
- 230000004927 fusion Effects 0.000 claims description 29
- 230000000873 masking effect Effects 0.000 claims description 25
- 238000006243 chemical reaction Methods 0.000 claims description 24
- 230000004044 response Effects 0.000 claims description 4
- 241000023320 Luma <angiosperm> Species 0.000 claims 5
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 claims 5
- 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 60
- 238000006073 displacement reaction Methods 0.000 description 42
- 238000010586 diagram Methods 0.000 description 24
- 238000012545 processing Methods 0.000 description 19
- 238000007667 floating Methods 0.000 description 16
- 239000003607 modifier Substances 0.000 description 15
- 230000003190 augmentative effect Effects 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 230000002123 temporal effect Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 7
- 230000008901 benefit Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 230000003416 augmentation Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000001629 suppression Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 239000002131 composite material Substances 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
- 238000001514 detection method Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002789 length control Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 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
- 239000002699 waste material 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
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- 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/30181—Instruction operation extension or modification
- G06F9/30192—Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Description
For (i=0;i<N;i++)
{
C[i]=(a[i]>0? A[i]:B[i];
}
をベクトル化するためには、1)a[i]>0が真であるかを指し示すブール代数のベクトルを生成する手法と、2)そのブール代数のベクトルに基づいて2つのソース(A[i]又はB[i])から何れかの値を選択し、その内容を異なるデスティネーション(C[i])に書き込む方法とを必要とする。
以下は、一般的に“融合”と呼ばれる実施形態と、そのような命令を実行するために使用され得るシステム、アーキテクチャ、命令フォーマットなどの実施形態であり、背景技術に記載したものを含む様々な分野で有益なものである。融合命令の実行は、要素のベクトルの比較の結果からの真/偽ビットを格納する1つのマスクレジスタを用い、それらのビットに基づいて、2つの特徴的なベクトルソースの要素間で選択を行うことができるので、先述の問題の第2の部分に効率的に対処する。換言すれば、融合命令の実行は、2つのソース間の要素毎の融合を、これらのソース間のセレクタとして書込マスク(ライトマスク)を用いて、プロセッサに実行させる。その結果がデスティネーションレジスタに書き込まれる。一部の実施形態において、これらのソースのうちの少なくとも一方は、例えば128ビット、256ビット、512ビットのベクトルレジスタなどのレジスタである。一部の実施形態において、それらソースオペランドの少なくとも一方は、開始メモリロケーションに関連する複数のデータ要素の集合である。さらに、一部の実施形態において、一方又は双方のソースのデータ要素は、如何なる融合にも先立って、例えばスウィズル、ブロードキャスト、コンバージョンなど(ここで例を述べる)のデータ変換を経る。書込マスクレジスタの例については詳細に後述する。
図7A−7Bは、本発明の実施形態に従った一般的ベクトルフレンドリー命令フォーマット及びその命令テンプレートを例示するブロック図である。図7Aは、本発明の実施形態に従った一般的ベクトルフレンドリー命令フォーマット及びそのクラスA命令テンプレートを例示するブロック図であり、図7Bは、本発明の実施形態に従った一般的ベクトルフレンドリー命令フォーマット及びそのクラスB命令テンプレートを例示するブロック図である。具体的には、どちらもノーメモリアクセス705命令テンプレートとメモリアクセス720命令テンプレートとを含むクラスA命令テンプレート及びクラスB命令テンプレートが規定される一般的ベクトルフレンドリー命令フォーマット700が示されている。ベクトルフレンドリー命令フォーマットの文脈における一般的なる用語は、特定の命令セットに結び付けられていない命令フォーマットを意味する。ベクトルフレンドリー命令フォーマットの命令がレジスタ(ノーメモリアクセス705命令テンプレート)又はレジスタ/メモリ(メモリアクセス720命令テンプレート)の何れかをソースとするベクトル上で動作する実施形態を説明するが、本発明の他の実施形態は、これらの一方のみをサポートしてもよい。また、ベクトル命令フォーマットのロード・格納命令が存在する本発明の実施形態を説明するが、他の実施形態は、それに代えて、あるいは加えて、ベクトルをレジスタの内/外に(例えば、メモリからレジスタに、レジスタからメモリに、レジスタ間で)移動させる異なる命令フォーマットの命令を有する。さらに、2つのクラスの命令テンプレートをサポートする本発明の実施形態を説明するが、他の実施形態はこれらのうちの一方のみ、又は3つ以上をサポートしてもよい。
一般的ベクトルフレンドリー命令フォーマット700は、図7A−7Bに例示した順に以下のフィールドを含む。
クラスフィールド768 ― このフィールドのコンテンツは、異なるクラスの命令間で区別を行う。図7A−7Bを参照するに、このフィールドのコンテンツは、クラスA命令とクラスB命令との間で選択を行う。図7A−7Bでは、フィールド内に特定の値が存在することを指し示すために、角を丸めた四角を使用している(例えば、図7A−7Bそれぞれのクラスフィールド768のクラスA 768A及びクラスB 768B)。
クラスAのノーメモリアクセス705命令テンプレートの場合、アルファフィールド752はRSフィールド752Aとして解釈され、そのコンテンツが、様々な増補演算種類のうちのどれが実行されるべきかを識別し(例えば、メモリアクセスなしラウンド型演算710命令テンプレート及びメモリアクセスなしデータ変換型演算715命令テンプレートに対して、それぞれ、ラウンド752A.1及びデータ変換752A.2が指定される)、ベータフィールド754は、指定された種類の演算のうちのどれが実行されるべきかを識別する。図7において、角を丸めたブロックは、特定の値が存在することを指し示すために使用されている(例えば、モディファイアフィールド746内のメモリアクセスなし746A;アルファフィールド752/rsフィールド752A内のラウンド752A.1及びデータ変換752A.2)。ノーメモリアクセス705命令テンプレートには、スケールフィールド760、変位フィールド762A及び変位係数フィールド762Bは存在しない。
メモリアクセスなしフルラウンド制御型演算710命令テンプレートにおいて、ベータフィールド754はラウンド制御フィールド754Aとして解釈され、そのコンテンツは静的ラウンディングを提供する。本発明の記載の実施形態において、ラウンド制御フィールド754Aは抑圧全浮動小数点例外(suppress all floating point exceptions;SAE)フィールド756とラウンド演算制御フィールド758とを含んでいるが、他の実施形態は、これらの概念の双方を同一フィールドにエンコードしたり、これらの概念/フィールドの一方若しくは他方のみを有したりしてもよい(例えば、ラウンド演算制御フィールド758のみを有し得る)。
メモリアクセスなしデータ変換型演算715命令テンプレートにおいて、ベータフィールド754はデータ変換フィールド754Bとして解釈され、そのコンテンツは、数多くのデータ変換(例えば、データ変換なし、スウィズル、ブロードキャスト)のうちの何れが実行されるべきかを識別する。
クラスAのメモリアクセス720命令テンプレートにおいて、アルファフィールド752は退去ヒント(eviction hint;EH)フィールド752Bとして解釈され、そのコンテンツは、複数の退去ヒントのうちの何れが使用されるべきかを識別し(図7Aでは、メモリアクセスありテンポラル725命令テンプレート及びメモリアクセスあり非テンポラル730命令テンプレートに対して、それぞれ、テンポラル752B.1及び非テンポラル752B.2が指定されている)、ベータフィールド754はデータ操作フィールド754Cとして解釈され、そのコンテンツは、数多くのデータ操作演算(プリミティブとしても知られる)(例えば、操作なし、ブロードキャスト、ソースのアップコンバージョン、及びデスティネーションのダウンコンバージョン)のうちの何れが実行されるべきかを識別する。メモリアクセス720命令テンプレートは、スケールフィールド760を含むとともに、必要に応じて変位フィールド762A又は変位スケールフィールド762Bを含む。
テンポラルデータとは、キャッシュすることの恩恵を受けるのに十分な早期に再使用されそうなデータである。これはヒントであるが、異なるプロセッサは、ヒントを完全に無視することを含めて、それを異なるように実装してもよい。
非テンポラルデータとは、第1レベルキャッシュでキャッシュすることの恩恵を受けるのに十分な早期に再使用されそうになく、退去の優先度を与えられるべきデータである。これはヒントであるが、異なるプロセッサは、ヒントを完全に無視することを含めて、それを異なるように実装してもよい。
クラスBの命令テンプレートの場合、アルファフィールド752は書込マスク制御(Z)フィールド752Cとして解釈され、そのコンテンツは、書込マスクフィールド770によって制御される書込マスキングが融合化又はゼロ化の何れであるかを識別する。
クラスBのノーメモリアクセス705命令テンプレートの場合、ベータフィールド754の一部はRLフィールド757Aとして解釈され、そのコンテンツは、様々な増補演算種類のうちの何れが実行されるべきかを識別し(例えば、メモリアクセスなし書込マスク制御パーシャルラウンド制御型演算712命令テンプレート、及びメモリアクセスなし書込マスク制御VSIZE型演算717命令テンプレートに対して、それぞれ、ラウンド757A.1、及びベクトル長(VSIZE)757A.2が指定される)、ベータフィールド754の残部は、指定された種類の複数の演算のうちの何れが実行されるべきかを識別する。図7において、角を丸めたブロックは、特定の値が存在することを指し示すために使用されている(例えば、モディファイアフィールド746内のメモリアクセスなし746A;RLフィールド757Aのラウンド757A.1及びVSIZE757A.2)。ノーメモリアクセス705命令テンプレートには、スケールフィールド760、変位フィールド762A及び変位スケールフィールド762Bは存在しない。
メモリアクセスなし書込マスク制御パーシャルラウンド制御型演算712命令テンプレートにおいて、ベータフィールド754の前記残部はラウンド演算フィールド759Aとして解釈され、且つ例外イベント報告が無効にされる(所与の命令は、如何なる種類の浮動小数点例外フラグをも報告せず、如何なる浮動小数点例外ハンドラをも呼び出さない)。
メモリアクセスなし書込マスク制御VSIZE型演算717命令テンプレートにおいて、ベータフィールド754の前記残部はベクトル長フィールド759Bとして解釈され、そのコンテンツは、数多くのデータベクトル長変換(例えば、128バイト、256バイト、又は512バイト)のうちの何れが実行されるべきかを識別する。
クラスBのメモリアクセス720命令テンプレートの場合、ベータフィールド754の一部はブロードキャストフィールド757Bとして解釈され、そのコンテンツは、ブロードキャスト型データ操作演算が実行されるべきか否かを識別し、ベータフィールド754の残部はベクトル長フィールド759Bとして解釈される。メモリアクセス720命令テンプレートは、スケールフィールド760を含むとともに、必要に応じて変位フィールド762A又は変位スケールフィールド762Bを含む。
一般的ベクトルフレンドリー命令フォーマット700に関し、フォーマットフィールド740と、基本演算フィールド742と、データ要素幅フィールド764とを含むフルオペフィールド774が示されている。フルオペコードフィールド774がこれらのフィールドの全てを含む一実施形態を示したが、フルオペコードフィールド774は、これらのフィールドの全てをサポートしない実施形態において、これらのフィールドの全てより少ないフィールドを含む。フルオペコードフィールド774はオペレーションコードを提供する。
図8A−8Cは、本発明の実施形態に従った具体的なベクトルフレンドリー命令フォーマットを例示している。図8A−8Cは、フィールドの位置、サイズ、解釈及び順序と、それらのフィールドの一部の値とを詳述しているという意味で具体的なベクトルフレンドリー命令フォーマット800を示している。具体的なベクトルフレンドリー命令フォーマット800は、x86命令セットを拡張するために使用されることができ、故に、フィールドの一部は既存のx86命令セット及びそのエクステンション(例えば、AVX)で使用されているものと同様あるいは同じである。このフォーマットは、拡張を有する既存のx86命令セットのプレフィックスエンコーディングフィールド、リアルオペコードバイトフィールド、MOD R/Mフィールド、SIBフィールド、変位フィールド及び即値フィールドと一貫性を有するままである。図8A−8Cからのフィールドがマッピングされる図7からのフィールドが例示される。
一般的ベクトルフレンドリー命令フォーマット700は、図8A−8Cに例示する順序にて以下のフィールドを含む。
EVEXプレフィックス802は4バイトの形態でエンコードされる。
これはオペコードバイトとしても知られる。オペコードの部分がこのフィールドで指定される。
モディファイアフィールド746(MODR/M.MOD、ビット[7:6]−MODフィールド842) ― 先述のように、MODフィールド842のコンテンツは、メモリアクセス演算と非メモリアクセス演算との間の区別を行う。このフィールドについては更に後述する。
スケールフィールド760(SIB.SS、ビット[7:6]) ― 先述のように、スケールフィールド760のコンテンツはメモリアドレス生成に使用される。このフィールドについては更に後述する。
変位フィールド762A(バイト7−10) ― MODフィールド842が10を格納するとき、バイト7−10は変位フィールド762Aであり、レガシー32ビット変位(disp32)と同じに作用し、バイトの粒度にて作用する。
即値フィールド772は上述のように作用する。
図9は、本発明の一実施形態に従ったレジスタアーキテクチャ900のブロック図である。レジスタアーキテクチャのレジスタファイル及びレジスタを以下に列挙する。
換言すれば、ベクトル長フィールド759Bが、最大長と、1つ以上のその他の、より短い長さとの間で選択を行い、そのような短い長さの各々は、先行する長さの半分の長さであり、ベクトル長フィールド759Bを有しない命令テンプレートは最大ベクトル長で作用する。また、一実施形態において、具体的なベクトルフレンドリー命令フォーマット800のクラスB命令テンプレートは、パックト若しくはスカラー単精度/倍精度浮動小数点データ、及びパックト若しくはスカラー整数データ上で作用する。スカラー演算は、zmm/ymm/xmmレジスタ内の最も低次のデータ要素位置で実行される演算であり、より高次のデータ要素位置は、実施形態に応じて、命令前と同じままに残されるか、ゼロ化されるかの何れかである。
MMXパックト整数(INT)フラットレジスタファイル950が上にエイリアスされたスカラー浮動小数点(FP)スタックレジスタファイル(x87スタック)945 ― 図示した実施形態において、x87スタックは、x87命令セットエクステンションを用いて32/64/80ビット浮動小数点データについてスカラー浮動小数点演算を実行するために使用される8要素スタックであり、MMXレジスタは、64ビットパックト整数データについて演算を実行することと、MMXレジスタとXMMレジスタとの間で実行される演算に関するオペランドを保持することとのために使用される。
図10A−10Bは、典型的なイン・オーダー型のプロセッサアーキテクチャのブロック図を示している。これらの例示実施形態は、ワイドベクトルプロセッサ(VPU)で増強されるイン・オーダーCPUコアの複数のインスタンス化にのっとって設計されている。コアは、e12tアプリケーションに応じて、高帯域インターコネクトネットワークを介して、固定機能ロジック、メモリI/Oインタフェース、及びその他の必要なI/Oロジックと通信する。例えば、スタンドアローンGPUとしてのこの実施形態の実装は、典型的に、PCIeバスを含むことになる。
図11は、本発明の実施形態に従ったアウト・オブ・オーダーアーキテクチャを例示するブロック図である。具体的には、図11は、周知の代表的なアウト・オブ・オーダーアーキテクチャが、ベクトルフレンドリー命令フォーマット及びその実行を組み込むように変更されたものを示している。図11において、矢印は2つ以上のユニット間の結合を表しており、矢印の向きはそれらのユニット間のデータフローの向きを指し示している。図11は、実行エンジンユニット1110とメモリユニット1115とに結合されたフロントエンドユニット1105を含んでいる。実行エンジンユニット1110は更にメモリユニット1115に結合されている。
図16は、本発明の実施形態に従った、集積化メモリコントローラ及びグラフィックスを備えたシングルコアプロセッサ及びマルチコアプロセッサのブロック図である。図16内の実線のボックスは、単一のコア1602Aと、システムエージェント1610と、一組の1つ以上のバスコントローラユニット1616とを有するプロセッサ1600を示し、必要に応じての破線のボックスの追加は、複数のコア1602A−Nと、システムエージェント1610内の一組の1つ以上の集積メモリコントローラユニット1614と、集積グラフィックロジック1608とを有する代替的なプロセッサ1600を示す。
図12−14は、プロセッサ1600を含めるのに適した典型的なシステムであり、図15は、コア1602のうちの1つ以上を含み得る典型的なシステム・オン・チップ(SoC)である。ラップトップPC、デスクトップPC、手持ち式PC、携帯情報端末、エンジニアリングワークステーション、サーバ、ネットワーク装置、ネットワークハブ、スイッチ、内蔵プロセッサ、デジタル信号プロセッサ(DSP)、グラフィックス装置、ビデオゲーム装置、セットトップボックス、マイクロコントローラ、携帯電話、ポータブルメディアプレイヤ、手持ち式装置、及び様々なその他の電子機器に関して技術的に知られたその他のシステム設計及び構成も適し得る。一般に、ここに開示されるようなプロセッサ及び/又はその他の実行ロジックを組み込むことが可能な多様なシステム又は電子機器は概して適している。
ベクトルフレンドリー命令フォーマットを生来的に実行し得る実施形態を説明してきたが、本発明の他の実施形態は、異なる命令セットを実行するプロセッサ(例えば、MIPSテクノロジ社のMIPS命令セットを実行するプロセッサ、ARMホールディング社のARM命令セットを実行するプロセッサ)上で動作するエミュレーション層を介して、ベクトルフレンドリー命令フォーマットを実行してもよい。また、図面のフロー図は本発明の特定の実施形態によって実行される特定の順序の処理を示しているが、理解されるように、そのような順序は例示である(例えば、他の実施形態は、異なる順序でそれらの処理を実行したり、特定の複数の処理を結合したり、特定の複数の処理を重ね合わせたり、等々し得る)。
Claims (22)
- 128ビット、256ビット、及び512ビットのうちの少なくとも1つを各々が格納する複数のベクトルレジスタと、
複数の書込マスクレジスタであり、当該書込マスクレジスタは、ゼロ化マスキングに使用されるように動作可能である、複数の書込マスクレジスタと、
命令をデコードするデコーダであり、前記命令は、前記複数のベクトルレジスタのうちの1つのベクトルレジスタに格納される第1のソースオペランドと、第2のソースオペランドと、前記複数の書込マスクレジスタのうちの1つの書込マスクレジスタに格納されるマスクオペランドと、ゼロ化マスキングを指し示すことができるフィールドとを有し、前記第1及び第2のソースオペランドは各々、複数のデータ要素を含む、デコーダと、
前記命令に応答して、前記マスクオペランドのビット位置の値を用いて、前記第1及び第2のソースオペランドの対応するデータ要素の間で選択を行い、選択されたデータ要素を、前記複数のベクトルレジスタのうちのデスティネーションベクトルレジスタ内の対応する位置に格納する実行ユニットと、
を有する装置。 - 前記第1のソースオペランドは512ビットを有する、請求項1に記載の装置。
- 前記選択に使用される前記マスクオペランドのビット位置の数は、前記書込マスクレジスタのビット数よりも少ない、請求項1又は2に記載の装置。
- 前記書込マスクレジスタは64ビットレジスタであり、前記マスクオペランドは、8ビットのみ及び16ビットのみのうちの一方を有する、請求項3に記載の装置。
- 前記命令は、前記第1のソースオペランドの前記データ要素のサイズを規定する1つ以上のビットを有する、請求項1乃至4の何れか一項に記載の装置。
- 前記命令は、融合化マスキング及びゼロ化マスキングのうちのどちらが前記命令に使用されるかを制御するフィールドを有する、請求項1乃至5の何れか一項に記載の装置。
- 128ビット、256ビット、及び512ビットのうちの少なくとも1つを各々が格納する複数のベクトルレジスタと、
一組の書込マスクレジスタであり、当該一組の書込マスクレジスタのうちの複数の書込マスクレジスタは各々、ゼロ化マスキング及び融合化マスキングのどちらかでの書込マスクとして使用されるように動作可能であるが、当該一組の書込マスクレジスタのうちの少なくとも1つの書込マスクレジスタは、書込マスクとして使用されるように動作可能でない、一組の書込マスクレジスタと、
命令をデコードするデコーダであり、前記命令は、前記複数のベクトルレジスタのうちの1つのベクトルレジスタに格納される第1のソースオペランドと、第2のソースオペランドと、前記複数の書込マスクレジスタのうちの1つの書込マスクレジスタに格納されるマスクオペランドとを有し、前記第1及び第2のソースオペランドは各々、複数のデータ要素を含む、デコーダと、
前記命令に応答して、前記マスクオペランドのビット位置の値を用いて、前記第1及び第2のソースオペランドの対応するデータ要素の間で選択を行い、選択されたデータ要素を、前記複数のベクトルレジスタのうちのデスティネーションベクトルレジスタ内の対応する位置に格納する実行ユニットと、
を有し、
前記命令は、複数のその他の命令とともに命令セットに含まれ、前記複数のその他の命令の各命令が、前記複数の書込マスクレジスタ内にマスクオペランドを有し、且つ該各命令が実行されるときに融合化マスキング及びゼロ化マスキングのうちのどちらが使用されるかを制御するフィールドを有する、
装置。 - 前記第1のソースオペランドは512ビットを有する、請求項7に記載の装置。
- 前記選択に使用される前記マスクオペランドのビット位置の数は、前記書込マスクレジスタのビット数よりも少ない、請求項7又は8に記載の装置。
- 前記書込マスクレジスタは64ビットレジスタであり、前記マスクオペランドは、8ビットのみ及び16ビットのみのうちの一方を有する、請求項9に記載の装置。
- 前記命令は、前記第1のソースオペランドの前記データ要素のサイズを規定する1つ以上のビットを有する、請求項7乃至10の何れか一項に記載の装置。
- 128ビット、256ビット、及び512ビットのうちの少なくとも1つを各々が格納する複数のベクトルレジスタと、
複数の書込マスクレジスタと、
命令をデコードするデコーダであり、前記命令は、前記複数のベクトルレジスタのうちの1つのベクトルレジスタに格納される第1のソースオペランドと、メモリ内にある第2のソースオペランドと、前記複数の書込マスクレジスタのうちの1つの書込マスクレジスタに格納されるマスクオペランドとを有し、前記第1のソースオペランドは、複数のデータ要素を含み、前記命令は、融合化マスキング及びゼロ化マスキングのうちのどちらが前記命令に使用されるかを制御するフィールドを有する、デコーダと、
前記命令に応答して、前記第2のソースオペランド上で数値変換を実行して複数の変換されたデータ要素を生成し、前記変換されたデータ要素と、前記第1のソースオペランドの対応するデータ要素との間で、前記マスクオペランドの対応するビット位置の値を用いて選択を行い、選択されたデータ要素を、前記複数のベクトルレジスタのうちのデスティネーションベクトルレジスタ内の対応する位置に格納する実行ユニットと、
を有する装置。 - 前記数値変換はアップコンバージョンである、請求項12に記載の装置。
- 前記選択に使用される前記マスクオペランドのビット位置の数は、前記書込マスクレジスタのビット数よりも少ない、請求項12又は13に記載の装置。
- 前記命令は、前記第1のソースオペランドの前記データ要素のサイズを規定する1つ以上のビットを有する、請求項12乃至14の何れか一項に記載の装置。
- 128ビット、256ビット、及び512ビットのうちの少なくとも1つを各々が格納する複数のベクトルレジスタと、
複数の書込マスクレジスタと、
命令をデコードするデコーダであり、前記命令は、前記複数のベクトルレジスタのうちの1つのベクトルレジスタに格納される第1のソースオペランドと、メモリに格納される第2のソースオペランドと、前記複数の書込マスクレジスタのうちの1つの書込マスクレジスタに格納されるマスクオペランドとを有し、前記第1及び第2のソースオペランドは各々、複数のデータ要素を含む、デコーダと、
前記命令に応答して、前記第2のソースオペランドの前記データ要素をスウィズルして複数のスウィズルされたデータ要素を提供し、前記スウィズルされたデータ要素と、前記第1のソースオペランドの対応するデータ要素との間で、前記マスクオペランドの対応するビット位置の値を用いて選択を行い、選択されたデータ要素を、前記複数のベクトルレジスタのうちのデスティネーションベクトルレジスタ内の対応する位置に格納する実行ユニットと、
を有する装置。 - 前記選択に使用される前記マスクオペランドのビット位置の数は、前記書込マスクレジスタのビット数よりも少ない、請求項16に記載の装置。
- 前記命令は、前記第1のソースオペランドの前記データ要素のサイズを規定する1つ以上のビットを有する、請求項16又は17に記載の装置。
- 前記命令は、融合化マスキング及びゼロ化マスキングのうちのどちらが前記命令に使用されるかを制御するフィールドを有する、請求項16乃至18の何れか一項に記載の装置。
- 装置であって、
128ビット、256ビット、及び512ビットのうちの少なくとも1つを各々が格納する複数のベクトルレジスタと、
複数の書込マスクレジスタであり、当該装置が、該複数の書込マスクレジスタの各々を、ゼロ化マスキング及び融合化マスキングのどちらかに使用することができる、複数の書込マスクレジスタと、
命令をデコードするデコーダであり、前記命令は、前記複数のベクトルレジスタのうちの1つのベクトルレジスタに格納される第1のソースオペランドと、第2のソースオペランドと、前記複数の書込マスクレジスタのうちの1つの書込マスクレジスタに格納されるマスクオペランドとを有し、前記第1及び第2のソースオペランドは各々、複数のデータ要素を含む、デコーダと、
前記命令に応答して、前記マスクオペランドのビット位置の値を用いて、前記第1及び第2のソースオペランドの対応するデータ要素の間で選択を行い、選択されたデータ要素を、前記複数のベクトルレジスタのうちのデスティネーションベクトルレジスタ内の対応する位置に格納する実行ユニットと
を有し、
前記命令は、複数のその他の命令とともに命令セットに含まれ、前記複数のその他の命令の各々が、前記書込マスクレジスタにマスクオペランドを有し、且つゼロ化マスキング及び融合化マスキングのうちのどちらが該命令に使用されるかを制御するフィールドを有する、
装置。 - 前記命令は、前記第1のソースオペランドの前記データ要素のサイズを規定する1つ以上のビットを有する、請求項20に記載の装置。
- 前記選択に使用される前記マスクオペランドのビット位置の数は、前記書込マスクレジスタのビット数よりも少ない、請求項20又は21に記載の装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/078,864 US20120254588A1 (en) | 2011-04-01 | 2011-04-01 | Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask |
US13/078,864 | 2011-04-01 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014502546A Division JP5986188B2 (ja) | 2011-04-01 | 2011-12-12 | 書込マスクを用いて2つのソースオペランドを単一のデスティネーションに融合するシステム、装置及び方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018175880A Division JP2019032859A (ja) | 2011-04-01 | 2018-09-20 | 書込マスクを用いて2つのソースオペランドを単一のデスティネーションに融合するシステム、装置及び方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2017010573A JP2017010573A (ja) | 2017-01-12 |
JP6408524B2 true JP6408524B2 (ja) | 2018-10-17 |
Family
ID=46928898
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014502546A Active JP5986188B2 (ja) | 2011-04-01 | 2011-12-12 | 書込マスクを用いて2つのソースオペランドを単一のデスティネーションに融合するシステム、装置及び方法 |
JP2016153777A Active JP6408524B2 (ja) | 2011-04-01 | 2016-08-04 | 書込マスクを用いて2つのソースオペランドを単一のデスティネーションに融合するシステム、装置及び方法 |
JP2018175880A Pending JP2019032859A (ja) | 2011-04-01 | 2018-09-20 | 書込マスクを用いて2つのソースオペランドを単一のデスティネーションに融合するシステム、装置及び方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014502546A Active JP5986188B2 (ja) | 2011-04-01 | 2011-12-12 | 書込マスクを用いて2つのソースオペランドを単一のデスティネーションに融合するシステム、装置及び方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018175880A Pending JP2019032859A (ja) | 2011-04-01 | 2018-09-20 | 書込マスクを用いて2つのソースオペランドを単一のデスティネーションに融合するシステム、装置及び方法 |
Country Status (9)
Country | Link |
---|---|
US (3) | US20120254588A1 (ja) |
JP (3) | JP5986188B2 (ja) |
KR (1) | KR101610691B1 (ja) |
CN (3) | CN106681693B (ja) |
BR (1) | BR112013025409A2 (ja) |
DE (1) | DE112011105122T5 (ja) |
GB (2) | GB2503829A (ja) |
TW (2) | TWI470554B (ja) |
WO (1) | WO2012134560A1 (ja) |
Families Citing this family (71)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8515052B2 (en) | 2007-12-17 | 2013-08-20 | Wai Wu | Parallel signal processing system and method |
US20120254588A1 (en) * | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask |
PL3422178T3 (pl) | 2011-04-01 | 2023-06-26 | Intel Corporation | Przyjazny dla wektorów format instrukcji i jego wykonanie |
US9600285B2 (en) | 2011-12-22 | 2017-03-21 | Intel Corporation | Packed data operation mask concatenation processors, methods, systems and instructions |
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 |
CN104011661B (zh) * | 2011-12-23 | 2017-04-12 | 英特尔公司 | 用于大整数运算的向量指令的装置和方法 |
WO2013095609A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for performing conversion of a mask register into a vector register |
EP3627764B1 (en) * | 2012-03-30 | 2021-07-28 | Intel Corporation | Method and apparatus to process sha-2 secure hashing algorithm |
US9501276B2 (en) * | 2012-12-31 | 2016-11-22 | Intel Corporation | Instructions and logic to vectorize conditional loops |
US9411593B2 (en) * | 2013-03-15 | 2016-08-09 | Intel Corporation | Processors, methods, systems, and instructions to consolidate unmasked elements of operation masks |
US9207941B2 (en) * | 2013-03-15 | 2015-12-08 | Intel Corporation | Systems, apparatuses, and methods for reducing the number of short integer multiplications |
US9477467B2 (en) | 2013-03-30 | 2016-10-25 | Intel Corporation | Processors, methods, and systems to implement partial register accesses with masked full register accesses |
US9081700B2 (en) * | 2013-05-16 | 2015-07-14 | Western Digital Technologies, Inc. | High performance read-modify-write system providing line-rate merging of dataframe segments in hardware |
US10108805B2 (en) | 2013-06-26 | 2018-10-23 | Intel Corporation | Method and apparatus to process SHA-2 secure hashing algorithm |
US9395990B2 (en) | 2013-06-28 | 2016-07-19 | Intel Corporation | Mode dependent partial width load to wider register processors, methods, and systems |
US9606803B2 (en) | 2013-07-15 | 2017-03-28 | Texas Instruments Incorporated | Highly integrated scalable, flexible DSP megamodule architecture |
EP3087481A4 (en) * | 2013-12-23 | 2017-08-16 | Intel Corporation | System-on-a-chip (soc) including hybrid processor cores |
EP3123301A1 (en) | 2014-03-27 | 2017-02-01 | Intel Corporation | Processors, methods, systems, and instructions to store consecutive source elements to unmasked result elements with propagation to masked result elements |
US10223119B2 (en) | 2014-03-28 | 2019-03-05 | Intel Corporation | Processors, methods, systems, and instructions to store source elements to corresponding unmasked result elements with propagation to masked result elements |
US9513913B2 (en) * | 2014-07-22 | 2016-12-06 | Intel Corporation | SM4 acceleration processors, methods, systems, and instructions |
EP3001307B1 (en) * | 2014-09-25 | 2019-11-13 | Intel Corporation | Bit shuffle processors, methods, systems, and instructions |
US9467279B2 (en) | 2014-09-26 | 2016-10-11 | Intel Corporation | Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality |
KR102321941B1 (ko) * | 2014-12-17 | 2021-11-05 | 인텔 코포레이션 | 스핀-루프 점프를 수행하기 위한 장치 및 방법 |
US20160179521A1 (en) * | 2014-12-23 | 2016-06-23 | Intel Corporation | Method and apparatus for expanding a mask to a vector of mask values |
US20160188341A1 (en) * | 2014-12-24 | 2016-06-30 | Elmoustapha Ould-Ahmed-Vall | Apparatus and method for fused add-add instructions |
US20160188333A1 (en) * | 2014-12-27 | 2016-06-30 | Intel Coporation | Method and apparatus for compressing a mask value |
US11544214B2 (en) | 2015-02-02 | 2023-01-03 | Optimum Semiconductor Technologies, Inc. | Monolithic vector processor configured to operate on variable length vectors using a vector length register |
US10001995B2 (en) * | 2015-06-02 | 2018-06-19 | Intel Corporation | Packed data alignment plus compute instructions, processors, methods, and systems |
EP3125108A1 (en) * | 2015-07-31 | 2017-02-01 | ARM Limited | Vector processing using loops of dynamic vector length |
US9830150B2 (en) | 2015-12-04 | 2017-11-28 | Google Llc | Multi-functional execution lane for image processor |
US10152321B2 (en) * | 2015-12-18 | 2018-12-11 | Intel Corporation | Instructions and logic for blend and permute operation sequences |
US20170177350A1 (en) * | 2015-12-18 | 2017-06-22 | Intel Corporation | Instructions and Logic for Set-Multiple-Vector-Elements Operations |
US10275243B2 (en) | 2016-07-02 | 2019-04-30 | Intel Corporation | Interruptible and restartable matrix multiplication instructions, processors, methods, and systems |
JP6544363B2 (ja) | 2017-01-24 | 2019-07-17 | トヨタ自動車株式会社 | 内燃機関の制御装置 |
US11360770B2 (en) | 2017-03-20 | 2022-06-14 | Intel Corporation | Systems, methods, and apparatuses for zeroing a matrix |
US11275588B2 (en) | 2017-07-01 | 2022-03-15 | Intel Corporation | Context save with variable save state size |
US11023235B2 (en) | 2017-12-29 | 2021-06-01 | Intel Corporation | Systems and methods to zero a tile register pair |
US11789729B2 (en) | 2017-12-29 | 2023-10-17 | Intel Corporation | Systems and methods for computing dot products of nibbles in two tile operands |
US11093247B2 (en) | 2017-12-29 | 2021-08-17 | Intel Corporation | Systems and methods to load a tile register pair |
US11816483B2 (en) | 2017-12-29 | 2023-11-14 | Intel Corporation | Systems, methods, and apparatuses for matrix operations |
US11809869B2 (en) | 2017-12-29 | 2023-11-07 | Intel Corporation | Systems and methods to store a tile register pair to memory |
US11669326B2 (en) | 2017-12-29 | 2023-06-06 | Intel Corporation | Systems, methods, and apparatuses for dot product operations |
US10664287B2 (en) | 2018-03-30 | 2020-05-26 | Intel Corporation | Systems and methods for implementing chained tile operations |
US11093579B2 (en) | 2018-09-05 | 2021-08-17 | Intel Corporation | FP16-S7E8 mixed precision for deep learning and other algorithms |
US10970076B2 (en) | 2018-09-14 | 2021-04-06 | Intel Corporation | Systems and methods for performing instructions specifying ternary tile logic operations |
US11579883B2 (en) | 2018-09-14 | 2023-02-14 | Intel Corporation | Systems and methods for performing horizontal tile operations |
US10719323B2 (en) | 2018-09-27 | 2020-07-21 | Intel Corporation | Systems and methods for performing matrix compress and decompress instructions |
US10990396B2 (en) | 2018-09-27 | 2021-04-27 | Intel Corporation | Systems for performing instructions to quickly convert and use tiles as 1D vectors |
US10866786B2 (en) | 2018-09-27 | 2020-12-15 | Intel Corporation | Systems and methods for performing instructions to transpose rectangular tiles |
US10963256B2 (en) | 2018-09-28 | 2021-03-30 | Intel Corporation | Systems and methods for performing instructions to transform matrices into row-interleaved format |
US10896043B2 (en) | 2018-09-28 | 2021-01-19 | Intel Corporation | Systems for performing instructions for fast element unpacking into 2-dimensional registers |
US10929143B2 (en) | 2018-09-28 | 2021-02-23 | Intel Corporation | Method and apparatus for efficient matrix alignment in a systolic array |
US10963246B2 (en) | 2018-11-09 | 2021-03-30 | Intel Corporation | Systems and methods for performing 16-bit floating-point matrix dot product instructions |
US10929503B2 (en) | 2018-12-21 | 2021-02-23 | Intel Corporation | Apparatus and method for a masked multiply instruction to support neural network pruning operations |
US11294671B2 (en) | 2018-12-26 | 2022-04-05 | Intel Corporation | Systems and methods for performing duplicate detection instructions on 2D data |
US11886875B2 (en) | 2018-12-26 | 2024-01-30 | Intel Corporation | Systems and methods for performing nibble-sized operations on matrix elements |
US20200210517A1 (en) | 2018-12-27 | 2020-07-02 | Intel Corporation | Systems and methods to accelerate multiplication of sparse matrices |
US10922077B2 (en) | 2018-12-29 | 2021-02-16 | Intel Corporation | Apparatuses, methods, and systems for stencil configuration and computation instructions |
US10942985B2 (en) | 2018-12-29 | 2021-03-09 | Intel Corporation | Apparatuses, methods, and systems for fast fourier transform configuration and computation instructions |
US11016731B2 (en) | 2019-03-29 | 2021-05-25 | Intel Corporation | Using Fuzzy-Jbit location of floating-point multiply-accumulate results |
US11269630B2 (en) | 2019-03-29 | 2022-03-08 | Intel Corporation | Interleaved pipeline of floating-point adders |
US10990397B2 (en) | 2019-03-30 | 2021-04-27 | Intel Corporation | Apparatuses, methods, and systems for transpose instructions of a matrix operations accelerator |
US11175891B2 (en) | 2019-03-30 | 2021-11-16 | Intel Corporation | Systems and methods to perform floating-point addition with selected rounding |
US11403097B2 (en) | 2019-06-26 | 2022-08-02 | Intel Corporation | Systems and methods to skip inconsequential matrix operations |
US11334647B2 (en) | 2019-06-29 | 2022-05-17 | Intel Corporation | Apparatuses, methods, and systems for enhanced matrix multiplier architecture |
US11714875B2 (en) | 2019-12-28 | 2023-08-01 | Intel Corporation | Apparatuses, methods, and systems for instructions of a matrix operations accelerator |
US12112167B2 (en) | 2020-06-27 | 2024-10-08 | Intel Corporation | Matrix data scatter and gather between rows and irregularly spaced memory locations |
US11972230B2 (en) | 2020-06-27 | 2024-04-30 | Intel Corporation | Matrix transpose and multiply |
US11941395B2 (en) | 2020-09-26 | 2024-03-26 | Intel Corporation | Apparatuses, methods, and systems for instructions for 16-bit floating-point matrix dot product instructions |
US12001887B2 (en) | 2020-12-24 | 2024-06-04 | Intel Corporation | Apparatuses, methods, and systems for instructions for aligning tiles of a matrix operations accelerator |
US12001385B2 (en) | 2020-12-24 | 2024-06-04 | Intel Corporation | Apparatuses, methods, and systems for instructions for loading a tile of a matrix operations accelerator |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4128880A (en) * | 1976-06-30 | 1978-12-05 | Cray Research, Inc. | Computer vector register processing |
JPS57209570A (en) * | 1981-06-19 | 1982-12-22 | Fujitsu Ltd | Vector processing device |
JPS6059469A (ja) * | 1983-09-09 | 1985-04-05 | Nec Corp | ベクトル処理装置 |
US4873630A (en) * | 1985-07-31 | 1989-10-10 | Unisys Corporation | Scientific processor to support a host processor referencing common memory |
JPH0193868A (ja) * | 1987-10-05 | 1989-04-12 | Nec Corp | データ処理装置 |
US5487159A (en) * | 1993-12-23 | 1996-01-23 | Unisys Corporation | System for processing shift, mask, and merge operations in one instruction |
US5996066A (en) * | 1996-10-10 | 1999-11-30 | Sun Microsystems, Inc. | Partitioned multiply and add/subtract instruction for CPU with integrated graphics functions |
US5933650A (en) * | 1997-10-09 | 1999-08-03 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
US6173393B1 (en) * | 1998-03-31 | 2001-01-09 | Intel Corporation | System for writing select non-contiguous bytes of data with single instruction having operand identifying byte mask corresponding to respective blocks of packed data |
US20020002666A1 (en) * | 1998-10-12 | 2002-01-03 | Carole Dulong | Conditional operand selection using mask operations |
US6446198B1 (en) * | 1999-09-30 | 2002-09-03 | Apple Computer, Inc. | Vectorized table lookup |
US6523108B1 (en) * | 1999-11-23 | 2003-02-18 | Sony Corporation | Method of and apparatus for extracting a string of bits from a binary bit string and depositing a string of bits onto a binary bit string |
TW552556B (en) * | 2001-01-17 | 2003-09-11 | Faraday Tech Corp | Data processing apparatus for executing multiple instruction sets |
US20040054877A1 (en) * | 2001-10-29 | 2004-03-18 | Macy William W. | Method and apparatus for shuffling data |
US7305540B1 (en) * | 2001-12-31 | 2007-12-04 | Apple Inc. | Method and apparatus for data processing |
US20100274988A1 (en) * | 2002-02-04 | 2010-10-28 | Mimar Tibet | Flexible vector modes of operation for SIMD processor |
US7212676B2 (en) * | 2002-12-30 | 2007-05-01 | Intel Corporation | Match MSB digital image compression |
US7243205B2 (en) * | 2003-11-13 | 2007-07-10 | Intel Corporation | Buffered memory module with implicit to explicit memory command expansion |
GB2409063B (en) * | 2003-12-09 | 2006-07-12 | Advanced Risc Mach Ltd | Vector by scalar operations |
US7475222B2 (en) * | 2004-04-07 | 2009-01-06 | Sandbridge Technologies, Inc. | Multi-threaded processor having compound instruction and operation formats |
DE602004031719D1 (de) * | 2004-07-01 | 2011-04-21 | Texas Instruments Inc | Verfahren und System zur Überprüfung der Ausführung einer Eingabesequenz eines sicheren Modus |
US7703088B2 (en) * | 2005-09-30 | 2010-04-20 | Intel Corporation | Compressing “warm” code in a dynamic binary translation environment |
US7644198B2 (en) * | 2005-10-07 | 2010-01-05 | International Business Machines Corporation | DMAC translation mechanism |
US20070186210A1 (en) * | 2006-02-06 | 2007-08-09 | Via Technologies, Inc. | Instruction set encoding in a dual-mode computer processing environment |
US7555597B2 (en) * | 2006-09-08 | 2009-06-30 | Intel Corporation | Direct cache access in multiple core processors |
US20080077772A1 (en) * | 2006-09-22 | 2008-03-27 | Ronen Zohar | Method and apparatus for performing select operations |
JP4785142B2 (ja) * | 2007-01-31 | 2011-10-05 | ルネサスエレクトロニクス株式会社 | データ処理装置 |
US8001446B2 (en) * | 2007-03-26 | 2011-08-16 | Intel Corporation | Pipelined cyclic redundancy check (CRC) |
US8667250B2 (en) * | 2007-12-26 | 2014-03-04 | Intel Corporation | Methods, apparatus, and instructions for converting vector data |
GB2456775B (en) * | 2008-01-22 | 2012-10-31 | Advanced Risc Mach Ltd | Apparatus and method for performing permutation operations on data |
US20090320031A1 (en) * | 2008-06-19 | 2009-12-24 | Song Justin J | Power state-aware thread scheduling mechanism |
US8209525B2 (en) * | 2008-08-15 | 2012-06-26 | Apple Inc. | Method and apparatus for executing program code |
US8036115B2 (en) * | 2008-09-17 | 2011-10-11 | Intel Corporation | Synchronization of multiple incoming network communication streams |
US7814303B2 (en) * | 2008-10-23 | 2010-10-12 | International Business Machines Corporation | Execution of a sequence of vector instructions preceded by a swizzle sequence instruction specifying data element shuffle orders respectively |
US8327109B2 (en) * | 2010-03-02 | 2012-12-04 | Advanced Micro Devices, Inc. | GPU support for garbage collection |
US20120254588A1 (en) * | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask |
-
2011
- 2011-04-01 US US13/078,864 patent/US20120254588A1/en not_active Abandoned
- 2011-12-12 KR KR1020137028981A patent/KR101610691B1/ko active IP Right Grant
- 2011-12-12 BR BR112013025409A patent/BR112013025409A2/pt not_active IP Right Cessation
- 2011-12-12 CN CN201611035320.6A patent/CN106681693B/zh active Active
- 2011-12-12 WO PCT/US2011/064486 patent/WO2012134560A1/en active Application Filing
- 2011-12-12 CN CN201180069936.4A patent/CN103460182B/zh active Active
- 2011-12-12 DE DE112011105122.0T patent/DE112011105122T5/de not_active Withdrawn
- 2011-12-12 JP JP2014502546A patent/JP5986188B2/ja active Active
- 2011-12-12 GB GB1317160.8A patent/GB2503829A/en not_active Withdrawn
- 2011-12-12 CN CN201811288381.2A patent/CN109471659B/zh active Active
- 2011-12-14 TW TW100146254A patent/TWI470554B/zh not_active IP Right Cessation
- 2011-12-14 TW TW103140467A patent/TWI552080B/zh active
-
2013
- 2013-09-27 GB GB1816774.2A patent/GB2577943A/en not_active Withdrawn
-
2016
- 2016-08-04 JP JP2016153777A patent/JP6408524B2/ja active Active
-
2018
- 2018-09-20 JP JP2018175880A patent/JP2019032859A/ja active Pending
- 2018-09-27 US US16/145,156 patent/US20190108029A1/en active Pending
- 2018-09-27 US US16/145,160 patent/US20190108030A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
TWI470554B (zh) | 2015-01-21 |
GB2577943A (en) | 2020-04-15 |
US20120254588A1 (en) | 2012-10-04 |
GB201816774D0 (en) | 2018-11-28 |
CN106681693B (zh) | 2019-07-23 |
CN109471659B (zh) | 2024-02-23 |
KR101610691B1 (ko) | 2016-04-08 |
JP2019032859A (ja) | 2019-02-28 |
KR20130140160A (ko) | 2013-12-23 |
GB201317160D0 (en) | 2013-11-06 |
CN103460182A (zh) | 2013-12-18 |
BR112013025409A2 (pt) | 2016-12-20 |
CN109471659A (zh) | 2019-03-15 |
US20190108030A1 (en) | 2019-04-11 |
WO2012134560A1 (en) | 2012-10-04 |
GB2503829A (en) | 2014-01-08 |
TW201243726A (en) | 2012-11-01 |
CN103460182B (zh) | 2016-12-21 |
TW201531946A (zh) | 2015-08-16 |
US20190108029A1 (en) | 2019-04-11 |
JP2014510350A (ja) | 2014-04-24 |
DE112011105122T5 (de) | 2014-02-06 |
JP2017010573A (ja) | 2017-01-12 |
CN106681693A (zh) | 2017-05-17 |
JP5986188B2 (ja) | 2016-09-06 |
TWI552080B (zh) | 2016-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6408524B2 (ja) | 書込マスクを用いて2つのソースオペランドを単一のデスティネーションに融合するシステム、装置及び方法 | |
JP6109910B2 (ja) | メモリ・ソースを宛先レジスタに展開し、ソース・レジスタを宛先メモリ位置に圧縮するためのシステム、装置および方法 | |
JP6274672B2 (ja) | 装置および方法 | |
KR102449616B1 (ko) | 벡터 요소 세트에 대해 축소 연산을 수행하기 위한 방법 및 장치 | |
KR101817034B1 (ko) | 반복 종속 조건을 갖는 반복들의 벡터 루프들을 구현하기 위한 명령어 | |
JP5764257B2 (ja) | レジスタをアライメントするためのシステム、装置、および方法 | |
TWI502499B (zh) | 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法 | |
JP5926754B2 (ja) | 限定範囲ベクトルメモリアクセス命令、プロセッサ、方法、及びシステム | |
TWI496080B (zh) | 轉置指令之技術 | |
JP6466388B2 (ja) | 方法及び装置 | |
CN107153524B (zh) | 用于给出相应复数的复共轭的计算设备和计算机可读介质 | |
CN107908427B (zh) | 用于多维数组中的元素偏移量计算的指令 | |
KR102462174B1 (ko) | 벡터 비트 셔플을 수행하기 위한 방법 및 장치 | |
JP5947879B2 (ja) | マスクレジスタを用いてジャンプを行うシステム、装置、および方法 | |
JP2018500660A (ja) | ベクトルインデックスロードおよびストアのための方法および装置 | |
JP6778375B2 (ja) | ベクトルビット反転を実行するためのプロセッサ、方法、およびシステム | |
JP2017539014A (ja) | ベクトルビット反転およびクロスを実行するための方法および装置 | |
JP2018500658A (ja) | インデックスおよび即値を用いてベクトル置換を実行するための方法および装置 | |
JP6835436B2 (ja) | マスクをマスク値のベクトルに拡張するための方法および装置 | |
JP2018500666A (ja) | ベクトルビットギャザーを実行するための方法および装置 | |
JP2018500665A (ja) | マスク値を圧縮するための方法および装置 | |
KR102321941B1 (ko) | 스핀-루프 점프를 수행하기 위한 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170905 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20171201 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20180131 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180305 |
|
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: 20180821 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180920 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6408524 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 |