JP2014526758A - ストライド機能を有するベクトルロード演算/ストア演算を提供する命令及びロジック - Google Patents
ストライド機能を有するベクトルロード演算/ストア演算を提供する命令及びロジック Download PDFInfo
- Publication number
- JP2014526758A JP2014526758A JP2014531781A JP2014531781A JP2014526758A JP 2014526758 A JP2014526758 A JP 2014526758A JP 2014531781 A JP2014531781 A JP 2014531781A JP 2014531781 A JP2014531781 A JP 2014531781A JP 2014526758 A JP2014526758 A JP 2014526758A
- Authority
- JP
- Japan
- Prior art keywords
- register
- data
- value
- processor
- memory
- 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 120
- 230000015654 memory Effects 0.000 claims abstract description 171
- 230000004044 response Effects 0.000 claims abstract description 9
- 238000012545 processing Methods 0.000 claims description 103
- 238000000034 method Methods 0.000 claims description 60
- 230000003362 replicative effect Effects 0.000 claims 1
- 230000008569 process Effects 0.000 description 44
- 238000010586 diagram Methods 0.000 description 35
- 238000003860 storage Methods 0.000 description 33
- 238000007667 floating Methods 0.000 description 31
- 230000006870 function Effects 0.000 description 21
- 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 11
- 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
- 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
- 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/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
- 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
- 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
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
- G06F9/3455—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
-
- 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/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- 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/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- 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]
-
- 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
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 WvwLpp evex4 演算コード modrm[sib][disp][imm]
Claims (30)
- プロセッサであって、
第1の複数のデータフィールドを含む第1のレジスタであって、該第1のレジスタ内の該第1の複数のデータフィールドのそれぞれは、メモリ内の対応するデータ要素用の開始アドレスからのストライド長の倍数に対応し、該第1のレジスタ内の該第1の複数のデータフィールドのそれぞれについて、第1の値は、前記対応するデータ要素が前記メモリからまだロードされていないことを示し、第2の値は、前記対応するデータ要素がロードされる必要がないか、又は前記メモリから既にロードされていることを示す、第1のレジスタと、
前記第1のレジスタと、前記第1の複数のデータフィールドのうちの1つ又は複数に対応する一組のロード演算とを指定するとともに、第2の単一命令複数データ(SIMD)演算を指定する第1の命令をデコードするデコードステージと、
1つ又は複数の実行ユニットであって、デコードされた前記第1の命令に応答して、
前記第1のレジスタ内の前記第1の複数のデータフィールドのそれぞれの値を読み出し、
前記第1の値を有する前記第1のレジスタ内の前記第1の複数のデータフィールドの各データフィールドについて、前記対応するデータ要素を前記メモリからロードし、前記対応するデータ要素を、第2の複数のデータフィールドを有するとともに該第2の複数のデータフィールドの一部分が前記ロードされたデータ要素をストアする第2のレジスタ内にストアし、
前記第1のレジスタ内の対応する前記データフィールドの前記値を前記第1の値から前記第2の値に変更し、
前記第2の複数のデータフィールドの前記一部分にストアされた前記データ要素を用いて前記第2のSIMD演算を実行し、対応する結果のデータ要素を生成する、
1つ又は複数の実行ユニットと、
を備える、プロセッサ。 - 前記第1の値は1である、請求項1に記載のプロセッサ。
- 前記第2の値は0である、請求項1または2に記載のプロセッサ。
- 前記1つ又は複数の実行ユニットは、前記デコードされた第1の命令に応答して、前記第1のレジスタ内の前記第1の複数のデータフィールドを複製する、請求項1から3の何れか1項に記載のプロセッサ。
- 前記1つ又は複数の実行ユニットは、前記デコードされた第1の命令に応答して、前記第1のレジスタ内の前記第1の値を有する前記第1の複数のデータフィールドのそれぞれを、該第1のレジスタ内の当該データフィールドの前記値が前記第1の値から前記第2の値に変更されたときに複製する、請求項4に記載のプロセッサ。
- 前記1つ又は複数の実行ユニットは、障害時、又は前記第1のレジスタ内の前記第1の複数のデータフィールドのそれぞれが前記第2の値を有した後に、前記第1のレジスタからの複製された前記第1の複数のデータフィールドを用いて、前記第2のSIMD演算を実行する、請求項5に記載のプロセッサ。
- 前記第2のSIMD演算は単項である、請求項1から6の何れか1項に記載のプロセッサ。
- 前記第2のSIMD演算は2項である、請求項1から6の何れか1項に記載のプロセッサ。
- 前記第2のレジスタ内にストアされる前記データ要素は、32ビットデータ要素である、請求項1から8の何れか1項に記載のプロセッサ。
- 前記第2のレジスタ内にストアされる前記データ要素は、64ビットデータ要素である、請求項1から8の何れか1項に記載のプロセッサ。
- 前記第2のレジスタは、512ビットベクトルレジスタである、請求項1から10の何れか1項に記載のプロセッサ。
- コンピューターに、 第1のレジスタ内の第1の複数のデータフィールドの各データフィールドの値を読み出す手順であって、前記第1のレジスタ内の前記第1の複数のデータフィールドのそれぞれは、メモリ内の対応するデータ要素の開始アドレスからのストライド長の倍数に対応し、前記第1のレジスタ内の前記第1の複数のデータフィールドのそれぞれについて、第1の値は、前記対応するデータ要素が前記メモリからロードされていないことを示し、第2の値は、前記対応するデータ要素がロードされる必要がないか、又は前記メモリから既にロードされていることを示す手順と、
前記第1の値を有する前記第1のレジスタ内の前記第1の複数のデータフィールドの各データフィールドについて、前記対応するデータ要素を前記メモリからロードする手順であって、前記対応するデータ要素を、第2の複数のデータフィールドを有するとともに該第2の複数のデータフィールドの一部分がロードされた前記対応するデータ要素をストアする第2のレジスタ内にストアし、前記第1のレジスタ内の対応する前記データフィールドの値を前記第1の値から前記第2の値に変更する手順と、
次に、前記第2の複数のデータフィールドの前記一部分にストアされた前記データ要素を用いて第2の単一命令複数データ(SIMD)演算を実行する手順であって、対応する結果のデータ要素を生成する手順と、
を実行させるためのプログラム。 - 前記第1のレジスタ内の前記第1の複数のデータフィールドを複製する手順、
を前記コンピューターに更に行わせる、請求項12に記載のプログラム。 - 前記第1のレジスタ内の前記第1の値を有する前記第1の複数のデータフィールドのそれぞれを、該第1のレジスタ内の当該データフィールドの前記値が前記第1の値から前記第2の値に変更されたときに複製する手順、
を前記コンピューターに更に行わせる、請求項12または13に記載のプログラム。 - 障害時、又は前記第1のレジスタ内の前記第1の複数のデータフィールドの各データフィールドが前記第2の値を有した後に、前記第1のレジスタからの複製された前記第1の複数のデータフィールドを用いて、前記第2のSIMD演算を実行する手順、
を前記コンピューターに更に行わせる、請求項14に記載のプログラム。 - 前記第2のSIMD演算は単項である、請求項12から15の何れか1項に記載のプログラム。
- 前記第2のSIMD演算は2項である、請求項12から15の何れか1項に記載のプログラム。
- 前記第2のレジスタ内にストアされる前記データ要素は、32ビットデータ要素である、請求項12から17の何れか1項に記載のプログラム。
- 前記第2のレジスタ内にストアされる前記データ要素は、64ビットデータ要素である、請求項12から17の何れか1項に記載のプログラム。
- 前記第2のレジスタは、512ビットベクトルレジスタである、請求項12から19の何れか1項に記載のプログラム。
- プロセッサであって、
一組のロード演算及び第2の単一命令複数データ(SIMD)演算と、デスティネーションレジスタと、オペランドレジスタと、メモリアドレスと、ストライド長とを指定する第1のSIMD命令をデコードするデコードステージと、
1つ又は複数の実行ユニットであって、デコードされた前記第1のSIMD命令に応答して、
マスクレジスタ内の第1の複数のデータフィールドの各データフィールドの値を読み出し、前記マスクレジスタ内の前記第1の複数のデータフィールドのそれぞれは、メモリ内の対応するデータ要素の前記メモリアドレスからの前記ストライド長の倍数に対応し、前記マスクレジスタ内の前記第1の複数のデータフィールドのそれぞれについて、第1の値は、前記対応するデータ要素が前記メモリからロードされていないことを示し、第2の値は、前記対応するデータ要素がロードされる必要がないか、又は前記メモリから既にロードされていることを示し、
前記第1の値を有する前記マスクレジスタ内の前記第1の複数のデータフィールドの各データフィールドについて、前記対応するデータ要素を前記メモリから前記デスティネーションレジスタ内の対応するデータフィールドにロードし、前記マスクレジスタ内の前記各データフィールドの値を前記第1の値から前記第2の値に変更し、
前記デスティネーションレジスタにロードされた前記データ要素と、前記オペランドレジスタ内の対応するデータ要素とを用いて前記第2のSIMD演算を実行して、対応する結果のデータ要素を生成する1つ又は複数の実行ユニットと、
を備える、プロセッサ。 - 前記1つ又は複数の実行ユニットは、前記デコードされた第1のSIMD命令に応答して、前記マスクレジスタ内の前記第1の複数のデータフィールドを複製する、請求項21に記載のプロセッサ。
- 前記1つ又は複数の実行ユニットは、前記デコードされた第1のSIMD命令に応答して、前記マスクレジスタ内の前記第1の値を有する前記第1の複数のデータフィールドのそれぞれを、該マスクレジスタ内の当該データフィールドの前記値が前記第1の値から前記第2の値に変更されたときに複製する、請求項22に記載のプロセッサ。
- 前記1つ又は複数の実行ユニットは、障害時、又は前記マスクレジスタ内の前記第1の複数のデータフィールドの各データフィールドが前記第2の値を有した後に、前記マスクレジスタからの複製された前記第1の複数のデータフィールドを用いて、前記第2のSIMD演算を実行する、請求項23に記載のプロセッサ。
- 前記デスティネーションレジスタ内にロードされる前記データ要素は、32ビットデータ要素である、請求項21から24の何れか1項に記載のプロセッサ。
- 前記デスティネーションレジスタ内にロードされる前記データ要素は、64ビットデータ要素である、請求項21から24の何れか1項に記載のプロセッサ。
- 前記デスティネーションレジスタは、512ビットベクトルレジスタである、請求項21から26の何れか1項に記載のプロセッサ。
- 処理システムであって、
メモリと、
複数のプロセッサと
を備え、前記複数のプロセッサのそれぞれは、
一組のロード演算及び第2の単一命令複数データ(SIMD)演算と、デスティネーションレジスタと、オペランドレジスタと、メモリアドレスと、ストライド長とを指定する第1のSIMD命令をデコードするデコードステージと、
1つ又は複数の実行ユニットであって、デコードされた前記第1のSIMD命令に応答して、
マスクレジスタ内の第1の複数のデータフィールドの各データフィールドの値を読み出し、前記マスクレジスタ内の前記第1の複数のデータフィールドのそれぞれは、メモリ内の対応するデータ要素の前記メモリアドレスからの前記ストライド長の倍数に対応し、前記マスクレジスタ内の各データフィールドについて、第1の値は、前記対応するデータ要素が前記メモリからロードされていないことを示し、第2の値は、前記対応するデータ要素をロードする必要がないか、又は前記メモリから既にロードされていることを示し、
前記第1の値を有する前記マスクレジスタ内の前記第1の複数のデータフィールドの各データフィールドについて、前記対応するデータ要素を前記メモリから前記デスティネーションレジスタ内の対応するデータフィールドにロードし、前記マスクレジスタ内の前記データフィールドの値を前記第1の値から前記第2の値に変更し、
前記デスティネーションレジスタにロードされた前記データ要素と、前記オペランドレジスタ内の対応するデータ要素とを用いて前記第2のSIMD演算を実行して、対応する結果のデータ要素を生成する
1つ又は複数の実行ユニットと、
を備える処理システム。 - 前記1つ又は複数の実行ユニットは更に、前記第1のSIMD命令に応答して、
前記マスクレジスタ内の前記第1の値を有する前記第1の複数のデータフィールドのそれぞれを、該マスクレジスタ内の当該データフィールドの前記値が前記第1の値から前記第2の値に変更されたときに複製する、
請求項28に記載の処理システム。 - 前記1つ又は複数の実行ユニットは更に、前記第1のSIMD命令に応答して、
障害時、又は前記マスクレジスタ内の前記第1の複数のデータフィールドの各データフィールドが前記第2の値を有した後に、前記マスクレジスタからの複製された前記第1の複数のデータフィールドを用いて、前記第2のSIMD演算を実行する、
請求項29に記載の処理システム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/053331 WO2013048369A1 (en) | 2011-09-26 | 2011-09-26 | Instruction and logic to provide vector load-op/store-op with stride functionality |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014526758A true JP2014526758A (ja) | 2014-10-06 |
JP5933011B2 JP5933011B2 (ja) | 2016-06-08 |
Family
ID=47996117
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014531781A Expired - Fee Related JP5933011B2 (ja) | 2011-09-26 | 2011-09-26 | ストライド機能を有するベクトルロード演算/ストア演算を提供する命令及びロジック |
Country Status (8)
Country | Link |
---|---|
US (1) | US9804844B2 (ja) |
JP (1) | JP5933011B2 (ja) |
KR (2) | KR101877347B1 (ja) |
CN (2) | CN103827814B (ja) |
BR (1) | BR112014004600A2 (ja) |
DE (1) | DE112011105666T5 (ja) |
GB (1) | GB2508312B (ja) |
WO (1) | WO2013048369A1 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020116025A1 (ja) * | 2018-12-07 | 2020-06-11 | 日本電気株式会社 | コンパイル装置、コンパイル方法、及び非一時的なコンピュータ可読媒体 |
JP2020109604A (ja) * | 2018-12-31 | 2020-07-16 | グラフコアー リミテッドGraphcore Limited | ロード/ストア命令 |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013048369A1 (en) | 2011-09-26 | 2013-04-04 | Intel Corporation | Instruction and logic to provide vector load-op/store-op with stride functionality |
CN103827813B (zh) * | 2011-09-26 | 2016-09-21 | 英特尔公司 | 用于提供向量分散操作和聚集操作功能的指令和逻辑 |
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 |
US9471308B2 (en) | 2013-01-23 | 2016-10-18 | International Business Machines Corporation | Vector floating point test data class immediate instruction |
US9715385B2 (en) | 2013-01-23 | 2017-07-25 | International Business Machines Corporation | Vector exception code |
US9513906B2 (en) | 2013-01-23 | 2016-12-06 | International Business Machines Corporation | Vector checksum instruction |
US9823924B2 (en) | 2013-01-23 | 2017-11-21 | International Business Machines Corporation | Vector element rotate and insert under mask instruction |
US9804840B2 (en) | 2013-01-23 | 2017-10-31 | International Business Machines Corporation | Vector Galois Field Multiply Sum and Accumulate instruction |
US9778932B2 (en) | 2013-01-23 | 2017-10-03 | International Business Machines Corporation | Vector generate mask instruction |
CN103414854B (zh) * | 2013-08-13 | 2017-04-19 | 三星半导体(中国)研究开发有限公司 | 具有图像处理功能的片上系统及其运行方法 |
KR102152735B1 (ko) * | 2013-09-27 | 2020-09-21 | 삼성전자주식회사 | 그래픽 처리 장치 및 이의 동작 방법 |
JP6351722B2 (ja) * | 2013-12-23 | 2018-07-04 | インテル・コーポレーション | クラスタ化されたワイド実行機械におけるメモリアクセス用の命令およびロジック |
US9600442B2 (en) * | 2014-07-18 | 2017-03-21 | Intel Corporation | No-locality hint vector memory access processors, methods, systems, and instructions |
US9467279B2 (en) * | 2014-09-26 | 2016-10-11 | Intel Corporation | Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality |
US10528345B2 (en) * | 2015-03-27 | 2020-01-07 | Intel Corporation | Instructions and logic to provide atomic range modification operations |
US20170177352A1 (en) * | 2015-12-18 | 2017-06-22 | Intel Corporation | Instructions and Logic for Lane-Based Strided Store Operations |
US10019262B2 (en) * | 2015-12-22 | 2018-07-10 | Intel Corporation | Vector store/load instructions for array of structures |
US9996319B2 (en) * | 2015-12-23 | 2018-06-12 | Intel Corporation | Floating point (FP) add low instructions functional unit |
US10248488B2 (en) * | 2015-12-29 | 2019-04-02 | Intel Corporation | Fault tolerance and detection by replication of input data and evaluating a packed data execution result |
GB2546510B (en) | 2016-01-20 | 2018-09-26 | Advanced Risc Mach Ltd | Vector atomic memory update instruction |
GB2548601B (en) * | 2016-03-23 | 2019-02-13 | Advanced Risc Mach Ltd | Processing vector instructions |
US20180088946A1 (en) * | 2016-09-27 | 2018-03-29 | Intel Corporation | Apparatuses, methods, and systems for mixing vector operations |
US20180173527A1 (en) * | 2016-12-15 | 2018-06-21 | Optimum Semiconductor Technologies, Inc. | Floating point instruction format with embedded rounding rule |
WO2018174931A1 (en) | 2017-03-20 | 2018-09-27 | Intel Corporation | Systems, methods, and appartus for tile configuration |
WO2019009870A1 (en) | 2017-07-01 | 2019-01-10 | Intel Corporation | SAVE BACKGROUND TO VARIABLE BACKUP STATUS SIZE |
GB2580664B (en) * | 2019-01-22 | 2021-01-13 | Graphcore Ltd | Double load instruction |
US11163575B2 (en) * | 2019-04-03 | 2021-11-02 | Microsoft Technology Licensing, Llc | Widening memory access to an aligned address for unaligned memory operations |
CN110908716B (zh) * | 2019-11-14 | 2022-02-08 | 中国人民解放军国防科技大学 | 一种向量聚合装载指令的实现方法 |
US11573795B1 (en) * | 2021-08-02 | 2023-02-07 | Nvidia Corporation | Using a vector processor to configure a direct memory access system for feature tracking operations in a system on a chip |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH036663A (ja) * | 1989-06-02 | 1991-01-14 | Mitsubishi Electric Corp | ベクトルデータ処理方式 |
JPH0452962A (ja) * | 1990-06-20 | 1992-02-20 | Fujitsu Ltd | アクセスマスク制御方式 |
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 (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0731669B2 (ja) * | 1986-04-04 | 1995-04-10 | 株式会社日立製作所 | ベクトル・プロセツサ |
JP2665111B2 (ja) * | 1992-06-18 | 1997-10-22 | 日本電気株式会社 | ベクトル処理装置 |
JP3006663B2 (ja) | 1995-01-27 | 2000-02-07 | ブラザー工業株式会社 | 印面作成装置 |
US5838984A (en) | 1996-08-19 | 1998-11-17 | Samsung Electronics Co., Ltd. | Single-instruction-multiple-data processing using multiple banks of vector registers |
US6625721B1 (en) * | 1999-07-26 | 2003-09-23 | Intel Corporation | Registers for 2-D matrix processing |
US20040006667A1 (en) | 2002-06-21 | 2004-01-08 | Bik Aart J.C. | Apparatus and method for implementing adjacent, non-unit stride memory access patterns utilizing SIMD instructions |
US6920546B2 (en) * | 2002-08-13 | 2005-07-19 | Intel Corporation | Fusion of processor micro-operations |
US7437521B1 (en) * | 2003-08-18 | 2008-10-14 | Cray Inc. | Multistream processing memory-and barrier-synchronization method and apparatus |
US7275148B2 (en) | 2003-09-08 | 2007-09-25 | Freescale Semiconductor, Inc. | Data processing system using multiple addressing modes for SIMD operations and method thereof |
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 |
TW200739363A (en) * | 2006-04-04 | 2007-10-16 | Nat Univ Chung Cheng | Flexible load and storage device for multimedia applications |
US20080071851A1 (en) * | 2006-09-20 | 2008-03-20 | Ronen Zohar | Instruction and logic for performing a dot-product operation |
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 |
US20100199067A1 (en) | 2009-02-02 | 2010-08-05 | International Business Machines Corporation | Split Vector Loads and Stores with Stride Separated Words |
US20120254591A1 (en) | 2011-04-01 | 2012-10-04 | Hughes Christopher J | Systems, apparatuses, and methods for stride pattern gathering of data elements and stride pattern scattering of data elements |
WO2013048369A1 (en) | 2011-09-26 | 2013-04-04 | Intel Corporation | Instruction and logic to provide vector load-op/store-op with stride functionality |
-
2011
- 2011-09-26 WO PCT/US2011/053331 patent/WO2013048369A1/en active Application Filing
- 2011-09-26 GB GB1402148.9A patent/GB2508312B/en active Active
- 2011-09-26 DE DE112011105666.4T patent/DE112011105666T5/de not_active Ceased
- 2011-09-26 KR KR1020157033305A patent/KR101877347B1/ko active IP Right Grant
- 2011-09-26 KR KR1020147008070A patent/KR101572770B1/ko active IP Right Grant
- 2011-09-26 JP JP2014531781A patent/JP5933011B2/ja not_active Expired - Fee Related
- 2011-09-26 CN CN201180073690.8A patent/CN103827814B/zh not_active Expired - Fee Related
- 2011-09-26 CN CN201710190351.7A patent/CN106951214B/zh not_active Expired - Fee Related
- 2011-09-26 BR BR112014004600A patent/BR112014004600A2/pt not_active Application Discontinuation
- 2011-09-26 US US13/977,728 patent/US9804844B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH036663A (ja) * | 1989-06-02 | 1991-01-14 | Mitsubishi Electric Corp | ベクトルデータ処理方式 |
JPH0452962A (ja) * | 1990-06-20 | 1992-02-20 | Fujitsu Ltd | アクセスマスク制御方式 |
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 | 複数のデータ・エレメントの収集及び分散 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020116025A1 (ja) * | 2018-12-07 | 2020-06-11 | 日本電気株式会社 | コンパイル装置、コンパイル方法、及び非一時的なコンピュータ可読媒体 |
JPWO2020116025A1 (ja) * | 2018-12-07 | 2021-10-07 | 日本電気株式会社 | コンパイル装置、コンパイル方法、及び制御プログラム |
JP7115563B2 (ja) | 2018-12-07 | 2022-08-09 | 日本電気株式会社 | コンパイル装置、コンパイル方法、及び制御プログラム |
US11829754B2 (en) | 2018-12-07 | 2023-11-28 | Nec Corporation | Compile device, compile method, and non-transitory computer readable medium for increasing a speed of a program |
JP2020109604A (ja) * | 2018-12-31 | 2020-07-16 | グラフコアー リミテッドGraphcore Limited | ロード/ストア命令 |
Also Published As
Publication number | Publication date |
---|---|
KR101572770B1 (ko) | 2015-11-27 |
US9804844B2 (en) | 2017-10-31 |
DE112011105666T5 (de) | 2014-07-10 |
KR20140057363A (ko) | 2014-05-12 |
GB2508312B (en) | 2020-04-22 |
GB2508312A (en) | 2014-05-28 |
CN103827814B (zh) | 2017-04-19 |
US20140195778A1 (en) | 2014-07-10 |
KR101877347B1 (ko) | 2018-07-12 |
WO2013048369A1 (en) | 2013-04-04 |
CN103827814A (zh) | 2014-05-28 |
CN106951214B (zh) | 2019-07-19 |
BR112014004600A2 (pt) | 2017-06-13 |
JP5933011B2 (ja) | 2016-06-08 |
CN106951214A (zh) | 2017-07-14 |
GB201402148D0 (en) | 2014-03-26 |
KR20150137129A (ko) | 2015-12-08 |
WO2013048369A9 (en) | 2013-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5933011B2 (ja) | ストライド機能を有するベクトルロード演算/ストア演算を提供する命令及びロジック | |
JP5933725B2 (ja) | ベクトル散乱演算機能及びベクトル収集演算機能を提供する命令及びロジック | |
JP5930558B2 (ja) | ストライド機能及びマスク機能を有するベクトルロード及びベクトルストアを提供する命令及びロジック | |
JP6207095B2 (ja) | 条件付きループをベクトル化する命令及び論理 | |
KR101555412B1 (ko) | 벡터 압축 및 회전 기능 제공 명령어 및 로직 | |
KR101842058B1 (ko) | 푸싱형 버퍼 복사 및 저장 기능성을 제공하기 위한 명령어 및 논리 | |
KR101767025B1 (ko) | 벡터 어드레스 충돌 검출 기능을 제공하기 위한 방법, 장치, 명령어들 및 로직 | |
TWI617979B (zh) | 提供向量水平比較功能之方法與系統及其處理器與機器可讀取媒體 | |
US20140372727A1 (en) | Instruction and logic to provide vector blend and permute functionality | |
JP2019050039A (ja) | ゲノム配列決定および配列比較のためのポピュレーションカウント機能性を提供する方法、装置、命令、およびロジック | |
JP2018512631A (ja) | アトミックな範囲演算を提供する命令及びロジック | |
TW201732564A (zh) | 用於使用monitor及mwait架構之使用者層級執行緒同步的方法及裝置 | |
JP2018504667A (ja) | ベクトルパックドタプル相互比較機能を提供する方法、装置、命令、およびロジック | |
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: 20160428 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5933011 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 |