JP6207095B2 - 条件付きループをベクトル化する命令及び論理 - Google Patents
条件付きループをベクトル化する命令及び論理 Download PDFInfo
- Publication number
- JP6207095B2 JP6207095B2 JP2015160209A JP2015160209A JP6207095B2 JP 6207095 B2 JP6207095 B2 JP 6207095B2 JP 2015160209 A JP2015160209 A JP 2015160209A JP 2015160209 A JP2015160209 A JP 2015160209A JP 6207095 B2 JP6207095 B2 JP 6207095B2
- Authority
- JP
- Japan
- Prior art keywords
- vector
- processor
- target
- data
- elements
- 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
- 239000013598 vector Substances 0.000 claims description 488
- 230000015654 memory Effects 0.000 claims description 121
- 238000012545 processing Methods 0.000 claims description 105
- 238000000034 method Methods 0.000 claims description 95
- 230000004044 response Effects 0.000 claims description 22
- 238000005192 partition Methods 0.000 claims description 18
- 238000003491 array Methods 0.000 claims description 4
- 230000000873 masking effect Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 description 52
- 238000003860 storage Methods 0.000 description 38
- 238000007667 floating Methods 0.000 description 37
- 238000010586 diagram Methods 0.000 description 32
- 230000006870 function Effects 0.000 description 22
- 238000005516 engineering process Methods 0.000 description 17
- 239000000872 buffer Substances 0.000 description 15
- 238000013461 design Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 238000004519 manufacturing process Methods 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 9
- 230000008901 benefit Effects 0.000 description 6
- 239000003795 chemical substances by application Substances 0.000 description 6
- 238000013500 data storage Methods 0.000 description 6
- 238000001514 detection method Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 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 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000007418 data mining Methods 0.000 description 5
- 230000001419 dependent effect Effects 0.000 description 5
- 238000006073 displacement reaction Methods 0.000 description 5
- 238000005265 energy consumption Methods 0.000 description 5
- 238000003909 pattern recognition Methods 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000033001 locomotion Effects 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000012856 packing Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 229910052754 neon Inorganic materials 0.000 description 2
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 101000912503 Homo sapiens Tyrosine-protein kinase Fgr Proteins 0.000 description 1
- 102000001332 SRC Human genes 0.000 description 1
- 108060006706 SRC Proteins 0.000 description 1
- 102100026150 Tyrosine-protein kinase Fgr Human genes 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 150000001875 compounds Chemical class 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
- 238000012938 design process Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8076—Details on data register access
- G06F15/8084—Special arrangements thereof, e.g. mask or switch
-
- 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/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- 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/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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- 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
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Description
オペコードフォーマット397は、オペコードフォーマット370に対応しており、随意でVEXプレフィックスバイト391を含み(これは一実施形態ではC4hexから始まる)、他の殆どの共通利用されているレガシー命令プレフィックスバイト及びエスケープコードを置き換える。たとえば以下の例では、1つの命令をエンコードするために2つのフィールドを利用する一実施形態が示されており、第2のエスケープコードが元の命令に存在している場合、または、REXフィールドの剰余ビット(たとえばXB及びWフィールド)を利用する必要がある場合に利用可能である。後述する実施形態では、レガシーエスケープは、新たなエスケープ値で表され、レガシープレフィックスは、「ペイロード」バイトの一部として完全に圧縮され、レガシープレフィックスは、将来拡張する必要が出たときには取戻し(reclaimed)、利用することができ、第2のエスケープコードは「マップ」フィールドで圧縮され、将来のマッピングまたはフィーチャのスペースが利用可能となった場合、新たなフィーチャを追加する(たとえば、ベクトル長を増加して、さらなるソースレジスタ指定子を利用する)。
一実施形態では、EVEXフォーマット398によりエンコードされた命令は、追加の「ペイロード」ビットを有してよいが、この追加の「ペイロード」は、条件付きループのためのSIMDベクトル化機能に、たとえばユーザ設定可能なマスクレジスタ、追加のオペランド、または、128ビット、256ビット、または512ビットのベクトルレジスタまたはこれ以上のレジスタを選択肢、などの追加の新たな特徴を提供するために利用することができる。
[項目1]
条件付きループをベクトル化するコンピュータ実装される方法であって、
n個のカウント値にカウントベクトルのエレメントを設定する段階と、
決定ベクトルを取得する段階と、
決定ベクトルに従ってベクトルマスクを生成する段階と、
マスクレジスタにベクトルマスクを格納する段階と、
複数のn個の連続したベクトルエレメントを保持するために、ソースベクトルとしてカウントベクトルを特定するためのソースパラメータと、マスクレジスタを特定するためのマスクパラメータと、デスティネーションベクトルを特定するためのデスティネーションパラメータとをもつプロセッサ命令を受信する段階と、
プロセッサ命令の受信に呼応して、ソースベクトルのデータを、特定されたデスティネーションベクトルのマスキングされているベクトルエレメントにコピーすることなく、ソースベクトルの連続したベクトルエレメントのデータを、特定されたデスティネーションベクトルのマスキングされていないベクトルエレメントにコピーする段階と
を備え、
複数のn個の連続したベクトルエレメントのそれぞれは、mバイトの同じ可変パーティションサイズを有し、
nは、受信されるプロセッサ命令に応じて変化する、方法。
[項目2]
ソースパラメータは、カウントベクトルをソースベクトルレジスタとして特定する、項目1に記載の方法。
[項目3]
デスティネーションパラメータは、デスティネーションベクトルレジスタを特定する、項目2に記載の方法。
[項目4]
データは、デスティネーションベクトルのマスキングされていないベクトルエレメントにコピーされ、デスティネーションベクトルのマスキングされているベクトルエレメントはいずれもゼロの値に設定される、項目3に記載の方法。
[項目5]
データは、デスティネーションベクトルのいずれのマスキングされたベクトルエレメントも修正することなく、デスティネーションベクトルのマスキングされていないベクトルエレメントにコピーされる、項目2に記載の方法。
[項目6]
デスティネーションパラメータは、メモリ内に配置されているデスティネーションベクトル部分を特定する、項目5に記載の方法。
[項目7]
ソースパラメータは、メモリ内に配置されているソースベクトル部分としてカウントベクトルを特定する、項目1に記載の方法。
[項目8]
プロセッサに、
n個のカウント値にカウントベクトルのエレメントを設定する手順と、
決定ベクトルを取得する手順と、
決定ベクトルに従ってベクトルマスクを生成する手順と、
マスクレジスタにベクトルマスクを格納する手順と、
複数のn個の連続したベクトルエレメントを保持するために、ソースベクトルとしてカウントベクトルを特定するためのソースパラメータと、マスクレジスタを特定するためのマスクパラメータと、デスティネーションベクトルを特定するためのデスティネーションパラメータとをもつ単一命令複数データ拡張命令(SIMD拡張命令)の実行に呼応して、
ソースベクトルのデータを、特定されたデスティネーションベクトルのマスキングされているベクトルエレメントにコピーすることなく、ソースベクトルの連続したベクトルエレメントのデータを、特定されたデスティネーションベクトルのマスキングされていないベクトルエレメントにコピーする手順と
を実行させ、
複数のn個の連続したベクトルエレメントのそれぞれは、mバイトの同じ可変パーティションサイズを有し、
nは、実行されるSIMD拡張命令に応じて変化する、プログラム。
[項目9]
ソースパラメータは、カウントベクトルをソースベクトルレジスタとして特定する、項目8に記載のプログラム。
[項目10]
デスティネーションパラメータは、デスティネーションベクトルレジスタを特定する、項目9に記載のプログラム。
[項目11]
データは、デスティネーションベクトルのマスキングされていないベクトルエレメントにコピーされ、デスティネーションベクトルのマスキングされているベクトルエレメントはいずれもゼロの値に設定される、項目10に記載のプログラム。
[項目12]
データは、デスティネーションベクトルのいずれのマスキングされたベクトルエレメントも修正することなく、デスティネーションベクトルのマスキングされていないベクトルエレメントにコピーされる、項目9に記載のプログラム。
[項目13]
デスティネーションパラメータは、メモリ内に配置されているデスティネーションベクトル部分を特定する、項目12に記載のプログラム。
[項目14]
ソースパラメータは、メモリ内に配置されているソースベクトル部分としてカウントベクトルを特定する、項目8に記載のプログラム。
[項目15]
実行されるSIMD拡張命令が、32ビットの整数を拡張する場合、nは、4、8、および16からなる群から選択された値である、項目8から14のいずれか一項に記載のプログラム。
[項目16]
実行されるSIMD拡張命令が、64ビットの整数を拡張する場合、nは、2、4、および8からなる群から選択された値である、項目8から14のいずれか一項に記載のプログラム。
[項目17]
第1の複数のn個のデータフィールドを有するソースベクトルであって、ソースベクトルの第1の複数のn個のデータフィールドのそれぞれは、mバイトの同じ可変のパーティションサイズをもつエレメントを格納する、ソースベクトルと、
第1の複数のn個のデータフィールドに対応している第2の複数のデータフィールドを有するデスティネーションベクトルであって、デスティネーションベクトルの第2の複数のデータフィールドのそれぞれは、ベクトル条件付きマスクのマスク値に対応している、デスティネーションベクトルと、
ベクトル拡張オペレーションとデータパーティションサイズとを特定するプロセッサ命令をデコードするデコードステージと、
1以上の実行ユニットと
を備えるプロセッサであって、
1以上の実行ユニットは、デコードされたプロセッサ命令に呼応して、
ソースベクトルのデータを、デスティネーションベクトルのマスキングされているベクトルエレメントにコピーすることなく、ソースベクトルの連続したベクトルエレメントのデータを、デスティネーションベクトルのマスキングされていないベクトルエレメントにコピーし、nは、受信されるプロセッサ命令に応じて変化する、プロセッサ。
[項目18]
ソースベクトルはベクトルレジスタである、項目17に記載のプロセッサ。
[項目19]
デスティネーションベクトルは別のベクトルレジスタである、項目18に記載のプロセッサ。
[項目20]
デコードされたプロセッサ命令に呼応して、デスティネーションベクトルのマスキングされているベクトルエレメントがゼロの値に設定される、項目19に記載のプロセッサ。
[項目21]
データは、デスティネーションベクトルのいずれのマスキングされたベクトルエレメントも修正することなく、デスティネーションベクトルのマスキングされていないベクトルエレメントにコピーされる、項目18に記載のプロセッサ。
[項目22]
デスティネーションベクトルは、メモリ内に配置されているベクトル部分である、項目21に記載のプロセッサ。
[項目23]
ソースベクトルは、メモリ内に配置されているベクトル部分である、項目21に記載のプロセッサ。
[項目24]
プロセッサ命令が、ベクトル拡張オペレーションと4バイトのダブルワードのデータパーティションサイズとを特定している場合、nは、4、8、および16からなる群から選択された値である、項目17から23のいずれか一項に記載のプロセッサ。
[項目25]
プロセッサ命令が、ベクトル拡張オペレーションと8バイトのクワッドワードのデータパーティションサイズとを特定している場合、nは、2、4、および8からなる群から選択された値である、項目17から23のいずれか一項に記載のプロセッサ。
[項目26]
メモリと、
第1のプロセッサコアと第2のプロセッサコアとを有する複数のプロセッサと
を備える処理システムであって、
複数のプロセッサのそれぞれは、
第1の複数のn個のデータフィールドを有するソースベクトルと、
第1の複数のデータフィールドに対応する第2の複数のデータフィールドを有するデスティネーションベクトルと、
ベクトル拡張オペレーションとデータパーティションサイズとを特定するプロセッサ命令をデコードするデコードステージと、
1以上の実行ユニットと
を備え、
ソースベクトルの第1の複数のn個のデータフィールドのそれぞれは、mバイトの同じ可変パーティションサイズを有するエレメントを格納し、
デスティネーションベクトルの第2の複数のデータフィールドのそれぞれは、ベクトル条件付きマスクのマスク値に対応しており、
1以上の実行ユニットは、デコードされたプロセッサ命令に呼応して、
ソースベクトルのデータを、デスティネーションベクトルのマスキングされているベクトルエレメントにコピーすることなく、ソースベクトルの連続したベクトルエレメントのデータを、デスティネーションベクトルのマスキングされていないベクトルエレメントにコピーし、
nは、受信されるプロセッサ命令に応じて変化する、処理システム。
[項目27]
ソースベクトルは、メモリ内に配置されているベクトル部分である、項目26に記載の処理システム。
[項目28]
プロセッサ命令が、ベクトル拡張オペレーションと4バイトのダブルワードのデータパーティションサイズとを特定している場合、nは、4、8、および16からなる群から選択された値である、項目26または27に記載の処理システム。
[項目29]
プロセッサ命令が、ベクトル拡張オペレーションと8バイトのクワッドワードのデータパーティションサイズとを特定している場合、nは、2、4、および8からなる群から選択された値である、項目26または27に記載の処理システム。
[項目30]
複数のn個の連続するベクトルエレメントとn個の関連する条件付きマスクエレメントとをそれぞれ保持する対象ベクトルとマスクレジスタとを特定する対象引数とマスク引数、および、ソースベクトルを特定するソース引数を有するSIMD拡張命令を備え、
実行可能なSIMD拡張命令は、プロセッサに、ソースベクトルの連続するベクトルエレメントのデータを、対象ベクトルのマスキングされていないベクトルエレメントにコピーして、対象ベクトルのマスキングされているベクトルエレメントを予め定められた値に設定する手順を実行させ、
nは、実行されるSIMD拡張命令に応じて変化する、プログラム。
[項目31]
予め定められた値はゼロである、項目30に記載のプログラム。
[項目32]
ソース引数は、ソースベクトルレジスタを特定する、項目30または31に記載のプログラム。
[項目33]
ソース引数は、メモリ内のソースベクトル位置を特定する、項目30または31に記載のプログラム。
[項目34]
実行されるSIMD拡張命令が32ビットの整数を拡張する場合、nは、4、8、および16からなる群から選択された値である、項目30から33のいずれか一項に記載のプログラム。
[項目35]
実行されるSIMD拡張命令が64ビットの整数を拡張する場合、nは、2、4、および8からなる群から選択された値である、項目30から33のいずれか一項に記載のプログラム。
[項目36]
複数のn個の連続するベクトルエレメントとn個の関連する条件付きマスクエレメントとをそれぞれ保持する対象ベクトルとマスクレジスタとを特定する対象引数とマスク引数、および、ソースベクトルを特定するソース引数を有するSIMD拡張命令を備え、
実行可能なSIMD拡張命令は、プロセッサに、ソースベクトルの連続するベクトルエレメントのデータを、対象ベクトルのマスキングされていないベクトルエレメントにコピーする手順を実行させ、
nは、実行されるSIMD拡張命令に応じて変化する、プログラム。
[項目37]
ソース引数は、ソースベクトルレジスタを特定する、項目36に記載のプログラム。
[項目38]
対象引数は、対象ベクトルレジスタを特定する、項目37に記載のプログラム。
[項目39]
実行可能なSIMD拡張命令は、プロセッサに、さらに、対象ベクトルのマスキングされているベクトルエレメントをゼロの値に設定する手順を実行させる、項目38に記載のプログラム。
[項目40]
データは、対象ベクトルのいずれのマスキングされたベクトルエレメントも修正することなく、対象ベクトルのマスキングされていないベクトルエレメントにコピーされる、項目37から39のいずれか一項に記載のプログラム。
[項目41]
対象引数は、メモリ内の対象ベクトル位置を特定する、項目40に記載のプログラム。
[項目42]
ソース引数は、メモリ内のソースベクトル位置を特定する、項目36に記載のプログラム。
[項目43]
複数のn個の連続したベクトルエレメントを保持するために、ソースベクトルを特定するためのソースパラメータと、条件マスクレジスタを特定するためのマスクパラメータと、デスティネーションベクトルを特定するためのデスティネーションパラメータとをもつプロセッサ命令を受信する段階と、
プロセッサ命令の受信に呼応して、データを、特定されたデスティネーションベクトルのマスキングされているベクトルエレメントにコピーすることなく、ソースベクトルの連続したベクトルエレメントのデータを、特定されたデスティネーションベクトルのマスキングされていないベクトルエレメントにコピーする段階と
を備え、
複数のn個の連続したベクトルエレメントのそれぞれは、mバイトの同じ可変パーティションサイズを有し、
nは、受信されるプロセッサ命令に応じて変化する、コンピュータ実装される方法。
[項目44]
ソースパラメータは、ソースベクトルレジスタを特定する、項目43に記載の方法。
[項目45]
デスティネーションパラメータは、デスティネーションベクトルレジスタを特定する、項目44に記載の方法。
[項目46]
データは、デスティネーションベクトルのマスキングされていないベクトルエレメントにコピーされ、デスティネーションベクトルのマスキングされているベクトルエレメントはいずれもゼロの値に設定される、項目45に記載の方法。
[項目47]
データは、デスティネーションベクトルのいずれのマスキングされたベクトルエレメントも修正することなく、デスティネーションベクトルのマスキングされていないベクトルエレメントにコピーされる、項目44から46のいずれか一項に記載の方法。
[項目48]
デスティネーションパラメータは、メモリ内に配置されているデスティネーションベクトル部分を特定する、項目47に記載の方法。
[項目49]
ソースパラメータは、メモリ内に配置されているソースベクトル部分を特定する、項目43に記載の方法。
Claims (25)
- コンピュータにより実装される、条件付きループをベクトル化する方法であって、
n個のエレメントを有するカウントベクトルを設定する段階であって、前記カウントベクトル内の互いに異なる各エレメントはそれぞれ、互いに値の異なるn個のカウント値のいずれかに設定されるものであり、前記互いに値の異なるn個のカウント値は、前記カウントベクトル内において、値の大小順に設定されるものである、前記カウントベクトルを設定する段階と、
n個の連続したベクトルエレメントとn個の関連付けられた条件付きマスクエレメントとをそれぞれ保持するターゲットベクトルとマスクレジスタとを特定するための、ターゲットパラメータおよびマスクパラメータ、並びに、前記カウントベクトルを識別するためのソースパラメータを含む実行可能なベクトル拡張命令を受信する段階であって、
前記ソースパラメータと前記マスクパラメータと前記ターゲットパラメータにより特定されるベクトルはいずれも、前記n個の連続したベクトルエレメントを保持するものであり、前記ターゲットパラメータにより特定される前記ターゲットベクトルは、前記n個の連続したベクトルエレメントからなる組の1つの組または複数の組からなる配列のうちの、1つの組の前記n個の連続したベクトルエレメントに関係するものであることが許容されるものである、前記実行可能なベクトル拡張命令を受信する段階と、
を備え、
前記実行可能なベクトル拡張命令は、実行されると、前記コンピュータに、前記カウントベクトルの連続したベクトルエレメントからデータを、前記ターゲットベクトルのマスキングされていないベクトルエレメントにコピーさせ、
前記nは、実行される前記実行可能なベクトル拡張命令に応じて変化する、
方法。 - 前記ソースパラメータは、前記カウントベクトルをソースベクトルレジスタとして特定する、請求項1に記載の方法。
- 前記ターゲットパラメータは、ターゲットベクトルレジスタを特定する、請求項2に記載の方法。
- 前記ターゲットパラメータは、メモリ内のターゲットベクトル位置を特定する、請求項2に記載の方法。
- 前記データは、前記ターゲットベクトルのマスキングされていないベクトルエレメントにコピーされ、前記ターゲットベクトルのマスキングされたベクトルエレメントはいずれもゼロの値に設定される、請求項1から4のいずれか1項に記載の方法。
- 前記データは、前記ターゲットベクトルのいずれのマスキングされたベクトルエレメントも修正することなく、前記ターゲットベクトルのマスキングされていないベクトルエレメントにコピーされる、請求項1から4のいずれか1項に記載の方法。
- 前記ソースパラメータは、メモリ内のソースベクトル部分として前記カウントベクトルを特定する、請求項1に記載の方法。
- n個のエレメントを有するカウントベクトルを設定する実行ステージであって、前記カウントベクトル内の互いに異なる各エレメントはそれぞれ、互いに値の異なるn個のカウント値のいずれかに設定されるものであり、前記互いに値の異なるn個のカウント値は、前記カウントベクトル内において、値の大小順に設定されるものである、前記カウントベクトルを設定する実行ステージと、
n個の連続したベクトルエレメントとn個の関連付けられた条件付きマスクエレメントとをそれぞれ保持するターゲットベクトルとマスクレジスタとを特定するための、ターゲットパラメータおよびマスクパラメータ、並びに、前記カウントベクトルを識別するためのソースパラメータを含む実行可能なベクトル拡張命令をデコードするデコードステージであって、
前記ソースパラメータと前記マスクパラメータと前記ターゲットパラメータにより特定されるベクトルはいずれも、前記n個の連続したベクトルエレメントを保持するものであり、前記ターゲットパラメータにより特定される前記ターゲットベクトルは、前記n個の連続したベクトルエレメントからなる組の1つの組または複数の組からなる配列のうちの、1つの組の前記n個の連続したベクトルエレメントに関係するものであることが許容されるものである、前記実行可能なベクトル拡張命令を受信する前記デコードステージと、
を備えるプロセッサであって、
前記実行可能なベクトル拡張命令は、実行されると、前記プロセッサに、前記カウントベクトルの連続したベクトルエレメントからデータを、前記ターゲットベクトルのマスキングされていないベクトルエレメントにコピーさせ、
前記nは、実行される前記実行可能なベクトル拡張命令に応じて変化する、
プロセッサ。 - 前記カウントベクトルはベクトルレジスタである、請求項8に記載のプロセッサ。
- 前記ターゲットベクトルは、別のベクトルレジスタである請求項9に記載のプロセッサ。
- 前記ターゲットベクトルは、メモリ内のベクトル部分である、請求項9に記載のプロセッサ。
- デコードされた前記実行可能なベクトル拡張命令に呼応して、前記ターゲットベクトルのマスキングされたベクトルエレメントがゼロの値に設定される、
請求項8から11のいずれか1項に記載のプロセッサ。 - 前記データは、前記ターゲットベクトルのいずれのマスキングされたベクトルエレメントも修正することなく、前記ターゲットベクトルのマスキングされていないベクトルエレメントにコピーされる、
請求項8から11のいずれか1項に記載のプロセッサ。 - 前記カウントベクトルは、メモリ内のベクトル部分である、
請求項8に記載のプロセッサ。 - 前記実行可能なベクトル拡張命令が、4バイトのダブルワードのデータパーティションサイズを特定している場合、nは、4、8、および16からなる群から選択された値である、
請求項8から14のいずれか1項に記載のプロセッサ。 - 前記実行可能なベクトル拡張命令が、8バイトのクワッドワードのデータパーティションサイズを特定している場合、nは、2、4、および8からなる群から選択された値である
請求項8から14のいずれか1項に記載のプロセッサ。 - メモリと、
第1プロセッサコアおよび第2プロセッサコアを有する複数のプロセッサと、
を備える処理システムであって、前記プロセッサの各々は、
n個のエレメントを有するカウントベクトルを設定する実行ステージであって、前記カウントベクトル内の互いに異なる各エレメントはそれぞれ、互いに値の異なるn個のカウント値のいずれかに設定されるものであり、前記互いに値の異なるn個のカウント値は、前記カウントベクトル内において、値の大小順に設定されるものである、前記カウントベクトルを設定する実行ステージと、
n個の連続したベクトルエレメントとn個の関連付けられた条件付きマスクエレメントとをそれぞれ保持するターゲットベクトルとマスクレジスタとを特定するための、ターゲットパラメータおよびマスクパラメータ、並びに、前記カウントベクトルを識別するためのソースパラメータを含む実行可能なベクトル拡張命令をデコードするデコードステージであって、
前記ソースパラメータと前記マスクパラメータと前記ターゲットパラメータにより特定されるベクトルはいずれも、前記n個の連続したベクトルエレメントを保持するものであり、前記ターゲットパラメータにより特定される前記ターゲットベクトルは、前記n個の連続したベクトルエレメントからなる組の1つの組または複数の組からなる配列のうちの、1つの組の前記n個の連続したベクトルエレメントに関係するものであることが許容されるものである、前記実行可能なベクトル拡張命令を受信する前記デコードステージと、
を有し、
前記実行可能なベクトル拡張命令は、実行されると、前記プロセッサに、前記カウントベクトルの連続したベクトルエレメントからデータを、前記ターゲットベクトルのマスキングされていないベクトルエレメントにコピーさせ、
前記nは、実行される前記実行可能なベクトル拡張命令に応じて変化する、
処理システム。 - 前記カウントベクトルは、前記メモリ内のベクトル部分である、
請求項17に記載の処理システム。 - 前記カウントベクトルはベクトルレジスタである、
請求項17に記載の処理システム。 - 前記実行可能なベクトル拡張命令が、4バイトのダブルワードのデータパーティションサイズを特定している場合、nは、4、8、および16からなる群から選択された値である、
請求項17から19のいずれか1項に記載の処理システム。 - 前記実行可能なベクトル拡張命令が、8バイトのクワッドワードのデータパーティションサイズを特定している場合、nは、2、4、および8からなる群から選択された値である、
請求項17から19のいずれか1項に記載の処理システム。 - 前記ターゲットベクトルは、別のベクトルレジスタである、
請求項17から21のいずれか1項に記載の処理システム。 - 前記ターゲットベクトルは、メモリ内のベクトル部分である、
請求項17から21のいずれか1項に記載の処理システム。 - デコードされた前記実行可能なベクトル拡張命令に呼応して、前記ターゲットベクトルのマスキングされたベクトルエレメントがゼロの値に設定される、
請求項17から23のいずれか1項に記載の処理システム。 - 前記データは、前記ターゲットベクトルのいずれのマスキングされたベクトルエレメントも修正することなく、前記ターゲットベクトルのマスキングされていないベクトルエレメントにコピーされる、
請求項17から23のいずれか1項に記載の処理システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/731,809 US9501276B2 (en) | 2012-12-31 | 2012-12-31 | Instructions and logic to vectorize conditional loops |
US13/731,809 | 2012-12-31 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013254939A Division JP5795787B2 (ja) | 2012-12-31 | 2013-12-10 | 条件付きループをベクトル化する命令及び論理 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016015152A JP2016015152A (ja) | 2016-01-28 |
JP6207095B2 true JP6207095B2 (ja) | 2017-10-04 |
Family
ID=50114803
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013254939A Active JP5795787B2 (ja) | 2012-12-31 | 2013-12-10 | 条件付きループをベクトル化する命令及び論理 |
JP2015160209A Active JP6207095B2 (ja) | 2012-12-31 | 2015-08-14 | 条件付きループをベクトル化する命令及び論理 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013254939A Active JP5795787B2 (ja) | 2012-12-31 | 2013-12-10 | 条件付きループをベクトル化する命令及び論理 |
Country Status (7)
Country | Link |
---|---|
US (2) | US9501276B2 (ja) |
JP (2) | JP5795787B2 (ja) |
KR (3) | KR101592074B1 (ja) |
CN (2) | CN107992330B (ja) |
BR (1) | BR102013032654A2 (ja) |
DE (1) | DE102013021221A1 (ja) |
GB (1) | GB2511198B (ja) |
Families Citing this family (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9170789B2 (en) * | 2013-03-05 | 2015-10-27 | Intel Corporation | Analyzing potential benefits of vectorization |
GB2519108A (en) | 2013-10-09 | 2015-04-15 | Advanced Risc Mach Ltd | A data processing apparatus and method for controlling performance of speculative vector operations |
GB2519107B (en) * | 2013-10-09 | 2020-05-13 | Advanced Risc Mach Ltd | A data processing apparatus and method for performing speculative vector access operations |
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 |
US10013253B2 (en) * | 2014-12-23 | 2018-07-03 | Intel Corporation | Method and apparatus for performing a vector bit reversal |
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 |
JP6492943B2 (ja) | 2015-05-07 | 2019-04-03 | 富士通株式会社 | 計算機、コンパイル方法、コンパイルプログラム、およびパイプライン処理プログラム |
US9875213B2 (en) * | 2015-06-26 | 2018-01-23 | Intel Corporation | Methods, apparatus, instructions and logic to provide vector packed histogram functionality |
US10509726B2 (en) | 2015-12-20 | 2019-12-17 | Intel Corporation | Instructions and logic for load-indices-and-prefetch-scatters operations |
US20170177359A1 (en) * | 2015-12-21 | 2017-06-22 | Intel Corporation | Instructions and Logic for Lane-Based Strided Scatter Operations |
US20170177348A1 (en) * | 2015-12-21 | 2017-06-22 | Intel Corporation | Instruction and Logic for Compression and Rotation |
US20170177363A1 (en) * | 2015-12-22 | 2017-06-22 | Intel Corporation | Instructions and Logic for Load-Indices-and-Gather Operations |
TWI724066B (zh) * | 2015-12-24 | 2021-04-11 | 美商英特爾股份有限公司 | 分散縮減指令 |
US10191749B2 (en) | 2015-12-24 | 2019-01-29 | Intel Corporation | Scatter reduction instruction |
CN105677298B (zh) * | 2015-12-30 | 2018-03-27 | 李朝波 | 一种将计算机指令中立即数扩展的方法和装置 |
JP2017126307A (ja) * | 2016-01-12 | 2017-07-20 | 正仁 櫨田 | コンピューターのcpuの汎用化法 |
US11204764B2 (en) | 2016-03-31 | 2021-12-21 | Intel Corporation | Processors, methods, systems, and instructions to Partition a source packed data into lanes |
JP6666554B2 (ja) * | 2016-05-23 | 2020-03-18 | 富士通株式会社 | 情報処理装置、変換プログラム、及び変換方法 |
US10466967B2 (en) * | 2016-07-29 | 2019-11-05 | Qualcomm Incorporated | System and method for piecewise linear approximation |
GB2553783B (en) * | 2016-09-13 | 2020-11-04 | Advanced Risc Mach Ltd | Vector multiply-add instruction |
KR102659495B1 (ko) * | 2016-12-02 | 2024-04-22 | 삼성전자주식회사 | 벡터 프로세서 및 그 제어 방법 |
US10564967B2 (en) | 2017-03-03 | 2020-02-18 | International Business Machines Corporation | Move string processing via inline decode-based micro-operations expansion |
US10255068B2 (en) | 2017-03-03 | 2019-04-09 | International Business Machines Corporation | Dynamically selecting a memory boundary to be used in performing operations |
US10564965B2 (en) | 2017-03-03 | 2020-02-18 | International Business Machines Corporation | Compare string processing via inline decode-based micro-operations expansion |
US10620956B2 (en) | 2017-03-03 | 2020-04-14 | International Business Machines Corporation | Search string processing via inline decode-based micro-operations expansion |
US10324716B2 (en) | 2017-03-03 | 2019-06-18 | International Business Machines Corporation | Selecting processing based on expected value of selected character |
US10613862B2 (en) | 2017-03-03 | 2020-04-07 | International Business Machines Corporation | String sequence operations with arbitrary terminators |
US10789069B2 (en) | 2017-03-03 | 2020-09-29 | International Business Machines Corporation | Dynamically selecting version of instruction to be executed |
US10817293B2 (en) * | 2017-04-28 | 2020-10-27 | Tenstorrent Inc. | Processing core with metadata actuated conditional graph execution |
CN109213527A (zh) * | 2017-06-30 | 2019-01-15 | 超威半导体公司 | 具有重叠执行的流处理器 |
US11157441B2 (en) | 2017-07-24 | 2021-10-26 | Tesla, Inc. | Computational array microprocessor system using non-consecutive data formatting |
US11893393B2 (en) | 2017-07-24 | 2024-02-06 | Tesla, Inc. | Computational array microprocessor system with hardware arbiter managing memory requests |
US10671349B2 (en) | 2017-07-24 | 2020-06-02 | Tesla, Inc. | Accelerated mathematical engine |
US11157287B2 (en) | 2017-07-24 | 2021-10-26 | Tesla, Inc. | Computational array microprocessor system with variable latency memory access |
US11409692B2 (en) | 2017-07-24 | 2022-08-09 | Tesla, Inc. | Vector computational unit |
CN111160541B (zh) * | 2017-12-14 | 2023-05-19 | 中科寒武纪科技股份有限公司 | 集成电路芯片装置及相关产品 |
JP6974722B2 (ja) * | 2018-01-24 | 2021-12-01 | 富士通株式会社 | コンパイラプログラム、コンパイル方法及びコンパイルする情報処理装置 |
US11561791B2 (en) | 2018-02-01 | 2023-01-24 | Tesla, Inc. | Vector computational unit receiving data elements in parallel from a last row of a computational array |
CN108845828B (zh) * | 2018-05-29 | 2021-01-08 | 深圳市国微电子有限公司 | 一种协处理器、矩阵运算加速方法及系统 |
US11347653B2 (en) * | 2018-08-31 | 2022-05-31 | Nyriad, Inc. | Persistent storage device management |
KR20210066843A (ko) * | 2018-09-18 | 2021-06-07 | 옵티멈 세미컨덕터 테크놀로지스 인코포레이티드 | 마스킹된 벡터 명령어 구현 시스템 및 방법 |
CN111767204B (zh) * | 2019-04-02 | 2024-05-28 | 杭州海康威视数字技术股份有限公司 | 溢出风险检测方法、装置及设备 |
CN111813447B (zh) * | 2019-04-12 | 2022-11-08 | 杭州中天微系统有限公司 | 一种数据拼接指令的处理方法和处理装置 |
CN112083954B (zh) * | 2019-06-13 | 2024-09-06 | 华夏芯(北京)通用处理器技术有限公司 | 一种gpu中显式独立掩码寄存器的掩码操作方法 |
CN111314075B (zh) * | 2020-02-27 | 2021-07-16 | 华为技术有限公司 | 一种基于运算装置的汉明重量计算方法 |
CN112230995B (zh) * | 2020-10-13 | 2024-04-09 | 广东省新一代通信与网络创新研究院 | 一种指令的生成方法、装置以及电子设备 |
CN112596770B (zh) * | 2020-12-24 | 2023-08-18 | 潍柴动力股份有限公司 | 一种数据处理方法、装置、电子设备和存储介质 |
JP2023029120A (ja) | 2021-08-20 | 2023-03-03 | 富士通株式会社 | 命令変換プログラム、命令変換方法、および命令変換装置 |
CN115951936B (zh) * | 2023-01-17 | 2023-05-26 | 上海燧原科技有限公司 | 向量化编译程序的芯片适配方法、装置、设备及介质 |
CN118012575B (zh) * | 2024-04-08 | 2024-06-11 | 中电科申泰信息科技有限公司 | 一种面向国产化平台的多媒体数据解包的软件模拟方法 |
Family Cites Families (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS57209570A (en) | 1981-06-19 | 1982-12-22 | Fujitsu Ltd | Vector processing device |
JPS58214963A (ja) | 1982-06-09 | 1983-12-14 | Hitachi Ltd | ベクトル処理装置 |
JPS6015771A (ja) | 1983-07-08 | 1985-01-26 | Hitachi Ltd | ベクトルプロセッサ |
JPS62276668A (ja) | 1985-07-31 | 1987-12-01 | Nec Corp | ベクトルマスク演算制御ユニツト |
JPH0731669B2 (ja) | 1986-04-04 | 1995-04-10 | 株式会社日立製作所 | ベクトル・プロセツサ |
JP2607689B2 (ja) | 1989-07-10 | 1997-05-07 | 株式会社日立製作所 | ベクトル処理装置 |
US5206822A (en) | 1991-11-15 | 1993-04-27 | Regents Of The University Of California | Method and apparatus for optimized processing of sparse matrices |
JP2665111B2 (ja) | 1992-06-18 | 1997-10-22 | 日本電気株式会社 | ベクトル処理装置 |
JPH06230960A (ja) | 1993-01-29 | 1994-08-19 | Mitsubishi Electric Corp | データ処理回路 |
US5887183A (en) | 1995-01-04 | 1999-03-23 | International Business Machines Corporation | Method and system in a data processing system for loading and storing vectors in a plurality of modes |
US5680338A (en) | 1995-01-04 | 1997-10-21 | International Business Machines Corporation | Method and system for vector processing utilizing selected vector elements |
US5812147A (en) | 1996-09-20 | 1998-09-22 | Silicon Graphics, Inc. | Instruction methods for performing data formatting while moving data between memory and a vector register file |
US5832288A (en) | 1996-10-18 | 1998-11-03 | Samsung Electronics Co., Ltd. | Element-select mechanism for a vector processor |
US7272703B2 (en) | 1997-08-01 | 2007-09-18 | Micron Technology, Inc. | Program controlled embedded-DRAM-DSP architecture and methods |
US5933650A (en) | 1997-10-09 | 1999-08-03 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
US7133040B1 (en) | 1998-03-31 | 2006-11-07 | Intel Corporation | System and method for performing an insert-extract instruction |
US6308250B1 (en) | 1998-06-23 | 2001-10-23 | Silicon Graphics, Inc. | Method and apparatus for processing a set of data values with plural processing units mask bits generated by other processing units |
US7932911B2 (en) * | 1998-08-24 | 2011-04-26 | Microunity Systems Engineering, Inc. | Processor for executing switch and translate instructions requiring wide operands |
US7100026B2 (en) | 2001-05-30 | 2006-08-29 | The Massachusetts Institute Of Technology | System and method for performing efficient conditional vector operations for data parallel architectures involving both input and conditional vector values |
US6269435B1 (en) | 1998-09-14 | 2001-07-31 | The Board Of Trustees Of The Leland Stanford Junior University | System and method for implementing conditional vector operations in which an input vector containing multiple operands to be used in conditional operations is divided into two or more output vectors based on a condition vector |
DE69930544T2 (de) * | 1998-12-16 | 2007-01-25 | Matsushita Electric Industrial Co., Ltd., Kadoma | Verfahren und vorrichtung für bedingte vektoroperationen |
US7529907B2 (en) | 1998-12-16 | 2009-05-05 | Mips Technologies, Inc. | Method and apparatus for improved computer load and store operations |
US6591361B1 (en) | 1999-12-28 | 2003-07-08 | International Business Machines Corporation | Method and apparatus for converting data into different ordinal types |
DE60139606D1 (de) | 2000-01-18 | 2009-10-01 | Mips Tech Inc | Lade- und speicheroperationen |
US7093102B1 (en) | 2000-03-29 | 2006-08-15 | Intel Corporation | Code sequence for vector gather and scatter |
US6701424B1 (en) | 2000-04-07 | 2004-03-02 | Nintendo Co., Ltd. | Method and apparatus for efficient loading and storing of vectors |
US6857061B1 (en) | 2000-04-07 | 2005-02-15 | Nintendo Co., Ltd. | Method and apparatus for obtaining a scalar value directly from a vector register |
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 |
US6788303B2 (en) * | 2001-02-27 | 2004-09-07 | 3Dlabs Inc., Ltd | Vector instruction set |
US6697064B1 (en) | 2001-06-08 | 2004-02-24 | Nvidia Corporation | System, method and computer program product for matrix tracking during vertex processing in a graphics pipeline |
US6922716B2 (en) | 2001-07-13 | 2005-07-26 | Motorola, Inc. | Method and apparatus for vector processing |
US7539714B2 (en) * | 2003-06-30 | 2009-05-26 | Intel Corporation | Method, apparatus, and instruction for performing a sign operation that multiplies |
US20060101256A1 (en) | 2004-10-20 | 2006-05-11 | Dwyer Michael K | Looping instructions for a single instruction, multiple data execution engine |
US7404065B2 (en) | 2005-12-21 | 2008-07-22 | Intel Corporation | Flow optimization and prediction for VSSE memory operations |
US7600104B2 (en) | 2006-08-15 | 2009-10-06 | Peter Neumann | Method and system for parallel vector data processing of vector data having a number of data elements including a defined first bit-length |
US8191056B2 (en) | 2006-10-13 | 2012-05-29 | International Business Machines Corporation | Sparse vectorization without hardware gather/scatter |
US7743231B2 (en) | 2007-02-27 | 2010-06-22 | International Business Machines Corporation | Fast sparse list walker |
US20090172348A1 (en) | 2007-12-26 | 2009-07-02 | Robert Cavin | Methods, apparatus, and instructions for processing vector data |
US8667250B2 (en) | 2007-12-26 | 2014-03-04 | Intel Corporation | Methods, apparatus, and instructions for converting vector data |
US8458684B2 (en) * | 2009-08-19 | 2013-06-04 | International Business Machines Corporation | Insertion of operation-and-indicate instructions for optimized SIMD code |
US20120254592A1 (en) * | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location |
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 |
JP5382467B2 (ja) | 2011-04-20 | 2014-01-08 | アイシン・エィ・ダブリュ株式会社 | 車両用駆動装置 |
JP5821963B2 (ja) | 2011-09-20 | 2015-11-24 | トヨタ自動車株式会社 | 車両用駆動装置 |
US20140095847A1 (en) * | 2012-09-28 | 2014-04-03 | Doron Orenstein | Instruction and highly efficient micro-architecture to enable instant context switch for user-level threading |
US9563425B2 (en) * | 2012-11-28 | 2017-02-07 | Intel Corporation | Instruction and logic to provide pushing buffer copy and store functionality |
-
2012
- 2012-12-31 US US13/731,809 patent/US9501276B2/en active Active
-
2013
- 2013-12-10 JP JP2013254939A patent/JP5795787B2/ja active Active
- 2013-12-17 DE DE102013021221.9A patent/DE102013021221A1/de active Pending
- 2013-12-18 BR BR102013032654A patent/BR102013032654A2/pt not_active Application Discontinuation
- 2013-12-27 GB GB1323062.8A patent/GB2511198B/en active Active
- 2013-12-30 KR KR1020130167653A patent/KR101592074B1/ko active Application Filing
- 2013-12-31 CN CN201711191253.1A patent/CN107992330B/zh active Active
- 2013-12-31 CN CN201310751526.9A patent/CN103970509B/zh active Active
-
2015
- 2015-06-19 KR KR1020150087675A patent/KR20150081238A/ko not_active Application Discontinuation
- 2015-08-14 JP JP2015160209A patent/JP6207095B2/ja active Active
-
2016
- 2016-01-28 KR KR1020160010929A patent/KR101790428B1/ko active IP Right Grant
- 2016-11-07 US US15/344,836 patent/US9696993B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20170052785A1 (en) | 2017-02-23 |
CN107992330A (zh) | 2018-05-04 |
BR102013032654A2 (pt) | 2016-06-28 |
CN107992330B (zh) | 2022-02-22 |
GB201323062D0 (en) | 2014-02-12 |
US9501276B2 (en) | 2016-11-22 |
US20140189321A1 (en) | 2014-07-03 |
CN103970509B (zh) | 2018-01-05 |
GB2511198A (en) | 2014-08-27 |
KR101592074B1 (ko) | 2016-02-05 |
JP5795787B2 (ja) | 2015-10-14 |
JP2014130580A (ja) | 2014-07-10 |
KR20150081238A (ko) | 2015-07-13 |
JP2016015152A (ja) | 2016-01-28 |
CN103970509A (zh) | 2014-08-06 |
KR101790428B1 (ko) | 2017-10-25 |
DE102013021221A1 (de) | 2014-07-03 |
GB2511198B (en) | 2016-06-01 |
US9696993B2 (en) | 2017-07-04 |
KR20140088025A (ko) | 2014-07-09 |
KR20160017019A (ko) | 2016-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6207095B2 (ja) | 条件付きループをベクトル化する命令及び論理 | |
US10459877B2 (en) | Instruction and logic to provide vector compress and rotate functionality | |
KR101767025B1 (ko) | 벡터 어드레스 충돌 검출 기능을 제공하기 위한 방법, 장치, 명령어들 및 로직 | |
CN107092465B (zh) | 用于提供向量混合和置换功能的指令和逻辑 | |
KR102512315B1 (ko) | 원자적 범위 연산들을 제공하기 위한 명령어들 및 로직 | |
CN108292229B (zh) | 用于重新出现的相邻聚集的指令和逻辑 | |
JP5930558B2 (ja) | ストライド機能及びマスク機能を有するベクトルロード及びベクトルストアを提供する命令及びロジック | |
WO2014084919A1 (en) | Instruction and logic to provide pushing buffer copy and store functionality | |
TWI610233B (zh) | 用於提供向量分組元組交叉比較功能的方法、處理器和處理系統 | |
WO2013048368A1 (en) | Instruction and logic to provide vector scatter-op and gather-op functionality | |
WO2013048369A9 (en) | Instruction and logic to provide vector load-op/store-op with stride functionality | |
WO2017105717A1 (en) | Instructions and logic for get-multiple-vector-elements operations | |
CN108292271B (zh) | 用于向量置换的指令和逻辑 | |
WO2017105716A1 (en) | Instructions and logic for even and odd vector get operations | |
JP6222859B2 (ja) | ストライド機能及びマスク機能を有するベクトルロード及びベクトルストアを提供する命令及びロジック | |
JP6231155B2 (ja) | ベクトル散乱演算機能及びベクトル収集演算機能を提供する命令及びロジック | |
US20170177354A1 (en) | Instructions and Logic for Vector-Based Bit Manipulation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20160829 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160920 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20161216 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170516 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170721 |
|
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: 20170808 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170904 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6207095 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |