JP5844882B2 - データ要素のストライドパターンギャザーおよびデータ要素のストライドパターンスキャッタのためのシステム、装置、および方法 - Google Patents
データ要素のストライドパターンギャザーおよびデータ要素のストライドパターンスキャッタのためのシステム、装置、および方法 Download PDFInfo
- Publication number
- JP5844882B2 JP5844882B2 JP2014502544A JP2014502544A JP5844882B2 JP 5844882 B2 JP5844882 B2 JP 5844882B2 JP 2014502544 A JP2014502544 A JP 2014502544A JP 2014502544 A JP2014502544 A JP 2014502544A JP 5844882 B2 JP5844882 B2 JP 5844882B2
- Authority
- JP
- Japan
- Prior art keywords
- data element
- instruction
- memory
- register
- value
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 38
- 230000015654 memory Effects 0.000 claims description 270
- 239000013598 vector Substances 0.000 claims description 118
- 238000006073 displacement reaction Methods 0.000 claims description 62
- 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
- 238000007667 floating Methods 0.000 description 31
- 238000006243 chemical reaction Methods 0.000 description 30
- 238000010586 diagram Methods 0.000 description 29
- 238000012545 processing Methods 0.000 description 21
- 230000003416 augmentation Effects 0.000 description 14
- 230000000873 masking effect Effects 0.000 description 9
- 239000003795 chemical substances by application Substances 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 239000003607 modifier Substances 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000001629 suppression Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 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
- 238000013500 data storage Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 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
- 239000011159 matrix material Substances 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
-
- 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/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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control 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/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
- G06F9/3455—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed 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
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
- G06F9/3555—Indexed addressing using scaling, e.g. multiplication of index
-
- 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/383—Operand prefetching
-
- 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/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3865—Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
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)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Description
第1の種類の命令は、ギャザーストライド命令である。この命令をプロセッサで実行すると、メモリのデータ要素が条件付きでデスティネーションレジスタにロードされる。たとえば、一部の実施形態では、16個までの32ビット(または8つの64ビット)の浮動小数点データ要素が条件付きでデスティネーション(たとえばXMM、YMM,またはZMMレジスタ)にパッキングされる。
第2の種類の命令は、スキャッタストライド命令である。一部の実施形態では、この命令をプロセッサで実行すると、ソースレジスタ(たとえばXMM,YMM,またはZMM)からデータ要素が、書き込みマスクの値に基づいて、デスティネーションメモリ位置に条件付きで格納される。たとえば一部の実施形態では、16個までの32ビット(または8つの64ビット)の浮動小数点データ要素が条件付きでデスティネーションに格納される。
第3の種類の命令は、ギャザーストライドプリフェッチ命令である。この命令のプロセッサによる実行によって、メモリ(システムまたはキャッシュ)から条件付きでストライドデータがプリフェッチされて、命令の書き込みマスクに従って命令で示唆されている(hint at)命令によってキャッシュのレベルに入れられる。プリフェッチされたデータは、後続する命令によって読み出されてよい。上述したギャザーストライド命令とは異なり、デスティネーションレジスタがなく、書き込みマスクが修正されない(この命令は、プロセッサの任意のアーキテクチャ状態を修正するものではない)。データ要素は、キャッシュライン等のメモリチャンク全体の部分としてプリフェッチされてよい。
第4の種類の命令は、スキャッタストライドプリフェッチ命令である。この命令のプロセッサによる実行によって、メモリ(システムまたはキャッシュ)からストライドデータがプリフェッチされて、命令の書き込みマスクに従って命令で示唆されている(hint at)命令によってキャッシュのレベルに入れられる。この命令と、ギャザーストライドプリフェッチとの違いは、プリフェッチされるデータが、後で書き込まれるが、読み出されないことである。
汎用のベクトルフレンドリーな命令フォーマット1400は、図14Aおよび図14Bに示される順序で、以下に列挙するフィールドを含む。
クラスフィールド1468−この内容は複数の異なるクラスの命令を区別する。図14Aおよび図14Bを参照すると、このフィールドの内容は、クラスAの命令およびクラスBの命令のうちから選択する。図14Aおよび図14Bにおいて、角が丸められた正方形は、特定値がフィールド内に存在することを示すのに用いられている(例えば、図14AのクラスA1468A、および図14BのクラスB1468B)。
クラスAの非メモリアクセス1405命令テンプレートの場合、アルファフィールド1452は、含まれる内容が複数の異なるオーグメンテーション演算タイプのうち何れが実行されるかを区別する(例えば、丸め1452A.1およびデータ変換1452A.2がそれぞれ、非メモリアクセス丸めタイプ演算1410および非メモリアクセスデータ変換タイプ演算1415命令テンプレートに関して特定される)RSフィールド1452Aとして解釈され、ベータフィールド1454は、特定されたタイプの演算のうち何れが実行されるかを区別する。図14Aおよび図14Bにおいて、角が丸められたブロックは、特定値が存在することを示すのに用いられている(例えば、修飾子フィールド1446の非メモリアクセス1446A、アルファフィールド1452/rsフィールド1452Aの丸め1452A.1およびデータ変換1452A.2)。非メモリアクセス1405命令テンプレートにおいて、スケールフィールド1460、変位フィールド1462A、および変位スケールフィールド1462Bは存在しない。
非メモリアクセス完全丸め制御タイプ演算1410命令テンプレートにおいて、ベータフィールド1454は、含まれる内容が静的な丸めを提供する丸め制御フィールド1454Aとして解釈される。本願発明の説明される実施形態においては、丸め制御フィールド1454Aは全浮動小数点例外抑制(SAE)フィールド1456、および、丸め演算制御フィールド1458を含むが、代替的な実施形態においては、これらのコンセプトの両方を同じフィールドにエンコードする、または、これらのコンセプト/フィールドのうち一方、または他方のみを有する(例えば、丸め演算制御フィールド1458のみを有する)。
非メモリアクセスデータ変換タイプ演算1415命令テンプレートにおいて、ベータフィールド1454は、複数のデータ変換(例えば、データ変換、スウィズル、ブロードキャスト)のうち何れが実行されるかを含まれる内容が区別するデータ変換フィールド1454Bとして解釈される。
クラスAのメモリアクセス1420命令テンプレートの場合、アルファフィールド1452に含まれている内容は、エビクション・示唆(hint)のうちいずれが用いられるかを区別する(図14Aにおいて、一時的1452B.1および非一時的1452B.2がそれぞれ、メモリアクセス一時的1425命令テンプレートおよびメモリアクセス非一時的1430命令テンプレートに関して特定される)エビクション・示唆(hint)フィールド1452Bとして解釈され、ベータフィールド1454は、含まれる内容が複数のデータ操作演算(プリミティブとしても知られる)のうちいずれが実行されるか(例えば、操作なし、ブロードキャスト、ソースのアップコンバージョン、およびデスティネーションのダウンコンバージョン)を区別するデータ操作フィールド1454Cとして解釈される。メモリアクセス1420命令テンプレートは、スケールフィールド1460を含み、場合によっては、変位フィールド1462Aまたは変位スケールフィールド1462Bを含む。
一時的データは、キャッシュするのが有利である程度に直ぐに再度用いられる可能性が高いデータである。しかし、これは示唆(hint)であり、複数の異なるプロセッサが、示唆(hint)を全く無視するなど複数の異なるやり方で実行し得る。
非一時的データは、第1レベルキャッシュでキャッシュするのが有利ではない程度に直ぐには再度用いられる可能性が低く、エビクションの高い優先度を与えられるべきデータである。しかし、これは示唆(hint)であり、複数の異なるプロセッサが、示唆(hint)を全く無視するなど複数の異なるやり方で実行し得る。
クラスB命令テンプレートの場合、アルファフィールド1452は、書き込みマスクフィールド1470により制御される書き込みマスキングがマージングであるかゼロ化であるかを含まれる内容が区別する書き込みマスク制御(Z)フィールド1452Cとして解釈される。
クラスBの非メモリアクセス1405命令テンプレートの場合、ベータフィールド1454の一部は、含まれる内容が複数の異なるオーグメンテーション演算タイプのうちいずれが実行されるのかを区別する(例えば、丸め1457A.1およびベクトル長さ(VSIZE)1457A.2がそれぞれ、非メモリアクセス書き込みマスク制御部分的丸め制御タイプ演算1412命令テンプレート、および非メモリアクセス書き込みマスク制御VSIZEタイプ演算1417命令テンプレートに関して特定される)RLフィールド1457Aとして解釈され、ベータフィールド1454の残りは、特定されたタイプの演算のうちいずれが実行されるのかを区別する。図14Aおよび14Bにおいて、角が丸められたブロックは、特定値(例えば、修飾子フィールド1446の非メモリアクセス1446A、RLフィールド1457Aの丸め1457A.1およびVSIZE1457A.2)が存在することを示すのに用いられている。非メモリアクセス1405命令テンプレートにおいて、スケールフィールド1460、変位フィールド1462A、および、変位スケールフィールド1462Bは存在しない。
非メモリアクセス書き込みマスク制御部分的丸め制御タイプ演算1410命令テンプレートにおいて、ベータフィールド1454の残りは、丸め演算フィールド1459Aとして解釈され、例外イベント報告が無効化される(任意の命令はあらゆるタイプの浮動小数点例外フラグを報告せず、浮動小数点例外ハンドラを立ち上げない)。
非メモリアクセス書き込みマスク制御VSIZEタイプ演算1417命令テンプレートにおいて、ベータフィールド1454の残りは、複数のデータベクトル長さ(例えば、128、1456、または1612バイト)のうち何れで実行されるかを含まれる内容が区別するベクトル長さフィールド1459Bとして解釈される。
クラスAのメモリアクセス1420命令テンプレートの場合、ベータフィールド1454の一部は、ブロードキャストタイプデータ操作が実行されるかどうかを含まれる内容が区別するブロードキャストフィールド1457Bとして解釈され、ベータフィールド1454の残りは、ベクトル長さフィールド1459Bとして解釈される。メモリアクセス1420命令テンプレートは、スケールフィールド1460を含み、場合によっては、変位フィールド1462Aまたは変位スケールフィールド1462Bを含む。
汎用のベクトルフレンドリーな命令フォーマット1400に関し、フルオペコードフィールド1474は、形式フィールド1440、ベース演算フィールド1442、およびデータ要素幅フィールド1464を含むものとして示した。フルオペコードフィールド1474がこれらのフィールド全てを含む一実施形態を示したが、これらのフィールド全てをサポートしない実施形態においては、フルオペコードフィールド1474はこれらのフィールドの全ては含まない。フルオペコードフィールド1474は演算コードを提供する。
図15A、図15B、および図15Cは、本願発明の実施形態に係る例示的な特定のベクトルフレンドリーな命令フォーマットを示すブロック図である。図15A、図15B、および図15Cは、フィールドの場所、サイズ、解釈、および順序、並びに、これらのフィールドのうちいくつかの値を特定するという意味で特定的である、特定のベクトルフレンドリーな命令フォーマット1500を示す。特定のベクトルフレンドリーな命令フォーマット1500を用いて、x86命令の拡張を行ってもよく、よって、フィールのうちいくつかは、既存のx86命令のセット、およびその拡張(例えばAVX)に用いられるものと同様、または同じである。この形式は、拡張された既存のx86命令のセットのプレフィックスエンコードフィールド、リアルオペコードバイトフィールド、MOD R/Mフィールド、SIBフィールド、変位フィールド、および、即値フィールドに対応したままである。図15A、図15B、および図15Cからのフィールドがマッピングされる図14Aおよび図14Bのフィールドが示されている。
汎用のベクトルフレンドリーな命令フォーマット1400は、図15A、図15B、および図15Cで示される順序で以下に列挙するフィールドを含む。 EVEX Prefix(Bytes 0−3) EVEX Prefix1002−4バイト形式でエンコードされている。 形式フィールド1440(EVEX Byte0,bits[7:0])−第1バイト(EVEX Byte 0)は、形式フィールド1440であり、0x62(本願発明の一実施形態において、ベクトルフレンドリーな命令フォーマットを区別するのに用いられる一意の値)を含む。
即値フィールド1472は上述したように動作する。
図16は、本願発明の一実施形態に係るレジスタアーキテクチャ1600のブロック図である。レジスタアーキテクチャのレジスタファイルおよびレジスタを以下に列挙する。
示される実施形態において、1112ビットの幅を有する32個のベクトルレジスタがある。これらのレジスタをzmm0〜zmm31と呼ぶ。最初の16個のレジスタの下位956ビットは、レジスタymm0〜16にオーバーレイされて(overlaid)いる。最初の16zmmレジスタの下位128ビット(ymmレジスタの下位128ビット)は、レジスタxmm0〜15にオーバーレイされている。特定のベクトルフレンドリーな命令フォーマット1500は以下の表に示すようにこれらオーバーレイされたレジスタファイルに対して動作する。
図17Aおよび図17Bは、例示的なインオーダープロセッサアーキテクチャのブロック図を示す。これらの例示的な実施形態は、ワイドベクトルプロセッサ(VPU)で補強されたインオーダーCPUコアの複数のインスタンシエイションに基づいて設計されている。コアはe19tアプリケーションに応じて、何らかの所定の関数ロジック、メモリI/Oインタフェース、および、他の必要なI/Oロジックと高帯域幅インターコネクトネットワークを介して通信を行う。例えば、スタンドアローンGPUとしての本実施形態の実施は、典型的にはPCIeバスを含む。
図18は、本願発明の実施形態に係る例示的なアウトオブオーダーアーキテクチャを示すブロック図である。詳細には、図18は、ベクトルフレンドリーな命令フォーマットおよびその実行に対応するよう修正された周知の例示的なアウトオブオーダーアーキテクチャを示す。図18において、矢印は2以上のユニットの結合を示し、矢印の方向はそれらユニット間のデータフローの方向を示す。図18は、実行エンジンユニット1810およびメモリユニット1815に結合されたフロントエンドユニット1805を含む。実行エンジンユニット1810はさらに、メモリユニット1815に結合されている。
図23は、本願発明の実施形態に係る、集積メモリコントローラおよび集積グラフィックを備えたシングルコアプロセッサおよびマルチコアプロセッサ2300を示すブロック図である。図23において、実線の四角はシングルコア2302A、システムエージェント2310、および1以上のバスコントローラユニット2316からなるセットを含むプロセッサ2300を示し、破線の四角は、複数のコア2302A〜N、システムエージェントユニット2310内の1以上の集積メモリコントローラユニット2314からなるセット、および集積グラフィックロジック2308を含む代替的なプロセッサ2300を任意的な追加として示す。
図19〜22は、プロセッサ2300を含めるのに適した例示的なシステムを示す。図17Aおよび図17Bは、1以上のコア2302を含みうる例示的なシステムオンチップ(SoC)を示す。ラップトップ、デスクトップ、ハンドヘルドPC、パーソナルデジタルアシスタント、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、埋め込み型プロセッサ、デジタル信号プロセッサ(DSP)、グラフィックデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、携帯型メディアプレーヤ、ハンドヘルドデバイス、および様々な他の電子デバイスに関する当分野で公知の他のシステム設計および構成も適している。一般的に、本明細書で開示されるプロセッサ、および/または他の実行ロジックを組み込むことが可能な非常に幅広い種類のシステムまたは電子デバイスが適している。
ベクトルフレンドリーな命令フォーマットがネイティブに実行される実施形態を説明してきたが、代替的な実施形態においては、異なる命令セットを実行する(例えば、米国カリフォルニア州サニーベールのMIPS TechnologiesのMIPS命令セットを実行するプロセッサ、米国カリフォルニア州サニーベールのARM HoldingsのARM命令セットを実行するプロセッサなどの)プロセッサ上で実行されるエミュレーションレイヤーを介してベクトルフレンドリーな命令フォーマットを実行してもよい。また、図中のフロー図は本願発明の特定の実施形態によって実行される動作の特定の順序を示すが、そのような順序は例示であることが理解されるべきである(例えば、代替的な実施形態においては、それらの動作を異なる順序で実行する、特定の動作を組み合わせる、または特定の動作を同時に行うなど)。
本実施形態の例を下記の各項目として示す。
[項目1]
コンピュータプロセッサでギャザーストライド命令を実行する方法であって、
デスティネーションレジスタオペランド、書き込みマスク、ならびに、スケール値、ベース値、およびストライド値を含むメモリソースアドレス情報を含む前記ギャザーストライド命令をフェッチする段階と、
フェッチされた前記ギャザーストライド命令をデコードする段階と、
フェッチされた前記ギャザーストライド命令を実行して、前記書き込みマスクのビット値の少なくとも一部に基づいて、条件付きで、メモリからストライドされたデータ要素を前記デスティネーションレジスタに格納する段階と
を備える方法。
[項目2]
前記実行する段階は、
前記ベース値を利用して決定される、前記メモリ内の第1のデータ要素のアドレスを生成する段階と
前記メモリ内の第1のデータ要素に対応している、前記書き込みマスクの第1のマスクビット値が、前記メモリ内の第1のデータ要素が、前記デスティネーションレジスタの対応する位置に格納されるべきであることを示しているかを判断する段階と
を含み、
前記メモリ内の第1のデータ要素に対応している、前記書き込みマスクの前記第1のマスクビット値が、前記第1のデータ要素が格納されるべきであることを示していない場合、前記データ要素を、前記デスティネーションレジスタの前記対応する位置に、変更せずに放置して、
前記メモリ内の第1のデータ要素に対応している、前記書き込みマスクの前記第1のマスクビット値が、前記第1のデータ要素が格納されるべきであることを示している場合、前記第1のデータ要素を、前記デスティネーションレジスタの前記対応する位置に格納して、前記第1のマスクビットをクリアして、格納に成功したことを示す、項目1に記載の方法。
[項目3]
前記第1のマスクビット値は、前記書き込みマスクの最下位ビットであり、前記デスティネーションレジスタの前記第1のデータ要素は、前記デスティネーションレジスタの最下位データ要素である、項目2に記載の方法。
[項目4]
前記実行する段階は、
前記メモリ内の第1のデータ要素に対するフォルトがあると判断する段階と、
前記実行する段階を中断する段階と
をさらに含む、項目2または3に記載の方法。
[項目5]
前記実行する段階は、
前記スケール値、ベース値、およびストライド値を利用して決定される、前記メモリ内の第2のデータ要素のアドレスを生成する段階と、
前記メモリ内の第2のデータ要素に対応している、前記書き込みマスクの第2のマスクビット値が、前記メモリ内の第2のデータ要素が、前記デスティネーションレジスタの対応する位置に格納されるべきであることを示しているかを判断する段階と
をさらに含み、
前記メモリ内の第2のデータ要素に対応している、前記書き込みマスクの前記第2のマスクビット値が、前記第2のデータ要素が格納されるべきであることを示していない場合、前記第2のデータ要素を、前記デスティネーションレジスタの前記対応する位置に、変更せずに放置して、
前記メモリ内の第2のデータ要素に対応している、前記書き込みマスクの前記第2のマスクビット値が、前記第2のデータ要素が格納されるべきであることを示している場合、前記第2のデータ要素を、前記デスティネーションレジスタの前記対応する位置に格納して、前記第2のマスクビットをクリアして、格納に成功したことを示し、前記第2のデータ要素は、前記第1のデータ要素からデータ要素X個分、離れており、Xは前記ストライド値である、項目2から4のいずれか一項に記載の方法。
[項目6]
前記デスティネーションレジスタの前記データ要素のサイズは32ビットであり、前記書き込みマスクは、専用の16ビットレジスタである、項目1から5のいずれか一項に記載の方法。
[項目7]
前記デスティネーションレジスタの前記データ要素のサイズは64ビットであり、前記書き込みマスクは16ビットレジスタであり、前記書き込みマスクの最下位8ビットが、前記メモリのどのデータ要素を前記デスティネーションレジスタに格納すべきかを決定している、項目1から5のいずれか一項に記載の方法。
[項目8]
前記デスティネーションレジスタの前記データ要素のサイズは32ビットであり、前記書き込みマスクはベクトルレジスタであり、前記書き込みマスクの各データ要素の符号ビットが、マスクビットである、項目1から5のいずれか一項に記載の方法。
[項目9]
前記デスティネーションレジスタ内に格納される、前記メモリ内のデータ要素はすべて、前記デスティネーションレジスタに格納される前にアップコンバージョンされる、項目1から8のいずれか一項に記載の方法。
[項目10]
コンピュータプロセッサでスキャッタストライド命令を実行する方法であって、
ソースレジスタオペランド、書き込みマスク、ならびに、スケール値、ベース値、およびストライド値を含むメモリデスティネーションアドレス情報を含む前記スキャッタストライド命令をフェッチする段階と、
前記スキャッタストライド命令をデコードする段階と、
前記スキャッタストライド命令を実行して、前記書き込みマスクのビット値の少なくとも一部に基づいて、条件付きで、前記ソースレジスタからのデータ要素を前記メモリのストライドされた位置に格納する段階と
を備える方法。
[項目11]
前記実行する段階は、
前記ベース値を利用して決定される、前記メモリ内の第1の位置のアドレスを生成する段階と、
前記書き込みマスクの第1のマスクビット値が、前記ソースレジスタの第1のデータ要素が、前記メモリの、前記第1の位置について生成された前記アドレスに格納されるべきであることを示しているかを判断する段階と
を含み、
前記書き込みマスクの第1のマスクビット値が、前記ソースレジスタの第1のデータ要素が、前記メモリの、前記第1の位置について生成された前記アドレスに格納されるべきであることを示していない場合、前記データ要素を、前記メモリの、前記第1の位置について生成された前記アドレスに、変更せずに放置して、
前記書き込みマスクの第1のマスクビット値が、前記ソースレジスタの第1のデータ要素が、前記メモリの、前記第1の位置について生成された前記アドレスに格納されるべきであることを示している場合、前記ソースレジスタの前記第1のデータ要素を、前記メモリの、前記第1の位置について生成された前記アドレスに格納して、前記第1のマスクビットをクリアして、格納に成功したことを示す、項目10に記載の方法。
[項目12]
前記第1のマスクビット値は、前記書き込みマスクの最下位ビットであり、前記第1のデータ要素は、前記ソースレジスタの最下位データ要素である、項目11に記載の方法。
[項目13]
前記実行する段階は、
前記スケール値、ベース値、およびストライド値を利用して決定され、前記第1の位置から、X個のデータ要素分離れた、前記メモリ内の第2の位置のアドレスを生成する段階と、
前記書き込みマスクの第2のマスクビット値が、前記ソースレジスタの第2のデータ要素が、前記メモリの、前記第2の位置について生成された前記アドレスに格納されるべきであることを示しているかを判断する段階と
を含み、
前記書き込みマスクの第2のマスクビット値が、前記ソースレジスタの第2のデータ要素が、前記メモリの、前記第2の位置について生成された前記アドレスに格納されるべきであることを示していない場合、前記データ要素を、前記メモリの、前記第2の位置について生成された前記アドレスに、変更せずに放置して、
前記書き込みマスクの第2のマスクビット値が、前記ソースレジスタの第2のデータ要素が、前記メモリの、前記第2の位置について生成された前記アドレスに格納されるべきであることを示している場合、前記ソースレジスタの前記第2のデータ要素を、前記メモリの、前記第2の位置について生成された前記アドレスに格納して、前記第2のマスクビットをクリアして、格納に成功したことを示し、Xは、前記ストライド値である、項目11または12に記載の方法。
[項目14]
前記ソースレジスタの前記データ要素のサイズは32ビットであり、前記書き込みマスクは、専用の16ビットレジスタである、項目10から13のいずれか一項に記載の方法。
[項目15]
前記ソースレジスタの前記データ要素のサイズは64ビットであり、前記書き込みマスクは16ビットレジスタであり、前記書き込みマスクの最下位8ビットが、前記ソースレジスタのどのデータ要素を前記メモリに格納すべきかを決定している、項目10から13のいずれか一項に記載の方法。
[項目16]
前記ソースレジスタの前記データ要素のサイズは32ビットであり、前記書き込みマスクはベクトルレジスタであり、前記書き込みマスクの各データ要素の符号ビットが、マスクビットである、項目10から13のいずれか一項に記載の方法。
[項目17]
ハードウェアデコーダと、
実行ロジックと
を備える装置であって、
前記ハードウェアデコーダは、
デスティネーションレジスタオペランド、書き込みマスク、ならびに、スケール値、ベース値、およびストライド値を含むメモリソースアドレス情報を含むギャザーストライド命令と、
ソースレジスタオペランド、書き込みマスク、ならびに、スケール値、ベース値、およびストライド値を含むメモリデスティネーションアドレス情報を含むスキャッタストライド命令とをデコードして、
前記実行ロジックは、
デコードされた前記ギャザーストライド命令および前記スキャッタストライド命令を実行して、デコードされた前記ギャザーストライド命令の実行により、前記ギャザーストライド命令の前記書き込みマスクのビット値の少なくとも一部に基づいて、条件付きで、メモリからのストライドされたデータ要素が前記デスティネーションレジスタに格納され、デコードされた前記スキャッタストライド命令の実行により、前記スキャッタストライド命令の前記書き込みマスクのビット値の少なくとも一部に基づいて、条件付きで、データ要素が前記メモリのストライドされた位置に格納される、装置。
[項目18]
前記実行ロジックは、ベクトル実行ロジックを含む、項目17に記載の装置。
[項目19]
前記ギャザーストライド命令および前記スキャッタストライド命令の少なくとも一方の前記書き込みマスクは、専用の16ビットレジスタである、項目17に記載の装置。
[項目20]
前記ギャザーストライド命令の前記ソースレジスタは、512ビットのベクトルレジスタである、項目17に記載の装置。
Claims (9)
- コンピュータプロセッサでギャザーストライド命令を実行する方法であって、
デスティネーションレジスタオペランド、書き込みマスク、ならびに、スケール値、ベース値、およびストライド値を含むメモリソースアドレス情報を示す前記ギャザーストライド命令をフェッチする段階と、
フェッチされた前記ギャザーストライド命令をデコードする段階と、
フェッチされた前記ギャザーストライド命令を実行する段階であって、前記書き込みマスクのビット値の少なくとも一部に基づいて、条件付きで、メモリからストライドされたデータ要素を前記デスティネーションレジスタに格納する、前記実行する段階と
を備え、
前記実行する段階は、
前記ギャザーストライド命令の前記書き込みマスクおよびデスティネーションレジスタが同じレジスタかの判断を行い、前記書き込みマスクおよびデスティネーションレジスタが同じレジスタである場合は、前記ギャザーストライド命令の実行を中断する段階と、
前記メモリ内の第1のデータ要素のアドレスを生成する段階とを含み、
前記アドレスは、前記ストライド値と、前記スケール値と、インデックスとを乗算して、前記ベース値および変位値を前記乗算された値に加算することにより決定される方法。 - 前記実行する段階は、
前記ベース値を利用して決定される、前記メモリ内の前記第1のデータ要素のアドレスを生成する段階と
前記メモリ内の第1のデータ要素に対応している、前記書き込みマスクの第1のマスクビット値が、前記メモリ内の第1のデータ要素が、前記デスティネーションレジスタの対応する位置に格納されるべきであることを示しているかを判断する段階と
を含み、
前記メモリ内の第1のデータ要素に対応している、前記書き込みマスクの前記第1のマスクビット値が、前記第1のデータ要素が格納されるべきであることを示していない場合、前記メモリ内の前記第1のデータ要素を前記デスティネーションレジスタの前記対応する位置に格納せずに、前記デスティネーションレジスタの前記対応する位置のデータ要素を放置して、
前記メモリ内の第1のデータ要素に対応している、前記書き込みマスクの前記第1のマスクビット値が、前記第1のデータ要素が格納されるべきであることを示している場合、前記第1のデータ要素を、前記デスティネーションレジスタの前記対応する位置に格納して、前記第1のマスクビットをクリアして、格納に成功したことを示す、請求項1に記載の方法。 - 前記第1のマスクビット値は、前記書き込みマスクの最下位ビットであり、前記デスティネーションレジスタの前記第1のデータ要素は、前記デスティネーションレジスタの最下位データ要素である、請求項2に記載の方法。
- 前記実行する段階は、
前記メモリ内の第1のデータ要素に対するフォルトがあると判断する段階と、
前記実行する段階を中断する段階と
をさらに含む、請求項2または3に記載の方法。 - 前記実行する段階は、
前記スケール値、ベース値、およびストライド値を利用して決定される、前記メモリ内の第2のデータ要素のアドレスを生成する段階と、
前記メモリ内の第2のデータ要素に対応している、前記書き込みマスクの第2のマスクビット値が、前記メモリ内の第2のデータ要素が、前記デスティネーションレジスタの対応する位置に格納されるべきであることを示しているかを判断する段階と
をさらに含み、
前記メモリ内の第2のデータ要素に対応している、前記書き込みマスクの前記第2のマスクビット値が、前記第2のデータ要素が格納されるべきであることを示していない場合、前記メモリ内の前記第2のデータ要素を前記デスティネーションレジスタの前記対応する位置に格納せずに、前記デスティネーションレジスタの前記対応する位置のデータ要素を放置して、
前記メモリ内の第2のデータ要素に対応している、前記書き込みマスクの前記第2のマスクビット値が、前記第2のデータ要素が格納されるべきであることを示している場合、前記第2のデータ要素を、前記デスティネーションレジスタの前記対応する位置に格納して、前記第2のマスクビットをクリアして、格納に成功したことを示し、前記第2のデータ要素は、前記第1のデータ要素からデータ要素X個分、離れており、Xは前記ストライド値である、請求項2から4のいずれか一項に記載の方法。 - 前記デスティネーションレジスタの前記データ要素のサイズは32ビットであり、前記書き込みマスクはベクトルレジスタであり、前記書き込みマスクの各データ要素の符号ビットが、マスクビットである、請求項1から5のいずれか一項に記載の方法。
- ハードウェアデコーダと、
実行ロジックと
を備える装置であって、
前記ハードウェアデコーダは、
デスティネーションレジスタオペランド、書き込みマスク、ならびに、スケール値、ベース値、およびストライド値を含むメモリソースアドレス情報を示すギャザーストライド命令と、
ソースレジスタオペランド、書き込みマスク、ならびに、スケール値、ベース値、およびストライド値を含むメモリデスティネーションアドレス情報を示すスキャッタストライド命令とをデコードして、
前記実行ロジックは、
デコードされた前記ギャザーストライド命令および前記スキャッタストライド命令を実行して、デコードされた前記ギャザーストライド命令の実行により、前記ギャザーストライド命令の前記書き込みマスクのビット値の少なくとも一部に基づいて、条件付きで、メモリからのストライドされたデータ要素を前記デスティネーションレジスタに格納し、デコードされた前記スキャッタストライド命令の実行により、前記スキャッタストライド命令の前記書き込みマスクのビット値の少なくとも一部に基づいて、条件付きで、データ要素を前記メモリのストライドされた位置に格納し、
前記実行ロジックは、前記ギャザーストライド命令の実行により、前記メモリ内の第1のデータ要素のアドレスを生成し、前記ギャザーストライド命令の前記書き込みマスクおよびデスティネーションレジスタが同じレジスタかの判断を行い、前記書き込みマスクおよびデスティネーションレジスタが同じレジスタである場合は、前記ギャザーストライド命令の実行を中断し、
前記アドレスは、前記ストライド値と、前記スケール値と、インデックスとを乗算して、前記ベース値および変位値を前記乗算された値に加算することにより決定される装置。 - 前記実行ロジックは、ベクトル実行ロジックを含む、請求項7に記載の装置。
- 前記ギャザーストライド命令の前記デスティネーションレジスタまたは前記スキャッタストライド命令の前記ソースレジスタは、512ビットのベクトルレジスタである、請求項7に記載の装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/078,891 | 2011-04-01 | ||
US13/078,891 US20120254591A1 (en) | 2011-04-01 | 2011-04-01 | Systems, apparatuses, and methods for stride pattern gathering of data elements and stride pattern scattering of data elements |
PCT/US2011/063590 WO2012134555A1 (en) | 2011-04-01 | 2011-12-06 | Systems, apparatuses, and methods for stride pattern gathering of data elements and stride pattern scattering of data elements |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015226505A Division JP6274672B2 (ja) | 2011-04-01 | 2015-11-19 | 装置および方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014513340A JP2014513340A (ja) | 2014-05-29 |
JP5844882B2 true JP5844882B2 (ja) | 2016-01-20 |
Family
ID=46928901
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014502544A Expired - Fee Related JP5844882B2 (ja) | 2011-04-01 | 2011-12-06 | データ要素のストライドパターンギャザーおよびデータ要素のストライドパターンスキャッタのためのシステム、装置、および方法 |
JP2015226505A Active JP6274672B2 (ja) | 2011-04-01 | 2015-11-19 | 装置および方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015226505A Active JP6274672B2 (ja) | 2011-04-01 | 2015-11-19 | 装置および方法 |
Country Status (8)
Country | Link |
---|---|
US (2) | US20120254591A1 (ja) |
JP (2) | JP5844882B2 (ja) |
KR (1) | KR101607161B1 (ja) |
CN (1) | CN103562856B (ja) |
DE (1) | DE112011105121T5 (ja) |
GB (1) | GB2503169B (ja) |
TW (2) | TWI476684B (ja) |
WO (1) | WO2012134555A1 (ja) |
Families Citing this family (77)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2480296A (en) * | 2010-05-12 | 2011-11-16 | Nds Ltd | Processor with differential power analysis attack protection |
US20120254591A1 (en) * | 2011-04-01 | 2012-10-04 | Hughes Christopher J | Systems, apparatuses, and methods for stride pattern gathering of data elements and stride pattern scattering of data elements |
EP3805921B1 (en) | 2011-04-01 | 2023-09-06 | INTEL Corporation | Vector friendly instruction format and execution thereof |
US10803009B2 (en) | 2011-07-14 | 2020-10-13 | Texas Instruments Incorporated | Processor with table lookup processing unit |
US9672036B2 (en) | 2011-09-26 | 2017-06-06 | Intel Corporation | Instruction and logic to provide vector loads with strides and masking functionality |
WO2013048369A1 (en) | 2011-09-26 | 2013-04-04 | Intel Corporation | Instruction and logic to provide vector load-op/store-op with stride functionality |
WO2013112118A2 (en) * | 2011-12-22 | 2013-08-01 | Intel Corporation | Instructions to perform jh cryptographic hashing in a 256 bit data path |
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 |
US9251374B2 (en) * | 2011-12-22 | 2016-02-02 | Intel Corporation | Instructions to perform JH cryptographic hashing |
US9870338B2 (en) * | 2011-12-23 | 2018-01-16 | Intel Corporation | Systems, apparatuses, and methods for performing vector packed compression and repeat |
CN104137059B (zh) * | 2011-12-23 | 2018-10-09 | 英特尔公司 | 多寄存器分散指令 |
WO2013095661A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for performing conversion of a list of index values into a mask value |
US9766887B2 (en) * | 2011-12-23 | 2017-09-19 | Intel Corporation | Multi-register gather instruction |
US10225306B2 (en) | 2011-12-29 | 2019-03-05 | Koninklijke Kpn N.V. | Controlled streaming of segmented content |
WO2013101020A1 (en) * | 2011-12-29 | 2013-07-04 | Intel Corporation | Aggregated page fault signaling and handline |
EP2798475A4 (en) * | 2011-12-30 | 2016-07-13 | Intel Corp | TRANSPOSED INSTRUCTION |
US9575755B2 (en) | 2012-08-03 | 2017-02-21 | International Business Machines Corporation | Vector processing in an active memory device |
US9569211B2 (en) | 2012-08-03 | 2017-02-14 | International Business Machines Corporation | Predication in a vector processor |
US9632777B2 (en) * | 2012-08-03 | 2017-04-25 | International Business Machines Corporation | Gather/scatter of multiple data elements with packed loading/storing into/from a register file entry |
US9594724B2 (en) | 2012-08-09 | 2017-03-14 | International Business Machines Corporation | Vector register file |
US9471317B2 (en) * | 2012-09-27 | 2016-10-18 | Texas Instruments Deutschland Gmbh | Execution of additional instructions in conjunction atomically as specified in instruction field |
US10049061B2 (en) * | 2012-11-12 | 2018-08-14 | International Business Machines Corporation | Active memory device gather, scatter, and filter |
US9244684B2 (en) | 2013-03-15 | 2016-01-26 | Intel Corporation | Limited range vector memory access instructions, processors, methods, and systems |
CN105379295A (zh) * | 2013-07-03 | 2016-03-02 | 皇家Kpn公司 | 分段内容的流送 |
US11074169B2 (en) | 2013-07-03 | 2021-07-27 | Micron Technology, Inc. | Programmed memory controlled data movement and timing within a main memory device |
KR102213668B1 (ko) | 2013-09-06 | 2021-02-08 | 삼성전자주식회사 | 제너럴 퍼포즈 프로그래머블 컴퓨팅 디바이스에서의 멀티미디어 데이터 프로세싱 방법 및 그에 따른 데이터 프로세싱 시스템 |
KR102152735B1 (ko) | 2013-09-27 | 2020-09-21 | 삼성전자주식회사 | 그래픽 처리 장치 및 이의 동작 방법 |
KR102113048B1 (ko) | 2013-11-13 | 2020-05-20 | 현대모비스 주식회사 | 마그네틱 엔코더 구조 |
US10114435B2 (en) | 2013-12-23 | 2018-10-30 | Intel Corporation | Method and apparatus to control current transients in a processor |
JP6698553B2 (ja) | 2014-02-13 | 2020-05-27 | コニンクリーケ・ケイピーエヌ・ナムローゼ・フェンノートシャップ | 1つの要求メッセージに基づいたネットワーク・ノードへの多数のチャンクの要求 |
US9747104B2 (en) * | 2014-05-12 | 2017-08-29 | Qualcomm Incorporated | Utilizing pipeline registers as intermediate storage |
US10523723B2 (en) | 2014-06-06 | 2019-12-31 | Koninklijke Kpn N.V. | Method, system and various components of such a system for selecting a chunk identifier |
US9811464B2 (en) * | 2014-12-11 | 2017-11-07 | Intel Corporation | Apparatus and method for considering spatial locality in loading data elements for execution |
US9830151B2 (en) * | 2014-12-23 | 2017-11-28 | Intel Corporation | Method and apparatus for vector index load and store |
US9875214B2 (en) * | 2015-07-31 | 2018-01-23 | Arm Limited | Apparatus and method for transferring a plurality of data structures between memory and a plurality of vector registers |
GB2540942B (en) | 2015-07-31 | 2019-01-23 | Advanced Risc Mach Ltd | Contingent load suppression |
JP6493088B2 (ja) * | 2015-08-24 | 2019-04-03 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US10503502B2 (en) * | 2015-09-25 | 2019-12-10 | Intel Corporation | Data element rearrangement, processors, methods, systems, and instructions |
GB2543303B (en) | 2015-10-14 | 2017-12-27 | Advanced Risc Mach Ltd | Vector data transfer instruction |
US10152321B2 (en) * | 2015-12-18 | 2018-12-11 | Intel Corporation | Instructions and logic for blend and permute operation sequences |
US10509726B2 (en) * | 2015-12-20 | 2019-12-17 | Intel Corporation | Instructions and logic for load-indices-and-prefetch-scatters operations |
US10467006B2 (en) * | 2015-12-20 | 2019-11-05 | Intel Corporation | Permutating vector data scattered in a temporary destination into elements of a destination register based on a permutation factor |
US20170177360A1 (en) * | 2015-12-21 | 2017-06-22 | Intel Corporation | Instructions and Logic for Load-Indices-and-Scatter Operations |
US20170177359A1 (en) * | 2015-12-21 | 2017-06-22 | Intel Corporation | Instructions and Logic for Lane-Based Strided Scatter Operations |
US20170177349A1 (en) * | 2015-12-21 | 2017-06-22 | Intel Corporation | Instructions and Logic for Load-Indices-and-Prefetch-Gathers Operations |
US20170177363A1 (en) * | 2015-12-22 | 2017-06-22 | Intel Corporation | Instructions and Logic for Load-Indices-and-Gather Operations |
US20170192782A1 (en) * | 2015-12-30 | 2017-07-06 | Robert Valentine | Systems, Apparatuses, and Methods for Aggregate Gather and Stride |
US20170192781A1 (en) * | 2015-12-30 | 2017-07-06 | Robert Valentine | Systems, Apparatuses, and Methods for Strided Loads |
US20170192783A1 (en) * | 2015-12-30 | 2017-07-06 | Elmoustapha Ould-Ahmed-Vall | Systems, Apparatuses, and Methods for Stride Load |
US10289416B2 (en) * | 2015-12-30 | 2019-05-14 | Intel Corporation | Systems, apparatuses, and methods for lane-based strided gather |
US10191744B2 (en) * | 2016-07-01 | 2019-01-29 | Intel Corporation | Apparatuses, methods, and systems for element sorting of vectors |
US10282204B2 (en) * | 2016-07-02 | 2019-05-07 | Intel Corporation | Systems, apparatuses, and methods for strided load |
US10191740B2 (en) | 2017-02-28 | 2019-01-29 | Intel Corporation | Deinterleave strided data elements processors, methods, systems, and instructions |
WO2018158603A1 (en) * | 2017-02-28 | 2018-09-07 | Intel Corporation | Strideshift instruction for transposing bits inside vector register |
WO2018174931A1 (en) | 2017-03-20 | 2018-09-27 | Intel Corporation | Systems, methods, and appartus for tile configuration |
TWI685757B (zh) * | 2017-05-17 | 2020-02-21 | 美商谷歌有限責任公司 | 低延遲矩陣乘法單元 |
US10014056B1 (en) * | 2017-05-18 | 2018-07-03 | Sandisk Technologies Llc | Changing storage parameters |
US11360771B2 (en) | 2017-06-30 | 2022-06-14 | Intel Corporation | Method and apparatus for data-ready memory operations |
WO2019009870A1 (en) | 2017-07-01 | 2019-01-10 | Intel Corporation | SAVE BACKGROUND TO VARIABLE BACKUP STATUS SIZE |
US10346163B2 (en) | 2017-11-01 | 2019-07-09 | Apple Inc. | Matrix computation engine |
US10922258B2 (en) * | 2017-12-22 | 2021-02-16 | Alibaba Group Holding Limited | Centralized-distributed mixed organization of shared memory for neural network processing |
US10642620B2 (en) | 2018-04-05 | 2020-05-05 | Apple Inc. | Computation engine with strided dot product |
US10970078B2 (en) * | 2018-04-05 | 2021-04-06 | Apple Inc. | Computation engine with upsize/interleave and downsize/deinterleave options |
US10649777B2 (en) * | 2018-05-14 | 2020-05-12 | International Business Machines Corporation | Hardware-based data prefetching based on loop-unrolled instructions |
US10846260B2 (en) * | 2018-07-05 | 2020-11-24 | Qualcomm Incorporated | Providing reconfigurable fusion of processing elements (PEs) in vector-processor-based devices |
US10754649B2 (en) | 2018-07-24 | 2020-08-25 | Apple Inc. | Computation engine that operates in matrix and vector modes |
WO2020036917A1 (en) * | 2018-08-14 | 2020-02-20 | Optimum Semiconductor Technologies Inc. | Vector instruction with precise interrupts and/or overwrites |
US10831488B1 (en) | 2018-08-20 | 2020-11-10 | Apple Inc. | Computation engine with extract instructions to minimize memory access |
GB2584268B (en) | 2018-12-31 | 2021-06-30 | Graphcore Ltd | Load-Store Instruction |
US11620153B2 (en) * | 2019-02-04 | 2023-04-04 | International Business Machines Corporation | Instruction interrupt suppression of overflow exception |
CN113626079A (zh) * | 2020-05-08 | 2021-11-09 | 安徽寒武纪信息科技有限公司 | 数据处理方法及装置以及相关产品 |
TW202215237A (zh) * | 2020-09-02 | 2022-04-16 | 美商賽發馥股份有限公司 | 向量運算記憶體保護 |
US20220413850A1 (en) * | 2021-06-28 | 2022-12-29 | Silicon Laboratories Inc. | Apparatus for Processor with Macro-Instruction and Associated Methods |
US12086597B2 (en) * | 2021-06-28 | 2024-09-10 | Silicon Laboratories Inc. | Array processor using programmable per-dimension size values and programmable per-dimension stride values for memory configuration |
US12079630B2 (en) * | 2021-06-28 | 2024-09-03 | Silicon Laboratories Inc. | Array processor having an instruction sequencer including a program state controller and loop controllers |
CN114546488B (zh) * | 2022-04-25 | 2022-07-29 | 超验信息科技(长沙)有限公司 | 一种向量跨步指令的实现方法、装置、设备及存储介质 |
US20230418614A1 (en) * | 2022-06-22 | 2023-12-28 | Andes Technology Corporation | Processor, operation method, and load-store device for implementation of accessing vector strided memory |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4745547A (en) * | 1985-06-17 | 1988-05-17 | International Business Machines Corp. | Vector processing |
US6016395A (en) * | 1996-10-18 | 2000-01-18 | Samsung Electronics Co., Ltd. | Programming a vector processor and parallel programming of an asymmetric dual multiprocessor comprised of a vector processor and a risc processor |
US5940876A (en) * | 1997-04-02 | 1999-08-17 | Advanced Micro Devices, Inc. | Stride instruction for fetching data separated by a stride amount |
JP3138659B2 (ja) * | 1997-05-07 | 2001-02-26 | 甲府日本電気株式会社 | ベクトル処理装置 |
US6539470B1 (en) * | 1999-11-16 | 2003-03-25 | Advanced Micro Devices, Inc. | Instruction decode unit producing instruction operand information in the order in which the operands are identified, and systems including same |
US6532533B1 (en) * | 1999-11-29 | 2003-03-11 | Texas Instruments Incorporated | Input/output system with mask register bit control of memory mapped access to individual input/output pins |
JP3733842B2 (ja) * | 2000-07-12 | 2006-01-11 | 日本電気株式会社 | ベクトルスキャタ命令制御回路及びベクトル型情報処理装置 |
US6807622B1 (en) * | 2000-08-09 | 2004-10-19 | Advanced Micro Devices, Inc. | Processor which overrides default operand size for implicit stack pointer references and near branches |
JP3961461B2 (ja) * | 2003-07-15 | 2007-08-22 | エヌイーシーコンピュータテクノ株式会社 | ベクトル処理装置、および、ベクトル処理方法 |
US7610466B2 (en) * | 2003-09-05 | 2009-10-27 | Freescale Semiconductor, Inc. | Data processing system using independent memory and register operand size specifiers and method thereof |
US7275148B2 (en) * | 2003-09-08 | 2007-09-25 | Freescale Semiconductor, Inc. | Data processing system using multiple addressing modes for SIMD operations and method thereof |
EP1731998A1 (en) * | 2004-03-29 | 2006-12-13 | Kyoto University | Data processing device, data processing program, and recording medium containing the data processing program |
US8211826B2 (en) * | 2007-07-12 | 2012-07-03 | Ncr Corporation | Two-sided thermal media |
US8667250B2 (en) * | 2007-12-26 | 2014-03-04 | Intel Corporation | Methods, apparatus, and instructions for converting vector data |
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 |
US7984273B2 (en) * | 2007-12-31 | 2011-07-19 | Intel Corporation | System and method for using a mask register to track progress of gathering elements from memory |
US8447962B2 (en) * | 2009-12-22 | 2013-05-21 | Intel Corporation | Gathering and scattering multiple data elements |
US9513905B2 (en) * | 2008-03-28 | 2016-12-06 | Intel Corporation | Vector instructions to enable efficient synchronization and parallel reduction operations |
US20120254591A1 (en) * | 2011-04-01 | 2012-10-04 | Hughes Christopher J | Systems, apparatuses, and methods for stride pattern gathering of data elements and stride pattern scattering of data elements |
-
2011
- 2011-04-01 US US13/078,891 patent/US20120254591A1/en not_active Abandoned
- 2011-12-06 GB GB1316951.1A patent/GB2503169B/en active Active
- 2011-12-06 CN CN201180071342.7A patent/CN103562856B/zh not_active Expired - Fee Related
- 2011-12-06 WO PCT/US2011/063590 patent/WO2012134555A1/en active Application Filing
- 2011-12-06 KR KR1020137029087A patent/KR101607161B1/ko active IP Right Grant
- 2011-12-06 JP JP2014502544A patent/JP5844882B2/ja not_active Expired - Fee Related
- 2011-12-06 DE DE112011105121.2T patent/DE112011105121T5/de not_active Withdrawn
- 2011-12-08 TW TW100145352A patent/TWI476684B/zh not_active IP Right Cessation
- 2011-12-08 TW TW103144497A patent/TWI514273B/zh not_active IP Right Cessation
-
2014
- 2014-07-25 US US14/341,643 patent/US20150052333A1/en not_active Abandoned
-
2015
- 2015-11-19 JP JP2015226505A patent/JP6274672B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
TW201525856A (zh) | 2015-07-01 |
CN103562856A (zh) | 2014-02-05 |
KR101607161B1 (ko) | 2016-03-29 |
GB201316951D0 (en) | 2013-11-06 |
US20120254591A1 (en) | 2012-10-04 |
TWI476684B (zh) | 2015-03-11 |
TWI514273B (zh) | 2015-12-21 |
CN103562856B (zh) | 2016-11-16 |
JP2014513340A (ja) | 2014-05-29 |
JP6274672B2 (ja) | 2018-02-07 |
TW201246065A (en) | 2012-11-16 |
WO2012134555A1 (en) | 2012-10-04 |
JP2016040737A (ja) | 2016-03-24 |
US20150052333A1 (en) | 2015-02-19 |
GB2503169B (en) | 2020-09-30 |
KR20130137702A (ko) | 2013-12-17 |
GB2503169A (en) | 2013-12-18 |
DE112011105121T5 (de) | 2014-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6274672B2 (ja) | 装置および方法 | |
JP6109910B2 (ja) | メモリ・ソースを宛先レジスタに展開し、ソース・レジスタを宛先メモリ位置に圧縮するためのシステム、装置および方法 | |
JP6408524B2 (ja) | 書込マスクを用いて2つのソースオペランドを単一のデスティネーションに融合するシステム、装置及び方法 | |
KR101817034B1 (ko) | 반복 종속 조건을 갖는 반복들의 벡터 루프들을 구현하기 위한 명령어 | |
JP5764257B2 (ja) | レジスタをアライメントするためのシステム、装置、および方法 | |
KR101938290B1 (ko) | 히스토그램을 결정하기 위한 명령어 | |
KR101722346B1 (ko) | 적분 이미지 계산 명령어를 위한 방법 및 장치 | |
JP5926754B2 (ja) | 限定範囲ベクトルメモリアクセス命令、プロセッサ、方法、及びシステム | |
JP5947879B2 (ja) | マスクレジスタを用いてジャンプを行うシステム、装置、および方法 | |
JP6835436B2 (ja) | マスクをマスク値のベクトルに拡張するための方法および装置 | |
JP2021051727A (ja) | グラフアプリケーション内の圧縮されたリストに効率的にアクセスするための間接参照のロード及びストアへのisaサポートのシステム及び方法 | |
JP2017539010A (ja) | ベクトル飽和ダブルワード/クワッドワードの加算を実行するための命令およびロジック | |
KR20160113220A (ko) | 마스킹된 결과 요소들로의 전파를 이용하여 연속 소스 요소들을 마스킹되지 않은 결과 요소들에 저장하기 위한 프로세서, 방법, 시스템 및 명령어 | |
JP2018500666A (ja) | ベクトルビットギャザーを実行するための方法および装置 | |
TWI697836B (zh) | 處理包括高功率及標準指令之指令集的方法與處理器 | |
JP2018503162A (ja) | スピンループジャンプを実行するための装置および方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20141110 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20141125 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20150224 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20150319 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20150424 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150522 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150630 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150930 |
|
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: 20151020 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20151119 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5844882 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |