KR20060040611A - 데이터 셔플링을 위한 방법 및 장치 - Google Patents
데이터 셔플링을 위한 방법 및 장치 Download PDFInfo
- Publication number
- KR20060040611A KR20060040611A KR20057025313A KR20057025313A KR20060040611A KR 20060040611 A KR20060040611 A KR 20060040611A KR 20057025313 A KR20057025313 A KR 20057025313A KR 20057025313 A KR20057025313 A KR 20057025313A KR 20060040611 A KR20060040611 A KR 20060040611A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- operand
- shuffle
- zero
- data element
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 64
- 230000006870 function Effects 0.000 claims description 17
- 230000004044 response Effects 0.000 claims description 8
- 238000013461 design Methods 0.000 claims description 6
- 150000001875 compounds Chemical class 0.000 claims 4
- 238000012545 processing Methods 0.000 description 47
- 238000007667 floating Methods 0.000 description 27
- 238000010586 diagram Methods 0.000 description 19
- 238000005516 engineering process Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 12
- 238000003860 storage Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 238000013500 data storage Methods 0.000 description 5
- 230000001419 dependent effect Effects 0.000 description 5
- 238000001914 filtration Methods 0.000 description 5
- 235000019580 granularity Nutrition 0.000 description 5
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 4
- 239000003086 colorant Substances 0.000 description 4
- 230000033001 locomotion Effects 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000002829 reductive effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 239000000872 buffer Substances 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 229910052760 oxygen Inorganic materials 0.000 description 3
- 230000000717 retained effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 229910052799 carbon Inorganic materials 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 229910052739 hydrogen Inorganic materials 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000001343 mnemonic effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 229910052757 nitrogen Inorganic materials 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 229910052698 phosphorus Inorganic materials 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000002194 synthesizing effect Effects 0.000 description 1
- 235000019587 texture Nutrition 0.000 description 1
- 238000012546 transfer Methods 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/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/76—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
-
- 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
-
- 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/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/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/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/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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction 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, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional 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, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
Abstract
Description
Claims (53)
- L개의 데이터 요소의 집합을 갖는 제1 피연산자 및 L개의 제어 요소의 집합을 갖는 제2 피연산자를 수신하는 단계; 및각각의 제어 요소에 대해, 영으로 플러시 필드(flush to zero field)가 설정되어 있지 않은 경우, 상기 제어 요소에 의해 지정된 제1 피연산자 데이터 요소로부터의 데이터를 연관된 결과 데이터 요소 위치로 셔플링하고, 영으로 플러시 필드가 설정되어 있지 않은 경우, 상기 연관된 결과 데이터 요소 위치에 영(zero)을 삽입하는 단계를 포함하는 방법.
- 제1항에 있어서, 상기 L개의 제어 요소 각각은 상기 제2 피연산자에서 특정 위치를 차지하며, 결과에서 비슷하게 위치한 데이터 요소 위치와 연관되어 있는 방법.
- 제2항에 있어서, 상기 L개의 데이터 요소 각각은 상기 제1 피연산자에서 특정 위치를 차지하는 방법.
- 제3항에 있어서, 상기 제어 요소는 데이터 요소 위치 번호에 의해 제1 피연산자 데이터 요소를 지정하는 방법.
- 제4항에 있어서, 상기 제어 요소 각각은,영으로 플러시 필드(flush to zero field) - 상기 영으로 플러시 필드는 이 제어 요소와 연관된 데이터 요소 위치가 영(zero) 값으로 채워져야 하는지 여부를 나타냄 -; 및선택 필드(selection field) - 상기 선택 필드는 어느 제1 피연산자 데이터 요소로부터의 데이터를 셔플링해야 하는지를 나타냄 - 를 포함하는 방법.
- 제5항에 있어서, 상기 제어 요소 각각은 소스 선택 필드(source select field)를 더 포함하는 방법.
- 제2항에 있어서, 상기 제2 피연산자의 상기 제어 요소에 응답하여 상기 제1 피연산자로부터 셔플링된 데이터를 포함하는 결과 데이터 블록을 출력하는 단계를 더 포함하는 방법.
- 제1항에 있어서, 상기 데이터 요소 각각은 한 바이트의 데이터(a byte of data)를 포함하는 방법.
- 제8항에 있어서, 상기 제어 요소 각각은 한 바이트 폭(a byte wide)인 방법.
- 제9항에 있어서, L은 8이고,상기 제1 피연산자, 상기 제2 피연산자 및 상기 결과는 각각 64비트 폭의 패킹된 데이터(packed data)를 포함하는 방법.
- 제9항에 있어서, L은 16이고,상기 제1 피연산자, 상기 제2 피연산자 및 상기 결과는 각각 128비트 폭의 패킹된 데이터를 포함하는 방법.
- L개의 데이터 요소의 집합을 포함하는 제1 피연산자 및 L개의 제어 요소의 집합을 포함하는 제2 피연산자를 포함하는 셔플 명령어(shuffle instruction)를 실행하는 실행 유닛을 포함하며,상기 셔플 명령어는 상기 실행 유닛으로 하여금,각각의 개별적인 제어 요소에 대해, 영으로 플러시 필드가 설정되어 있는지 여부를 판정하고, 설정되어 있는 경우 연관된 결과 데이터 요소 위치에 영을 삽입하고, 그렇지 않은 경우 상기 개별적인 제어 요소에 의해 지정된 제1 피연산자 데이터 요소로부터의 데이터를 상기 연관된 결과 데이터 요소 위치로 셔플링하게 하는 장치.
- 제12항에 있어서, 상기 L개의 제어 요소 각각은 상기 제2 피연산자에서 한 위치를 차지하며, 결과에서 유사하게 위치한 데이터 요소 위치와 연관되어 있는 장치.
- 제13항에 있어서, 각각의 개별적인 제어 요소는 데이터 요소 위치 번호에 의해 제1 피연산자 데이터 요소를 지정하는 장치.
- 제14항에 있어서, 상기 제어 요소 각각은,영으로 플러시 필드 - 상기 영으로 플러시 필드는 이 제어 요소와 연관된 데이터 요소 위치가 영(zero) 값으로 채워져야 하는지 여부를 나타냄 -; 및선택 필드 - 상기 선택 필드는 어느 제1 피연산자 데이터 요소로부터의 데이터를 셔플링해야 하는지를 나타냄 - 를 포함하는 장치.
- 제15항에 있어서, 상기 제어 요소 각각은 소스 선택 필드를 더 포함하는 장치.
- 제16항에 있어서, 상기 셔플 명령어는 또한 상기 실행 유닛으로 하여금 상기 L개의 제어 요소의 집합에 기초하여 채워진 L개의 데이터 요소 위치를 갖는 결과를 발생하게 하는 장치.
- 제12항에 있어서, 상기 데이터 요소 각각은 한 바이트의 데이터(a byte of data)를 포함하고, 상기 제어 요소 각각은 한 바이트 폭(a byte wide)인 장치.
- 제18항에 있어서, L은 8이고,상기 제1 피연산자, 상기 제2 피연산자 및 상기 결과는 각각 64비트 폭의 패킹된 데이터(packed data)를 포함하는 장치.
- 제18항에 있어서, L은 16이고,상기 제1 피연산자, 상기 제2 피연산자 및 상기 결과는 각각 128비트 폭의 패킹된 데이터를 포함하는 장치.
- L개의 데이터 요소의 집합을 갖는 제1 피연산자 및 L개의 제어 요소의 집합을 갖는 제2 피연산자를 수신하는 단계; 및각각의 제어 요소에 대해, 영으로 플러시(flush to zero) 필드가 설정되어 있지 않은 경우, 상기 제어 요소에 의해 지정된 제1 피연산자 데이터 요소로부터의 데이터를 연관된 결과 데이터 요소 위치로 셔플링하고, 영으로 플러시 필드가 설정되어 있지 않은 경우, 상기 연관된 결과 데이터 요소 위치에 영(zero)을 삽입하는 단계를 포함하는 미리 정해진 기능을 나타내는 데이터를 저장하는 시스템 판독가능 매체(machine readable medium)를 포함하는 물품(article).
- 제21항에 있어서, 상기 시스템 판독가능 매체에 의해 저장된 상기 데이터는, 제조되었을 때 단일 명령어에 응답하여 상기 미리 정해진 기능을 수행하는 집적 회 로 설계를 나타내는 물품.
- 제22항에 있어서, 상기 미리 정해진 기능은 상기 L개의 제어 요소의 집합에 따라 채워진 L개의 데이터 요소 위치를 갖는 결과를 발생하는 단계를 더 포함하는 물품.
- 제23항에 있어서, 상기 L개의 제어 요소 각각은 결과에서 유사하게 위치한 데이터 요소 위치와 연관되어 있는 물품.
- 제24항에 있어서, 각각의 개별적인 제어 요소는 데이터 요소 위치 번호에 의해 제1 피연산자 데이터 요소를 지정하는 물품.
- 제25항에 있어서, 상기 데이터 요소 각각은 한 바이트의 데이터(a byte of data)를 포함하는 물품.
- 제26항에 있어서, 상기 제어 요소 각각은,영으로 플러시 필드 - 상기 영으로 플러시 필드는 이 제어 요소와 연관된 데이터 요소 위치가 영(zero) 값으로 채워져야 하는지 여부를 나타냄 -; 및선택 필드 - 상기 선택 필드는 어느 제1 피연산자 데이터 요소로부터의 데이터를 셔플링해야 하는지를 나타냄 - 를 포함하는 물품.
- 제27항에 있어서, 상기 제어 요소 각각은 소스 선택 필드를 더 포함하는 물품.
- 제21항에 있어서, 상기 시스템 판독가능 매체에 의해 저장된 상기 데이터는, 기계에 의해 실행되는 경우, 상기 기계로 하여금 상기 미리 정해진 기능을 수행하게 하는 컴퓨터 명령어를 나타내는 물품.
- L개의 데이터 요소의 집합을 갖는 제1 피연산자를 수신하는 단계;L개의 마스크의 집합을 갖는 제2 피연산자를 수신하는 단계 - 상기 L개의 마스크 각각은 상기 제2 피연산자에서 특정 위치를 차지하며, 결과에서 유사하게 위치한 데이터 요소 위치와 연관되어 있고, 상기 L개의 마스크 각각은 영으로 플러시 필드를 포함함 -;각각의 마스크에 대해, 영으로 플러시 필드가 설정되어 있는지 여부를 판정하고, 설정되어 있는 경우, 연관된 결과 데이터 요소 위치에 영(zero)을 삽입하는 단계; 및영으로 플러시 필드가 설정되어 있지 않은 경우, 상기 마스크에 의해 지정된 제1 피연산자 데이터 요소로부터의 데이터를 상기 연관된 결과 데이터 요소 위치로 셔플링하는 단계를 포함하는 방법.
- 제30항에 있어서, 상기 L개의 마스크 각각은 상기 제2 피연산자에서 특정 위치를 차지하며, 상기 결과에서 유사하게 위치한 데이터 요소 위치와 연관되어 있는 방법.
- 제31항에 있어서, 상기 L개의 마스크 각각은,영으로 플러시 필드 - 상기 영으로 플러시 필드는 이 제어 요소와 연관된 데이터 요소 위치가 영(zero) 값으로 채워져야 하는지 여부를 나타냄 -; 및선택 필드 - 상기 선택 필드는 어느 제1 피연산자 데이터 요소로부터의 데이터를 셔플링해야 하는지를 나타냄 - 를 포함하는 방법.
- 제32항에 있어서, 상기 마스크 각각은 소스 선택 필드를 더 포함하는 방법.
- 제33항에 있어서, 상기 제1 피연산자, 상기 제2 피연산자, 및 상기 결과는 각각 64비트 폭의 패킹된 데이터(packed data)를 포함하는 방법.
- 제33항에 있어서, 상기 제1 피연산자, 상기 제2 피연산자 및 상기 결과는 각각 128비트 폭의 패킹된 데이터를 포함하는 방법.
- L개의 데이터 요소의 집합을 갖는 제1 피연산자를 수신하는 단계;L개의 셔플 마스크(shuffle mask)의 집합을 갖는 제2 피연산자를 수신하는 단계 - 상기 L개의 셔플 마스크 각각은 결과에서 비슷하게 위치한 데이터 요소 위치와 연관되어 있음 -; 및각각의 개별적인 셔플 마스크에 대해, 영으로 플러시 필드가 설정되어 있는지 여부를 판정하고, 설정되어 있는 경우 연관된 결과 데이터 요소 위치에 영(zero)을 삽입하고, 그렇지 않은 경우 상기 개별적인 셔플 마스크에 의해 지정된 제1 피연산자 데이터 요소로부터의 데이터를 상기 연관된 결과 데이터 요소 위치로 셔플링하는 단계를 포함하는 방법.
- 제36항에 있어서, 상기 L개의 셔플 마스크 각각은,영으로 플러시 필드 - 상기 영으로 플러시 필드는 이 제어 요소와 연관된 데이터 요소 위치가 영(zero) 값으로 채워져야 하는지 여부를 나타냄 -; 및선택 필드 - 상기 선택 필드는 어느 제1 피연산자 데이터 요소로부터의 데이터를 셔플링해야 하는지를 나타냄 - 를 포함하는 방법.
- 제37항에 있어서, 상기 마스크 각각은 소스 선택 필드를 더 포함하는 방법.
- 복수의 소스 데이터 요소를 저장하는 제1 메모리 장소;복수의 제어 요소를 저장하는 제2 메모리 장소 - 상기 제어 요소 각각은 결과 데이터 요소 위치에 대응하고, 상기 제어 요소 각각은 영으로 플러시 필드 및 선택 필드를 포함함 -;상기 제2 메모리 장소에 연결된 제어 로직 - 상기 제어 로직은 상기 제어 요소의 값에 응답하여 복수의 선택 신호 및 복수의 영으로 플러시 신호(flush to zero signal)를 발생함 -;상기 제1 메모리 장소 및 상기 복수의 선택 신호에 연결된 제1 복수의 멀티플렉서 - 상기 제1 복수의 멀티플렉서 각각은 특정 결과 데이터 요소 위치에 대한 데이터 요소를 선택 신호에 응답하여 상기 특정 결과 데이터 요소 위치로 셔플링함 -; 및상기 제1 복수의 멀티플렉서 및 상기 복수의 영으로 플러시 신호에 연결된 제2 복수의 멀티플렉서 - 상기 제2 복수의 멀티플렉서 각각은 특정 결과 데이터 요소 위치와 연관되어 있으며, 상기 제2 복수의 멀티플렉서 각각은 영으로 플러시 신호가 활성인 경우 영(zero)을 출력하거나 그 특정 결과 데이터 요소 위치에 대해 셔플링된 데이터 요소를 출력함 - 를 포함하는 장치.
- 제39항에 있어서, 상기 복수의 소스 데이터 요소는 제1 패킹된 데이터 피연산자인 장치.
- 제40항에 있어서, 상기 복수의 제어 요소는 제2 패킹된 데이터 피연산자인 장치.
- 제40항에 있어서, 상기 제1 및 제2 메모리 장소는 단일 명령어 다중 데이터 레지스터(single instruction multiple data register)인 장치.
- 제42항에 있어서, 상기 제1 패킹된 피연산자는 64비트 길이이고 상기 소스 데이터 요소 각각은 한 바이트 폭이며,상기 제2 패킹된 피연산자는 64비트 길이이고 상기 제어 요소 각각은 한 바이트 폭인 장치.
- 제42항에 있어서, 상기 제1 패킹된 피연산자는 128비트 길이이고 상기 소스 데이터 요소 각각은 한 바이트 폭이며,상기 제2 패킹된 피연산자는 128비트 길이이고 상기 제어 요소 각각은 한 바이트 폭인 장치.
- L개의 셔플 마스크의 집합을 수신하는 제어 로직 - 각각의 셔플 마스크는 고유의 결과 데이터 요소 위치와 연관되어 있으며, 상기 제어 로직은 각각의 결과 데이터 요소 위치에 대한 선택 신호 및 영으로 플러시 신호를 제공함 -; 및상기 제어 로직에 연결된 L개의 멀티플렉서의 집합 - 각각의 멀티플렉서는 또한 고유의 결과 데이터 요소 위치와 연관되어 있으며, 각각의 멀티플렉서는 연관된 영으로 플러시 신호가 활성인 경우 영을 출력하고, 연관된 영으로 플러시 신호가 비활성인 경우 연관된 선택 신호에 기초하여 M개의 데이터 요소의 집합으로부터 셔플링된 데이터를 출력함 - 를 포함하는 장치.
- 제45항에 있어서, L개의 고유의 데이터 요소 위치를 갖는 레지스터 - 각각의 데이터 요소 위치는 연관된 멀티플렉서로부터의 출력을 보유함 - 를 더 포함하는 장치.
- 제46항에 있어서, L은 16이고 M은 16인 장치.
- 데이터 및 명령어를 저장하는 메모리; 및버스를 통해 상기 메모리에 연결된 프로세서 - 상기 프로세서는 셔플 동작을 수행하는 동작을 함 - 를 포함하며,상기 프로세서는,상기 메모리로부터 명령어를 수신하는 버스 유닛 - 상기 명령어는 제2 피연산자로부터의 L개의 셔플 제어 요소의 집합에 기초하여 제1 피연산자로부터의 L개의 데이터 요소 중 적어도 하나에 대해 데이터 셔플을 야기함 -; 및상기 버스 유닛에 연결된 실행 유닛 - 상기 실행 유닛은 상기 명령어를 실행함 - 을 포함하고,상기 명령어는 상기 실행 유닛으로 하여금,각각의 셔플 제어 요소에 대해, 영으로 플러시 필드가 설정되어 있지 않은 경우 상기 셔플 제어 요소에 의해 지정된 제1 피연산자 데이터 요소로부터의 데이터를 연관된 결과 데이터 요소 위치로 셔플링하고, 영으로 플러시 필드가 설정되어 있지 않은 경우 상기 연관된 결과 데이터 요소 위치에 영(zero)을 삽입하게 하는 시스템.
- 제48항에 있어서, 각각의 셔플 제어 요소는,영으로 플러시 필드 - 상기 영으로 플러시 필드는 이 셔플 제어 요소와 연관된 데이터 요소 위치가 영(zero) 값으로 채워져야 하는지 여부를 나타냄 -; 및선택 필드 - 상기 선택 필드는 어느 제1 피연산자 데이터 요소로부터의 데이터를 셔플링해야 하는지를 나타냄 - 를 포함하는 시스템.
- 제49항에 있어서, 각각의 셔플 제어 요소는 소스 선택 필드를 더 포함하는 시스템.
- 제48항에 있어서, 상기 명령어는 영으로 플러시 기능(flush to zero capability)을 갖는 패킹된 바이트 셔플 명령어(packed byte shuffle instruction)인 시스템.
- 제48항에 있어서, 각각의 데이터 요소는 한 바이트 폭이고, 각각의 셔플 명령 요소는 한 바이트 폭이며, L은 8인 시스템.
- 제48항에 있어서, 상기 제1 피연산자는 64비트 길이이고, 상기 제2 피연산자 는 64비트 길이인 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/611,344 US20040054877A1 (en) | 2001-10-29 | 2003-06-30 | Method and apparatus for shuffling data |
US10/611,344 | 2003-06-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20060040611A true KR20060040611A (ko) | 2006-05-10 |
KR100831472B1 KR100831472B1 (ko) | 2008-05-22 |
Family
ID=34062338
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR20057025313A KR100831472B1 (ko) | 2003-06-30 | 2004-06-24 | 데이터 셔플링을 위한 방법 및 장치 |
Country Status (11)
Country | Link |
---|---|
US (8) | US20040054877A1 (ko) |
EP (1) | EP1639452B1 (ko) |
JP (4) | JP4607105B2 (ko) |
KR (1) | KR100831472B1 (ko) |
CN (2) | CN101620525B (ko) |
AT (1) | ATE442624T1 (ko) |
DE (1) | DE602004023081D1 (ko) |
HK (1) | HK1083657A1 (ko) |
RU (1) | RU2316808C2 (ko) |
TW (1) | TWI270007B (ko) |
WO (1) | WO2005006183A2 (ko) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140113579A (ko) * | 2013-03-15 | 2014-09-24 | 인텔 코오퍼레이션 | 데이터 요소에 있는 비트들의 제로화를 위한 시스템, 장치, 및 방법 |
KR20190091489A (ko) * | 2016-12-13 | 2019-08-06 | 에이알엠 리미티드 | 복제 요소 명령어 |
KR102381644B1 (ko) * | 2020-11-27 | 2022-04-01 | 한국전자기술연구원 | 고속 이차원 FFT 신호처리를 위한 데이터 정렬 방법 및 이를 적용한 SoC |
US11947962B2 (en) | 2016-12-13 | 2024-04-02 | Arm Limited | Replicate partition instruction |
Families Citing this family (111)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040054877A1 (en) | 2001-10-29 | 2004-03-18 | Macy William W. | Method and apparatus for shuffling data |
US7739319B2 (en) * | 2001-10-29 | 2010-06-15 | Intel Corporation | Method and apparatus for parallel table lookup using SIMD instructions |
US7925891B2 (en) * | 2003-04-18 | 2011-04-12 | Via Technologies, Inc. | Apparatus and method for employing cryptographic functions to generate a message digest |
US7647557B2 (en) * | 2005-06-29 | 2010-01-12 | Intel Corporation | Techniques for shuffling video information |
US7971042B2 (en) * | 2005-09-28 | 2011-06-28 | Synopsys, Inc. | Microprocessor system and method for instruction-initiated recording and execution of instruction sequences in a dynamically decoupleable extended instruction pipeline |
US20070106883A1 (en) * | 2005-11-07 | 2007-05-10 | Choquette Jack H | Efficient Streaming of Un-Aligned Load/Store Instructions that Save Unused Non-Aligned Data in a Scratch Register for the Next Instruction |
US20070226469A1 (en) * | 2006-03-06 | 2007-09-27 | James Wilson | Permutable address processor and method |
US8290095B2 (en) | 2006-03-23 | 2012-10-16 | Qualcomm Incorporated | Viterbi pack instruction |
US20080071851A1 (en) * | 2006-09-20 | 2008-03-20 | Ronen Zohar | Instruction and logic for performing a dot-product operation |
US20080077772A1 (en) * | 2006-09-22 | 2008-03-27 | Ronen Zohar | Method and apparatus for performing select operations |
US9069547B2 (en) * | 2006-09-22 | 2015-06-30 | Intel Corporation | Instruction and logic for processing text strings |
US7536532B2 (en) * | 2006-09-27 | 2009-05-19 | International Business Machines Corporation | Merge operations of data arrays based on SIMD instructions |
JP4686435B2 (ja) * | 2006-10-27 | 2011-05-25 | 株式会社東芝 | 演算装置 |
US7962718B2 (en) * | 2007-10-12 | 2011-06-14 | Freescale Semiconductor, Inc. | Methods for performing extended table lookups using SIMD vector permutation instructions that support out-of-range index values |
US8700884B2 (en) * | 2007-10-12 | 2014-04-15 | Freescale Semiconductor, Inc. | Single-instruction multiple-data vector permutation instruction and method for performing table lookups for in-range index values and determining constant values for out-of-range index values |
US8515052B2 (en) | 2007-12-17 | 2013-08-20 | Wai Wu | Parallel signal processing system and method |
US8078836B2 (en) | 2007-12-30 | 2011-12-13 | Intel Corporation | Vector shuffle instructions operating on multiple lanes each having a plurality of data elements using a common set of per-lane control bits |
GB2456775B (en) * | 2008-01-22 | 2012-10-31 | Advanced Risc Mach Ltd | Apparatus and method for performing permutation operations on data |
US9513905B2 (en) | 2008-03-28 | 2016-12-06 | Intel Corporation | Vector instructions to enable efficient synchronization and parallel reduction operations |
WO2009144681A1 (en) * | 2008-05-30 | 2009-12-03 | Nxp B.V. | Vector shuffle with write enable |
US8195921B2 (en) * | 2008-07-09 | 2012-06-05 | Oracle America, Inc. | Method and apparatus for decoding multithreaded instructions of a microprocessor |
JP5375114B2 (ja) * | 2009-01-16 | 2013-12-25 | 富士通株式会社 | プロセッサ |
JP5438551B2 (ja) * | 2009-04-23 | 2014-03-12 | 新日鉄住金ソリューションズ株式会社 | 情報処理装置、情報処理方法及びプログラム |
US9507670B2 (en) * | 2010-06-14 | 2016-11-29 | Veeam Software Ag | Selective processing of file system objects for image level backups |
EP2691850B1 (en) * | 2011-03-30 | 2018-05-16 | NXP USA, Inc. | Integrated circuit device and methods of performing bit manipulation therefor |
US20120254588A1 (en) * | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask |
US20120278591A1 (en) * | 2011-04-27 | 2012-11-01 | Advanced Micro Devices, Inc. | Crossbar switch module having data movement instruction processor module and methods for implementing the same |
KR101918464B1 (ko) | 2011-09-14 | 2018-11-15 | 삼성전자 주식회사 | 스위즐드 버추얼 레지스터 기반의 프로세서 및 스위즐 패턴 제공 장치 |
WO2013057872A1 (ja) * | 2011-10-18 | 2013-04-25 | パナソニック株式会社 | シャッフルパターン生成回路、プロセッサ、シャッフルパターン生成方法、命令 |
WO2013089750A1 (en) * | 2011-12-15 | 2013-06-20 | Intel Corporation | Methods to optimize a program loop via vector instructions using a shuffle table and a blend table |
CN104011646B (zh) | 2011-12-22 | 2018-03-27 | 英特尔公司 | 用于产生按照数值顺序的连续整数的序列的处理器、方法、系统和指令 |
US10223112B2 (en) | 2011-12-22 | 2019-03-05 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset |
CN108681465B (zh) * | 2011-12-22 | 2022-08-02 | 英特尔公司 | 用于产生整数序列的处理器、处理器核及系统 |
CN104011644B (zh) | 2011-12-22 | 2017-12-08 | 英特尔公司 | 用于产生按照数值顺序的相差恒定跨度的整数的序列的处理器、方法、系统和指令 |
WO2013095541A1 (en) * | 2011-12-22 | 2013-06-27 | Intel Corporation | Apparatus and method for performing a permute operation |
WO2013095611A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Apparatus and method for performing a permute operation |
WO2013095610A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Apparatus and method for shuffling floating point or integer values |
WO2013095657A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Instruction and logic to provide vector blend and permute functionality |
JP5935319B2 (ja) * | 2011-12-26 | 2016-06-15 | 富士通株式会社 | 回路エミュレーション装置、回路エミュレーション方法及び回路エミュレーションプログラム |
US8683296B2 (en) | 2011-12-30 | 2014-03-25 | Streamscale, Inc. | Accelerated erasure coding system and method |
US8914706B2 (en) | 2011-12-30 | 2014-12-16 | Streamscale, Inc. | Using parity data for concurrent data authentication, correction, compression, and encryption |
US9329863B2 (en) | 2012-03-13 | 2016-05-03 | International Business Machines Corporation | Load register on condition with zero or immediate instruction |
JP5730812B2 (ja) * | 2012-05-02 | 2015-06-10 | 日本電信電話株式会社 | 演算装置、その方法およびプログラム |
US9268683B1 (en) * | 2012-05-14 | 2016-02-23 | Kandou Labs, S.A. | Storage method and apparatus for random access memory using codeword storage |
US9953436B2 (en) | 2012-06-26 | 2018-04-24 | BTS Software Solutions, LLC | Low delay low complexity lossless compression system |
WO2014004486A2 (en) * | 2012-06-26 | 2014-01-03 | Dunling Li | Low delay low complexity lossless compression system |
US9218182B2 (en) * | 2012-06-29 | 2015-12-22 | Intel Corporation | Systems, apparatuses, and methods for performing a shuffle and operation (shuffle-op) |
US9342479B2 (en) * | 2012-08-23 | 2016-05-17 | Qualcomm Incorporated | Systems and methods of data extraction in a vector processor |
US9715385B2 (en) | 2013-01-23 | 2017-07-25 | International Business Machines Corporation | Vector exception code |
US9778932B2 (en) * | 2013-01-23 | 2017-10-03 | International Business Machines Corporation | Vector generate mask instruction |
US9471308B2 (en) | 2013-01-23 | 2016-10-18 | International Business Machines Corporation | Vector floating point test data class immediate instruction |
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 |
US9405539B2 (en) * | 2013-07-31 | 2016-08-02 | Intel Corporation | Providing vector sub-byte decompression functionality |
US11768689B2 (en) | 2013-08-08 | 2023-09-26 | Movidius Limited | Apparatus, systems, and methods for low power computational imaging |
US10001993B2 (en) | 2013-08-08 | 2018-06-19 | Linear Algebra Technologies Limited | Variable-length instruction buffer management |
CN103501348A (zh) * | 2013-10-16 | 2014-01-08 | 华仪风能有限公司 | 一种风力发电机组主控系统与监控系统的通讯方法及系统 |
US9582419B2 (en) * | 2013-10-25 | 2017-02-28 | Arm Limited | Data processing device and method for interleaved storage of data elements |
KR102122406B1 (ko) | 2013-11-06 | 2020-06-12 | 삼성전자주식회사 | 셔플 명령어 처리 장치 및 방법 |
US9880845B2 (en) * | 2013-11-15 | 2018-01-30 | Qualcomm Incorporated | Vector processing engines (VPEs) employing format conversion circuitry in data flow paths between vector data memory and execution units to provide in-flight format-converting of input vector data to execution units for vector processing operations, and related vector processor systems and methods |
KR101898791B1 (ko) * | 2013-12-23 | 2018-09-13 | 인텔 코포레이션 | 멀티 스트랜드 비순차 프로세서에서 회수를 위한 명령어들을 식별하는 명령어 및 로직 |
US9552209B2 (en) * | 2013-12-27 | 2017-01-24 | Intel Corporation | Functional unit for instruction execution pipeline capable of shifting different chunks of a packed data operand by different amounts |
US9274835B2 (en) | 2014-01-06 | 2016-03-01 | International Business Machines Corporation | Data shuffling in a non-uniform memory access device |
US9256534B2 (en) | 2014-01-06 | 2016-02-09 | International Business Machines Corporation | Data shuffling in a non-uniform memory access device |
JP6374975B2 (ja) * | 2014-03-27 | 2018-08-15 | インテル・コーポレーション | 連続ソースエレメントを複数のマスクされていない結果エレメントにストアすると共に、複数のマスクされた結果エレメントに伝搬するプロセッサ、方法、システム、及び命令 |
CN106030514B (zh) * | 2014-03-28 | 2022-09-13 | 英特尔公司 | 用于执行采用传播的被屏蔽源元素存储指令的处理器及其方法 |
US9996579B2 (en) * | 2014-06-26 | 2018-06-12 | Amazon Technologies, Inc. | Fast color searching |
US10169803B2 (en) | 2014-06-26 | 2019-01-01 | Amazon Technologies, Inc. | Color based social networking recommendations |
US9424039B2 (en) * | 2014-07-09 | 2016-08-23 | Intel Corporation | Instruction for implementing vector loops of iterations having an iteration dependent condition |
WO2016016726A2 (en) * | 2014-07-30 | 2016-02-04 | Linear Algebra Technologies Limited | Vector processor |
US9619214B2 (en) | 2014-08-13 | 2017-04-11 | International Business Machines Corporation | Compiler optimizations for vector instructions |
JP2017199045A (ja) * | 2014-09-02 | 2017-11-02 | パナソニックIpマネジメント株式会社 | プロセッサ及びデータ並び替え方法 |
US9785649B1 (en) | 2014-09-02 | 2017-10-10 | Amazon Technologies, Inc. | Hue-based color naming for an image |
US10133570B2 (en) | 2014-09-19 | 2018-11-20 | Intel Corporation | Processors, methods, systems, and instructions to select and consolidate active data elements in a register under mask into a least significant portion of result, and to indicate a number of data elements consolidated |
EP3001307B1 (en) * | 2014-09-25 | 2019-11-13 | Intel Corporation | Bit shuffle processors, methods, systems, and 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 |
US10296334B2 (en) * | 2014-12-27 | 2019-05-21 | Intel Corporation | Method and apparatus for performing a vector bit gather |
US10296489B2 (en) | 2014-12-27 | 2019-05-21 | Intel Corporation | Method and apparatus for performing a vector bit shuffle |
KR20160139823A (ko) | 2015-05-28 | 2016-12-07 | 손규호 | 두 키 값과 바이트 중첩을 이용한 다중 자료형 데이터 패킹 또는 패킹 복원 방법 |
US10001995B2 (en) * | 2015-06-02 | 2018-06-19 | Intel Corporation | Packed data alignment plus compute instructions, processors, methods, and systems |
CN105022609A (zh) * | 2015-08-05 | 2015-11-04 | 浪潮(北京)电子信息产业有限公司 | 一种数据混洗方法和数据混洗单元 |
US9880821B2 (en) | 2015-08-17 | 2018-01-30 | International Business Machines Corporation | Compiler optimizations for vector operations that are reformatting-resistant |
US10503502B2 (en) | 2015-09-25 | 2019-12-10 | Intel Corporation | Data element rearrangement, processors, methods, systems, and instructions |
US10620957B2 (en) | 2015-10-22 | 2020-04-14 | Texas Instruments Incorporated | Method for forming constant extensions in the same execute packet in a VLIW processor |
US9946541B2 (en) * | 2015-12-18 | 2018-04-17 | Intel Corporation | Systems, apparatuses, and method for strided access |
US20170177350A1 (en) * | 2015-12-18 | 2017-06-22 | Intel Corporation | Instructions and Logic for Set-Multiple-Vector-Elements Operations |
US10338920B2 (en) * | 2015-12-18 | 2019-07-02 | Intel Corporation | Instructions and logic for get-multiple-vector-elements operations |
US20170177354A1 (en) * | 2015-12-18 | 2017-06-22 | Intel Corporation | Instructions and Logic for Vector-Based Bit Manipulation |
US20170177351A1 (en) * | 2015-12-18 | 2017-06-22 | Intel Corporation | Instructions and Logic for Even and Odd Vector Get Operations |
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 |
US10565207B2 (en) * | 2016-04-12 | 2020-02-18 | Hsilin Huang | Method, system and program product for mask-based compression of a sparse matrix |
US10331830B1 (en) * | 2016-06-13 | 2019-06-25 | Apple Inc. | Heterogeneous logic gate simulation using SIMD instructions |
US10592468B2 (en) * | 2016-07-13 | 2020-03-17 | Qualcomm Incorporated | Shuffler circuit for lane shuffle in SIMD architecture |
US10169040B2 (en) * | 2016-11-16 | 2019-01-01 | Ceva D.S.P. Ltd. | System and method for sample rate conversion |
CN106775587B (zh) | 2016-11-30 | 2020-04-14 | 上海兆芯集成电路有限公司 | 计算机指令的执行方法以及使用此方法的装置 |
US9959247B1 (en) | 2017-02-17 | 2018-05-01 | Google Llc | Permuting in a matrix-vector processor |
US10140239B1 (en) | 2017-05-23 | 2018-11-27 | Texas Instruments Incorporated | Superimposing butterfly network controls for pattern combinations |
US11194630B2 (en) | 2017-05-30 | 2021-12-07 | Microsoft Technology Licensing, Llc | Grouped shuffling of partition vertices |
US10970081B2 (en) * | 2017-06-29 | 2021-04-06 | Advanced Micro Devices, Inc. | Stream processor with decoupled crossbar for cross lane operations |
CN109324981B (zh) * | 2017-07-31 | 2023-08-15 | 伊姆西Ip控股有限责任公司 | 高速缓存管理系统和方法 |
US10460416B1 (en) * | 2017-10-17 | 2019-10-29 | Xilinx, Inc. | Inline image preprocessing for convolution operations using a matrix multiplier on an integrated circuit |
US10956125B2 (en) | 2017-12-21 | 2021-03-23 | International Business Machines Corporation | Data shuffling with hierarchical tuple spaces |
US10891274B2 (en) | 2017-12-21 | 2021-01-12 | International Business Machines Corporation | Data shuffling with hierarchical tuple spaces |
US11789734B2 (en) * | 2018-08-30 | 2023-10-17 | Advanced Micro Devices, Inc. | Padded vectorization with compile time known masks |
US10620958B1 (en) | 2018-12-03 | 2020-04-14 | Advanced Micro Devices, Inc. | Crossbar between clients and a cache |
CN109783054B (zh) * | 2018-12-20 | 2021-03-09 | 中国科学院计算技术研究所 | 一种rsfq fft处理器的蝶形运算处理方法及系统 |
US11200239B2 (en) | 2020-04-24 | 2021-12-14 | International Business Machines Corporation | Processing multiple data sets to generate a merged location-based data set |
US20220197974A1 (en) * | 2020-12-22 | 2022-06-23 | Intel Corporation | Processors, methods, systems, and instructions to select and store data elements from two source two-dimensional arrays indicated by permute control elements in a result two-dimensional array |
CN114297138B (zh) * | 2021-12-10 | 2023-12-26 | 龙芯中科技术股份有限公司 | 向量混洗方法、处理器及电子设备 |
CN115061731B (zh) * | 2022-06-23 | 2023-05-23 | 摩尔线程智能科技(北京)有限责任公司 | 混洗电路和方法、以及芯片和集成电路装置 |
Family Cites Families (84)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3711692A (en) | 1971-03-15 | 1973-01-16 | Goodyear Aerospace Corp | Determination of number of ones in a data field by addition |
US3723715A (en) | 1971-08-25 | 1973-03-27 | Ibm | Fast modulo threshold operator binary adder for multi-number additions |
US4139899A (en) | 1976-10-18 | 1979-02-13 | Burroughs Corporation | Shift network having a mask generator and a rotator |
US4161784A (en) | 1978-01-05 | 1979-07-17 | Honeywell Information Systems, Inc. | Microprogrammable floating point arithmetic unit capable of performing arithmetic operations on long and short operands |
US4418383A (en) | 1980-06-30 | 1983-11-29 | International Business Machines Corporation | Data flow component for processor and microprocessor systems |
US4393468A (en) | 1981-03-26 | 1983-07-12 | Advanced Micro Devices, Inc. | Bit slice microprogrammable processor for signal processing applications |
JPS57209570A (en) | 1981-06-19 | 1982-12-22 | Fujitsu Ltd | Vector processing device |
US4498177A (en) | 1982-08-30 | 1985-02-05 | Sperry Corporation | M Out of N code checker circuit |
US4569016A (en) | 1983-06-30 | 1986-02-04 | International Business Machines Corporation | Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system |
US4707800A (en) | 1985-03-04 | 1987-11-17 | Raytheon Company | Adder/substractor for variable length numbers |
JPS6297060A (ja) | 1985-10-23 | 1987-05-06 | Mitsubishi Electric Corp | デイジタルシグナルプロセツサ |
US4989168A (en) | 1987-11-30 | 1991-01-29 | Fujitsu Limited | Multiplying unit in a computer system, capable of population counting |
US5019968A (en) | 1988-03-29 | 1991-05-28 | Yulan Wang | Three-dimensional vector processor |
EP0363176B1 (en) | 1988-10-07 | 1996-02-14 | International Business Machines Corporation | Word organised data processors |
US4903228A (en) | 1988-11-09 | 1990-02-20 | International Business Machines Corporation | Single cycle merge/logic unit |
KR920007505B1 (ko) | 1989-02-02 | 1992-09-04 | 정호선 | 신경회로망을 이용한 곱셈기 |
US5081698A (en) | 1989-02-14 | 1992-01-14 | Intel Corporation | Method and apparatus for graphics display data manipulation |
US5497497A (en) | 1989-11-03 | 1996-03-05 | Compaq Computer Corp. | Method and apparatus for resetting multiple processors using a common ROM |
US5168571A (en) | 1990-01-24 | 1992-12-01 | International Business Machines Corporation | System for aligning bytes of variable multi-bytes length operand based on alu byte length and a number of unprocessed byte data |
FR2666472B1 (fr) | 1990-08-31 | 1992-10-16 | Alcatel Nv | Systeme de memorisation temporaire d'information comprenant une memoire tampon enregistrant des donnees en blocs de donnees de longueur fixe ou variable. |
US5268995A (en) | 1990-11-21 | 1993-12-07 | Motorola, Inc. | Method for executing graphics Z-compare and pixel merge instructions in a data processor |
US5680161A (en) | 1991-04-03 | 1997-10-21 | Radius Inc. | Method and apparatus for high speed graphics data compression |
US5187679A (en) | 1991-06-05 | 1993-02-16 | International Business Machines Corporation | Generalized 7/3 counters |
US5321810A (en) | 1991-08-21 | 1994-06-14 | Digital Equipment Corporation | Address method for computer graphics system |
US5423010A (en) | 1992-01-24 | 1995-06-06 | C-Cube Microsystems | Structure and method for packing and unpacking a stream of N-bit data to and from a stream of N-bit data words |
JP2642039B2 (ja) | 1992-05-22 | 1997-08-20 | インターナショナル・ビジネス・マシーンズ・コーポレイション | アレイ・プロセッサ |
US5426783A (en) | 1992-11-02 | 1995-06-20 | Amdahl Corporation | System for processing eight bytes or less by the move, pack and unpack instruction of the ESA/390 instruction set |
US5408670A (en) | 1992-12-18 | 1995-04-18 | Xerox Corporation | Performing arithmetic in parallel on composite operands with packed multi-bit components |
US5465374A (en) | 1993-01-12 | 1995-11-07 | International Business Machines Corporation | Processor for processing data string by byte-by-byte |
US5568415A (en) | 1993-02-19 | 1996-10-22 | Digital Equipment Corporation | Content addressable memory having a pair of memory cells storing don't care states for address translation |
US5524256A (en) | 1993-05-07 | 1996-06-04 | Apple Computer, Inc. | Method and system for reordering bytes in a data stream |
JPH0721034A (ja) | 1993-06-28 | 1995-01-24 | Fujitsu Ltd | 文字列複写処理方法 |
US5625374A (en) * | 1993-09-07 | 1997-04-29 | Apple Computer, Inc. | Method for parallel interpolation of images |
US5390135A (en) | 1993-11-29 | 1995-02-14 | Hewlett-Packard | Parallel shift and add circuit and method |
US5487159A (en) | 1993-12-23 | 1996-01-23 | Unisys Corporation | System for processing shift, mask, and merge operations in one instruction |
US5399135A (en) | 1993-12-29 | 1995-03-21 | Azzouni; Paul | Forearm workout bar |
US5781457A (en) | 1994-03-08 | 1998-07-14 | Exponential Technology, Inc. | Merge/mask, rotate/shift, and boolean operations from two instruction sets executed in a vectored mux on a dual-ALU |
US5594437A (en) | 1994-08-01 | 1997-01-14 | Motorola, Inc. | Circuit and method of unpacking a serial bitstream |
US5579253A (en) | 1994-09-02 | 1996-11-26 | Lee; Ruby B. | Computer multiply instruction with a subresult selection option |
US6275834B1 (en) | 1994-12-01 | 2001-08-14 | Intel Corporation | Apparatus for performing packed shift operations |
US5819101A (en) | 1994-12-02 | 1998-10-06 | Intel Corporation | Method for packing a plurality of packed data elements in response to a pack instruction |
US5636352A (en) | 1994-12-16 | 1997-06-03 | International Business Machines Corporation | Method and apparatus for utilizing condensed instructions |
TW388982B (en) | 1995-03-31 | 2000-05-01 | Samsung Electronics Co Ltd | Memory controller which executes read and write commands out of order |
GB9509989D0 (en) | 1995-05-17 | 1995-07-12 | Sgs Thomson Microelectronics | Manipulation of data |
US6381690B1 (en) | 1995-08-01 | 2002-04-30 | Hewlett-Packard Company | Processor for performing subword permutations and combinations |
US7085795B2 (en) * | 2001-10-29 | 2006-08-01 | Intel Corporation | Apparatus and method for efficient filtering and convolution of content data |
CN103092564B (zh) | 1995-08-31 | 2016-04-06 | 英特尔公司 | 执行乘加指令的处理器和对分组数据执行乘加操作的系统 |
US5819117A (en) | 1995-10-10 | 1998-10-06 | Microunity Systems Engineering, Inc. | Method and system for facilitating byte ordering interfacing of a computer system |
US5838984A (en) | 1996-08-19 | 1998-11-17 | Samsung Electronics Co., Ltd. | Single-instruction-multiple-data processing using multiple banks of vector registers |
US5909572A (en) | 1996-12-02 | 1999-06-01 | Compaq Computer Corp. | System and method for conditionally moving an operand from a source register to a destination register |
US6061521A (en) * | 1996-12-02 | 2000-05-09 | Compaq Computer Corp. | Computer having multimedia operations executable as two distinct sets of operations within a single instruction cycle |
DE19654846A1 (de) | 1996-12-27 | 1998-07-09 | Pact Inf Tech Gmbh | Verfahren zum selbständigen dynamischen Umladen von Datenflußprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o. dgl.) |
US5933650A (en) | 1997-10-09 | 1999-08-03 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
US6223277B1 (en) | 1997-11-21 | 2001-04-24 | Texas Instruments Incorporated | Data processing circuit with packed data structure capability |
US6307553B1 (en) | 1998-03-31 | 2001-10-23 | Mohammad Abdallah | System and method for performing a MOVHPS-MOVLPS instruction |
US6122725A (en) * | 1998-03-31 | 2000-09-19 | Intel Corporation | Executing partial-width packed data instructions |
US6192467B1 (en) | 1998-03-31 | 2001-02-20 | Intel Corporation | Executing partial-width packed data instructions |
US6041404A (en) | 1998-03-31 | 2000-03-21 | Intel Corporation | Dual function system and method for shuffling packed data elements |
US6211892B1 (en) | 1998-03-31 | 2001-04-03 | Intel Corporation | System and method for performing an intra-add operation |
US6115812A (en) | 1998-04-01 | 2000-09-05 | Intel Corporation | Method and apparatus for efficient vertical SIMD computations |
US6288723B1 (en) | 1998-04-01 | 2001-09-11 | Intel Corporation | Method and apparatus for converting data format to a graphics card |
US5996057A (en) * | 1998-04-17 | 1999-11-30 | Apple | Data processing system and method of permutation with replication within a vector register file |
US6098087A (en) | 1998-04-23 | 2000-08-01 | Infineon Technologies North America Corp. | Method and apparatus for performing shift operations on packed data |
US6263426B1 (en) | 1998-04-30 | 2001-07-17 | Intel Corporation | Conversion from packed floating point data to packed 8-bit integer data in different architectural registers |
JP3869947B2 (ja) * | 1998-08-04 | 2007-01-17 | 株式会社日立製作所 | 並列処理プロセッサ、および、並列処理方法 |
US20020002666A1 (en) * | 1998-10-12 | 2002-01-03 | Carole Dulong | Conditional operand selection using mask operations |
US6405300B1 (en) * | 1999-03-22 | 2002-06-11 | Sun Microsystems, Inc. | Combining results of selectively executed remaining sub-instructions with that of emulated sub-instruction causing exception in VLIW processor |
US6484255B1 (en) | 1999-09-20 | 2002-11-19 | Intel Corporation | Selective writing of data elements from packed data based upon a mask using predication |
US6446198B1 (en) | 1999-09-30 | 2002-09-03 | Apple Computer, Inc. | Vectorized table lookup |
US6546480B1 (en) | 1999-10-01 | 2003-04-08 | Hitachi, Ltd. | Instructions for arithmetic operations on vectored data |
US20050188182A1 (en) * | 1999-12-30 | 2005-08-25 | Texas Instruments Incorporated | Microprocessor having a set of byte intermingling instructions |
US6745319B1 (en) | 2000-02-18 | 2004-06-01 | Texas Instruments Incorporated | Microprocessor with instructions for shuffling and dealing data |
EP1261912A2 (en) * | 2000-03-08 | 2002-12-04 | Sun Microsystems, Inc. | Processing architecture having sub-word shuffling and opcode modification |
WO2001069938A1 (en) | 2000-03-15 | 2001-09-20 | Digital Accelerator Corporation | Coding of digital video with high motion content |
US7155601B2 (en) | 2001-02-14 | 2006-12-26 | Intel Corporation | Multi-element operand sub-portion shuffle instruction execution |
KR100446235B1 (ko) | 2001-05-07 | 2004-08-30 | 엘지전자 주식회사 | 다중 후보를 이용한 움직임 벡터 병합 탐색 방법 |
US7162607B2 (en) * | 2001-08-31 | 2007-01-09 | Intel Corporation | Apparatus and method for a data storage device with a plurality of randomly located data |
US20040054877A1 (en) | 2001-10-29 | 2004-03-18 | Macy William W. | Method and apparatus for shuffling data |
US7739319B2 (en) | 2001-10-29 | 2010-06-15 | Intel Corporation | Method and apparatus for parallel table lookup using SIMD instructions |
US7631025B2 (en) * | 2001-10-29 | 2009-12-08 | Intel Corporation | Method and apparatus for rearranging data between multiple registers |
US7272622B2 (en) | 2001-10-29 | 2007-09-18 | Intel Corporation | Method and apparatus for parallel shift right merge of data |
US7685212B2 (en) | 2001-10-29 | 2010-03-23 | Intel Corporation | Fast full search motion estimation with SIMD merge instruction |
US7343389B2 (en) * | 2002-05-02 | 2008-03-11 | Intel Corporation | Apparatus and method for SIMD modular multiplication |
US6914938B2 (en) | 2002-06-18 | 2005-07-05 | Motorola, Inc. | Interlaced video motion estimation |
-
2003
- 2003-06-30 US US10/611,344 patent/US20040054877A1/en not_active Abandoned
-
2004
- 2004-06-24 RU RU2006102503A patent/RU2316808C2/ru active
- 2004-06-24 EP EP04756204A patent/EP1639452B1/en active Active
- 2004-06-24 CN CN200910130582.4A patent/CN101620525B/zh active Active
- 2004-06-24 JP JP2006515370A patent/JP4607105B2/ja active Active
- 2004-06-24 AT AT04756204T patent/ATE442624T1/de not_active IP Right Cessation
- 2004-06-24 WO PCT/US2004/020601 patent/WO2005006183A2/en active Application Filing
- 2004-06-24 CN CNB2004800184438A patent/CN100492278C/zh active Active
- 2004-06-24 DE DE602004023081T patent/DE602004023081D1/de active Active
- 2004-06-24 KR KR20057025313A patent/KR100831472B1/ko active IP Right Grant
- 2004-06-28 TW TW93118830A patent/TWI270007B/zh not_active IP Right Cessation
-
2006
- 2006-05-18 HK HK06105784.3A patent/HK1083657A1/xx not_active IP Right Cessation
-
2009
- 2009-03-31 US US12/387,958 patent/US8214626B2/en not_active Expired - Lifetime
-
2010
- 2010-08-11 JP JP2010180413A patent/JP5490645B2/ja active Active
- 2010-10-08 US US12/901,336 patent/US8225075B2/en not_active Expired - Lifetime
-
2011
- 2011-03-02 JP JP2011045001A patent/JP5535965B2/ja active Active
-
2012
- 2012-07-02 US US13/540,576 patent/US9477472B2/en not_active Expired - Lifetime
- 2012-09-10 US US13/608,953 patent/US8688959B2/en not_active Expired - Lifetime
-
2013
- 2013-05-31 JP JP2013115254A patent/JP5567181B2/ja active Active
-
2014
- 2014-12-30 US US14/586,581 patent/US9229719B2/en not_active Expired - Fee Related
- 2014-12-30 US US14/586,558 patent/US9229718B2/en not_active Expired - Fee Related
-
2016
- 2016-10-21 US US15/299,914 patent/US10152323B2/en not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140113579A (ko) * | 2013-03-15 | 2014-09-24 | 인텔 코오퍼레이션 | 데이터 요소에 있는 비트들의 제로화를 위한 시스템, 장치, 및 방법 |
KR20190091489A (ko) * | 2016-12-13 | 2019-08-06 | 에이알엠 리미티드 | 복제 요소 명령어 |
US11947962B2 (en) | 2016-12-13 | 2024-04-02 | Arm Limited | Replicate partition instruction |
KR102381644B1 (ko) * | 2020-11-27 | 2022-04-01 | 한국전자기술연구원 | 고속 이차원 FFT 신호처리를 위한 데이터 정렬 방법 및 이를 적용한 SoC |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100831472B1 (ko) | 데이터 셔플링을 위한 방법 및 장치 | |
US7739319B2 (en) | Method and apparatus for parallel table lookup using SIMD instructions | |
US7631025B2 (en) | Method and apparatus for rearranging data between multiple registers | |
US10684855B2 (en) | Method and apparatus for performing a shift and exclusive or operation in a single instruction | |
CN107741842B (zh) | 用于执行点积运算的指令和逻辑 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20130503 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20140502 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20150430 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20160427 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20170504 Year of fee payment: 10 |
|
FPAY | Annual fee payment |
Payment date: 20180427 Year of fee payment: 11 |
|
FPAY | Annual fee payment |
Payment date: 20190429 Year of fee payment: 12 |