JP6351682B2 - 装置および方法 - Google Patents
装置および方法 Download PDFInfo
- Publication number
- JP6351682B2 JP6351682B2 JP2016200107A JP2016200107A JP6351682B2 JP 6351682 B2 JP6351682 B2 JP 6351682B2 JP 2016200107 A JP2016200107 A JP 2016200107A JP 2016200107 A JP2016200107 A JP 2016200107A JP 6351682 B2 JP6351682 B2 JP 6351682B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- processor
- vector
- reduction
- unit
- 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 23
- 230000009467 reduction Effects 0.000 claims description 116
- 230000015654 memory Effects 0.000 description 66
- 238000007667 floating Methods 0.000 description 30
- 238000010586 diagram Methods 0.000 description 28
- 238000007792 addition Methods 0.000 description 23
- 238000012545 processing Methods 0.000 description 17
- 230000007246 mechanism Effects 0.000 description 8
- 238000013519 translation Methods 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 7
- 238000004891 communication Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000004044 response Effects 0.000 description 7
- 239000000872 buffer Substances 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
- 230000036961 partial effect Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification 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
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- 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
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3888—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
Description
float sum=0.0;
for(int i=0;i<100x1024;++i){
sum+=a[i];
}
movups(%[a],%[i],4),xmm0//load 16B
addps xmm0,[sum]
を含む。
DST[31:0]=SRC[31:0]+SRC[63:32]
DST[63:32]=SRC[95:64]
DST[95:64]=SRC[127:96]
DST[127:96]=0
DST[159:128]=SRC[159:128]+SRC[191:160]
DST[191:160]=SRC[223:192]
DST[223:192]=SRC[255:224]
DST[255:224]=0
DST[287:256]=SRC[287:256]+SRC[319:288]
DST[319:288]=SRC[351:320]
DST[351:320]=SRC[383:352]
DST[383:352]=0
DST[415:384]=SRC[415:384]+SRC[447:416]
DST[447:416]=SRC[479:448]
DST[479:448]=SRC[511:480]
DST[511:480]=0
倍精度バージョンVADDREDUCEPD SRC、DSTは、以下のように実行する。
DST[63:0]=SRC[63:0]+SRC[127:64]
DST[127:64]=0
DST[191:128]=SRC[191:128]+SRC[255:192]
DST[255:192]=0
DST[319:256]=SRC[319:256]+SRC][383:320]
DST[383:320]=0
DST[447:384]=SRC[447:384]+SRC[511:448]
DST[511:448]=0
インオーダおよびアウトオブオーダコアブロック図
図7Aは、本発明の複数の実施形態による、例示的なインオーダパイプライン、および例示的なレジスタリネーミング、アウトオブオーダ発行/実行パイプラインの双方を図示するブロック図である。図7Bは、本発明の複数の実施形態による、インオーダアーキテクチャコアの例示的な一実施形態、およびプロセッサに含まれる例示的なレジスタリネーミング、アウトオブオーダ発行/実行アーキテクチャコアの双方を図示するブロック図である。図7Aおよび7Bにおける実線で囲まれた複数のボックスは、インオーダパイプラインおよびインオーダコアを図示するが、複数の点線ボックスの任意選択の追加は、レジスタリネーミング、アウトオブオーダ発行/実行パイプライン、およびコアを図示する。インオーダ態様がアウトオブオーダ態様のサブセットであることを考慮して、アウトオブオーダ態様は、説明される。
図8A〜図8Bは、より具体的な例示的インオーダコアアーキテクチャのブロック図を図示し、そのコアは、チップにおいて、いくつかのロジックブロック(同一のタイプおよび/または異なるタイプの他の複数のコアを含む)のうちの1つであろう。複数のロジックブロックは、用途に応じて、いくつかの固定関数ロジック、メモリI/Oインターフェース、および他の必要なI/Oロジックを用いる高帯域幅の相互接続ネットワーク(例えば、リングネットワーク)を介して通信する。
図9は、プロセッサ900のブロック図であり、プロセッサ900は、本発明の複数の実施形態による2以上のコア、集積メモリコントローラ、集積グラフィックスを有し得る。図9の実線で囲まれた複数のボックスは、シングルコア902A、システムエージェント910、1または複数のバスコントローラーユニットのセット916を有するプロセッサ900を図示するが、複数の点線ボックスの任意選択の加算は、複数のコア902A―N、システムエージェントユニット910内の1または複数の集積メモリコントローラユニットのセット914、および特定用途用ロジック908を有する代替的なプロセッサ900を図示する。
図10〜13は、例示的な複数のコンピューターアーキテクチャのブロック図である。当技術分野で既知のラップトップ、デスクトップ、ハンドヘルド型PC、携帯情報端末、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、組込みプロセッサ、デジタル信号プロセッサ(DSP)、グラフィックスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、ポータブルメディアプレイヤ、ハンドヘルド型デバイス、および他の様々な電子デバイスのための他の複数のシステム設計および構成も好適である。一般的に、本明細書において開示されるプロセッサおよび/または他の実行ロジックを組み込むことが可能な多種多様なシステムまたは電子デバイスは、概ね好適である。
本実施形態の例を下記の各項目として示す。
[項目1]
複数のベクトルレジスタと、
前記複数のベクトルレジスタに結合された実行回路とを備え、
各ベクトルレジスタは、複数のレーンに分割され、各レーンは、同一の数の複数のデータ要素を格納し、
前記実行回路は、
ベクトルリダクション命令を受信し、ソースオペランドに格納された前記複数のデータ要素のアレイを、リダクション演算子を用いてデスティネーションオペランド内の結果に縮小させ、
前記ベクトルリダクション命令に応答して、前記リダクション演算子を各レーンにおける前記複数のデータ要素のうちの2つに適用し、
前記複数のデータ要素のうち少なくとも1つが各レーンに残存する場合に、1または複数の残存データ要素をシフトさせ、
前記ソースオペランドおよび前記デスティネーションオペランドのそれぞれは、前記複数のベクトルレジスタのうちの1つである、装置。
[項目2]
前記ベクトルリダクション命令に応答する前記実行回路は、各レーンにおける最上位の位置にゼロを挿入する、項目1に記載の装置。
[項目3]
前記リダクション演算子は、加算、減算、または乗算を含む、項目1または2に記載の装置。
[項目4]
前記実行回路は、各レーンにおける複数の最下位のデータ要素のうち2つに前記リダクション演算子を適用する、項目1から3のいずれか1項に記載の装置。
[項目5]
前記ベクトルリダクション命令に応答する前記実行回路は、各レーンにおいて前記1または複数の残存データ要素のそれぞれの位置を1つ右側にシフトさせる、項目1から4のいずれか1項に記載の装置。
[項目6]
前記実行回路は、前記ベクトルリダクション命令を用いないリダクションコードを、前記ベクトルリダクション命令を用いる翻訳済みリダクションコードに変換し、前記リダクションコードおよび前記翻訳済みリダクションコードは、前記複数のレーン全体で複数のデータ要素の前記アレイに適用される複数のリダクション演算の同一のシーケンスを指定し、同一の結果を生成する、項目1から5のいずれか1項に記載の装置。
[項目7]
前記複数のデータ要素のそれぞれは、倍精度浮動小数点数、単精度浮動小数点数、または半精度浮動小数点数である、項目1から6のいずれか1項に記載の装置。
[項目8]
ベクトルリダクション命令を受信し、ソースオペランドに格納された複数のデータ要素のアレイを、リダクション演算子を用いてデスティネーションオペランド内の結果に縮小させる段階と、
前記ベクトルリダクション命令に応答して、前記リダクション演算子を各レーンにおける前記複数のデータ要素のうち2つに適用する段階と、
前記複数のデータ要素のうち少なくとも1つが各レーンに残存する場合に、1または複数の残存データ要素をシフトさせる段階とを備え、
前記ソースオペランドおよび前記デスティネーションオペランドのそれぞれは、複数のベクトルレジスタのうちの1つであり、各ベクトルレジスタは、複数のレーンに分割され、各レーンは、同一の数の複数のデータ要素を格納する、方法。
[項目9]
前記ベクトルリダクション命令に応答して、各レーンにおける最上位の位置にゼロを挿入する段階を更に備える、項目8に記載の方法。
[項目10]
前記リダクション演算子は、加算、減算、または乗算を含む、項目8または9に記載の方法。
[項目11]
前記リダクション演算子を適用する段階は、各レーンにおける複数の最下位のデータ要素のうち2つに前記リダクション演算子を適用することを更に有する、項目8から10のいずれか1項に記載の方法。
[項目12]
複数の位置をシフトさせる段階は、各レーンにおいて前記1または複数の残存データ要素のそれぞれの位置を1つ右側にシフトさせる段階を更に有する、項目8から11のいずれか1項に記載の方法。
[項目13]
前記ベクトルリダクション命令を用いないリダクションコードを、前記ベクトルリダクション命令を用いる翻訳済みリダクションコードに変換する段階を更に備え、
前記リダクションコードおよび前記翻訳済みリダクションコードは、前記複数のレーン全体で複数のデータ要素の前記アレイに適用される複数のリダクション演算の同一のシーケンスを指定し、同一の結果を生成する、項目8から12のいずれか1項に記載の方法。
[項目14]
前記複数のデータ要素のそれぞれは、倍精度浮動小数点数、単精度浮動小数点数、または半精度浮動小数点数である、項目8から13のいずれか1項に記載の方法。
[項目15]
メモリと、
前記メモリに結合されたプロセッサとを備え、
前記プロセッサは、
複数のベクトルレジスタと、
前記複数のベクトルレジスタに結合された実行回路とを有し、
各ベクトルレジスタは、複数のレーンに分割され、各レーンは、同一の数の複数のデータ要素を格納し、
前記実行回路は、
ベクトルリダクション命令を受信し、ソースオペランドに格納された前記複数のデータ要素のアレイを、リダクション演算子を用いてデスティネーションオペランド内の結果に縮小し、
前記ベクトルリダクション命令に応答して、前記リダクション演算子を各レーンにおける前記複数のデータ要素のうち2つに適用し、
前記複数のデータ要素のうち少なくとも1つが各レーンに残存する場合に、1または複数の残存データ要素をシフトさせ、
前記ソースオペランドおよび前記デスティネーションオペランドのそれぞれは、前記複数のベクトルレジスタのうちの1つである、システム。
[項目16]
前記ベクトルリダクション命令に応答する前記実行回路は、各レーンにおける最上位の位置にゼロを挿入する、項目15に記載のシステム。
[項目17]
前記リダクション演算子は、加算、減算、または乗算を含む、項目15または16に記載のシステム。
[項目18]
前記実行回路は、各レーンにおける複数の最下位のデータ要素のうち2つに前記リダクション演算子を適用する、項目15から17のいずれか1項に記載のシステム。
[項目19]
前記ベクトルリダクション命令に応答する前記実行回路は、各レーンにおいて前記1または複数の残存データ要素のそれぞれの位置を1つ右側にシフトさせる、項目15から18のいずれか1項に記載のシステム。
[項目20]
前記実行回路は、前記ベクトルリダクション命令を用いないリダクションコードを、前記ベクトルリダクション命令を用いる翻訳済みリダクションコードに変換し、
前記リダクションコードおよび前記翻訳済みリダクションコードは、前記複数のレーン全体で複数のデータ要素の前記アレイに適用される複数のリダクション演算の同一のシーケンスを指定し、同一の結果を生成する、項目15から19のいずれか1項に記載のシステム。
Claims (14)
- ソースレジスタオペランドおよびデスティネーションレジスタオペランドのためのフィールドを有する命令をデコードするデコーダ回路と、
前記デコーダ回路に結合された実行回路と、を備え、
前記実行回路は、前記デコードされた命令を実行することによって、
前記ソースレジスタオペランドの各レーンにおける2つの連続したデータ要素に対してリダクション演算を実行し、
前記デスティネーションレジスタオペランドの対応するレーンにおける1つのデータ要素の位置に前記リダクション演算の結果を格納し、
前記リダクション演算が実行されていない前記ソースレジスタオペランドの1または複数のデータ要素を、1つの位置の分だけシフトさせ、前記シフトされたデータ要素を前記デスティネーションレジスタオペランドの対応する位置に格納する、
装置。 - 前記リダクション演算は、算術演算である、
請求項1に記載の装置。 - 前記ソースレジスタオペランドの前記データ要素の精度は、前記命令のオペコードにより示され、前記精度は、単精度、倍精度、および半精度から選択される、
請求項1または2に記載の装置。 - 前記リダクション演算は、前記命令のオペコードによって示される、
請求項1から3のいずれか1項に記載の装置。 - 前記ソースレジスタオペランドおよび前記デスティネーションレジスタオペランドは、各々、128ビット、256ビット、および512ビットから選択されたサイズである、
請求項1から4のいずれか1項に記載の装置。 - 各レーンの前記2つの連続したデータ要素は、各レーンにおける、最下位の位置のデータ要素と、最下位の位置のデータ要素に隣接するデータ要素である、
請求項1から5のいずれか1項に記載の装置。 - 前記ソースレジスタオペランドの前記データ要素は、単精度である、
請求項1から6のいずれか1項に記載の装置。 - 前記ソースレジスタオペランドの前記データ要素は、倍精度である、
請求項1から6のいずれか1項に記載の装置。 - 前記シフトは、レーン境界を交差しない、
請求項1から8のいずれか1項に記載の装置。 - ソースレジスタオペランドおよびデスティネーションレジスタオペランドのためのフィールドを有する命令をデコードする段階と、
前記デコードされた命令を実行する段階であって、前記命令を実行することにより、前記ソースレジスタオペランドの各レーンにおける2つの連続したデータ要素に対してリダクション演算を実行し、前記デスティネーションレジスタオペランドの対応するレーンにおける1つのデータ要素の位置に前記リダクション演算の結果を格納し、前記リダクション演算が実行されていない前記ソースレジスタオペランドの1または複数のデータ要素を、1つの位置の分だけシフトさせ、前記シフトされたデータ要素を前記デスティネーションレジスタオペランドの対応する位置に格納する、前記実行する段階と、を備える、
方法。 - 前記リダクション演算は、算術演算である、
請求項10に記載の方法。 - 前記ソースレジスタオペランドの前記データ要素の精度は、前記命令のオペコードにより示され、前記精度は、単精度、倍精度、および半精度から選択される、
請求項10または11に記載の方法。 - 前記ソースレジスタオペランドおよび前記デスティネーションレジスタオペランドは、各々、128ビット、256ビット、および512ビットから選択されたサイズである、
請求項10から12のいずれか1項に記載の方法。 - 各レーンの前記2つの連続したデータ要素は、各レーンにおける、最下位の位置のデータ要素と、最下位の位置のデータ要素に隣接するデータ要素である、
請求項10から13のいずれか1項に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/630,154 | 2012-09-28 | ||
US13/630,154 US9588766B2 (en) | 2012-09-28 | 2012-09-28 | Accelerated interlane vector reduction instructions |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015529799A Division JP6025986B2 (ja) | 2012-09-28 | 2013-06-10 | 装置、方法、およびシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2017076395A JP2017076395A (ja) | 2017-04-20 |
JP6351682B2 true JP6351682B2 (ja) | 2018-07-04 |
Family
ID=50386388
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015529799A Active JP6025986B2 (ja) | 2012-09-28 | 2013-06-10 | 装置、方法、およびシステム |
JP2016200107A Active JP6351682B2 (ja) | 2012-09-28 | 2016-10-11 | 装置および方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015529799A Active JP6025986B2 (ja) | 2012-09-28 | 2013-06-10 | 装置、方法、およびシステム |
Country Status (7)
Country | Link |
---|---|
US (2) | US9588766B2 (ja) |
JP (2) | JP6025986B2 (ja) |
KR (1) | KR101703743B1 (ja) |
CN (1) | CN104603766B (ja) |
DE (1) | DE112013003743T5 (ja) |
GB (1) | GB2520644B (ja) |
WO (1) | WO2014051720A1 (ja) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9588766B2 (en) | 2012-09-28 | 2017-03-07 | Intel Corporation | Accelerated interlane vector reduction instructions |
US9557993B2 (en) * | 2012-10-23 | 2017-01-31 | Analog Devices Global | Processor architecture and method for simplifying programming single instruction, multiple data within a register |
US10318308B2 (en) * | 2012-10-31 | 2019-06-11 | Mobileye Vision Technologies Ltd. | Arithmetic logic unit |
US9419792B2 (en) | 2012-12-28 | 2016-08-16 | Intel Corporation | Instruction for accelerating SNOW 3G wireless security algorithm |
US9490971B2 (en) * | 2012-12-28 | 2016-11-08 | Intel Corporation | Instruction for fast ZUC algorithm processing |
US9477467B2 (en) * | 2013-03-30 | 2016-10-25 | Intel Corporation | Processors, methods, and systems to implement partial register accesses with masked full register accesses |
CN103995688B (zh) * | 2014-05-30 | 2016-10-12 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 一种基于标签的无序矢量归约电路 |
US9619214B2 (en) * | 2014-08-13 | 2017-04-11 | International Business Machines Corporation | Compiler optimizations for vector instructions |
US10169014B2 (en) | 2014-12-19 | 2019-01-01 | International Business Machines Corporation | Compiler method for generating instructions for vector operations in a multi-endian instruction set |
US9851970B2 (en) * | 2014-12-23 | 2017-12-26 | Intel Corporation | Method and apparatus for performing reduction operations on a set of vector elements |
US10459731B2 (en) * | 2015-07-20 | 2019-10-29 | Qualcomm Incorporated | Sliding window operation |
US9880821B2 (en) * | 2015-08-17 | 2018-01-30 | International Business Machines Corporation | Compiler optimizations for vector operations that are reformatting-resistant |
US10691453B2 (en) * | 2015-11-13 | 2020-06-23 | International Business Machines Corporation | Vector load with instruction-specified byte count less than a vector size for big and little endian processing |
US10691456B2 (en) | 2015-11-13 | 2020-06-23 | International Business Machines Corporation | Vector store instruction having instruction-specified byte count to be stored supporting big and little endian processing |
US9830150B2 (en) * | 2015-12-04 | 2017-11-28 | Google Llc | Multi-functional execution lane for image processor |
US20170168819A1 (en) * | 2015-12-15 | 2017-06-15 | Intel Corporation | Instruction and logic for partial reduction operations |
US20170177352A1 (en) * | 2015-12-18 | 2017-06-22 | Intel Corporation | Instructions and Logic for Lane-Based Strided Store Operations |
US10268479B2 (en) * | 2016-12-30 | 2019-04-23 | Intel Corporation | Systems, apparatuses, and methods for broadcast compare addition |
US10846087B2 (en) | 2016-12-30 | 2020-11-24 | Intel Corporation | Systems, apparatuses, and methods for broadcast arithmetic operations |
US10579338B2 (en) * | 2017-01-30 | 2020-03-03 | Arm Limited | Apparatus and method for processing input operand values |
GB2560159B (en) * | 2017-02-23 | 2019-12-25 | Advanced Risc Mach Ltd | Widening arithmetic in a data processing apparatus |
US10261786B2 (en) * | 2017-03-09 | 2019-04-16 | Google Llc | Vector processing unit |
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 |
EP3499362B1 (en) * | 2017-12-13 | 2022-11-30 | ARM Limited | Vector add-with-carry instruction |
US10409601B2 (en) * | 2017-12-29 | 2019-09-10 | Intel Corporation | Apparatus and method for loop flattening and reduction in a single instruction multiple data (SIMD) pipeline |
US11132228B2 (en) | 2018-03-21 | 2021-09-28 | International Business Machines Corporation | SMT processor to create a virtual vector register file for a borrower thread from a number of donated vector register files |
CN111338694B (zh) * | 2018-12-19 | 2022-05-31 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
US11216281B2 (en) * | 2019-05-14 | 2022-01-04 | International Business Machines Corporation | Facilitating data processing using SIMD reduction operations across SIMD lanes |
US11061741B2 (en) * | 2019-07-16 | 2021-07-13 | Nvidia Corporation | Techniques for efficiently performing data reductions in parallel processing units |
FR3100907B1 (fr) * | 2019-09-16 | 2022-12-09 | St Microelectronics Grenoble 2 | Test de programme |
US20240004647A1 (en) * | 2022-07-01 | 2024-01-04 | Andes Technology Corporation | Vector processor with vector and element reduction method |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3940542B2 (ja) * | 2000-03-13 | 2007-07-04 | 株式会社ルネサステクノロジ | データプロセッサ及びデータ処理システム |
US20030167460A1 (en) * | 2002-02-26 | 2003-09-04 | Desai Vipul Anil | Processor instruction set simulation power estimation method |
US20040193838A1 (en) | 2003-03-31 | 2004-09-30 | Patrick Devaney | Vector instructions composed from scalar instructions |
GB2411974C (en) * | 2003-12-09 | 2009-09-23 | Advanced Risc Mach Ltd | Data shift operations |
US7873812B1 (en) | 2004-04-05 | 2011-01-18 | Tibet MIMAR | Method and system for efficient matrix multiplication in a SIMD processor architecture |
US8074051B2 (en) * | 2004-04-07 | 2011-12-06 | Aspen Acquisition Corporation | Multithreaded processor with multiple concurrent pipelines per thread |
US7529918B2 (en) * | 2006-07-21 | 2009-05-05 | Broadcom Corporation | System and method for efficiently performing bit-field extraction and bit-field combination operations in a processor |
US7676647B2 (en) | 2006-08-18 | 2010-03-09 | Qualcomm Incorporated | System and method of processing data using scalar/vector instructions |
CN101163240A (zh) | 2006-10-13 | 2008-04-16 | 国际商业机器公司 | 一种滤波装置及其方法 |
US7765384B2 (en) | 2007-04-18 | 2010-07-27 | International Business Machines Corporation | Universal register rename mechanism for targets of different instruction types in a microprocessor |
US8793472B2 (en) * | 2008-08-15 | 2014-07-29 | Apple Inc. | Vector index instruction for generating a result vector with incremental values based on a start value and an increment value |
US9600281B2 (en) * | 2010-07-12 | 2017-03-21 | International Business Machines Corporation | Matrix multiplication operations using pair-wise load and splat operations |
US9588766B2 (en) * | 2012-09-28 | 2017-03-07 | Intel Corporation | Accelerated interlane vector reduction instructions |
-
2012
- 2012-09-28 US US13/630,154 patent/US9588766B2/en active Active
-
2013
- 2013-06-10 CN CN201380045404.6A patent/CN104603766B/zh not_active Expired - Fee Related
- 2013-06-10 DE DE112013003743.2T patent/DE112013003743T5/de not_active Withdrawn
- 2013-06-10 GB GB1500477.3A patent/GB2520644B/en active Active
- 2013-06-10 WO PCT/US2013/045014 patent/WO2014051720A1/en active Application Filing
- 2013-06-10 KR KR1020157005036A patent/KR101703743B1/ko active IP Right Grant
- 2013-06-10 JP JP2015529799A patent/JP6025986B2/ja active Active
-
2016
- 2016-10-11 JP JP2016200107A patent/JP6351682B2/ja active Active
-
2017
- 2017-03-07 US US15/452,479 patent/US10209989B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20170242699A1 (en) | 2017-08-24 |
JP2015532755A (ja) | 2015-11-12 |
KR20150038408A (ko) | 2015-04-08 |
CN104603766B (zh) | 2017-06-30 |
JP2017076395A (ja) | 2017-04-20 |
US9588766B2 (en) | 2017-03-07 |
CN104603766A (zh) | 2015-05-06 |
GB2520644B (en) | 2020-07-01 |
GB2520644A (en) | 2015-05-27 |
KR101703743B1 (ko) | 2017-02-07 |
JP6025986B2 (ja) | 2016-11-16 |
DE112013003743T5 (de) | 2015-05-21 |
WO2014051720A1 (en) | 2014-04-03 |
US10209989B2 (en) | 2019-02-19 |
GB201500477D0 (en) | 2015-02-25 |
US20140095842A1 (en) | 2014-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6351682B2 (ja) | 装置および方法 | |
US10503505B2 (en) | Read and write masks update instruction for vectorization of recursive computations over independent data | |
JP6456867B2 (ja) | 密結合ヘテロジニアスコンピューティングのためのハードウェアプロセッサ及び方法 | |
JP6340097B2 (ja) | リードマスク及びライトマスクにより制御されるベクトル移動命令 | |
CN107918546B (zh) | 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统 | |
CN107077321B (zh) | 用于执行融合的单个周期递增-比较-跳转的指令和逻辑 | |
JP6373425B2 (ja) | 複数のビットを左にシフトし、複数の1を複数の下位ビットにプルインするための命令 | |
CN107667345B (zh) | 打包数据对齐加计算指令、处理器、方法和系统 | |
KR101966713B1 (ko) | 마스크 레지스터에서의 비트들을 반전 및 치환하기 위한 장치 및 방법 | |
JP2017509064A (ja) | マスクド結果要素に伝搬する対応アンマスクド結果要素にソース要素を記憶するプロセッサ、方法、システム、及び命令 | |
CN108351780B (zh) | 邻接数据元素成对交换处理器、方法、系统和指令 | |
JP5798650B2 (ja) | 短整数の乗算の数を減らすためのシステム、装置、および方法 | |
JP5753603B2 (ja) | データ要素内のビットをゼロ化するためのシステム、装置、および方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170209 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20171226 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180116 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180412 |
|
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: 20180508 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180605 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6351682 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 |