JP7324754B2 - ベクトル・キャリー付き加算命令 - Google Patents
ベクトル・キャリー付き加算命令 Download PDFInfo
- Publication number
- JP7324754B2 JP7324754B2 JP2020531157A JP2020531157A JP7324754B2 JP 7324754 B2 JP7324754 B2 JP 7324754B2 JP 2020531157 A JP2020531157 A JP 2020531157A JP 2020531157 A JP2020531157 A JP 2020531157A JP 7324754 B2 JP7324754 B2 JP 7324754B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- carry
- vector register
- vector
- pair
- 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 title claims description 437
- 238000012545 processing Methods 0.000 claims description 98
- 230000004044 response Effects 0.000 claims description 32
- 238000004590 computer program Methods 0.000 claims description 11
- 238000003672 processing method Methods 0.000 claims description 4
- 238000007792 addition Methods 0.000 description 93
- 101100000438 Mus musculus Acacb gene Proteins 0.000 description 30
- 238000000034 method Methods 0.000 description 30
- 238000010586 diagram Methods 0.000 description 19
- 238000013459 approach Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 230000035508 accumulation Effects 0.000 description 8
- 238000009825 accumulation Methods 0.000 description 8
- 230000015654 memory Effects 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000000873 masking effect Effects 0.000 description 6
- 238000004088 simulation Methods 0.000 description 5
- 230000001066 destructive effect Effects 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000032258 transport Effects 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000008187 granular material Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000005549 size reduction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
-
- 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/3001—Arithmetic 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/30094—Condition code generation, e.g. Carry, Zero flag
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
データ処理を実施するための処理回路と、
データ処理を実施するための処理回路を制御するために、命令をデコードするための命令デコード回路と、
複数のデータ要素を含むベクトル・オペランドを格納するための複数のベクトル・レジスタとを備え、
命令デコード回路は、デスティネーション・ベクトル・レジスタ、第1のデータ・ソース・ベクトル・レジスタ、第2のデータ・ソース・ベクトル・レジスタ、及びキャリー・ソース・ベクトル・レジスタを指定するベクトル・キャリー付き加算命令(vector add-with-carry instruction)に応答して、少なくともデスティネーション・ベクトル・レジスタ及びキャリー・ソース・ベクトル・レジスタは、少なくとも1対のデータ要素を含むオペランドをそれぞれ指定し、それぞれの対は第1のデータ要素及び第2のデータ要素を含み、デスティネーション・ベクトル・レジスタのデータ要素のそれぞれの対について、処理回路を制御して、
デスティネーション・ベクトル・レジスタのデータ要素の対の第1のデータ要素を、第1のデータ・ソース・ベクトル・レジスタの選択されたデータ要素から取得された第1のソース・データ値と、第2のデータ・ソース・ベクトル・レジスタの選択されたデータ要素から取得された第2のソース・データ値と、キャリー・ソース・ベクトル・レジスタの対応するデータ要素の対の第2のデータ要素から取得されたキャリー値との加算の結果に対応する値で更新することと、
デスティネーション・ベクトル・レジスタのデータ要素の対の第2のデータ要素を、前記加算のキャリー出力に対応する値で更新することとを行う、装置を提供する。
データ処理を実施するための処理プログラム・ロジックを制御するために、ターゲット・プログラム・コードの命令をデコードするための命令デコード・プログラム・ロジックと、
複数のデータ要素を含むベクトル・オペランドを格納するための複数のベクトル・レジスタを表現するデータを記憶するためのベクトル・レジスタ・データ構造とを含み、
命令デコード・プログラム・ロジックは、デスティネーション・ベクトル・レジスタ、第1のデータ・ソース・ベクトル・レジスタ、第2のデータ・ソース・ベクトル・レジスタ、及びキャリー・ソース・ベクトル・レジスタを指定するベクトル・キャリー付き加算命令に応答して、少なくともデスティネーション・ベクトル・レジスタ及びキャリー・ソース・ベクトル・レジスタは、少なくとも1対のデータ要素を含むオペランドをそれぞれ指定し、それぞれの対は第1のデータ要素及び第2のデータ要素を含み、デスティネーション・ベクトル・レジスタのデータ要素のそれぞれの対について、ベクトル・レジスタ・データ構造を更新するために処理プログラム・ロジックを制御して、
デスティネーション・ベクトル・レジスタのデータ要素の対の第1のデータ要素を、第1のデータ・ソース・ベクトル・レジスタの選択されたデータ要素から取得された第1のソース・データ値と、第2のデータ・ソース・ベクトル・レジスタの選択されたデータ要素から取得された第2のソース・データ値と、キャリー・ソース・ベクトル・レジスタの対応するデータ要素の対の第2のデータ要素から取得されたキャリー値との加算の結果に対応する値で更新することと、
デスティネーション・ベクトル・レジスタのデータ要素の対の第2のデータ要素を、前記加算のキャリー出力に対応する値で更新することとを行う、コンピュータを提供する。
デスティネーション・ベクトル・レジスタ、第1のデータ・ソース・ベクトル・レジスタ、第2のデータ・ソース・ベクトル・レジスタ、及びキャリー・ソース・ベクトル・レジスタを指定するベクトル・キャリー付き加算命令をデコードすることであって、少なくともデスティネーション・ベクトル・レジスタ及びキャリー・ソース・ベクトル・レジスタは、少なくとも1対のデータ要素を含むオペランドをそれぞれ指定し、それぞれの対は第1のデータ要素及び第2のデータ要素を含む、デコードすることと、
ベクトル・キャリー付き加算命令をデコードすることに応じて、デスティネーション・ベクトル・レジスタのデータ要素のそれぞれの対について、処理回路を制御することであって、
デスティネーション・ベクトル・レジスタのデータ要素の対の第1のデータ要素を、第1のデータ・ソース・ベクトルの選択されたデータ要素から取得された第1のソース・データ値と、第2のデータ・ソース・ベクトル・レジスタの選択されたデータ要素から取得された第2のソース・データ値と、キャリー・ソース・ベクトル・レジスタの対応するデータ要素の対の第2のデータ要素から取得されたキャリー値との加算の結果に対応する新しい値で更新することと、
デスティネーション・ベクトル・レジスタのデータ要素の対の第2のデータ要素を、前記加算のキャリー出力に対応する値で更新することとを行う、制御すること、を含む、データ処理方法を提供する。
データ処理を実施するための処理回路と、
データ処理を実施するための処理回路を制御するために、命令をデコードするための命令デコード回路と、
複数のデータ要素を含むベクトル・オペランドを格納するための複数のベクトル・レジスタと、
処理回路によって実施される演算のマスキングを制御するためのプレディケート値を格納するための複数のプレディケート・フィールドを含む複数のプレディケート・レジスタとを備え、
命令デコード回路は、デスティネーション・ベクトル・レジスタ、第1のデータ・ソース・ベクトル・レジスタ、第2のデータ・ソース・ベクトル・レジスタ、入力プレディケート・レジスタ、及び出力プレディケート・レジスタを指定するベクトル・キャリー付き加算命令に応答して、デスティネーション・ベクトル・レジスタの所与のデータ要素について、処理回路を制御して、
デスティネーション・ベクトル・レジスタの所与のデータ要素を、第1のデータ・ソース・ベクトル・レジスタの対応するデータ要素から取得された第1のソース・データ値と、第2のデータ・ソース・ベクトル・レジスタの対応するデータ要素から取得された第2のソース・データ値と、入力プレディケート・レジスタの対応するプレディケート・フィールドから取得されたキャリー値との加算の結果に対応する値で更新することと、
出力プレディケート・レジスタの対応するプレディケート・フィールドを、前記加算のキャリー出力に対応する値で更新することとを行う、装置を提供する。
データ処理を実施するための処理プログラム・ロジックを制御するために、ターゲット・プログラム・コードの命令をデコードするための命令デコード・プログラム・ロジックと、
複数のデータ要素を含むベクトル・オペランドを格納するための複数のベクトル・レジスタを表現するデータを記憶するためのレジスタ・データ構造と、処理プログラム・ロジックによって実施されるベクトル演算のマスキングを制御するためのプレディケート値を格納するための複数のプレディケート・レジスタとを含み、
命令デコード・プログラム・ロジックは、デスティネーション・ベクトル・レジスタ、第1のデータ・ソース・ベクトル・レジスタ、第2のデータ・ソース・ベクトル・レジスタ、入力プレディケート・レジスタ、及び出力プレディケート・レジスタを指定するベクトル・キャリー付き加算命令に応答して、デスティネーション・ベクトル・レジスタの所与のデータ要素について、レジスタ・データ構造を更新するために、処理回路を制御して、
デスティネーション・ベクトル・レジスタの所与のデータ要素を、第1のデータ・ソース・ベクトル・レジスタの対応するデータ要素から取得された第1のソース・データ値と、第2のデータ・ソース・ベクトル・レジスタの対応するデータ要素から取得された第2のソース・データ値と、入力プレディケート・レジスタの対応するプレディケート・フィールドから取得されたキャリー値との結果に対応する値で更新することと、
出力プレディケート・レジスタの対応するプレディケート・フィールドを、前記加算のキャリー出力に対応する値で更新することとを行う、コンピュータ・プログラムを提供する。
デスティネーション・ベクトル・レジスタ、第1のデータ・ソース・ベクトル・レジスタ、第2のデータ・ソース・ベクトル・レジスタ、入力プレディケート・レジスタ、及び出力プレディケート・レジスタを指定するベクトル・キャリー付き加算命令をデコードすることであって、入力プレディケート・レジスタ及び出力プレディケート・レジスタは、ベクトル演算のマスキングを制御するためのプレディケート値を格納するための複数のプレディケート・レジスタの中から選択される、デコードすることと、
ベクトル・キャリー付き加算命令をデコードすることに応じて、デスティネーション・ベクトル・レジスタの所与のデータ要素について、処理回路を制御することであって、
デスティネーション・ベクトル・レジスタの所与のデータ要素を、第1のデータ・ソース・ベクトル・レジスタの対応するデータ要素から取得された第1のソース・データ値と、第2のデータ・ソース・ベクトル・レジスタの対応するデータ要素から取得された第2のソース・データ値と、入力プレディケート・レジスタの対応するプレディケート・フィールドから取得されたキャリー値との加算の結果に対応する値で更新することと、
出力プレディケート・レジスタの対応するプレディケート・フィールドを、前記加算のキャリー出力に対応する値で更新することとを行う、制御すること、を含む、データ処理方法を提供する。
ADCLB Zda,Zn,Zm //キャリー付き加算long(下部)(Add with carry long(bottom))-第1の変形例、加算変形例
ADCLT Zda,Zn,Zm //キャリー付き加算long(上部)(Add with carry long(top))-第2の変形例、加算変形例
SBCLB Zda,Zn,Zm //キャリー付き減算long(下部)(Subtract with carry long(bottom))-第1の変形例、減算変形例
SBCLT Zda,Zn,Zm //キャリー付き減算long(上部)(Subtract with carry long(top))-第2の変形例、減算変形例
それぞれの変形例について、Zdaはデスティネーション・ベクトル・レジスタ(第1のデータ・ソース・ベクトル・レジスタとしても機能し、また累算器ベクトル・レジスタとも称される)を表し、Znは第2のデータ・ソース・ベクトル・レジスタを表し、Zmはキャリー・ソース・ベクトル・データ・レジスタを表している。これらの命令は、加算又は減算を実施することにより大きな整数の処理を加速するために使用することができ、それによって、累算器ベクトル・レジスタ及びキャリー・ソース・ベクトル・レジスタ内で、キャリー又はボローの入力情報が実際のデータ値でインターリーブされる。
111*543=333+(444<<1 digit)+(555<<2 digits)=60273
しかしながら、Karatsubaアルゴリズムは、分割統治法に基づく手法を使用して、2つのn桁の数の乗算を、せいぜい
の単一桁の乗算まで減らすことができる。この方法は、「乗算」と、「加算」、「減算」などとの間のトレードオフを採用して、「n」が大きい場合にかなりのパフォーマンス上の利点を与える。サイズが「n」の入力オペランドを伴うそれぞれの乗算は、サイズが「n/2」の入力オペランドを伴ういくつかの小さな乗算、及びいくつかの補助的な演算-「加算」、「減算」などに分解される。正式には、2つのnビットの整数、AとBとを乗算して2nビットの結果Cを生成する式は、図6の上部の等式で示すように書くことができる。この実例では、部分積が扱いづらいサイズを有さないことを確実にするために、Karatsubaアルゴリズムの減算の変形例を使用していることに留意されたい。したがって、2つの2048ビットの整数の乗算は、図6に示すように、1024ビット整数の3つのサブ乗算に分解することができる。それぞれ1024ビットの乗算は、同じ方法でそれ自体を3つの512ビット整数の乗算に分解することができる。そして、それぞれ512ビットの乗算を、さらに3つの256ビット整数の乗算に分解することができる。最終的に、乗算をさらに分解することが、全体的な結果を再構成するために必要とされる追加的な加算、減算、又はシフトのために、合計で大きなオーバヘッドをもたらす点に到達する。
・図10A:AccB[i]は、列0の累算を表している。AccB[i]のそれぞれの要素ごとに、対の下部(偶数)要素が、AccB[i]の下部要素の以前の値、P0iloの対応する要素の対の下部要素、及びキャリー入力としての0(これは結果の最下位部分であるため、下部の加算からのキャリーは必要ない)、の合計にセットされる。結果のこの部分については、結果の最下位部分にはさらなるキャリーをインジェクトすることができないため、加算結果は既に最後の結果値Res[i]を表している。加算からのキャリー出力CaccBiは、AccB[i]の対の上部要素の最下位ビットに書き込まれ、列1の最下位ビットに等価な有意性を有するキャリー・ビットを表している。
・図10B:AccB[i+1]は、列1の累算を表している。AccB[i+1]のそれぞれの要素ごとに、対の下部(偶数)要素が、AccB[i+1]の下部要素の以前の値、P1iloの対応する要素の対の下部要素、及びキャリー入力としてCaccBi、の合計にセットされる。つまり、以前のADCLB命令のデスティネーション・レジスタAccB[i]が、次のADCLB命令のキャリー・ソース・ベクトル・レジスタとして指定され、それによって、列0における以前の加算で生成されたキャリーCaccBiが、列1における加算についてのキャリー入力として入力される。列1の累算からのキャリー出力CaccBi+1は、AccB[i+1]におけるそれぞれの対の上部要素の最下位ビットに格納され、列2における累算の最下位ビットに適用されるキャリーを表している。
・図10C:AccB[i+2]は、列2の累算を表している。やはり、以前の命令についての結果ベクトルAccB[i+1]が、次の命令についてのキャリー・ソース・ベクトル・レジスタとなり、それによって、要素の対ごとに、列1において以前の加算によって生成されたキャリーCaccBi+1がAccB[i+1]における対応する対の上部要素から抽出され、AccB[i+2]とAccB[i+2]の対の要素の下部に書き込まれるP2iloとの累算に加算され、得られるキャリー出力CaccBi+2がAccB[i+2]の要素のそれぞれの対の上部要素に格納される。
・図10D:この命令は、図10A~図10Cを通じて取られたキャリーのチェーンとは無関係に、第2のキャリー・チェーンの開始に印をつけている。この命令は、部分積P0ihiを図10Bから得られるAccB[i+1]への列1における加算を表している。AccB[i+1]の奇数要素のキャリー値は図10Cにおいて既に消費されているため、AccB[i+1]の偶数要素とP0ihiの偶数要素とのそれぞれの加算から得られる新しいキャリー値CaccBi+1 *によって、奇数要素において上書きすることができる。
・図10E:この命令は、第1のキャリー・チェーンの一部であり、図10Cからのキャリー出力CaccBi+2(AccB[i+2]における要素のそれぞれの対の上部要素に格納された)を、AccB[i+3]における要素のそれぞれの対の下部要素とP3ilo(列3における加算を表している)との加算へのキャリー入力として使用する。得られるキャリー出力CaccBi+2は、AccB[i+3]における要素のそれぞれの対の上部要素に格納される。
・図10F:第2のキャリー・チェーンにおいて、この命令は図10Dからのキャリー出力CaccBi+1 *(列2の最下位ビットに等価なビット有意性を有する)を、列2におけるAccB[i+2]とP1ihiとの加算へのキャリー入力として使用する。
・図10G:第1のキャリー・チェーンにおいて、この命令は偶数レーンにおけるAccB[i+4]とP3ihiとのベクトル加算を実施し、それぞれの加算についてのキャリー入力は、AccB[i+3]の奇数レーン由来である(図10Eから得られる)。命令は、個々の加算のキャリー出力をAccB[i+4]の奇数要素の最下位ビットにさらに書き込むことができるが、この累算は結果の最上位部分を表しているため、実際にはこれらのキャリーはどの後続命令にも必要とされない。
・図10H:第2のキャリー・チェーンにおいて、この命令は偶数レーンにおけるAccB[i+3]とP2ihiとのベクトル加算を実施し、それぞれの加算についてのキャリー入力CaccBi+2 *は、AccB[i+2]の奇数レーン由来である(図10Fから得られる)。
・図10I:最後に、第2のキャリー・チェーンにおいて、この命令はAccB[i+4]の偶数レーンとゼロ化されたデータ・ソース・レジスタとのベクトル加算を実施する(最上位列に加算される部分積は1つしかないため、第2のデータ入力はゼロであり、これは既に図10Gの命令によって加算されている)。それぞれの加算についてのキャリー入力CaccBi+2 *は、AccB[i+3]の奇数レーン由来である(図10Gから得られる)。それぞれの加算の結果は、累算器レジスタAccB[i+4]の偶数レーンに書き込まれる。やはり、命令の通常の挙動の一部として、奇数レーンにはそれぞれの加算のキャリー出力が書き込まれ、これらのキャリーはいかなるさらなる命令でも必要とされない。
したがって、この実例は、ADCLB命令が、乗算の部分積の加算についてのキャリー情報をデータ結果それ自体と共に、どのように効率的に移送させ、2の乗数ビットの要素を有する入力ベクトル(例えば、P0iloからP3ihi)に適用されるそのような乗算の効率的な計算を可能にすることができるか、それによって、加算を実施する前に、ベクトル乗算命令の結果のアンパックが必要とならないこと、を示している。これは、例えば、Karatsubaアルゴリズムを使用して長整数の乗算を伴う計算のパフォーマンスを向上させる。
Claims (12)
- 装置であって、
データ処理を実施するための処理回路と、
前記データ処理を実施するための前記処理回路を制御するために、命令をデコードするための命令デコード回路と、
複数のデータ要素を含むベクトル・オペランドを格納するための複数のベクトル・レジスタと
を備え、
前記命令デコード回路は、デスティネーション・ベクトル・レジスタ、第1のデータ・ソース・ベクトル・レジスタ、第2のデータ・ソース・ベクトル・レジスタ、及びキャリー・ソース・ベクトル・レジスタを指定するベクトル・キャリー付き加算命令に応答して、少なくとも前記デスティネーション・ベクトル・レジスタ及び前記キャリー・ソース・ベクトル・レジスタは、少なくとも1対のデータ要素を含むオペランドをそれぞれ指定し、それぞれの対は第1のデータ要素及び第2のデータ要素を含み、前記デスティネーション・ベクトル・レジスタのデータ要素のそれぞれの対について、前記処理回路を制御して
前記ベクトル・キャリー付き加算命令に関連する情報に応じて、前記第1のデータ・ソース・ベクトル・レジスタのうちのデータ要素と第2のデータ・ソース・ベクトル・レジスタのうちのデータ要素を選択することと、
前記デスティネーション・ベクトル・レジスタの前記データ要素の対の前記第1のデータ要素を、前記第1のデータ・ソース・ベクトル・レジスタのデータ要素のうちの前記選択されたデータ要素から取得された第1のソース・データ値と、前記第2のデータ・ソース・ベクトル・レジスタのデータ要素のうちの前記選択されたデータ要素から取得された第2のソース・データ値と、前記キャリー・ソース・ベクトル・レジスタの対応するデータ要素の対の前記第2のデータ要素から取得されたキャリー値との加算の結果に対応する値で更新することと、
前記デスティネーション・ベクトル・レジスタの前記データ要素の対の前記第2のデータ要素を、前記加算のキャリー出力に対応する値で更新することと
を行う、装置。 - 前記第1のデータ・ソース・ベクトル・レジスタは、前記デスティネーション・ベクトル・レジスタと同一のレジスタであり、前記第1のソース・データ値は前記デスティネーション・ベクトル・レジスタの前記データ要素の対の前記第1のデータ要素の以前の値を含む、請求項1に記載の装置。
- それぞれのデータ要素の対は、隣接するデータ要素の対を含む、請求項1又は2に記載の装置。
- 前記デスティネーション・ベクトル・レジスタ及び前記キャリー・ソース・ベクトル・レジスタ内のデータ要素の対の数が少なくとも2であり、前記対の前記第1のデータ要素は、前記対の前記第2のデータ要素でインターリーブされる、請求項1から3までのいずれか一項に記載の装置。
- 前記ベクトル・キャリー付き加算命令に応答して、前記命令デコード回路は、前記処理回路を制御して
前記キャリー・ソース・ベクトル・レジスタの前記対応するデータ要素の対の第2のデータ要素の最下位ビットから前記キャリー値を取得することと、
前記デスティネーション・ベクトル・レジスタの前記データ要素の対の前記第2のデータ要素の最下位ビットを、前記加算の前記キャリー出力に対応する前記値で更新することと
行うように構成される、請求項1から4までのいずれか一項に記載の装置。 - 前記ベクトル・キャリー付き加算命令に応答して、前記キャリー・ソース・ベクトル・レジスタ及び前記デスティネーション・ベクトル・レジスタの両方について、前記最下位ビット以外の前記第2のデータ要素の残りのビットは使用されない、請求項5に記載の装置。
- それぞれのデータ要素は2Nビットを含み、前記第2のソース・データ値は2Nビットを含み、ここでNは整数である、請求項1から6までのいずれか一項に記載の装置。
- 前記第2のデータ・ソース・ベクトル・レジスタは、少なくとも1対のデータ要素を含むオペランドをさらに指定し、それぞれの対は第1のデータ要素及び第2のデータ要素を含み、
前記ベクトル・キャリー付き加算命令の第1の変形例に応答して、前記第2のソース・データ値は前記第2のデータ・ソース・ベクトル・レジスタの対応するデータ要素の対の前記第1のデータ要素から取得された値を含み、
前記ベクトル・キャリー付き加算命令の第2の変形例に応答して、前記第2のソース・データ値は、前記第2のデータ・ソース・ベクトル・レジスタの前記対応するデータ要素の対の前記第2のデータ要素から取得された値を含む、請求項1から7までのいずれか一項に記載の装置。 - 少なくとも1つのプレディケート指標を指定するプレディケート値に関連付けられる前記ベクトル・キャリー付き加算命令のプレディケートされた変形例に応答して、それぞれのプレディケート指標は前記デスティネーション・ベクトル・レジスタの前記少なくとも1対のデータ要素のうちの1つに対応しており、前記命令デコード回路は、前記処理回路を制御して、
前記対応するプレディケート指標が第1の値を有するデータ要素の対について、前記対の前記第1のデータ要素の、前記加算の前記結果に対応する前記値での前記更新、及び前記対の前記第2のデータ要素の、前記加算の前記キャリー出力での前記更新を実施し、
前記対応するプレディケート指標が第2の値を有するデータ要素の対について、前記対の前記第1のデータ要素の、前記加算の前記結果に対応する前記値での前記更新、及び前記対の前記第2のデータ要素の、前記加算の前記キャリー出力での前記更新を抑制する
ように構成される、請求項1から8までのいずれか一項に記載の装置。 - 前記ベクトル・キャリー付き加算命令の加算の変形例に応答して、前記加算は、前記第1のソース・データ値と、前記第2のソース・データ値と、前記キャリー値とを加算することを含み、
前記ベクトル・キャリー付き加算命令の減算の変形例に応答して、前記加算は、前記減算についてのボロー値を示す前記キャリー値で前記第1のソース・データ値から前記第2のソース・データ値の減算を含み、前記キャリー出力は前記減算のボロー出力を含む、請求項1から9までのいずれか一項に記載の装置。 - ターゲット・プログラム・コードの命令を実行するための命令実行環境を提供するためにホスト処理装置を制御するためのコンピュータ・プログラムであって、前記コンピュータ・プログラムは、
データ処理を実施するための処理プログラム・ロジックを制御するために、前記ターゲット・プログラム・コードの命令をデコードするための命令デコード・プログラム・ロジックと、
複数のデータ要素を含むベクトル・オペランドを格納するための複数のベクトル・レジスタを表現するデータを記憶するためのベクトル・レジスタ・データ構造と
を含み、
前記命令デコード・プログラム・ロジックは、デスティネーション・ベクトル・レジスタ、第1のデータ・ソース・ベクトル・レジスタ、第2のデータ・ソース・ベクトル・レジスタ、及びキャリー・ソース・ベクトル・レジスタを指定するベクトル・キャリー付き加算命令に応答して、少なくとも前記デスティネーション・ベクトル・レジスタ及び前記キャリー・ソース・ベクトル・レジスタは、少なくとも1対のデータ要素を含むオペランドをそれぞれ指定し、それぞれの対は第1のデータ要素及び第2のデータ要素を含み、前記デスティネーション・ベクトル・レジスタのデータ要素のそれぞれの対について、前記ベクトル・レジスタ・データ構造を更新するために前記処理プログラム・ロジックを制御して、
前記ベクトル・キャリー付き加算命令に関連する情報に応じて、前記第1のデータ・ソース・ベクトル・レジスタのうちのデータ要素と第2のデータ・ソース・ベクトル・レジスタのうちのデータ要素を選択することと、
前記デスティネーション・ベクトル・レジスタの前記データ要素の対の前記第1のデータ要素を、前記第1のデータ・ソース・ベクトル・レジスタのデータ要素のうちの前記選択されたデータ要素から取得された第1のソース・データ値と、前記第2のデータ・ソース・ベクトル・レジスタのデータ要素のうちの前記選択されたデータ要素から取得された第2のソース・データ値と、前記キャリー・ソース・ベクトル・レジスタの対応するデータ要素の対の前記第2のデータ要素から取得されたキャリー値との加算の結果に対応する値で更新することと、
前記デスティネーション・ベクトル・レジスタの前記データ要素の対の前記第2のデータ要素を、前記加算のキャリー出力に対応する値で更新することと
を行う、コンピュータ・プログラム。 - データ処理方法であって、
デスティネーション・ベクトル・レジスタ、第1のデータ・ソース・ベクトル・レジスタ、第2のデータ・ソース・ベクトル・レジスタ、及びキャリー・ソース・ベクトル・レジスタを指定するベクトル・キャリー付き加算命令をデコードすることであって、少なくとも前記デスティネーション・ベクトル・レジスタ及び前記キャリー・ソース・ベクトル・レジスタは、少なくとも1対のデータ要素を含むオペランドをそれぞれ指定し、それぞれの対は第1のデータ要素及び第2のデータ要素を含む、デコードすることと、
前記ベクトル・キャリー付き加算命令をデコードすることに応じて、前記デスティネーション・ベクトル・レジスタのデータ要素のそれぞれの対について、処理回路を制御することであって、
前記ベクトル・キャリー付き加算命令に関連する情報に応じて、前記第1のデータ・ソース・ベクトル・レジスタのうちのデータ要素と第2のデータ・ソース・ベクトル・レジスタのうちのデータ要素を選択することと、
前記デスティネーション・ベクトル・レジスタの前記データ要素の対の前記第1のデータ要素を、第1のデータ・ソース・ベクトル・レジスタのデータ要素のうちの前記選択されたデータ要素から取得された第1のソース・データ値と、前記第2のデータ・ソース・ベクトル・レジスタのデータ要素のうちの前記選択されたデータ要素から取得された第2のソース・データ値と、前記キャリー・ソース・ベクトル・レジスタの対応するデータ要素の対の前記第2のデータ要素から取得されたキャリー値との加算の結果に対応する新しい値で更新することと、
前記デスティネーション・ベクトル・レジスタの前記データ要素の対の前記第2のデータ要素を、前記加算のキャリー出力に対応する値で更新することとを行う、
制御することと
を含む、データ処理方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP17386048.7 | 2017-12-13 | ||
EP17386048.7A EP3499362B1 (en) | 2017-12-13 | 2017-12-13 | Vector add-with-carry instruction |
PCT/EP2018/081444 WO2019115142A1 (en) | 2017-12-13 | 2018-11-15 | Vector add-with-carry instruction |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2021507348A JP2021507348A (ja) | 2021-02-22 |
JP7324754B2 true JP7324754B2 (ja) | 2023-08-10 |
Family
ID=60923334
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020531157A Active JP7324754B2 (ja) | 2017-12-13 | 2018-11-15 | ベクトル・キャリー付き加算命令 |
Country Status (8)
Country | Link |
---|---|
US (1) | US11106465B2 (ja) |
EP (1) | EP3499362B1 (ja) |
JP (1) | JP7324754B2 (ja) |
KR (1) | KR102649933B1 (ja) |
CN (1) | CN111433741A (ja) |
IL (1) | IL274178B2 (ja) |
TW (1) | TWI791694B (ja) |
WO (1) | WO2019115142A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112416294B (zh) * | 2020-11-20 | 2022-09-16 | 安谋科技(中国)有限公司 | 处理器及其二进制累加方法和计算机可读介质 |
US11829756B1 (en) * | 2021-09-24 | 2023-11-28 | Apple Inc. | Vector cumulative sum instruction and circuit for implementing filtering operations |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003167728A (ja) | 2001-11-28 | 2003-06-13 | Matsushita Electric Ind Co Ltd | Simd演算方法およびsimd演算装置 |
US20060259737A1 (en) | 2005-05-10 | 2006-11-16 | Telairity Semiconductor, Inc. | Vector processor with special purpose registers and high speed memory access |
JP2015532755A (ja) | 2012-09-28 | 2015-11-12 | インテル・コーポレーション | インターレーンベクトルリダクション命令の高速化 |
US20160124710A1 (en) | 2014-11-03 | 2016-05-05 | Arm Limited | Data processing apparatus and method using programmable significance data |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4128880A (en) * | 1976-06-30 | 1978-12-05 | Cray Research, Inc. | Computer vector register processing |
US5717616A (en) * | 1993-02-19 | 1998-02-10 | Hewlett-Packard Company | Computer hardware instruction and method for computing population counts |
DE4430195B4 (de) * | 1993-12-13 | 2004-09-23 | Hewlett-Packard Co. (N.D.Ges.D.Staates Delaware), Palo Alto | Verfahren zur Auswertung von Booleschen Ausdrücken |
JP3691538B2 (ja) * | 1995-03-07 | 2005-09-07 | 富士通株式会社 | ベクトルデータ加算方法及びベクトルデータ乗算方法 |
US6295597B1 (en) * | 1998-08-11 | 2001-09-25 | Cray, Inc. | Apparatus and method for improved vector processing to support extended-length integer arithmetic |
US7334110B1 (en) * | 2003-08-18 | 2008-02-19 | Cray Inc. | Decoupled scalar/vector computer architecture system and method |
US20080016320A1 (en) * | 2006-06-27 | 2008-01-17 | Amitabh Menon | Vector Predicates for Sub-Word Parallel Operations |
GB2474901B (en) * | 2009-10-30 | 2015-01-07 | Advanced Risc Mach Ltd | Apparatus and method for performing multiply-accumulate operations |
US9817663B2 (en) * | 2013-03-19 | 2017-11-14 | Apple Inc. | Enhanced Macroscalar predicate operations |
US10318293B2 (en) * | 2013-07-09 | 2019-06-11 | Texas Instruments Incorporated | Predication methods for vector processors |
US9400651B2 (en) * | 2013-09-24 | 2016-07-26 | Apple Inc. | Early issue of null-predicated operations |
US9557995B2 (en) * | 2014-02-07 | 2017-01-31 | Arm Limited | Data processing apparatus and method for performing segmented operations |
US10838719B2 (en) * | 2014-11-14 | 2020-11-17 | Marvell Asia Pte, LTD | Carry chain for SIMD operations |
GB2548600B (en) * | 2016-03-23 | 2018-05-09 | Advanced Risc Mach Ltd | Vector predication instruction |
GB2548908B (en) * | 2016-04-01 | 2019-01-30 | Advanced Risc Mach Ltd | Complex multiply instruction |
-
2017
- 2017-12-13 EP EP17386048.7A patent/EP3499362B1/en active Active
-
2018
- 2018-11-15 WO PCT/EP2018/081444 patent/WO2019115142A1/en active Application Filing
- 2018-11-15 CN CN201880078648.7A patent/CN111433741A/zh active Pending
- 2018-11-15 IL IL274178A patent/IL274178B2/en unknown
- 2018-11-15 US US16/650,999 patent/US11106465B2/en active Active
- 2018-11-15 KR KR1020207018974A patent/KR102649933B1/ko active IP Right Grant
- 2018-11-15 JP JP2020531157A patent/JP7324754B2/ja active Active
- 2018-11-29 TW TW107142663A patent/TWI791694B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003167728A (ja) | 2001-11-28 | 2003-06-13 | Matsushita Electric Ind Co Ltd | Simd演算方法およびsimd演算装置 |
US20060259737A1 (en) | 2005-05-10 | 2006-11-16 | Telairity Semiconductor, Inc. | Vector processor with special purpose registers and high speed memory access |
JP2015532755A (ja) | 2012-09-28 | 2015-11-12 | インテル・コーポレーション | インターレーンベクトルリダクション命令の高速化 |
US20160124710A1 (en) | 2014-11-03 | 2016-05-05 | Arm Limited | Data processing apparatus and method using programmable significance data |
Also Published As
Publication number | Publication date |
---|---|
KR20200094771A (ko) | 2020-08-07 |
JP2021507348A (ja) | 2021-02-22 |
WO2019115142A1 (en) | 2019-06-20 |
CN111433741A (zh) | 2020-07-17 |
EP3499362B1 (en) | 2022-11-30 |
IL274178A (en) | 2020-06-30 |
TW201928656A (zh) | 2019-07-16 |
TWI791694B (zh) | 2023-02-11 |
IL274178B2 (en) | 2024-03-01 |
US20200319885A1 (en) | 2020-10-08 |
IL274178B1 (en) | 2023-11-01 |
US11106465B2 (en) | 2021-08-31 |
EP3499362A1 (en) | 2019-06-19 |
KR102649933B1 (ko) | 2024-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116150564A (zh) | 用于片矩阵乘法和累加的系统、方法和装置 | |
WO2018051057A1 (en) | Vector multiply-add instruction | |
WO2011141726A2 (en) | Conditional compare instruction | |
CN107851013B (zh) | 数据处理装置和方法 | |
JP2019511056A (ja) | 複素数乗算命令 | |
WO2018109429A1 (en) | Replicate partition instruction | |
US11003447B2 (en) | Vector arithmetic and logical instructions performing operations on different first and second data element widths from corresponding first and second vector registers | |
WO2021250392A1 (en) | Mixed-element-size instruction | |
JP7324754B2 (ja) | ベクトル・キャリー付き加算命令 | |
KR102586259B1 (ko) | 레지스터 기반의 복소수 처리 | |
WO2018109428A1 (en) | Replicate elements instruction | |
CN110914801B (zh) | 在数据处理设备中的向量交叉 | |
WO2023148467A1 (en) | Technique for performing memory access operations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20211108 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20221209 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20221209 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230309 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230329 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230627 |
|
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: 20230706 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230731 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7324754 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |