JP6699845B2 - 方法及びプロセッサ - Google Patents
方法及びプロセッサ Download PDFInfo
- Publication number
- JP6699845B2 JP6699845B2 JP2017527586A JP2017527586A JP6699845B2 JP 6699845 B2 JP6699845 B2 JP 6699845B2 JP 2017527586 A JP2017527586 A JP 2017527586A JP 2017527586 A JP2017527586 A JP 2017527586A JP 6699845 B2 JP6699845 B2 JP 6699845B2
- Authority
- JP
- Japan
- Prior art keywords
- index
- register
- processor
- vector register
- child
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 31
- 239000013598 vector Substances 0.000 claims description 210
- 230000009467 reduction Effects 0.000 claims description 76
- 238000009825 accumulation Methods 0.000 claims description 9
- 230000008602 contraction Effects 0.000 claims 2
- 230000015654 memory Effects 0.000 description 132
- 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 72
- 238000006073 displacement reaction Methods 0.000 description 40
- 238000010586 diagram Methods 0.000 description 36
- 238000007667 floating Methods 0.000 description 17
- 238000006243 chemical reaction Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 238000001514 detection method Methods 0.000 description 9
- 238000013459 approach Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 7
- 239000000872 buffer Substances 0.000 description 6
- 230000002123 temporal effect Effects 0.000 description 6
- 238000007792 addition Methods 0.000 description 5
- 230000003190 augmentative effect Effects 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 230000000873 masking effect Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000003416 augmentation Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/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/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/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/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- 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/30101—Special purpose 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/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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
-
- 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/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- 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, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
Description
命令セットは1つ又は複数の命令フォーマットを含む。所与の命令フォーマットは、とりわけ、実行される演算(オペコード)及びその演算が実行される対象のオペランドを指定する様々なフィールド(ビット数、ビットの位置)を定義する。幾つかの命令フォーマットは、命令テンプレート(又はサブフォーマット)の定義で更に分割される。例えば、所与の命令フォーマットの命令テンプレートは、命令フォーマットのフィールドの様々なサブセットを有するように定義されることができ(含まれているフィールドは、通常同じ順序であるが、少なくとも幾つかは、含まれているフィールドが少ないために様々なビット位置を有する)且つ/又は別様に解釈される所与のフィールドを有するように定義されることができる。従って、ISAの各命令は、所与の命令フォーマットを使用して(及び、定義される場合、その命令フォーマットの命令テンプレートのうちの所与の1つで)表現され、演算及びオペランドを指定するフィールドを含む。例えば、例示的なADD命令は、特定のオペコードと、そのオペコードを指定するオペコードフィールド及びオペランド(ソース1/デスティネーション及びソース2)を選択するオペランドフィールドを含む命令フォーマットとを有し、そして命令ストリームにおけるこのADD命令の出現は、特定のオペランドを選択するオペランドフィールドに特定の内容を有するであろう。アドバンストベクトル拡張(AVX、Advanced Vector Extensions)(AVX1及びAVX2)と呼ばれ、ベクトル拡張(VEX、Vector Extensions)符号化スキームを使用する1組のSIMD拡張が、存在し、リリースされ、且つ/又は公開されている(例えば、2011年10月発行のインテル(登録商標)64及びIA−32アーキテクチャソフトウェア開発者マニュアル及び2011年6月発行のインテル(登録商標)アドバンストベクトル拡張プログラミングリファレンスを参照)。
本明細書で説明される命令の実施形態は様々なフォーマットで具体化されることができる。更に、例示的なシステム、アーキテクチャ、及びパイプラインが以下に詳述される。命令の実施形態は、そのようなシステム、アーキテクチャ、及びパイプライン上で実行されることができるが、詳述されるものに限定されるものではない。
ベクトルフレンドリー命令フォーマットは、ベクトル命令に適する命令フォーマットである(例えば、ベクトル演算に特化したフィールドが存在する)。ベクトル及びスカラー演算の両方がベクトルフレンドリー命令フォーマットによってサポートされる実施形態が説明されているが、代替的な実施形態は、ベクトルフレンドリー命令フォーマットでのベクトル演算のみを使用する。
クラスAの非メモリアクセス105命令テンプレートの場合、アルファフィールド152は、RSフィールド152Aとして解釈され、その内容は、様々な増補演算タイプのうちのどれが実行されるべきかを識別する(例えば、丸め152A.1及びデータ変換152A.2は、それぞれ、非メモリアクセス、丸め型演算110及び非メモリアクセス、データ変換型演算115命令テンプレートに対して指定される)。一方、ベータフィールド154は、指定された型の演算のどれが実行されるべきかを識別する。非メモリアクセス105命令テンプレートにおいて、スケールフィールド160、変位フィールド162A、及び変位スケールフィールド162Bは存在しない。
非メモリアクセス、全丸め制御型演算110の命令テンプレートにおいて、ベータフィールド154は、丸め制御フィールド154Aとして解釈され、その内容は静的丸めを提供する。記載されている本発明の実施形態では、丸め制御フィールド154Aは、全浮動小数点例外抑制(SAE、suppress all floating point exceptions)フィールド156及び丸め演算制御フィールド158を含むが、代替的な実施形態は、これらのコンセプトの両方をサポートすることができる、又はこれらのコンセプトの両方を同じフィールドに符号化することができる、或いは、これらのコンセプト/フィールドのうちの一方又は他方のみを有することができる(例えば、丸め演算制御フィールド158のみを有することができる)。
非メモリアクセスデータ変換型演算115命令テンプレートにおいて、ベータフィールド154は、データ変換フィールド154Bとして解釈され、その内容は、多数のデータ変換(例えば、データ変換無し、スウィズル(swizzle)、ブロードキャスト)のうちのどれが実行されるべきかを識別する。
テンポラルデータは、キャッシングから恩恵を得るのに十分に速やかに再利用される可能性が高いデータである。しかしながら、これはヒントであり、様々なプロセッサは、そのヒントを完全に無視することを含めて、それを様々な方法で実装することができる。
非テンポラルデータは、第1のレベルのキャッシュにおいて、キャッシングから恩恵を得るのに十分に速やかに再利用される可能性が低いデータであり、エビクションに優先度を与えるべきである。しかしながら、これはヒントであり、様々なプロセッサは、そのヒントを完全に無視することを含めて、それを様々な方法で実装することができる。
クラスBの命令テンプレートの場合、アルファフィールド152は、書き込みマスク制御(Z)フィールド152Cとして解釈され、その内容は、書き込みマスクフィールド170により制御される書き込みマスキングがマージであるべきか又はゼロ化であるべきかを識別する。
図2Aは、本発明の実施形態による例示的な特定ベクトルフレンドリー命令フォーマットを示すブロック図である。図2Aは、フィールドの位置、サイズ、解釈、及び順序、並びにそれらのフィールドのうちの幾つかの値を指定するという意味で具体的である特定ベクトルフレンドリー命令フォーマット200を示す。特定ベクトルフレンドリー命令フォーマット200は、x86命令セットを拡張するのに使用されることができ、従って、フィールドの幾つかは、既存のx86命令セット及びそれらの拡張(例えば、AVX)に使用されるものと同様又は同じである。このフォーマットは、拡張を有する既存のx86命令セットのプレフィックス符号化フィールド、リアルオペコードバイトフィールド、MOD R/Mフィールド、SIBフィールド、変位フィールド、及び即値フィールドとの整合性を維持する。図2Aのフィールドが対応付ける図1Aまたは1Bのフィールドが図示されている。
図2Bは、本発明の1つの実施形態によるフルオペコードフィールド174を構成する特定ベクトルフレンドリー命令フォーマット200のフィールドを示すブロック図である。具体的に、フルオペコードフィールド174は、フォーマットフィールド140、基本演算フィールド142、及びデータ要素幅(W)フィールド164を含む。基本演算フィールド142は、プレフィックス符号化フィールド225、オペコードマップフィールド215、及びリアルオペコードフィールド230を含む。
図2Cは、本発明の1つの実施形態によるレジスタインデックスフィールド144を構成する特定ベクトルフレンドリー命令フォーマット200のフィールドを示すブロック図である。具体的には、レジスタインデックスフィールド144は、REXフィールド205、REX'フィールド210、MODR/M.regフィールド244、MODR/M.r/mフィールド246、VVVVフィールド220、xxxフィールド254、及びbbbフィールド256を含む。
図2Dは、本発明の1つの実施形態による増補演算フィールド150を構成する特定ベクトルフレンドリー命令フォーマット200のフィールドを示すブロック図である。クラス(U)フィールド168は、0を含む場合、EVEX.U0(クラスA 168A)を表し、1を含む場合、EVEX.U1(クラスB 168B)を表す。U=0であり、MODフィールド242が11を含む(非メモリアクセス演算を表す)場合、アルファフィールド152(EVEXバイト3、ビット[7]−EH)はrsフィールド152Aとして解釈される。rsフィールド152Aが1を含む場合(丸め152A.1)、ベータフィールド154(EVEXバイト3、ビット[6:4]−SSS)は、丸め制御フィールド154Aとして解釈される。丸め制御フィールド154Aは、1ビットのSAEフィールド156及び2ビットの丸め演算フィールド158を含む。rsフィールド152Aが0を含む場合(データ変換152A.2)、ベータフィールド154(EVEXバイト3、ビット[6:4]−SSS)は、3ビットのデータ変換フィールド154Bとして解釈される。U=0であり、MODフィールド242が00、01、又は10を含む(メモリアクセス演算を表す)場合、アルファフィールド152(EVEXバイト3、ビット[7]−EH)は、エビクションヒント(EH)フィールド152Bとして解釈され、ベータフィールド154(EVEXバイト3、ビット[6:4]−SSS)は、3ビットのデータ操作フィールド154Cとして解釈される。
図3は、本発明の1つの実施形態によるレジスタアーキテクチャ300のブロック図である。図示されている実施形態には、512ビット幅の32個のベクトルレジスタ310が存在し、これらのレジスタは、zmm0〜zmm31として参照される。下位16個のzmmレジスタの下位256ビットは、レジスタymm0〜16上に重ね合わされる。下位16個のzmmレジスタの下位128ビット(ymmレジスタの下位128ビット)は、レジスタxmm0〜15上に重ね合わされる。特定ベクトルフレンドリー命令フォーマット200は、以下の表に示されるように、重ね合わされたこれらのレジスタファイルに対して演算する。
プロセッサコアは、種々の目的で、種々のプロセッサにおいて、且つ種々の方法で実装されることができる。例えば、そのようなコアの実装は、1)汎用コンピューティング向けの汎用インオーダコア、2)汎用コンピューティング向けの高性能汎用アウトオブオーダコア、3)主としてグラフィックス及び/又は科学(スループット)コンピューティング向けの専用コアを含むことができる。種々のプロセッサの実装は、1)汎用コンピューティング向けの1つもしくは複数の汎用インオーダコア及び/又は汎用コンピューティング向けの1つもしくは複数の汎用アウトオブオーダコアを含むCPU、並びに2)主としてグラフィックス及び/又は科学(スループット)向けの1つ又は複数の専用コアを含むコプロセッサを含むことができる。そのような種々のプロセッサは、1)CPUとは別個のチップ上のコプロセッサ、2)CPUと同じパッケージ内にある別個のダイ上のコプロセッサ、3)CPUと同じダイ上のコプロセッサ(この場合、そのようなコプロセッサは、統合グラフィックス論理及び/もしくは科学(スループット)論理などの専用論理又は専用コアと呼ばれることがある)、並びに4)説明したCPU(アプリケーションコア又はアプリケーションプロセッサと呼ばれることがある)、上述のコプロセッサ、及び追加の機能を同じダイ上に含むことができるシステムオンチップ、を含むことができる種々のコンピュータシステムアーキテクチャをもたらす。例示的なコアアーキテクチャを次に説明し、その後、例示的なプロセッサ及びコンピュータアーキテクチャを説明する。
「スパース更新」は、ベクトル化が有益であろう重要なアルゴリズムのパターンである。ここで、読み出し−修正−書き込み演算は、間接的にアドレスされるメモリ位置に実行されることができる(例えば、A[B[i]]をロードし、それに何らかを追加し、その値を元の場所A[B[i]]に格納する)。このタイプの演算をベクトル化することは、収集−変更−分散演算を実行することを伴う。一例として、このような演算は、収集演算を介してiの16個の連続する値に対してA[B[i]]の形式の16個の間接ロードを実行し、単一命令複数データ(SIMD、single instruction multiple data)計算を実行し、値を元のメモリに分散することを伴うことができる。しかしながら、このベクトル化は、単一の収集/分散命令が各メモリ位置に1回だけアクセスするであろうことを仮定している。例えば、B[i]の2つの連続する値が同じであるならば、第2のものに対する読み出し−修正−書き込みは第1のものに依存する。そのため、これらをSIMD方法で同時に行うことは、これらの依存性に反し、誤った結果が生じる可能性がある。
Claims (23)
- 縮小されるべき複数のデータ要素値を格納する値ベクトルレジスタと、
前記値ベクトルレジスタ内のどの値が互いに関連しているかを示す複数のインデックス値を格納するインデックスベクトルレジスタと、
前記インデックスベクトルレジスタ内の前記複数のインデックス値によって示されるように互いに関連付けられる前記値ベクトルレジスタからのデータ要素値を結合させることによって、前記値ベクトルレジスタ内の前記データ要素値に対してリダクション演算を実行する単一命令複数データ縮小論理(SIMD縮小論理)と、
前記SIMD縮小論理によって生成される前記リダクション演算の結果を格納する累算ベクトルレジスタと、を備え、
前記リダクション演算を実行するために、前記SIMD縮小論理は、同じインデックス値を有するデータ要素値の複数群を決定し、且つ複数の結果を生成するために前記同じインデックス値を有するデータ要素を結合させ、前記複数の結果の各々は、前記同じインデックス値を共有する一群のデータ要素値の算術結合を有する、プロセッサ。 - 前記SIMD縮小論理は、前記累算ベクトルレジスタの特定のデータ要素位置内に各結果を格納する、請求項1に記載のプロセッサ。
- 前記SIMD縮小論理は、前記同じインデックス値を共有する要素値に対して複数の結合反復を実行することによって前記リダクション演算を実行し、前記複数の結合反復の各々は、最終反復において最終結果が得られるまで複数対のデータ要素値を結合する、請求項2に記載のプロセッサ。
- 前記累算ベクトルレジスタ内の各特定データ要素位置は、前記インデックスベクトルレジスタ内の前記同じインデックス値の他のものに対して最上位位置を有する関連するインデックス値の位置に対応する位置又は前記インデックスベクトルレジスタ内の前記同じインデックス値の他のものに対して最下位位置を有する関連するインデックス値の位置に対応する位置を有する、請求項2または3に記載のプロセッサ。
- 縮小されるべき複数のデータ要素値を格納する値ベクトルレジスタと、
前記値ベクトルレジスタ内のどの値が互いに関連しているかを示す複数のインデックス値を格納するインデックスベクトルレジスタと、
前記インデックスベクトルレジスタ内の前記複数のインデックス値によって示されるように互いに関連付けられる前記値ベクトルレジスタからのデータ要素値を結合させることによって、前記値ベクトルレジスタ内の前記データ要素値に対してリダクション演算を実行する単一命令複数データ縮小論理(SIMD縮小論理)と、
前記SIMD縮小論理によって生成される前記リダクション演算の結果を格納する累算ベクトルレジスタと、を備えるプロセッサであって、
前記値ベクトルレジスタ内の前記データ要素値の各々は、前記プロセッサ内のSIMDレーンに関連し、前記リダクション演算を実行することは、
前記レーンの各々にわたってコンフリクトを計算してコンフリクト結果を生成することと、前記コンフリクト結果をコンフリクトデスティネーションレジスタに格納することとを更に有する、プロセッサ。 - 前記リダクション演算を実行することは、
ビット列を生成するために、各レーンを、左及び右の子の縮小ツリー内のそれぞれの子と同じインデックス値でマークすることを更に有する、請求項5に記載のプロセッサ。 - 前記リダクション演算を実行することは、
前記ビット列を、前記左の子をアクティブとしてマークする又は前記右の子をアクティブとしてマークするマスクとして使用することを更に有する、請求項6に記載のプロセッサ。 - 前記リダクション演算は、各レーンについて、前記マスクが前記左の子をアクティブとしてマークする場合、右側に等しいインデックス値を有する左端レーンを示す又は前記マスクが前記右の子をアクティブとしてマークする場合、左側に等しいインデックス値を有する右端レーンを示す最上位1のビット‐インデックスを計算することを更に有する、請求項7に記載のプロセッサ。
- 前記リダクション演算は、前記マスクが前記左の子をアクティブとしてマークする場合、左の子と整列するように右の子を移動させ又は前記マスクが前記右の子をアクティブとしてマークする場合、右の子と整列するように左の子を移動させて、一時的な結果を生成することと、前記一時的な結果を一時的な位置に置くことと、を更に有する、請求項8に記載のプロセッサ。
- 元のデータを使用してリダクション演算を前記一時的な結果に適用し、左と右の子を結合して新しい結果を生成することと、前記マスクが前記左の子をアクティブとしてマークする場合、前記新しい結果を前記左の子に関連付けられる前記レーンに配置すること又は前記マスクが前記右の子をアクティブとしてマークする場合、前記新しい結果を前記右の子に関連付けられる前記レーンに配置することと、を更に備える、請求項9に記載のプロセッサ。
- 前記リダクション演算を実行することは、更に、
前記マスクが前記左の子をアクティブとしてマークする場合、前記マスクと前記コンフリクト結果とのビット単位のAND演算を実行することにより、1つ又は複数の右の子に関連する前記コンフリクトデスティネーションレジスタ内のビットをクリアすることと、将来の反復における考慮から前記右の子を除去することと、を有する、又は、前記マスクが前記右の子をアクティブとしてマークする場合、前記マスクと前記コンフリクト結果とのビット単位のAND演算を実行することにより、1つ又は複数の左の子に関連する前記コンフリクトデスティネーションレジスタ内のビットをクリアすることと、将来の反復における考慮から前記左の子を除去することと、を有する、請求項9または10に記載のプロセッサ。 - 前記SIMD縮小論理は、前記同じインデックス値を有するデータ要素値の複数群を決定し、且つ複数の結果を生成するために前記同じインデックス値を有する前記データ要素を加算することによって前記データ要素を結合させ、前記複数の結果の各々は前記同じインデックス値を共有する一群のデータ要素値の合計を有する、請求項1に記載のプロセッサ。
- 縮小されるべき複数のデータ要素値を値ベクトルレジスタに格納することと、
前記値ベクトルレジスタ内のどの値がインデックスベクトルレジスタにおいて互いに関連付けられているかを示す複数のインデックス値を格納することと、
前記インデックスベクトルレジスタ内の前記複数のインデックス値によって示されるように互いに関連付けられる前記値ベクトルレジスタからのデータ要素値を結合させることによって、前記値ベクトルレジスタ内の前記データ要素値に対してリダクション演算を実行することと、
前記リダクション演算の結果を累算ベクトルレジスタに格納することと、を備え、
前記リダクション演算を実行するために、同じインデックス値を有するデータ要素値の複数群を決定することと、複数の結果を生成するために前記同じインデックス値を有するデータ要素を結合することとを備え、前記複数の結果の各々は、前記同じインデックス値を共有する一群のデータ要素値の算術結合を有する、方法。 - 前記累算ベクトルレジスタの特定のデータ要素位置内に各結果を格納することを更に備える、請求項13に記載の方法。
- 前記同じインデックス値を共有する要素値に対して複数の結合反復を実行することによって前記リダクション演算を実行することを更に備え、前記複数の結合反復の各々は、最終反復において最終結果が得られるまで複数対のデータ要素値を結合する、請求項14に記載の方法。
- 前記累算ベクトルレジスタ内の各特定データ要素位置は、前記インデックスベクトルレジスタ内の前記同じインデックス値の他のものに対して最上位位置を有する関連するインデックス値の位置に対応する位置又は前記インデックスベクトルレジスタ内の前記同じインデックス値の他のものに対して最下位位置を有する関連するインデックス値の位置に対応する位置を有する、請求項14または15に記載の方法。
- 縮小されるべき複数のデータ要素値を値ベクトルレジスタに格納することと、
前記値ベクトルレジスタ内のどの値がインデックスベクトルレジスタにおいて互いに関連付けられているかを示す複数のインデックス値を格納することと、
前記インデックスベクトルレジスタ内の前記複数のインデックス値によって示されるように互いに関連付けられる前記値ベクトルレジスタからのデータ要素値を結合させることによって、前記値ベクトルレジスタ内の前記データ要素値に対してリダクション演算を実行することと、
前記リダクション演算の結果を累算ベクトルレジスタに格納することと、を備え、
前記値ベクトルレジスタ内の前記データ要素値の各々は、プロセッサ内のSIMDレーンに関連し、前記リダクション演算を実行することは、
前記レーンの各々にわたってコンフリクトを計算してコンフリクト結果を生成することと、前記コンフリクト結果をコンフリクトデスティネーションレジスタに格納することとを更に有する、方法。 - 前記リダクション演算を実行することは、
ビット列を生成するために、各レーンを、左及び右の子の縮小ツリー内のそれぞれの子と同じインデックス値でマークすることを更に有する、請求項17に記載の方法。 - 前記リダクション演算を実行することは、
前記ビット列を、前記左の子をアクティブとしてマークする又は前記右の子をアクティブとしてマークするマスクとして使用することを更に有する、請求項18に記載の方法。 - 前記リダクション演算は、各レーンについて、前記マスクが前記左の子をアクティブとしてマークする場合、右側に等しいインデックス値を有する左端レーンを示す又は前記マスクが前記右の子をアクティブとしてマークする場合、左側に等しいインデックス値を有する右端レーンを示す最上位1のビット‐インデックスを計算することを更に有する、請求項19に記載の方法。
- 前記リダクション演算は、前記マスクが前記左の子をアクティブとしてマークする場合、左の子と整列するように右の子を移動させ又は前記マスクが前記右の子をアクティブとしてマークする場合、右の子と整列するように左の子を移動させて、一時的な結果を生成すること、前記一時的な結果を一時的な位置に置くことと、を更に有する、請求項20に記載の方法。
- 元のデータを使用してリダクション演算を前記一時的な結果に適用し、左と右の子を結合して新しい結果を生成することと、前記マスクが前記左の子をアクティブとしてマークする場合、前記新しい結果を前記左の子に関連付けられる前記レーンに配置すること又は前記マスクが前記右の子をアクティブとしてマークする場合、前記新しい結果を前記右の子に関連付けられる前記レーンに配置することと、を更に備える、請求項21に記載の方法。
- 前記リダクション演算を実行することは、更に、
前記マスクが前記左の子をアクティブとしてマークする場合、前記マスクと前記コンフリクト結果とのビット単位のAND演算を実行することにより、1つ又は複数の右の子に関連する前記コンフリクトデスティネーションレジスタ内のビットをクリアすることと、将来の反復における考慮から前記右の子を除去することと、を有する、或いは、前記マスクが前記右の子をアクティブとしてマークする場合、前記マスクと前記コンフリクト結果とのビット単位のAND演算を実行することにより、1つ又は複数の左の子に関連する前記コンフリクトデスティネーションレジスタ内のビットをクリアすることと、将来の反復における考慮から前記左の子を除去することと、を有する、請求項21または22に記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/581,478 US9851970B2 (en) | 2014-12-23 | 2014-12-23 | Method and apparatus for performing reduction operations on a set of vector elements |
US14/581,478 | 2014-12-23 | ||
PCT/US2015/062074 WO2016105764A1 (en) | 2014-12-23 | 2015-11-23 | Method and apparatus for performing reduction operations on a set of vector elements |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2018500656A JP2018500656A (ja) | 2018-01-11 |
JP6699845B2 true JP6699845B2 (ja) | 2020-05-27 |
Family
ID=56129476
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017527586A Active JP6699845B2 (ja) | 2014-12-23 | 2015-11-23 | 方法及びプロセッサ |
Country Status (7)
Country | Link |
---|---|
US (1) | US9851970B2 (ja) |
EP (1) | EP3238044A4 (ja) |
JP (1) | JP6699845B2 (ja) |
KR (1) | KR102449616B1 (ja) |
CN (1) | CN107003843B (ja) |
TW (2) | TWI616817B (ja) |
WO (1) | WO2016105764A1 (ja) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10996959B2 (en) * | 2015-01-08 | 2021-05-04 | Technion Research And Development Foundation Ltd. | Hybrid processor |
US10162603B2 (en) * | 2016-09-10 | 2018-12-25 | Sap Se | Loading data for iterative evaluation through SIMD registers |
EP3336692B1 (en) * | 2016-12-13 | 2020-04-29 | Arm Ltd | Replicate partition instruction |
US10846087B2 (en) * | 2016-12-30 | 2020-11-24 | Intel Corporation | Systems, apparatuses, and methods for broadcast arithmetic operations |
US10268479B2 (en) * | 2016-12-30 | 2019-04-23 | Intel Corporation | Systems, apparatuses, and methods for broadcast compare addition |
US10275217B2 (en) * | 2017-03-14 | 2019-04-30 | Samsung Electronics Co., Ltd. | Memory load and arithmetic load unit (ALU) fusing |
US10108581B1 (en) | 2017-04-03 | 2018-10-23 | Google Llc | Vector reduction processor |
WO2019005165A1 (en) * | 2017-06-30 | 2019-01-03 | Intel Corporation | METHOD AND APPARATUS FOR VECTORIZING INDIRECT UPDATING BUCKLES |
CN109034382A (zh) * | 2017-10-30 | 2018-12-18 | 上海寒武纪信息科技有限公司 | 场景或物体的识别方法及相关产品 |
US11277455B2 (en) | 2018-06-07 | 2022-03-15 | Mellanox Technologies, Ltd. | Streaming system |
GB2574817B (en) * | 2018-06-18 | 2021-01-06 | Advanced Risc Mach Ltd | Data processing systems |
US11579883B2 (en) * | 2018-09-14 | 2023-02-14 | Intel Corporation | Systems and methods for performing horizontal tile operations |
US20200106828A1 (en) * | 2018-10-02 | 2020-04-02 | Mellanox Technologies, Ltd. | Parallel Computation Network Device |
US11625393B2 (en) * | 2019-02-19 | 2023-04-11 | Mellanox Technologies, Ltd. | High performance computing system |
EP3699770A1 (en) | 2019-02-25 | 2020-08-26 | Mellanox Technologies TLV Ltd. | Collective communication system and methods |
US11294670B2 (en) * | 2019-03-27 | 2022-04-05 | Intel Corporation | Method and apparatus for performing reduction operations on a plurality of associated data element values |
US11327862B2 (en) | 2019-05-20 | 2022-05-10 | Micron Technology, Inc. | Multi-lane solutions for addressing vector elements using vector index registers |
US11507374B2 (en) | 2019-05-20 | 2022-11-22 | Micron Technology, Inc. | True/false vector index registers and methods of populating thereof |
US11340904B2 (en) * | 2019-05-20 | 2022-05-24 | Micron Technology, Inc. | Vector index registers |
US11403256B2 (en) | 2019-05-20 | 2022-08-02 | Micron Technology, Inc. | Conditional operations in a vector processor having true and false vector index registers |
US11750699B2 (en) | 2020-01-15 | 2023-09-05 | Mellanox Technologies, Ltd. | Small message aggregation |
US11252027B2 (en) | 2020-01-23 | 2022-02-15 | Mellanox Technologies, Ltd. | Network element supporting flexible data reduction operations |
US11876885B2 (en) | 2020-07-02 | 2024-01-16 | Mellanox Technologies, Ltd. | Clock queue with arming and/or self-arming features |
US11556378B2 (en) | 2020-12-14 | 2023-01-17 | Mellanox Technologies, Ltd. | Offloading execution of a multi-task parameter-dependent operation to a network device |
CN115220789B (zh) * | 2022-06-24 | 2023-02-07 | 北京联盛德微电子有限责任公司 | 一种用于多寄存器的操作命令触发调度方法及单元 |
US20240004647A1 (en) * | 2022-07-01 | 2024-01-04 | Andes Technology Corporation | Vector processor with vector and element reduction method |
US11922237B1 (en) | 2022-09-12 | 2024-03-05 | Mellanox Technologies, Ltd. | Single-step collective operations |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5845112A (en) * | 1997-03-06 | 1998-12-01 | Samsung Electronics Co., Ltd. | Method for performing dead-zone quantization in a single processor instruction |
US7506135B1 (en) | 2002-06-03 | 2009-03-17 | Mimar Tibet | Histogram generation with vector operations in SIMD and VLIW processor by consolidating LUTs storing parallel update incremented count values for vector data elements |
GB2411974C (en) * | 2003-12-09 | 2009-09-23 | Advanced Risc Mach Ltd | Data shift operations |
GB2409068A (en) * | 2003-12-09 | 2005-06-15 | Advanced Risc Mach Ltd | Data element size control within parallel lanes of processing |
US7330964B2 (en) * | 2005-11-14 | 2008-02-12 | Texas Instruments Incorporated | Microprocessor with independent SIMD loop buffer |
US7991987B2 (en) * | 2007-05-10 | 2011-08-02 | Intel Corporation | Comparing text strings |
US8447962B2 (en) * | 2009-12-22 | 2013-05-21 | Intel Corporation | Gathering and scattering multiple data elements |
US20110302394A1 (en) | 2010-06-08 | 2011-12-08 | International Business Machines Corporation | System and method for processing regular expressions using simd and parallel streams |
US9552206B2 (en) * | 2010-11-18 | 2017-01-24 | Texas Instruments Incorporated | Integrated circuit with control node circuitry and processing circuitry |
CN105955704B (zh) * | 2011-11-30 | 2018-12-04 | 英特尔公司 | 用于提供向量横向比较功能的指令和逻辑 |
US9459865B2 (en) * | 2011-12-23 | 2016-10-04 | Intel Corporation | Systems, apparatuses, and methods for performing a butterfly horizontal and cross add or substract in response to a single instruction |
CN103999037B (zh) * | 2011-12-23 | 2020-03-06 | 英特尔公司 | 用于响应于单个指令来执行横向相加或相减的系统、装置和方法 |
WO2013095634A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for performing a horizontal partial sum in response to a single instruction |
US9268626B2 (en) * | 2011-12-23 | 2016-02-23 | Intel Corporation | Apparatus and method for vectorization with speculation support |
WO2013101198A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Simd variable shift and rotate using control manipulation |
WO2013147869A1 (en) | 2012-03-30 | 2013-10-03 | Intel Corporation | Apparatus and method for selecting elements of a vector coumputation |
US9378182B2 (en) * | 2012-09-28 | 2016-06-28 | Intel Corporation | Vector move instruction controlled by read and write masks |
US9588766B2 (en) | 2012-09-28 | 2017-03-07 | Intel Corporation | Accelerated interlane vector reduction instructions |
US9921832B2 (en) | 2012-12-28 | 2018-03-20 | Intel Corporation | Instruction to reduce elements in a vector register with strided access pattern |
US9372692B2 (en) | 2012-12-29 | 2016-06-21 | Intel Corporation | Methods, apparatus, instructions, and logic to provide permute controls with leading zero count functionality |
US9411592B2 (en) | 2012-12-29 | 2016-08-09 | Intel Corporation | Vector address conflict resolution with vector population count functionality |
US9411584B2 (en) | 2012-12-29 | 2016-08-09 | Intel Corporation | Methods, apparatus, instructions, and logic to provide vector address conflict detection functionality |
-
2014
- 2014-12-23 US US14/581,478 patent/US9851970B2/en active Active
-
2015
- 2015-11-23 WO PCT/US2015/062074 patent/WO2016105764A1/en active Application Filing
- 2015-11-23 CN CN201580063820.8A patent/CN107003843B/zh active Active
- 2015-11-23 JP JP2017527586A patent/JP6699845B2/ja active Active
- 2015-11-23 EP EP15873971.4A patent/EP3238044A4/en not_active Withdrawn
- 2015-11-23 TW TW105142765A patent/TWI616817B/zh not_active IP Right Cessation
- 2015-11-23 TW TW104138807A patent/TWI575454B/zh active
- 2015-11-23 KR KR1020177013503A patent/KR102449616B1/ko active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
US9851970B2 (en) | 2017-12-26 |
CN107003843A (zh) | 2017-08-01 |
US20160179537A1 (en) | 2016-06-23 |
JP2018500656A (ja) | 2018-01-11 |
CN107003843B (zh) | 2021-03-30 |
KR102449616B1 (ko) | 2022-10-04 |
EP3238044A4 (en) | 2018-08-22 |
TW201643705A (zh) | 2016-12-16 |
TW201737062A (zh) | 2017-10-16 |
KR20170097008A (ko) | 2017-08-25 |
EP3238044A1 (en) | 2017-11-01 |
WO2016105764A1 (en) | 2016-06-30 |
TWI616817B (zh) | 2018-03-01 |
TWI575454B (zh) | 2017-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6699845B2 (ja) | 方法及びプロセッサ | |
JP6456867B2 (ja) | 密結合ヘテロジニアスコンピューティングのためのハードウェアプロセッサ及び方法 | |
JP6711480B2 (ja) | ベクトルインデックスロードおよびストアのための方法および装置 | |
JP6466388B2 (ja) | 方法及び装置 | |
JP6849275B2 (ja) | インデックスおよび即値を用いてベクトル置換を実行するための方法および装置 | |
JP6673574B2 (ja) | ベクトルビットシャッフルを実行するための方法および装置 | |
JP6741006B2 (ja) | マスクレジスタとベクトルレジスタとの間で可変に拡張するための方法および装置 | |
JP6635438B2 (ja) | ベクトルビット反転およびクロスを実行するための方法および装置 | |
JP6745021B2 (ja) | 競合検出を実行するための方法および装置 | |
JP6778375B2 (ja) | ベクトルビット反転を実行するためのプロセッサ、方法、およびシステム | |
JP2017509064A (ja) | マスクド結果要素に伝搬する対応アンマスクド結果要素にソース要素を記憶するプロセッサ、方法、システム、及び命令 | |
JP2017534114A (ja) | Z順序曲線において次のポイントの座標を計算するためのベクトル命令 | |
JP2018502364A (ja) | 実行のためのデータ要素の読み込みにおいて空間的局所性を考慮する装置および方法 | |
JP2018506094A (ja) | 多倍長整数(big integer)の算術演算を実行するための方法および装置 | |
JP6807073B2 (ja) | 高速ベクトルによる動的なメモリ競合検出 | |
CN108292228B (zh) | 用于基于通道的步进收集的系统、设备和方法 | |
JP6835436B2 (ja) | マスクをマスク値のベクトルに拡張するための方法および装置 | |
JP2017539010A (ja) | ベクトル飽和ダブルワード/クワッドワードの加算を実行するための命令およびロジック | |
JP2017534982A (ja) | 4d座標から4dのz曲線インデックスを計算するための機械レベル命令 | |
JP2018500629A (ja) | 3d座標から3dのz曲線インデックスを計算するための機械レベル命令 | |
CN107077333B (zh) | 用于实行向量位聚集的方法和装置 | |
JP2018500665A (ja) | マスク値を圧縮するための方法および装置 | |
JP2018506762A (ja) | 結合した加算−加算命令のための装置および方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20181119 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20191016 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20191112 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200129 |
|
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: 20200331 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20200421 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6699845 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 |