JP2014526757A - ベクトル散乱演算機能及びベクトル収集演算機能を提供する命令及びロジック - Google Patents
ベクトル散乱演算機能及びベクトル収集演算機能を提供する命令及びロジック Download PDFInfo
- Publication number
- JP2014526757A JP2014526757A JP2014531780A JP2014531780A JP2014526757A JP 2014526757 A JP2014526757 A JP 2014526757A JP 2014531780 A JP2014531780 A JP 2014531780A JP 2014531780 A JP2014531780 A JP 2014531780A JP 2014526757 A JP2014526757 A JP 2014526757A
- Authority
- JP
- Japan
- Prior art keywords
- register
- value
- data
- memory
- processor
- 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.)
- Granted
Links
- 239000013598 vector Substances 0.000 title claims abstract description 122
- 238000004364 calculation method Methods 0.000 title claims abstract description 12
- 230000015654 memory Effects 0.000 claims abstract description 167
- 230000004044 response Effects 0.000 claims abstract description 12
- 238000012545 processing Methods 0.000 claims description 95
- 238000000034 method Methods 0.000 claims description 66
- 230000003362 replicative effect Effects 0.000 claims 2
- 230000006870 function Effects 0.000 abstract description 70
- 230000008569 process Effects 0.000 description 47
- 238000010586 diagram Methods 0.000 description 41
- 238000007667 floating Methods 0.000 description 31
- 238000003860 storage Methods 0.000 description 31
- 238000005516 engineering process Methods 0.000 description 15
- 238000004519 manufacturing process Methods 0.000 description 12
- 238000013461 design Methods 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 10
- 238000004422 calculation algorithm Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 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 6
- 239000000872 buffer Substances 0.000 description 6
- 239000003795 chemical substances by application Substances 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 238000013500 data storage Methods 0.000 description 5
- 230000001419 dependent effect Effects 0.000 description 5
- 238000006073 displacement reaction Methods 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 238000007792 addition Methods 0.000 description 4
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 230000010076 replication Effects 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000011161 development 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
- 238000003491 array Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 230000003993 interaction Effects 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
- 238000005457 optimization Methods 0.000 description 2
- 239000000758 substrate Substances 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
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000009977 dual effect Effects 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
- 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
- 238000009877 rendering Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012546 transfer 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/8053—Vector processors
- G06F15/8061—Details on data memory access
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/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/30098—Register arrangements
- G06F9/30105—Register structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3875—Pipelining a single stage, e.g. superpipelining
-
- 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/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]
- G06F9/38873—Iterative single instructions for multiple data lanes [SIMD]
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)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
Abstract
【選択図】図1A
Description
[プレフィックス][rex]エスケープ[エスケープ2]演算コード modrm(等)
evexl RXBmmmmm WvvvLpp evex4 演算コード modrm[sib][disp][imm]
Claims (30)
- 第1の複数のデータフィールドを含み、該第1のレジスタ内の前記第1の複数のデータフィールドのそれぞれは、メモリ内のデータ要素のオフセットに対応し、該第1のレジスタ内の前記第1の複数のデータフィールドのそれぞれについて、第1の値は、前記対応するデータ要素が前記メモリからまだ収集されていないことを示し、第2の値は、前記対応するデータ要素が収集される必要がないか、又は前記メモリから既に収集されていることを示す、第1のレジスタと、
収集演算を指定するとともに第2の演算を指定する第1の命令をデコードするデコードステージと、
デコードされた前記第1の命令に応答して、
前記第1のレジスタ内の前記第1の複数のデータフィールドのそれぞれの値を読み出し、
前記第1の値を有する前記第1のレジスタ内の前記第1の複数のデータフィールドのそれぞれについて、前記対応するデータ要素を前記メモリから収集し、一部分が収集された前記データ要素をストアする第2の複数のデータフィールドを有する第2のレジスタ内に前記対応するデータ要素をストアし、
前記第1のレジスタ内の対応するデータフィールドの値を前記第1の値から前記第2の値に変更し、
前記第1のレジスタ内の前記第1の複数のデータフィールドのそれぞれが前記第2の値を有するとき、前記第2の複数のデータフィールドにストアされた前記データ要素のそれぞれを用いて前記第2の演算を実行して、対応する結果のデータ要素を生成する、1つ又は複数の実行ユニットと、
を備える、プロセッサ。 - 前記第1の値は1である、請求項1に記載のプロセッサ。
- 前記第2の値は0である、請求項1または2に記載のプロセッサ。
- 前記1つ又は複数の実行ユニットは、前記デコードされた第1の命令に応答して、前記第1のレジスタ内の前記第1の複数のデータフィールドを複製する、請求項1から3の何れか1項に記載のプロセッサ。
- 前記1つ又は複数の実行ユニットは、前記デコードされた第1の命令に応答して、前記第1のレジスタ内の前記第1の値を有する前記第1の複数のデータフィールドのそれぞれを、該第1のレジスタ内の当該データフィールドの前記値が前記第1の値から前記第2の値に変更されたときに複製する、請求項4に記載のプロセッサ。
- 前記第2の演算は単項である、請求項1から5の何れか1項に記載のプロセッサ。
- 前記第2の演算は2項である、請求項1から5の何れか1項に記載のプロセッサ。
- 前記第2のレジスタ内にストアされる前記データ要素は、32ビットデータ要素である、請求項1から7の何れか1項に記載のプロセッサ。
- 前記第2のレジスタ内にストアされる前記データ要素は、64ビットデータ要素である、請求項1から7の何れか1項に記載のプロセッサ。
- 前記第2のレジスタは、512ビットベクトルレジスタである、請求項1から9の何れか1項に記載のプロセッサ。
- コンピューターに、
第1のレジスタ内の第1の複数のデータフィールドのそれぞれの値を読み出す手順であって、前記第1のレジスタ内の前記第1の複数のデータフィールドのそれぞれは、メモリ内のデータ要素のオフセットに対応し、前記第1のレジスタ内の前記第1の複数のデータフィールドのそれぞれについて、第1の値は、前記対応するデータ要素が前記メモリから収集されていないことを示し、第2の値は、前記対応するデータ要素が収集される必要がないか、又は前記メモリから既に収集されていることを示す、読み出す手順と、
前記第1の値を有する前記第1のレジスタ内の前記第1の複数のデータフィールドのそれぞれについて、前記対応するデータ要素を前記メモリから収集し、一部分が収集された前記データ要素をストアする第2の複数のデータフィールドを有する第2のレジスタ内に前記対応するデータ要素をストアし、前記第1のレジスタ内の対応するデータフィールドの値を前記第1の値から前記第2の値に変更する手順と、
次に、前記第1のレジスタ内の前記第1の複数のデータフィールドのそれぞれが前記第2の値を有するとき、前記第2の複数のデータフィールドにストアされた前記データ要素のそれぞれを用いて第2の演算を実行して、対応する結果のデータ要素を生成する手順と、
を実行させるためのプログラム。 - 前記コンピューターにさらに、
前記第1のレジスタ内の前記第1の複数のデータフィールドを複製する手順、
を行わせるための、請求項11に記載のプログラム。 - 前記コンピューターにさらに、
前記第1のレジスタ内の前記第1の値を有する前記第1の複数のデータフィールドのそれぞれを、該第1のレジスタ内の当該データフィールドの前記値が前記第1の値から前記第2の値に変更されたときに複製する手順、
を行わせるための、請求項11または12に記載のプログラム。 - 前記第2の演算は単項である、請求項11から13の何れか1項に記載のプログラム。
- 前記第2の演算は2項である、請求項11から13の何れか1項に記載のプログラム。
- 前記第2のレジスタ内にストアされる前記データ要素は、32ビットデータ要素である、請求項11から15の何れか1項に記載のプログラム。
- 前記第2のレジスタ内にストアされる前記データ要素は、64ビットデータ要素である、請求項11から15の何れか1項に記載のプログラム。
- 前記第2のレジスタは、512ビットベクトルレジスタである、請求項11から17の何れか1項に記載のプログラム。
- 収集演算及び第2の演算と、デスティネーションレジスタと、オペランドレジスタと、メモリアドレスと、インデックスレジスタとを指定する第1の単一命令複数データ(SIMD)命令をデコードするデコードステージと、
デコードされた前記第1のSIMD命令に応答して、
マスクレジスタ内の第1の複数のデータフィールドのそれぞれの値を読み出し、前記マスクレジスタ内の前記第1の複数のデータフィールドのそれぞれは、メモリ内で前記メモリアドレスからオフセットされた対応するデータ要素についての、前記インデックスレジスタ内のオフセットインデックスに対応し、前記マスクレジスタ内の前記第1の複数のデータフィールドのそれぞれについて、第1の値は、前記対応するデータ要素が前記メモリから収集されていないことを示し、第2の値は、前記対応するデータ要素が収集される必要がないか、又は前記メモリから既に収集されていることを示し、
前記第1の値を有する前記マスクレジスタ内の前記第1の複数のデータフィールドのそれぞれについて、前記対応するデータ要素を前記メモリから収集し、前記対応するデータ要素を、前記インデックスレジスタ内の前記オフセットインデックスに対応する前記デスティネーションレジスタ内のデータフィールドにストアし、前記マスクレジスタ内の前記対応するデータフィールドの値を前記第1の値から前記第2の値に変更し、
前記マスクレジスタ内の前記第1の複数のデータフィールドのそれぞれが前記第2の値を有するとき、前記デスティネーションレジスタにストアされた前記データ要素のそれぞれと、前記オペランドレジスタ内の対応するデータ要素とを用いて前記第2の演算を実行して、対応する結果のデータ要素を生成する1つ又は複数の実行ユニットと、
を備える、プロセッサ。 - 前記1つ又は複数の実行ユニットは、前記デコードされた第1のSIMD命令に応答して、前記マスクレジスタ内の前記第1の複数のデータフィールドを複製する、請求項19に記載のプロセッサ。
- 前記1つ又は複数の実行ユニットは、前記デコードされた第1のSIMD命令に応答して、前記マスクレジスタ内の前記第1の値を有する前記第1の複数のデータフィールドのそれぞれを、該マスクレジスタ内の当該データフィールドの前記値が前記第1の値から前記第2の値に変更されたときに複製する、請求項20に記載のプロセッサ。
- 前記デスティネーションレジスタ内にストアされる前記データ要素は、32ビットデータ要素である、請求項21に記載のプロセッサ。
- 前記デスティネーションレジスタ内にストアされる前記データ要素は、64ビットデータ要素である、請求項21に記載のプロセッサ。
- 前記デスティネーションレジスタは、512ビットベクトルレジスタである、請求項21から23の何れか1項に記載のプロセッサ。
- 機械によって実施される方法であって、
収集演算及び第2の演算と、デスティネーションレジスタと、オペランドレジスタと、メモリアドレスと、インデックスレジスタとを指定する第1の単一命令複数データ(SIMD)命令をデコードすることと、
前記第1のSIMD命令に応答して、
マスクレジスタ内の第1の複数のデータフィールドのそれぞれの値を読み出し、前記マスクレジスタ内の前記第1の複数のデータフィールドのそれぞれは、メモリ内で前記メモリアドレスからオフセットされた対応するデータ要素についての、前記インデックスレジスタ内のオフセットインデックスに対応し、前記マスクレジスタ内の前記第1の複数のデータフィールドのそれぞれについて、第1の値は、前記対応するデータ要素が前記メモリから収集されていないことを示し、第2の値は、前記対応するデータ要素が収集される必要がないか、又は前記メモリから既に収集されていることを示すことと、
前記第1の値を有する前記マスクレジスタ内の前記第1の複数のデータフィールドのそれぞれについて、前記対応するデータ要素を前記メモリから収集し、前記対応するデータ要素を、前記インデックスレジスタ内の前記オフセットインデックスに対応する前記デスティネーションレジスタ内のデータフィールドにストアし、前記マスクレジスタ内の対応する前記データフィールドの前記値を前記第1の値から前記第2の値に変更することと、
前記マスクレジスタ内の前記第1の複数のデータフィールドのそれぞれが前記第2の値を有するとき、前記デスティネーションレジスタにストアされた前記データ要素のそれぞれと、前記オペランドレジスタ内の対応するデータ要素とを用いて前記第2の演算を実行し、対応する結果のデータ要素を生成することと、
を含む、機械によって実施される方法。 - 前記第1のSIMD命令に応答して、
前記マスクレジスタ内の前記第1の複数のデータフィールドを複製すること、
を更に含む、請求項25に記載の機械によって実施される方法。 - 前記第1のSIMD命令に応答して、
前記マスクレジスタ内の前記第1の値を有する前記第1の複数のデータフィールドのそれぞれを、該マスクレジスタ内の当該データフィールドの値が前記第1の値から前記第2の値に変更されたときに複製すること、
を更に含む、請求項26に記載の機械によって実施される方法。 - 前記デスティネーションレジスタは、512ビットベクトルレジスタである、請求項25から27の何れか1項に記載の機械によって実施される方法。
- 処理システムであって、
メモリと、
複数のプロセッサとを備え、
前記複数のプロセッサのそれぞれは、
収集演算及び第2の演算と、デスティネーションレジスタと、オペランドレジスタと、メモリアドレスと、インデックスレジスタとを指定する第1の単一命令複数データ(SIMD)命令をデコードするデコードステージと、
デコードされた前記第1のSIMD命令に応答して、
マスクレジスタ内の第1の複数のデータフィールドのそれぞれの値を読み出して、前記マスクレジスタ内の前記第1の複数のデータフィールドのそれぞれは、前記メモリ内で前記メモリアドレスからオフセットされた対応するデータ要素についての、前記インデックスレジスタ内のオフセットインデックスに対応し、前記マスクレジスタ内の第1の複数のデータフィールドのそれぞれについて、第1の値は、前記対応するデータ要素が前記メモリから収集されていないことを示し、第2の値は、前記対応するデータ要素が収集される必要がないか、又は前記メモリから既に収集されていることを示し、
前記第1の値を有する前記マスクレジスタ内の前記第1の複数のデータフィールドのそれぞれについて、前記対応するデータ要素を前記メモリから収集し、前記対応するデータ要素を、前記インデックスレジスタ内の前記オフセットインデックスに対応する前記デスティネーションレジスタ内のデータフィールドにストアし、前記マスクレジスタ内の前記対応するデータフィールドの値を前記第1の値から前記第2の値に変更し、
前記マスクレジスタ内の前記第1の複数のデータフィールドのそれぞれが前記第2の値を有するとき、前記デスティネーションレジスタにストアされた前記データ要素のそれぞれと、前記オペランドレジスタ内の対応するデータ要素とを用いて前記第2の演算を実行して、対応する結果のデータ要素を生成する1つ又は複数の実行ユニットと、
を有する、処理システム。 - 前記1つ又は複数の実行ユニットは、さらに前記第1のSIMD命令に応答して、
前記マスクレジスタ内の前記第1の値を有する前記第1の複数のデータフィールドのそれぞれを、該マスクレジスタ内の当該データフィールドの値が前記第1の値から前記第2の値に変更されたときに複製する、
請求項29に記載の処理システム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/053328 WO2013048368A1 (en) | 2011-09-26 | 2011-09-26 | Instruction and logic to provide vector scatter-op and gather-op functionality |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016092831A Division JP6231155B2 (ja) | 2016-05-02 | 2016-05-02 | ベクトル散乱演算機能及びベクトル収集演算機能を提供する命令及びロジック |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014526757A true JP2014526757A (ja) | 2014-10-06 |
JP5933725B2 JP5933725B2 (ja) | 2016-06-15 |
Family
ID=47996116
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014531780A Expired - Fee Related JP5933725B2 (ja) | 2011-09-26 | 2011-09-26 | ベクトル散乱演算機能及びベクトル収集演算機能を提供する命令及びロジック |
Country Status (7)
Country | Link |
---|---|
US (2) | US9747101B2 (ja) |
JP (1) | JP5933725B2 (ja) |
KR (1) | KR101804008B1 (ja) |
CN (1) | CN103827813B (ja) |
DE (1) | DE112011105664T5 (ja) |
GB (1) | GB2508533B (ja) |
WO (1) | WO2013048368A1 (ja) |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10387151B2 (en) * | 2007-12-31 | 2019-08-20 | Intel Corporation | Processor and method for tracking progress of gathering/scattering data element pairs in different cache memory banks |
US10175990B2 (en) * | 2009-12-22 | 2019-01-08 | Intel Corporation | Gathering and scattering multiple data elements |
US20170269935A1 (en) * | 2011-09-26 | 2017-09-21 | Elmoustapha Ould-Ahmed-Vall | Instruction and logic to provide vector loads and stores with strides and masking functionality |
JP5933725B2 (ja) * | 2011-09-26 | 2016-06-15 | インテル・コーポレーション | ベクトル散乱演算機能及びベクトル収集演算機能を提供する命令及びロジック |
US20130086315A1 (en) * | 2011-10-04 | 2013-04-04 | Moon J. Kim | Direct memory access without main memory in a semiconductor storage device-based system |
US8972697B2 (en) | 2012-06-02 | 2015-03-03 | Intel Corporation | Gather using index array and finite state machine |
US9626333B2 (en) * | 2012-06-02 | 2017-04-18 | Intel Corporation | Scatter using index array and finite state machine |
US9632777B2 (en) * | 2012-08-03 | 2017-04-25 | International Business Machines Corporation | Gather/scatter of multiple data elements with packed loading/storing into/from a register file entry |
US9569211B2 (en) | 2012-08-03 | 2017-02-14 | International Business Machines Corporation | Predication in a vector processor |
US9575755B2 (en) | 2012-08-03 | 2017-02-21 | International Business Machines Corporation | Vector processing in an active memory device |
US9594724B2 (en) | 2012-08-09 | 2017-03-14 | International Business Machines Corporation | Vector register file |
US9348601B2 (en) | 2012-12-26 | 2016-05-24 | Intel Corporation | Coalescing adjacent gather/scatter operations |
US9244684B2 (en) | 2013-03-15 | 2016-01-26 | Intel Corporation | Limited range vector memory access instructions, processors, methods, and systems |
GB2514618B (en) * | 2013-05-31 | 2020-11-11 | Advanced Risc Mach Ltd | Data processing systems |
US9552205B2 (en) * | 2013-09-27 | 2017-01-24 | Intel Corporation | Vector indexed memory access plus arithmetic and/or logical operation processors, methods, systems, and instructions |
US9600442B2 (en) | 2014-07-18 | 2017-03-21 | Intel Corporation | No-locality hint vector memory access processors, methods, systems, and instructions |
US10061746B2 (en) * | 2014-09-26 | 2018-08-28 | Intel Corporation | Instruction and logic for a vector format for processing computations |
US10445092B2 (en) * | 2014-12-27 | 2019-10-15 | Intel Corporation | Method and apparatus for performing a vector permute with an index and an immediate |
US10296334B2 (en) * | 2014-12-27 | 2019-05-21 | Intel Corporation | Method and apparatus for performing a vector bit gather |
WO2016126472A1 (en) * | 2015-02-06 | 2016-08-11 | Micron Technology, Inc. | Apparatuses and methods for scatter and gather |
US9875214B2 (en) * | 2015-07-31 | 2018-01-23 | Arm Limited | Apparatus and method for transferring a plurality of data structures between memory and a plurality of vector registers |
US10503502B2 (en) * | 2015-09-25 | 2019-12-10 | Intel Corporation | Data element rearrangement, processors, methods, systems, and instructions |
US20170168819A1 (en) * | 2015-12-15 | 2017-06-15 | Intel Corporation | Instruction and logic for partial reduction operations |
US10509726B2 (en) * | 2015-12-20 | 2019-12-17 | Intel Corporation | Instructions and logic for load-indices-and-prefetch-scatters operations |
US20170177364A1 (en) * | 2015-12-20 | 2017-06-22 | Intel Corporation | Instruction and Logic for Reoccurring Adjacent Gathers |
US10467006B2 (en) * | 2015-12-20 | 2019-11-05 | Intel Corporation | Permutating vector data scattered in a temporary destination into elements of a destination register based on a permutation factor |
US20170177349A1 (en) * | 2015-12-21 | 2017-06-22 | Intel Corporation | Instructions and Logic for Load-Indices-and-Prefetch-Gathers Operations |
US20170177543A1 (en) * | 2015-12-22 | 2017-06-22 | Intel Corporation | Aggregate scatter instructions |
US20170185403A1 (en) * | 2015-12-23 | 2017-06-29 | Intel Corporation | Hardware content-associative data structure for acceleration of set operations |
US20170185402A1 (en) * | 2015-12-23 | 2017-06-29 | Intel Corporation | Instructions and logic for bit field address and insertion |
US9996361B2 (en) * | 2015-12-23 | 2018-06-12 | Intel Corporation | Byte and nibble sort instructions that produce sorted destination register and destination index mapping |
US10409613B2 (en) * | 2015-12-23 | 2019-09-10 | Intel Corporation | Processing devices to perform a key value lookup instruction |
US10289416B2 (en) * | 2015-12-30 | 2019-05-14 | Intel Corporation | Systems, apparatuses, and methods for lane-based strided gather |
US20180088946A1 (en) * | 2016-09-27 | 2018-03-29 | Intel Corporation | Apparatuses, methods, and systems for mixing vector operations |
US10331454B2 (en) * | 2016-09-29 | 2019-06-25 | Intel Corporation | System and method for load balancing in out-of-order clustered decoding |
US10282296B2 (en) | 2016-12-12 | 2019-05-07 | Intel Corporation | Zeroing a cache line |
EP3602276A1 (en) * | 2017-03-31 | 2020-02-05 | Intel Corporation | Method and apparatus for converting scatter control elements to gather control elements used to sort vector data elements |
CN109800194A (zh) * | 2019-01-24 | 2019-05-24 | 湖南国科微电子股份有限公司 | 基于Linux系统的SDIO接口数据传输方法及装置 |
US11061676B2 (en) | 2019-04-24 | 2021-07-13 | International Business Machines Corporation | Scatter gather using key-value store |
CN115665335B (zh) * | 2022-11-14 | 2023-03-21 | 合肥奔图智造有限公司 | 图像处理方法、装置、图像形成设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH036663A (ja) * | 1989-06-02 | 1991-01-14 | Mitsubishi Electric Corp | ベクトルデータ処理方式 |
JPH0954769A (ja) * | 1995-08-15 | 1997-02-25 | Kofu Nippon Denki Kk | ベクトル処理装置 |
JP2011514598A (ja) * | 2008-03-28 | 2011-05-06 | インテル コーポレイション | 効率的な同期および並列リダクション演算を可能にするベクトル命令 |
JP2011134318A (ja) * | 2009-12-22 | 2011-07-07 | Intel Corp | 複数のデータ・エレメントの収集及び分散 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3541528A (en) * | 1969-01-06 | 1970-11-17 | Ibm | Implicit load and store mechanism |
JPH0731669B2 (ja) * | 1986-04-04 | 1995-04-10 | 株式会社日立製作所 | ベクトル・プロセツサ |
JP2665111B2 (ja) * | 1992-06-18 | 1997-10-22 | 日本電気株式会社 | ベクトル処理装置 |
US5822560A (en) * | 1996-05-23 | 1998-10-13 | Advanced Micro Devices, Inc. | Apparatus for efficient instruction execution via variable issue and variable control vectors per issue |
JPH10164596A (ja) | 1996-11-29 | 1998-06-19 | Sony Corp | 動き検出装置 |
US6920546B2 (en) * | 2002-08-13 | 2005-07-19 | Intel Corporation | Fusion of processor micro-operations |
GB2409064B (en) | 2003-12-09 | 2006-09-13 | Advanced Risc Mach Ltd | A data processing apparatus and method for performing in parallel a data processing operation on data elements |
JP2006054600A (ja) | 2004-08-10 | 2006-02-23 | Toshiba Corp | 動き検出装置、動き検出方法および動き検出プログラム |
TWI277010B (en) | 2005-09-08 | 2007-03-21 | Quanta Comp Inc | Motion vector estimation system and method |
US9529592B2 (en) * | 2007-12-27 | 2016-12-27 | Intel Corporation | Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation |
US7984273B2 (en) * | 2007-12-31 | 2011-07-19 | Intel Corporation | System and method for using a mask register to track progress of gathering elements from memory |
JP2010016454A (ja) | 2008-07-01 | 2010-01-21 | Sony Corp | 画像符号化装置および方法、画像復号装置および方法、並びにプログラム |
JPWO2010035730A1 (ja) | 2008-09-24 | 2012-02-23 | ソニー株式会社 | 画像処理装置および方法 |
JP5573134B2 (ja) | 2009-12-04 | 2014-08-20 | 日本電気株式会社 | ベクトル型計算機及びベクトル型計算機の命令制御方法 |
JP5933725B2 (ja) | 2011-09-26 | 2016-06-15 | インテル・コーポレーション | ベクトル散乱演算機能及びベクトル収集演算機能を提供する命令及びロジック |
DE112011105666T5 (de) * | 2011-09-26 | 2014-07-10 | Intel Corp. | Befehl und Logik zum Bereitstellen von Vektor-Lade-OP/Speicher-OP mit Schritt-Funktionalität |
-
2011
- 2011-09-26 JP JP2014531780A patent/JP5933725B2/ja not_active Expired - Fee Related
- 2011-09-26 GB GB201402493A patent/GB2508533B/en active Active
- 2011-09-26 KR KR1020147008069A patent/KR101804008B1/ko active IP Right Grant
- 2011-09-26 CN CN201180073668.3A patent/CN103827813B/zh not_active Expired - Fee Related
- 2011-09-26 WO PCT/US2011/053328 patent/WO2013048368A1/en active Application Filing
- 2011-09-26 US US13/977,729 patent/US9747101B2/en active Active
- 2011-09-26 DE DE112011105664.8T patent/DE112011105664T5/de not_active Ceased
-
2017
- 2017-08-25 US US15/687,315 patent/US20170357514A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH036663A (ja) * | 1989-06-02 | 1991-01-14 | Mitsubishi Electric Corp | ベクトルデータ処理方式 |
JPH0954769A (ja) * | 1995-08-15 | 1997-02-25 | Kofu Nippon Denki Kk | ベクトル処理装置 |
JP2011514598A (ja) * | 2008-03-28 | 2011-05-06 | インテル コーポレイション | 効率的な同期および並列リダクション演算を可能にするベクトル命令 |
JP2011134318A (ja) * | 2009-12-22 | 2011-07-07 | Intel Corp | 複数のデータ・エレメントの収集及び分散 |
Also Published As
Publication number | Publication date |
---|---|
JP5933725B2 (ja) | 2016-06-15 |
CN103827813B (zh) | 2016-09-21 |
KR20140057362A (ko) | 2014-05-12 |
GB2508533A (en) | 2014-06-04 |
KR101804008B1 (ko) | 2017-12-01 |
US20140201498A1 (en) | 2014-07-17 |
US20170357514A1 (en) | 2017-12-14 |
CN103827813A (zh) | 2014-05-28 |
DE112011105664T5 (de) | 2014-08-21 |
GB2508533B (en) | 2020-01-01 |
GB201402493D0 (en) | 2014-04-02 |
US9747101B2 (en) | 2017-08-29 |
WO2013048368A1 (en) | 2013-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5933725B2 (ja) | ベクトル散乱演算機能及びベクトル収集演算機能を提供する命令及びロジック | |
JP5933011B2 (ja) | ストライド機能を有するベクトルロード演算/ストア演算を提供する命令及びロジック | |
JP5930558B2 (ja) | ストライド機能及びマスク機能を有するベクトルロード及びベクトルストアを提供する命令及びロジック | |
JP6207095B2 (ja) | 条件付きループをベクトル化する命令及び論理 | |
KR101555412B1 (ko) | 벡터 압축 및 회전 기능 제공 명령어 및 로직 | |
KR101767025B1 (ko) | 벡터 어드레스 충돌 검출 기능을 제공하기 위한 방법, 장치, 명령어들 및 로직 | |
JP2019050039A (ja) | ゲノム配列決定および配列比較のためのポピュレーションカウント機能性を提供する方法、装置、命令、およびロジック | |
WO2013095657A1 (en) | Instruction and logic to provide vector blend and permute functionality | |
WO2014084919A1 (en) | Instruction and logic to provide pushing buffer copy and store functionality | |
TWI697788B (zh) | 用以提供向量包裝之直方圖功能的方法,裝置,指令及邏輯 | |
JP2018512631A (ja) | アトミックな範囲演算を提供する命令及びロジック | |
TW201732564A (zh) | 用於使用monitor及mwait架構之使用者層級執行緒同步的方法及裝置 | |
KR20170102865A (ko) | 벡터 패킹된 투플 교차 비교 기능을 제공하기 위한 방법, 장치, 명령어들 및 로직 | |
WO2013077884A1 (en) | Instruction and logic to provide conversions between a mask register and a general purpose register or memory | |
CN108292271B (zh) | 用于向量置换的指令和逻辑 | |
CN106293631B (zh) | 用于提供向量分散操作和聚集操作功能的指令和逻辑 | |
US20170269935A1 (en) | Instruction and logic to provide vector loads and stores with strides and masking functionality | |
JP6231155B2 (ja) | ベクトル散乱演算機能及びベクトル収集演算機能を提供する命令及びロジック | |
JP6222859B2 (ja) | ストライド機能及びマスク機能を有するベクトルロード及びベクトルストアを提供する命令及びロジック | |
GB2578972A (en) | Instruction and logic to provide vector scatter-op and gather-op functionality |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140424 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20150415 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150512 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150807 |
|
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: 20160301 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20160330 |
|
R155 | Notification before disposition of declining of application |
Free format text: JAPANESE INTERMEDIATE CODE: R155 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160502 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5933725 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 |
|
LAPS | Cancellation because of no payment of annual fees |