KR20200028965A - 데이터 처리장치에서의 벡터 인터리빙 - Google Patents
데이터 처리장치에서의 벡터 인터리빙 Download PDFInfo
- Publication number
- KR20200028965A KR20200028965A KR1020207003377A KR20207003377A KR20200028965A KR 20200028965 A KR20200028965 A KR 20200028965A KR 1020207003377 A KR1020207003377 A KR 1020207003377A KR 20207003377 A KR20207003377 A KR 20207003377A KR 20200028965 A KR20200028965 A KR 20200028965A
- Authority
- KR
- South Korea
- Prior art keywords
- data items
- vector
- input data
- source register
- data
- Prior art date
Links
- 239000013598 vector Substances 0.000 title claims abstract description 179
- 238000000034 method Methods 0.000 claims abstract description 60
- 230000001419 dependent effect Effects 0.000 claims abstract description 36
- 230000008569 process Effects 0.000 claims description 19
- 230000004044 response Effects 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 10
- OAICVXFJPJFONN-UHFFFAOYSA-N Phosphorus Chemical compound [P] OAICVXFJPJFONN-UHFFFAOYSA-N 0.000 claims 1
- 229910052698 phosphorus Inorganic materials 0.000 claims 1
- 239000011574 phosphorus Substances 0.000 claims 1
- 238000005516 engineering process Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000001066 destructive effect Effects 0.000 description 2
- 238000012797 qualification Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction 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/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Error Detection And Correction (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
장치들, 명령들, 이 장치들의 동작 방법들, 및 시뮬레이터 구현들을 포함하는, 데이터 처리장치에서의 벡터 인터리빙 기술들이 개시되어 있다. 벡터 인터리빙 명령은, 제1 소스 레지스터, 제2 소스 레지스터, 및 목적지 레지스터를 지정한다. 입력 데이터 항목들의 제1 세트는 제1 소스 레지스터로부터 검색되고, 입력 데이터 항목들의 제2 세트는 제2 소스 레지스터로부터 검색된다. 데이터 처리 연산은, 입력 데이터 항목들의 제1 및 제2 세트로부터 취해진 선택된 입력 데이터 항목쌍들에 관해 수행되어 결과 데이터 항목들의 세트를 발생하고, 이들은 목적지 레지스터에 결과 데이터 벡터로서 기억된다. 제1 소스 레지스터 의존 결과 데이터 항목들은 목적지 데이터 벡터에서 교대 위치들의 제1 세트에 기억되고, 제2 소스 레지스터 의존 결과 데이터 항목들은 목적지 데이터 벡터에서 교대 위치들의 제2 세트에 기억된다.
Description
본 개시내용은 데이터 처리장치에 관한 것이다. 보다 구체적으로는, 본 개시내용은, 데이터 처리장치가 실시할 수도 있는 벡터 처리 연산들에 관한 것이다.
입력 데이터 항목들의 세트에 관해 데이터 처리 연산들을 수행하는 데이터 처리장치에서는, 벡터의 폭에 걸쳐 데이터 항목들의 그룹들에 대해, 예를 들면 이들이 교대로 처리될 순차적 처리 해결방법을 취하는 것보다는, 병렬로 동일한 데이터 처리가 시행되는 벡터화 방식으로, 입력 데이터 항목들을 처리할 수 있는 경우, 보다 큰 처리 효율과 스루풋을 얻는다. 그럼에도 불구하고, 데이터 처리를 소스 레지스터들로부터의 입력 데이터 항목들에 적용하고 그 결과들을 목적지 레지스터에 기억하는 것에 대한 벡터화 해결방법은, 수행될 수 있는 데이터 처리의 종들과, 그 벡터화 해결방법의 이점들을 가치없게 할 수 있는 과도한 복잡성 없이, 실행 가능한 데이터 처리장치를 제공할 경우 그 데이터 처리 연산들의 오퍼랜드들을 형성하는 입력 데이터 항목들의 조합들에 관해, 특정한 제한들을 부과할 수 있다.
일 실시예에서의 장치는, 명령들을 디코딩 하는 명령 디코더 회로소자; 및 입력 데이터 벡터들에서의 각각의 위치들에서 복수의 입력 데이터 항목들을 포함하는 입력 데이터 벡터들에 명령들에 의해 지정된 벡터 처리 연산들을 선택적으로 적용하는 데이터 처리 회로소자를 구비하고, 상기 명령 디코더 회로소자는, 제1 소스 레지스터, 제2 소스 레지스터, 및 목적지 레지스터를 지정하는 벡터 인터리빙 명령에 응답하여, 제어신호들을 발생하여 데이터 처리 회로소자를 제어하여: 입력 데이터 항목들의 제1 세트를 제1 소스 레지스터로부터 검색하고; 입력 데이터 항목들의 제2 세트를 제2 소스 레지스터로부터 검색하고; 입력 데이터 항목들의 제1 및 제2 세트로부터 취해진 적어도 선택된 입력 데이터 항목쌍들에 관해 데이터 처리 연산을 수행하여 결과 데이터 항목들의 세트를 발생하며; 목적지 레지스터에, 결과 데이터 벡터로서 결과 데이터 항목들의 세트를 기억하는, 벡터 인터리빙 프로세스를 실시하는 명령 디코더 회로소자이고, 제1 소스 레지스터 콘텐트 의존성을 갖는 제1 소스 레지스터 의존 결과 데이터 항목들은 목적지 데이터 벡터에서 교대 위치들의 제1 세트에 기억되고, 제2 소스 레지스터 콘텐트 의존성을 갖는 제2 소스 레지스터 의존 결과 데이터 항목들은 목적지 데이터 벡터에서 교대 위치들의 제2 세트에 기억된다.
다른 실시예에서의 데이터 처리장치의 동작 방법은, 명령들을 디코딩 하는 단계; 입력 데이터 벡터들에서의 각각의 위치들에서 복수의 입력 데이터 항목들을 포함하는 입력 데이터 벡터들에 명령들에 의해 지정된 벡터 처리 연산들을 선택적으로 적용하는 단계; 상기 장치의 제1 소스 레지스터, 제2 소스 레지스터, 및 목적지 레지스터를 지정하는 벡터 인터리빙 명령에 응답하여, 제어신호들을 발생하여 상기 장치의 데이터 처리 회로소자를 제어하여: 입력 데이터 항목들의 제1 세트를 제1 소스 레지스터로부터 검색하는 것; 입력 데이터 항목들의 제2 세트를 제2 소스 레지스터로부터 검색하는 것; 입력 데이터 항목들의 제1 및 제2 세트로부터 취해진 적어도 선택된 입력 데이터 항목쌍들에 관해 데이터 처리 연산을 수행하여 결과 데이터 항목들의 세트를 발생하는 것; 및 목적지 레지스터에, 결과 데이터 벡터로서 결과 데이터 항목들의 세트를 기억하는 것을 포함하는, 벡터 인터리빙 프로세스를 실시하는 단계를 포함하고, 제1 소스 레지스터 콘텐트 의존성을 갖는 제1 소스 레지스터 의존 결과 데이터 항목들은 목적지 데이터 벡터에서 교대 위치들의 제1 세트에 기억되고, 제2 소스 레지스터 콘텐트 의존성을 갖는 제2 소스 레지스터 의존 결과 데이터 항목들은 목적지 데이터 벡터에서 교대 위치들의 제2 세트에 기억된다.
다른 실시예에서의 장치는, 명령들을 디코딩 하는 수단; 입력 데이터 벡터들에서의 각각의 위치들에서 복수의 입력 데이터 항목들을 포함하는 입력 데이터 벡터들에 명령들에 의해 지정된 벡터 처리 연산들을 선택적으로 적용하는 수단; 상기 장치의 제1 소스 레지스터, 제2 소스 레지스터, 및 목적지 레지스터를 지정하는 벡터 인터리빙 명령에 응답하여, 제어신호들을 발생하여 상기 장치의 데이터 처리 회로소자를 제어하여: 입력 데이터 항목들의 제1 세트를 제1 소스 레지스터로부터 검색하는 수단; 입력 데이터 항목들의 제2 세트를 제2 소스 레지스터로부터 검색하는 수단; 입력 데이터 항목들의 제1 및 제2 세트로부터 취해진 적어도 선택된 입력 데이터 항목쌍들에 관해 데이터 처리 연산을 수행하여 결과 데이터 항목들의 세트를 발생하는 수단; 및 결과 데이터 항목들의 세트를 목적지 레지스터에 결과 데이터 벡터로서 기억하는 수단을 포함하는, 벡터 인터리빙 프로세스를 실시하는 수단을 구비하고, 제1 소스 레지스터 콘텐트 의존성을 갖는 제1 소스 레지스터 의존 결과 데이터 항목들은 목적지 데이터 벡터에서 교대 위치들의 제1 세트에 기억되고, 제2 소스 레지스터 콘텐트 의존성을 갖는 제2 소스 레지스터 의존 결과 데이터 항목들은 목적지 데이터 벡터에서 교대 위치들의 제2 세트에 기억된다.
다른 실시예에서는, 호스트 데이터 처리장치를 제어하여: 명령들을 디코딩 하는 명령 디코딩 프로그램 로직; 및 입력 데이터 벡터 구조들에서의 각각의 위치들에서 복수의 입력 데이터 항목들을 포함하는 입력 데이터 벡터 구조들에 명령들에 의해 지정된 벡터 처리 연산들을 선택적으로 적용하는 데이터 처리 프로그램 로직을 포함하는, 명령들 실행 환경을 제공하는 컴퓨터 프로그램이 있고, 상기 명령 디코딩 프로그램 로직은, 제1 소스 데이터 구조, 제2 소스 데이터 구조, 및 목적지 데이터 구조를 지정하는 벡터 인터리빙 명령에 응답하여, 제어신호들을 발생하여 데이터 처리 프로그램 로직을 제어하여: 입력 데이터 항목들의 제1 세트를 제1 소스 데이터 구조로부터 검색하고; 입력 데이터 항목들의 제2 세트를 제2 소스 데이터 구조로부터 검색하고; 입력 데이터 항목들의 제1 및 제2 세트로부터 취해진 적어도 선택된 입력 데이터 항목쌍들에 관해 데이터 처리 연산을 수행하여 결과 데이터 항목들의 세트를 발생하며; 목적지 데이터 구조에, 결과 데이터 벡터 구조로서 결과 데이터 항목들의 세트를 기억하는, 벡터 인터리빙 프로세스를 실시하는 명령 디코딩 프로그램 로직이고, 제1 소스 데이터 구조 콘텐트 의존성을 갖는 제1 소스 데이터 구조 의존 결과 데이터 항목들은 목적지 데이터 벡터 구조에서 교대 위치들의 제1 세트에 기억되고, 제2 소스 데이터 구조 콘텐트 의존성을 갖는 제2 소스 데이터 구조 의존 결과 데이터 항목들은 목적지 데이터 벡터 구조에서 교대 위치들의 제2 세트에 기억된다.
다른 실시예에서는, 상술한 컴퓨터 프로그램을 비일시적 방식으로 기억하는 컴퓨터 판독 가능한 기억 매체가 있다.
본 기술은, 아래의 첨부도면들에 도시된 것과 같은 실시예들을 참조하여 예시로만 한층 더 설명하겠다:
도 1은 본 기술들의 여러가지의 예들을 구체화할 수도 있는 데이터 처리장치를 개략적으로 도시한 것이고;
도 2a는 2개의 소스 레지스터들의 각각으로부터 취해진 요소들의 쌍들에 관해 데이터 처리를 수행하고 이들을 인터리브 방식으로 목적지 레지스터에 기록하는 데이터 처리 회로소자를 개략적으로 도시한 것이고;
도 2b는 도 2a의 예에서 레지스터들의 요소들에 대한 콘텐트의 예를 도시한 것이고;
도 3a는 제1 및 제2 소스 레지스터로부터 취해진 데이터 요소들의 쌍들에 관해 데이터 처리 연산들을 수행하고, 각 소스 레지스터로부터의 결과를 인터리브 방식으로 목적지 레지스터에 기록하는 데이터 처리 회로소자를 개략적으로 도시한 것으로, 그 목적지 레지스터에 기록된 요소들의 데이터 사이즈는 지정될 수 있고;
도 3b는 도 3a의 예에서 요소들의 콘텐트의 예를 도시한 것이고;
도 4a는 소스 레지스터들 중 하나가 목적지 레지스터를 제공하는 일례에서의 데이터 처리 회로소자를 개략적으로 도시한 것이고;
도 4b는 도 4a의 예에서 요소의 예를 도시한 것이고;
도 5a는 상기 명령이 특정한 처리를 선택적으로 사용 가능/사용 불가능하게 하는데 사용된 술어값을 지정하는 일례에서의 데이터 처리 회로소자와 레지스터들을 도시한 것이고;
도 5b는 도 5a의 예에서 레지스터들의 요소들의 콘텐트와 대응한 술어값들의 예를 든 것이고;
도 6은 데이터 처리 연산이 시행되는 입력 데이터 항목들의 쌍들이 제1 및 제2 소스 레지스터의 대각선으로 인접한 요소들로부터 취해지는 일례에서의 데이터 처리 회로소자를 개략적으로 도시한 것이고;
도 7은 본 기술들의 일부 명령들을 사용하는 다항식 곱셈의 데이터 처리 문맥의 예에 사용된 일부 정의들을 도시한 것이고;
도 8은 본 기술들에 의해 이 다항식 곱셈을 실시하도록 제공된 명령들의 시퀀스의 예가 있는 도 7의 다항식 곱셈 예의 단계별 레지스터 콘텐트를 도시한 것이고;
도 9는 일 실시예의 방법에서의 단계들의 시퀀스이고;
도 10은 일 실시예의 방법에서 취해진 단계들의 시퀀스이고;
도 11은 일 실시예에서 시뮬레이터 구현을 제공하는 시스템의 구성요소들을 개략적으로 도시한 것이다.
도 1은 본 기술들의 여러가지의 예들을 구체화할 수도 있는 데이터 처리장치를 개략적으로 도시한 것이고;
도 2a는 2개의 소스 레지스터들의 각각으로부터 취해진 요소들의 쌍들에 관해 데이터 처리를 수행하고 이들을 인터리브 방식으로 목적지 레지스터에 기록하는 데이터 처리 회로소자를 개략적으로 도시한 것이고;
도 2b는 도 2a의 예에서 레지스터들의 요소들에 대한 콘텐트의 예를 도시한 것이고;
도 3a는 제1 및 제2 소스 레지스터로부터 취해진 데이터 요소들의 쌍들에 관해 데이터 처리 연산들을 수행하고, 각 소스 레지스터로부터의 결과를 인터리브 방식으로 목적지 레지스터에 기록하는 데이터 처리 회로소자를 개략적으로 도시한 것으로, 그 목적지 레지스터에 기록된 요소들의 데이터 사이즈는 지정될 수 있고;
도 3b는 도 3a의 예에서 요소들의 콘텐트의 예를 도시한 것이고;
도 4a는 소스 레지스터들 중 하나가 목적지 레지스터를 제공하는 일례에서의 데이터 처리 회로소자를 개략적으로 도시한 것이고;
도 4b는 도 4a의 예에서 요소의 예를 도시한 것이고;
도 5a는 상기 명령이 특정한 처리를 선택적으로 사용 가능/사용 불가능하게 하는데 사용된 술어값을 지정하는 일례에서의 데이터 처리 회로소자와 레지스터들을 도시한 것이고;
도 5b는 도 5a의 예에서 레지스터들의 요소들의 콘텐트와 대응한 술어값들의 예를 든 것이고;
도 6은 데이터 처리 연산이 시행되는 입력 데이터 항목들의 쌍들이 제1 및 제2 소스 레지스터의 대각선으로 인접한 요소들로부터 취해지는 일례에서의 데이터 처리 회로소자를 개략적으로 도시한 것이고;
도 7은 본 기술들의 일부 명령들을 사용하는 다항식 곱셈의 데이터 처리 문맥의 예에 사용된 일부 정의들을 도시한 것이고;
도 8은 본 기술들에 의해 이 다항식 곱셈을 실시하도록 제공된 명령들의 시퀀스의 예가 있는 도 7의 다항식 곱셈 예의 단계별 레지스터 콘텐트를 도시한 것이고;
도 9는 일 실시예의 방법에서의 단계들의 시퀀스이고;
도 10은 일 실시예의 방법에서 취해진 단계들의 시퀀스이고;
도 11은 일 실시예에서 시뮬레이터 구현을 제공하는 시스템의 구성요소들을 개략적으로 도시한 것이다.
적어도 일부 실시예들은, 명령들을 디코딩 하는 명령 디코더 회로소자; 및 입력 데이터 벡터들에서의 각각의 위치들에서 복수의 입력 데이터 항목들을 포함하는 입력 데이터 벡터들에 명령들에 의해 지정된 벡터 처리 연산들을 선택적으로 적용하는 데이터 처리 회로소자를 구비하는, 장치를 제공하고, 상기 명령 디코더 회로소자는, 제1 소스 레지스터, 제2 소스 레지스터, 및 목적지 레지스터를 지정하는 벡터 인터리빙 명령에 응답하여, 제어신호들을 발생하여 데이터 처리 회로소자를 제어하여: 입력 데이터 항목들의 제1 세트를 제1 소스 레지스터로부터 검색하고; 입력 데이터 항목들의 제2 세트를 제2 소스 레지스터로부터 검색하고; 입력 데이터 항목들의 제1 및 제2 세트로부터 취해진 적어도 선택된 입력 데이터 항목쌍들에 관해 데이터 처리 연산을 수행하여 결과 데이터 항목들의 세트를 발생하며; 목적지 레지스터에, 결과 데이터 벡터로서 결과 데이터 항목들의 세트를 기억하는, 벡터 인터리빙 프로세스를 실시하는 명령 디코더 회로소자이고, 제1 소스 레지스터 콘텐트 의존성을 갖는 제1 소스 레지스터 의존 결과 데이터 항목들은 목적지 데이터 벡터로 교대 위치들의 제1 세트에 기억되고, 제2 소스 레지스터 콘텐트 의존성을 갖는 제2 소스 레지스터 의존 결과 데이터 항목들은 목적지 데이터 벡터로 교대 위치들의 제2 세트에 기억된다.
본 기술들에 의해 인식한 것은, 필요한 하드웨어에서 처리 효율과 보다 적은 복잡성이 상기 처리된 입력 데이터 항목들과 상기 발생된 결과 데이터 항목들의 동일 장소 배치(co-location)가 있는 벡터 처리 해결방법으로 얻어진다는 것이다. 예를 들면, 이러한 동일 장소 배치는, (의존 데이터 처리가 일어나는) 처리 레인들도 잘 명시되고 잘 제한되는 구현에 있어서 달성된다. 달리 말하면, 이것이 의미하는 것은, 데이터 처리연산의 요구된 오퍼랜드들을 함께 가져와 그 결과의 데이터 항목을 목적지 레지스터에서의 요구된 위치에 전달하는데 요구된 하드웨어의 복잡성이 제한된다는 것이다. 본 문맥에서, 본 기술들에 의해 확인된 것은, 한편으로는 선택된 입력 데이터 항목 쌍들이 제1 및 제2 소스 레지스터로부터 검색된 입력 데이터 항목들의 상기 제1 및 제2 세트로부터 취해지게 하고, 다른 한편으로는 결과 데이터 항목들이 그들의 소스 레지스터 의존성 또는 의존성들에 따라 목적지 레지스터에 기억되게 하여, 제1 소스 레지스터 의존 결과 데이터 항목들이 목적지 레지스터에서 교대 위치들에 기억되고, 또한 제2 소스 레지스터 의존 결과 데이터 항목들이 목적지 레지스터에서 교대 위치들에 기억된다는 것이다. 이 구성은, 명시되는 입력 데이터 항목들의 특별한 페어링들로 또한, 결과 데이터 항목들이 기록되는 목적지 레지스터에서의 교대 위치들의 겨끔내기로(in turns) 유용한 융통성의 정도를 사용 가능하게 한다. 실제로, 본 기술들은, 데이터 처리 연산이 코어쌍 이후는 하나 이상의 추가의 오퍼랜드들을 가질 수도 있다는 점에서, 입력 데이터 항목들의 엄격한 쌍(strict pair)에 제한되지 않는다. 그럼에도 불구하고, 이 해결방법은, 벡터화 데이터 처리에 포함된 관련 요소들의 상술한 동일 장소 배치를 제공하여, 많이 제공되는 지원 하드웨어에서의 과도한 복잡성을 피하지만, (예를 들면 콘텐트를 교환 또는 정리하는) 추가의 관련된 데이터 처리 연산들이 요구되지 않는 유용한 데이터 처리가 실시되는 것을 가능하게 한다. 따라서, 상기 구현된 벡터화 데이터 처리의 유용한 효율과 스루풋을 지원한다.
상술한 것처럼, 상기 선택된 데이터 항목쌍들은, 다양한 유용한 방식들로 명시될 수도 있지만, 일부 실시예들에서는, 입력 데이터 항목들의 제1 및 제2 세트로부터 취해진 상기 선택된 데이터 입력 데이터 항목쌍들은, 제1 소스 레지스터에서 입력 데이터 항목들의 인접한 쌍들로 형성된 입력 데이터 항목쌍들의 제1 세트; 및 제2 소스 레지스터에서 입력 데이터 항목들의 인접한 쌍들로 형성된 입력 데이터 항목쌍들의 제2 세트를 포함한다. 이에 따라, 인접 요소들(입력 데이터 항목들)의 쌍들은 제1 및 제2 소스 레지스터 양쪽으로부터 취해지고, 이는, 데이터 처리의 이 입력 데이터 항목 오퍼랜드들이 유용하게 동일 장소에 배치되지만, 한층 더, 그들로부터 발생되는 결과 데이터 항목들이 목적지 레지스터에서의 그 밖의 항목들로 인터리브되는 경우, (완전히 "패킹"된다는 점에서) 목적지 레지스터 활용을 최대화하는 것은 실시되는 벡터화 데이터 처리의 효율과 스루풋을 한층 더 지원한다는 것을 의미한다.
목적지 레지스터의 이렇게 완전한 활용을 보장하는 방식의 하나는, 제1 소스 레지스터 콘텐트로부터 얻어진 결과 데이터 항목들과 제2 소스 레지스터 콘텐트로부터 얻어진 결과 데이터 항목들을 인터리빙 하는 것이어서, 일부 실시예들에서, 목적지 데이터 벡터에서 교대 위치들의 제1 세트는, 목적지 데이터 벡터에서 교대 위치들의 제2 세트와 교대로 있다. 일부 실시예들에서, 교대 위치들의 제1 세트는 목적지 데이터 벡터에서 위치들의 짝수의 세트이고, 교대 위치들의 제2 세트는 목적지 데이터 벡터에서 위치들의 홀수의 세트다. 또는, 그 밖의 실시예들에서, 교대 위치들의 제1 세트는 목적지 데이터 벡터에서 위치들의 홀수의 세트이고, 교대 위치들의 제2 세트는 목적지 데이터 벡터에서 위치들의 짝수의 세트다.
그러나, 선택된 입력 데이터 쌍들은 그 밖의 실시예들에서 다르게 명시되어도 되고, 일부 실시예들에서는 입력 데이터 항목들의 제1 및 제2 세트로부터 취해진 상기 선택된 입력 데이터 항목쌍들은 제2 소스 레지스터에서의 교대하는 입력 데이터 항목들과 쌍을 이룬 제1 소스 레지스터에서의 교대하는 입력 데이터 항목들로 형성된 대각 입력 데이터 항목쌍을 포함한다. 달리 말하면, 이러한 실시예들에서, 입력 데이터 항목쌍들은, 상기 쌍의 하나의 입력 데이터 항목이 제1 소스 레지스터에서 생겨나고, 상기 쌍의 다른 하나의 입력 데이터 항목이 제2 소스 레지스터에서 생겨난다는 점에서, 제1 및 제2 소스 레지스터에 걸쳐 이어졌다. 게다가, 이 페어링(pairing)은, 제1 소스 레지스터로부터 취해진 입력 데이터 항목들이 제2 소스 레지스터로부터 취해진 입력 데이터 항목들에 대해 해당 소스 레지스터에서의 오프셋 위치들이다는 의미에서 "대각선"이고, 이러한 오프셋은 하나의 데이터 항목 위치다. 따라서, 제1 소스 레지스터로부터의 교대하는 입력 데이터 항목들은, 인접한 데이터 항목 장소로부터 취해진 제2 소스 레지스터에서의 교대하는 입력 데이터 항목들과 쌍이 이루어진다. 각종 데이터 처리 문맥들은, 다음과 같은 일부 예들에 대해 보다 명확해지듯이 이 "대각 입력 데이터 항목쌍들" 해결방법으로부터 이익을 얻을 수도 있다.
이 때문에, 제1 소스 레지스터와 제2 소스 레지스터의 양쪽에 모든 결과 데이터 항목들이 의존하는 일부 실시예들에서, 제1 소스 레지스터 의존 결과 데이터 항목들과 제2 소스 레지스터 의존 결과 데이터 항목들에 의해 명시된 세트들은 동일한 것이므로, 일부 실시예들에서, 제1 소스 레지스터 의존 결과 데이터 항목들과 제2 소스 레지스터 의존 결과 데이터 항목들은 결과 데이터 항목들의 동일한 세트이고, 교대 위치들의 제1 세트와 교대 위치들의 제2 세트는 목적지 데이터 벡터에서 교대 위치들의 동일한 세트다. 따라서, 결과 데이터 항목들이 기억되는 목적지 데이터 벡터에서의 위치들의 면에서, 이 때문에 이러한 실시예들에서, 이것이 의미하는 것은, 상술한 교대 위치들의 제1 세트와 교대 위치들의 제2 세트가 목적지 데이터 벡터에서 교대 위치들의 동일한 세트라는 것이다.
이에 따라, 이 때문에, 상기 실시에들에서, 이것이 의미하는 것은, 교대 위치들(즉, 결과 데이터 항목들이 기억되지 않은 교대 위치들)의 추가의 세트가 그 밖의 데이터 항목들에 의해 덧붙히는데(populate) 이용 가능하다는 것이다. 이들은 특별한 벡터화 데이터 처리가 수행되는데 무슨 이점을 갖는지에 따라 여러 가지의 방식으로 선택되어도 되지만, 일부 실시예들에서 교대 위치들의 제1 세트와 교대 위치들의 제2 세트는 이전의 데이터 항목들의 세트가 목적지 데이터 벡터에 남아 있는 위치들의 추가의 세트와 교대로 있고, 이때의 이전의 데이터 항목들의 세트는, 데이터 처리 회로소자가 벡터 인터리빙 프로세스를 시작하기 전에 목적지 데이터 벡터에서의 위치들의 추가의 세트에 존재한다. 달리 말하면, 벡터 인터리빙 프로세스에 의해 변경되지 않은(수정되지 않은채로 있는) 목적지 데이터 벡터에서 이전의 데이터 항목들의 세트가 존재한다는 것이다.
요구사항에 따라 목적지 데이터 벡터에서의 위치들의 제1 및 제2 세트는 일부 실시예들에서 위치들의 제1 세트가 목적지 데이터 벡터에서 위치들의 짝수의 세트이고 위치들의 추가의 세트가 목적지 데이터 벡터에서 위치들의 홀수의 세트이도록, 선택될 수 있다는 것을 알 것이다. 또는, 그 밖의 실시예들에서, 위치들의 제1 세트는 목적지 데이터 벡터에서 위치들의 홀수의 세트이고 위치들의 추가의 세트가 목적지 데이터 벡터에서 위치들의 짝수의 세트다.
마찬가지로, 제1 및 제2 소스 레지스터로부터 검색된 교대하는 입력 데이터 항목들이 그들과 관련된 동등한 선택권이 있어서, 일부 실시예들에서, 제1 소스 레지스터에서의 교대하는 입력 데이터 항목들이 제1 소스 레지스터에서의 위치들의 짝수의 세트로부터 검색되고 제2 소스 레지스터에서의 교대하는 입력 데이터 항목들이 제2 소스 레지스터에서의 위치들의 홀수의 세트로부터 검색된다는 것도 알 것이다. 이와는 달리, 그 밖의 실시예들에서, 제1 소스 레지스터에서의 교대하는 입력 데이터 항목들이 제1 소스 레지스터에서의 위치들의 홀수의 세트로부터 검색되고, 제2 소스 레지스터에서의 교대하는 입력 데이터 항목들이 제2 소스 레지스터에서의 위치들의 짝수의 세트로부터 검색된다.
입력 데이터 항목들에 관해 수행된 특별한 데이터 처리 연산은, 다양한 형태를 취할 수도 있지만, 각종 실시예들에서, 데이터 처리 연산은 산술연산, 논리 연산 또는 시프트 연산이다. 실시되는 벡터화 데이터 처리의 벡터화 "레인들"의 제약들을 준수하도록 적절하게 구성된 이와 같은 임의의 연산이 선택되어도 된다.
일부 실시예들에서, 벡터 인터리빙 명령에서 지정된 목적지 레지스터는, 제1 및 제2 소스 레지스터와는 별개의 레지스터이지만, 일부 실시예들에서 벡터 인터리빙 명령에서 지정된 목적지 레지스터는 제1 소스 레지스터와 제2 소스 레지스터 중 한쪽이다. 따라서, 이것은, 해당 소스 레지스터의 데이터 항목들의 적어도 일부가 결과 데이터 항목들의 세트를 이 레지스터에 기억하는 것에 의해 겹쳐써지게 취해질 수 있는 적어도 일부 "파괴적" 해결방법을 제공한다.
본 기술들은, 벡터 인터리빙 명령에 응답하여, 일부 실시예들에서 벡터 인터리빙 명령이 입력 데이터 벡터들에서 각각의 위치들에 대응한 술어(predication) 비트들을 포함하는 술어값을 추가로 지정하고, 데이터 처리 회로소자가 그 술어값에서의 비설정 술어 비트에 응답하여, 비설정 술어 비트에 대응하는 벡터 인터리빙 프로세스에서 입력 데이터 항목들의 제1 세트와 입력 데이터 항목들의 제2 세트의 입력 데이터 항목의 관여(involvement)를 추가로 억제한다는 점에서 실시되는 벡터화 데이터 처리에 대한 구성 가능성의 추가의 측면을 제공한다. 따라서, 추가의 구체적인 제어는 술어값에서 어떤 술어 비트들을 설정 또는 비설정하는 효율적인 메카니즘에 의해 상기 처리에 적용될 수 있다. 이 술어값은, 인터리빙 명령 자체내의 즉시값으로서, 또는 기억장소, 예를 들면 그 술어값이 발견되는 추가의 레지스터를 나타내는 벡터 인터리빙 명령에 의해, 벡터 인터리빙 명령에서 다수의 방식으로 지정될 수 있다.
본 기술들에 대한 다른 융통성의 정도는, 벡터 인터리빙 명령이 입력 데이터 항목들의 제1 세트의 제1 데이터 항목 사이즈, 입력 데이터 항목들의 제2 세트의 제2 데이터 항목 사이즈, 및 결과 데이터 항목들의 세트의 결과 데이터 항목 사이즈를 한층 더 지정하는 실시예들에서 제공된다. 이러한 해결방법은, 제1 및 제2 소스 레지스터로부터 검색되는 특정한 입력 데이터 항목들을 제어하고 목적지 레지스터에 기억되는 결과 데이터 항목들의 특정한 형식을 제어할 수 있도록 일반적으로 유용할 뿐만 아니라, 벡터화 레인들을 적절하게 준수할 데이터 사이즈들을 지정함으로써 벡터화 레인들내의 처리를 유지하려고 하는 상황에서 특별한 적용 가능성을 찾을 수도 있다.
예를 들면, 이것은, 결과 데이터 항목들을 축소(narrowing)하는 것을 포함할 수도 있지만, 반대로 (입력 데이터 항목들에 대해) 결과 데이터 항목들의 확대(widening)를 허용하는 것도 포함할 수 있으므로, 예를 들면, "캐리가 없는" 곱셈이, 정밀성을 손실하지 않도록, 즉 어떤 문맥들, 예를 들면 암호 해독에서 중요할 수 있는 산출에서의 모든 정보를 보존하도록, 실시되는 것을 가능하게 한다.
이에 따라, 일부 실시예들에서, 입력 데이터 항목들의 제2 세트의 제1 데이터 항목 사이즈와 제2 데이터 항목 사이즈는, 결과 데이터 항목들의 세트의 결과 데이터 항목 사이즈보다 작다. 또는, 그 밖의 실시예들에서, 입력 데이터 항목들의 제2 세트의 제1 데이터 항목 사이즈와 제2 데이터 항목 사이즈는, 결과 데이터 항목들의 세트의 결과 데이터 항목 사이즈보다 크다.
적어도 일부의 실시예들에서 제공하는 데이터 처리장치의 동작 방법은, 명령들을 디코딩 하는 단계; 입력 데이터 벡터들에서의 각각의 위치들에서 복수의 입력 데이터 항목들을 포함하는 입력 데이터 벡터들에 명령들에 의해 지정된 벡터 처리 연산들을 선택적으로 적용하는 단계; 상기 장치의 제1 소스 레지스터, 제2 소스 레지스터, 및 목적지 레지스터를 지정하는 벡터 인터리빙 명령에 응답하여, 제어신호들을 발생하여 상기 장치의 데이터 처리 회로소자를 제어하여: 입력 데이터 항목들의 제1 세트를 제1 소스 레지스터로부터 검색하는 것; 입력 데이터 항목들의 제2 세트를 제2 소스 레지스터로부터 검색하는 것; 입력 데이터 항목들의 제1 및 제2 세트로부터 취해진 적어도 선택된 입력 데이터 항목쌍들에 관해 데이터 처리 연산을 수행하여 결과 데이터 항목들의 세트를 발생하는 것; 및 목적지 레지스터에, 결과 데이터 벡터로서 결과 데이터 항목들의 세트를 기억하는 것을 포함하는, 벡터 인터리빙 프로세스를 실시하는 단계를 포함하고, 제1 소스 레지스터 콘텐트 의존성을 갖는 제1 소스 레지스터 의존 결과 데이터 항목들은 목적지 데이터 벡터에서 교대 위치들의 제1 세트에 기억되고, 제2 소스 레지스터 콘텐트 의존성을 갖는 제2 소스 레지스터 의존 결과 데이터 항목들은 목적지 데이터 벡터에서 교대 위치들의 제2 세트에 기억된다.
적어도 일부의 실시예들에서 제공하는 장치는, 명령들을 디코딩 하는 수단; 입력 데이터 벡터들에서의 각각의 위치들에서 복수의 입력 데이터 항목들을 포함하는 입력 데이터 벡터들에 명령들에 의해 지정된 벡터 처리 연산들을 선택적으로 적용하는 수단; 상기 장치의 제1 소스 레지스터, 제2 소스 레지스터, 및 목적지 레지스터를 지정하는 벡터 인터리빙 명령에 응답하여, 제어신호들을 발생하여 상기 장치의 데이터 처리 회로소자를 제어하여: 입력 데이터 항목들의 제1 세트를 제1 소스 레지스터로부터 검색하는 수단; 입력 데이터 항목들의 제2 세트를 제2 소스 레지스터로부터 검색하는 수단; 입력 데이터 항목들의 제1 및 제2 세트로부터 취해진 적어도 선택된 입력 데이터 항목쌍들에 관해 데이터 처리 연산을 수행하여 결과 데이터 항목들의 세트를 발생하는 수단; 및 결과 데이터 항목들의 세트를 목적지 레지스터에 결과 데이터 벡터로서 기억하는 수단을 포함하는, 벡터 인터리빙 프로세스를 실시하는 수단을 구비하고, 제1 소스 레지스터 콘텐트 의존성을 갖는 제1 소스 레지스터 의존 결과 데이터 항목들은 목적지 데이터 벡터에서 교대 위치들의 제1 세트에 기억되고, 제2 소스 레지스터 콘텐트 의존성을 갖는 제2 소스 레지스터 의존 결과 데이터 항목들은 목적지 데이터 벡터에서 교대 위치들의 제2 세트에 기억된다.
적어도 일부의 실시예들에서는, 호스트 데이터 처리장치를 제어하여: 명령들을 디코딩 하는 명령 디코딩 프로그램 로직; 및 입력 데이터 벡터 구조들에서의 각각의 위치들에서 복수의 입력 데이터 항목들을 포함하는 입력 데이터 벡터 구조들에 명령들에 의해 지정된 벡터 처리 연산들을 선택적으로 적용하는 데이터 처리 프로그램 로직을 포함하는, 명령들 실행 환경을 제공하는 컴퓨터 프로그램을 제공하고, 상기 명령 디코딩 프로그램 로직은, 제1 소스 데이터 구조, 제2 소스 데이터 구조, 및 목적지 데이터 구조를 지정하는 벡터 인터리빙 명령에 응답하여, 제어신호들을 발생하여 데이터 처리 프로그램 로직을 제어하여: 입력 데이터 항목들의 제1 세트를 제1 소스 데이터 구조로부터 검색하고; 입력 데이터 항목들의 제2 세트를 제2 소스 데이터 구조로부터 검색하고; 입력 데이터 항목들의 제1 및 제2 세트로부터 취해진 적어도 선택된 입력 데이터 항목쌍들에 관해 데이터 처리 연산을 수행하여 결과 데이터 항목들의 세트를 발생하며; 목적지 데이터 구조에, 결과 데이터 벡터 구조로서 결과 데이터 항목들의 세트를 기억하는, 벡터 인터리빙 프로세스를 실시하는 명령 디코딩 프로그램 로직이고, 제1 소스 데이터 구조 콘텐트 의존성을 갖는 제1 소스 데이터 구조 의존 결과 데이터 항목들은 목적지 데이터 벡터 구조에서 교대 위치들의 제1 세트에 기억되고, 제2 소스 데이터 구조 콘텐트 의존성을 갖는 제2 소스 데이터 구조 의존 결과 데이터 항목들은 목적지 데이터 벡터 구조에서 교대 위치들의 제2 세트에 기억된다.
적어도 일부의 실시예들에서는, 상술한 컴퓨터 프로그램을 비일시적 방식으로 기억하는 컴퓨터 판독 가능한 기억 매체를 제공한다.
이제, 일부의 특별한 실시예들에 대해서 도면들을 참조하여 설명한다.
도 1은 본 기술들의 각종 예들을 구체화할 수도 있는 데이터 처리장치 10을 개략적으로 도시한 것이다. 이 장치는, 데이터 항목에 관한 데이터 처리 연산들을 실행하는 명령들의 시퀀스에 응답하여 수행하는 데이터 처리 회로소자 12를 구비한다. 이 명령들은, 데이터 처리장치가 액세스하는 메모리 14로부터 검색되며, 본 발명이 속하는 기술분야에서의 통상의 기술 중 하나가 익숙한 방식으로 이 목적을 위해 페치 회로소자 16이 제공된다. 또한, 페치 회로소자 16에 의해 검색된 명령들은, 명령 디코더 회로소자 18에 건네져, 이 명령 디코더 회로소자는 레지스터들 20의 세트와 로드/스토어 유닛 22뿐만 아니라 처리 회로소자 12의 구성과 동작의 다양한 측면을 제어하도록 배치되는 제어신호들을 발생한다. 일반적으로, 데이터 처리 회로소자 12는 파이프라인 방식으로 배치될 수도 있지만, 그 구체적인 내용은 본 기술들과 관련이 없다. 본 발명이 속하는 기술분야에서의 통상의 지식 중 하나는, 도 1이 나타내는 일반적인 구성에 익숙할 것이며, 추가의 상세 설명은 단지 간결함을 목적으로 생략되어 있다. 도 1에서 알 수 있듯이 레지스터들 20은, 각각 다수의 데이터 요소들에 대한 스토리지를 구비하여, 상기 처리 회로소자는 지정된 레지스터 내의 지정된 데이터 요소에 데이터 처리 연산들을 적용할 수 있거나, 지정된 레지스터 내의 데이터 요소들의 지정된 그룹("벡터")에 데이터 처리 연산들을 적용할 수 있다. 특히, 도시된 데이터 처리장치는, 레지스터들 20에 보유된 데이터 요소들에 대해서, 벡터화 데이터 처리 연산들의 수행과, 구체적으로는 벡터 인터리빙 명령들의 실행과 관련되어 있고, 그것의 설명은 일부의 구체적인 실시예들을 참조하여 아래에 보다 상세히 추가로 할 것이다. 명령들의 실행에서 데이터 처리 회로소자 12에서 필요한 데이터 값들과 이 데이터 처리 명령들의 결과로서 생성된 데이터 값들은, 로드/스토어 유닛 22에 의해 메모리 14에 기록되고 이 메모리로부터 판독된다. 또한, 일반적으로 도 1의 메모리 14는, 본 기술들의 명령들이 기억될 수 있는 컴퓨터 판독 가능한 기억 매체의 일례로서, 일반적으로는 처리 회로소자가 실행하는 명령들의 사전정의된 시퀀스("프로그램")의 일부로서 볼 수 있다. 그러나, 처리 회로소자는 네트워크 인터페이스를 통해 RAM, ROM에서와 같은 다양한 상이한 소스들로부터의 상기와 같은 프로그램에 액세스할 수도 있다. 본 개시내용은, 처리 회로소자 12가 실행할 수 있고, 후속하는 도면들이 여러 가지의 신규한 명령들의 특징, 그 명령들의 실행을 지원하기 위해서 데이터 처리 회로소자의 변형 등의 설명을 추가로 제공하는, 이 여러 가지의 신규한 명령들을 기술한다.
도 2a는 일 실시예에서 레지스터들과 데이터 처리 회로소자를 개략적으로 도시한 것이다. 이 예에서는, 소스 레지스터 30(소스 0)과 소스 레지스터 32(소스 1)가 도시되며, 목적지 레지스터 34도 도시된다. 이 3개의 레지스터들 세트는, 도시된 처리(구성 요소간의 적절한 연결을 가능하게 함으로써)가 실시되게 하는 벡터 인터리빙 명령에서 지정된다. 도시된 바와 같이, 입력 데이터 요소들의 쌍들은, 제1 및 제2 소스 레지스터에서의 인접 위치들로부터 검색되며, 이들은 오퍼랜드들을 각각의 "연산"(OP) 회로소자 36, 38, 40 및 42에서 각각 실시된 데이터 처리 연산들에 제공한다. 데이터 처리 회로소자의 이 항목들에 의해 실시된 특별한 연산은, 다양한 형태를 취할 수도 있지만 도 2a에 도시된 처리에 대응하는 3개의 레지스터의 각각의 위치들에서의 데이터 항목들의 예시 콘텐트에 의해 도 2b에 도시된 것처럼, 본 예에서 연산은 배타적 OR이다. 그러나, 그 밖의 예들에서, 상기 연산은, 임의의 종류의 산술 연산(예: 덧셈, 곱셈 등), 논리 연산(예: AND, OR 등) 또는 시프트 연산(왼쪽 또는 오른쪽 및 적절한 수의 비트 위치들)이 될 수도 있다. 데이터 연산 회로소자로부터 목적지 레지스터 34까지 이어지는 결과 데이터 경로들에 의해 도시된 것처럼, 이 처리에서 발생한 결과 데이터 항목들은, 입력 데이터쌍이 나왔던 소스 레지스터에 따라 목적지 레지스터에서의 교대 위치들에 기억된다. 따라서, 도시된 예에서, 소스 레지스터 30으로부터 결과 데이터 항목들은 홀수의 위치 1, 3에 기억되고, 소스 레지스터 32에서 생기는 결과 데이터 항목들은 짝수의 위치 0, 2에 기억된다. 이것은, 이 홀수 및 짝수의 위치들이 반전되도록 서로 다르게 구성된 벡터 인터리빙 명령에 응답하여 서로 다르게 제공될 수 있다는 것을 알아야 한다. 끝으로, 도 2a, 2b에서의 레지스터들의 각각은 데이터 입력 값들의 2개의 쌍이 각 소스 레지스터로부터 취해지고 4개의 결과 데이터 항목들이 목적지 레지스터에 기록되는 것으로 표시하게 도시되어 있지만, 그 도면의 촤즉을 향하는 선들의 연장은, 이 벡터화 데이터 처리에 있어서 그 도시된 처리의 추가의 반복이 제공된 본 장치의 벡터 처리 능력의 폭에 걸쳐 제공될 수도 있는 것을 나타낸다.
도 3a는, 도 2a, 2b에 도시된 것과 유사한 실시예에서 데이터 처리 회로소자와 레지스터들을 개략적으로 도시한 것이다. 제1 소스 레지스터 40 및 제2 소스 레지스터 42(소스 레지스터 0, 1)와 목적지 레지스터 44가 도시되어 있다. 요구된 데이터 처리 연산("OP") 46, 48, 50, 52를 실시하는 데이터 처리 회로소자도 도시되어 있다. 본 예에서, 도 3b에 주어진 콘텐트의 예로 나타낸 것처럼, 그 연산은 곱셈이다. 이전과 같이, 이 연산은, 필요한 경우, 임의의 선택된 산술 연산, 논리 연산 또는 시프트 연산이 될 수 있다. 도 3a와 도 2a를 구별하는 것은, 각 소스 레지스터로부터 검색된 각 데이터 항목의 사이즈가 목적지 레지스터에 기억된 각각 결과적인 결과 데이터 값의 사이즈의 절반인 "확대" 연산의 수행을 도 3a에 의해 도시한다는 사실이다. 여기서는, 입력 데이터 항목들이 두 배(d)가 되고 결과 데이터 항목들이 네 배(q)가 되는 예를 든다. 이것은 이진 부동소수점 형식이고, 두 배의 입력 데이터 항목들이 각기 64비트 값들이고, 네 배의 값들은 각기 128비트 값들이다. 이에 따라, 도 3b의 콘텐트의 예도 참조하여 도시된 데이터 처리의 예는 본 예에서의 연산이 곱셈인 경우 실시될 수 있기 때문에, 이 해결방법은, 확대하는 캐리가 없는 곱셈이 정보를 손실하지 않게 실시되는 것을 가능하게 한다. 도 3a의 구체적인 예에서도, 소스 레지스터들에서 각기 128비트 데이터 항목의 하위 절반으로부터 네 배가 취해지는 것을 주목하고, 이것은 이 데이터 처리를 기동하는 벡터 인터리빙 명령에서 지정 가능하다. 정반대의 예는, 데이터 항목의 상부 절반이 취해지도록 제공될 수도 있다. 일례에서, 상기 명령은, 이를 지원하기 위해 2개의 형태, (상부 절반 콘텐트가 사용되게 할) "T" 형태와, (하부 절반 콘텐트가 사용되게 할) "B" 형태로 제공된다. 실제로, 본 기술들은, 데이터 항목들의 사이즈가 상기와 같은 형식들, 예를 들면, 8비트 바이트, 16비트 절반, 32비트 싱글들, 64비트 두 배, 및 128비트 네 배로 넓은 범위에 걸쳐 지정 가능한 벡터 인터리빙 명령을 제공한다. 상기 소스 레지스터들과 데이터 처리 회로소자의 능력이 증가하는 추가의 확장도 물론 가능하다. 또한, 도 3a 및 3b가 데확대하는 데이터 처리 연산을 예를 든 경우, 정반대의 자격도 제공되고, 적절한 데이터 처리 연산을 위해서는 보다 축소된 결과 데이터 항목을 폭이 보다 넓은 소스 레지스터 입력 데이터 항목들로부터 발생한다는 것을 주목한다.
도 4a는, 단지 2개의 레지스터, 즉 제1 소스 레지스터 60과 목적지 레지스터인 제2 소스 레지스터 62가 사용되는 다른 예를 도시한 것이다. 달리 말하면, 연산 회로소자 64, 66, 68, 70)의 데이터 처리로 발생한 결과 데이터 값들은, 소스 레지스터 62에 역으로 기억된다. 이에 따라, 본 예는, 제2 소스 레지스터 62의 콘텐트가 결과 데이터 항목들이 그것을 겹쳐썼다면 손실된다는 점에서 "파괴적"이라고 말할 수 있다. 이러한 셋업에 대한 콘텐트는, 데이터 처리 전후에 소스 0의 콘텐트를 나타내고, 소스 1의 콘텐트를 나타내는 도 4b에서, 예를 든다. 본 예에서, 데이터 처리는 XOR 연산이지만, 그 밖의 예들에서와 상술한 것처럼, 이것은, 필요에 따라, 임의의 다양한 산술 연산, 논리 연산 또는 시프트 연산일 수 있다.
도 5a는, 추가의 실시예를 개략적으로 도시한 것이다. 본 예에서는, 소스 레지스터 80, 82뿐만 아니라 목적지 레지스터 84도 도시하고 있다. 추가로, 본 예에서는 술어값 86도 도시하고 있다. 이 술어값은 명령에서의 즉시값으로서 지정될 수 있거나, 그렇지 않은 경우 데이터 처리장치, 예를 들면 다른 레지스터에서의 그 기억장소에 의해 지정될 수 있다. 데이터 처리의 술어값의 효과를, 술어값의 비트 위치들과 데이터 처리의 레인들간의 관련성이 존재한다는 점에서 도 5a에서 볼 수 있다. 따라서, 술어값의 2개의 비트가 설정(1)이고 2개의 비트가 비설정(0)일 경우, 이것은 데이터 처리 회로소자 항목들 88, 90, 92, 94, 96, 98, 100, 102에서 수행한 처리를 적절하게 온 또는 오프로 전환하는 것이 효과적이다. 구체적으로, 도시된 예에서, 항목 90, 94, 98, 102에서는 처리를 수행하지 않고, 항목 88, 92, 96, 100은 도 2a, 3a, 4a를 참조하여 상술한 것처럼 연산한다. 도 5a에 도시된 예에서, 도 5b에 도시된 것처럼, 상기 처리는 XOR 연산이지만, 이전과 같이 임의의 산술 연산, 논리 연산 또는 시프트 연산도 마찬가지로 수행될 수 있다. 그러므로, 실제로, 목적지 레지스터의 콘텐트는 액티브 데이터 처리 회로소자(OP유닛들)로부터 결과 데이터 항목들을 수신하는 그 위치들에서 단지 변경될 뿐이고, 이때 도 5a에서는 목적지 레지스터에서의 미수정된 위치들이 해칭되어 있다. 도 5b는, 특정한 위치들의 콘텐트가 변경하지 않는 것을 입증하는, 데이터 처리 전후의 목적지 레지스터의 콘텐트를 도시한 것이다.
도 6은 입력 데이터 항목들의 페어링들과 상이한 해결방법이 취해지는 추가의 구성 예를 개략적으로 도시한 것이다. 목적지 레지스터 114뿐만 아니라 소스 레지스터 110, 112도 도시되어 있다. 본 예에서, 상기 쌍들은, 2개의 소스 레지스터들에 걸쳐 이어졌다, 즉 하나의 입력 오퍼랜드 데이터 항목이 제1 소스 레지스터로부터 취해지고 다른 입력 오퍼랜드 데이터 항목이 또 하나의 소스 레지스터로부터 취해진다. 따라서, 도 6의 예에서, 데이터 항목 A0, A2는 제1 소스 레지스터로부터 취해지고, 각각 제2 소스 레지스터로부터 데이터 항목 B1, B3와 쌍이 이루어진다. 이들은, XOR 연산(이전의 예들에서와 같이, 이 연산이 여러가지로 명시될 수도 있다)을 수행하도록 기재된 것처럼 보여질 수 있는 데이터 처리 회로소자 114, 116에 입력들을 제공한다. 데이터 처리 회로소자의 이 2개의 항목들에서 발생한 결과 데이터 항목들은, 실시되는 데이터 처리에 의해 변경되지 않은 채로 있는 목적지 레지스터 114에서의 위치들의 제2 세트와 인터리빙되는 목적지 레지스터 114에서의 2개의 위치들에 기억된다. 도 6의 예에 대하여 알아야 하는 것은, 제1 소스 레지스터로부터 입력 데이터 항목들을 제공하는 짝수의 위치들과 제2 소스 레지스터에서 입력 데이터 항목들을 제공하는 홀수의 위치들의 선택권을 반전시킬 수 있다는 것이고, 즉 이때의 홀수의 항목들은 제1 소스 레지스터에서 나오고, 짝수의 항목들은 제2 소스 레지스터에서 나온다. 마찬가지로, 결과 데이터 항목들을 기록할 짝수의 위치들의 선택권도, 대신에 목적지 레지스터에서의 변경되지 않은 데이터 항목들이 물론 짝수의 위치들도 점유되는 상태로 홀수의 위치들의 세트가 되도록 선택될 수 있다. 주어진 명령에서 적절한 플래그들에 의해, 또는 버전마다 별도로 명시된 명령들에 의해, 이 치환들 전부를 지원하는 명령들이 제공될 수 있다.
도 7 및 도 8은 다항식 곱셈의 상황에서 사용될 때 본 기술들의 일 실시예를 도시하고 설명하는 것이다. 여기서, 본 기술들은, 배타적 OR 연산을 지정하는 특히 벡터 인터리빙 명령을 제공하고, 게다가 이 배타적 OR 연산은, EORBT와 EORTB로서 도 8의 예에서 언급한 2개의 형식으로 제공되고, 여기서의 마지막 2개의 문자 B와 T는 "하부" 및 "상부", 즉 보다 상세히 후술하듯이, 이들이 처리되어야 하는 방식을 나타내는 주어진 데이터 항목의 하위 및 상위 절반을 말한다. 이 특별한 명령들은, (갈루아체(Galois field)에서) 다항식 곱셈을 가속화하는데 이롭다. 게다가, 이 예는, 캐리가 없는 곱셈 중 하나다. 따라서, 도 7에 도시된 일부의 정의들에서 시작하는 카라츠바(Karatsuba) 해결방법이 다음과 같도록 취해진다:
여기서,
또한, 벡터들을 zX와 zY로 정의한다:
zX={.....X1,X0} 및 zY={.....Y1,Y0}
그 후, (상술한 EORTB와 EORBT 명령을 사용하여) 다음의 명령 시퀀스를 사용하여 요구된 산출을 실시할 수 있다.
이 때문에, 각 128비트의 폭이 넓은 곱셈의 256비트 결과가 레지스터 z1과 z2의 사이에서 분할되어 있다는 것을 주목하고, 이때 z1은 하부 128비트들을 갖고, z2는 상부 128비트들을 갖는다. 이것은, 예를 들면, 최소 벡터 길이가 128비트들인 구현에 있어서 효율적으로 작용할 수도 있고, 그러므로 이 명령(코드)의 시퀀스의 예는 상기와 같은 시스템내의 임의의 주어진 벡터 길이에 대해 작용할 수 있다. 도 8은 레지스터들 zX, zY, z1, z2, z3의 각각의 데이터 항목들의 콘텐트를 도시한 것인데, 그 이유는 이 명령들이 실시되어 이들 각각의 (최종적으로 레지스터 z1이 되는) 하부 128비트들과 (최종적으로 레지스터 z2가 되는) 상부 128비트들을 발생하기 때문이다.
도 9는 본 기술들의 벡터 인터리빙 명령을 상기 장치가 접할 때 일 실시예의 방법에서 취해진 단계들의 시퀀스를 도시한 것이다. 흐름은, 단계 200에서 시작되어, 명령 디코더 회로소자에서 수신한 명령들의 시퀀스에서의 다음 명령이 디코딩되는 것으로 할 수 있다. 그 후, 단계 202에서는 이것이 벡터 인터리빙 명령인지를 판정한다. 아닐 경우, 흐름은 이러한 다른 다양한 명령을 적절히 처리하는 단계 204를 거쳐 진행된다(본 설명은 그 밖의 타입의 명령들과 관련되어 있지 않다). 그러나, 단계 202에서 벡터 인터리빙 명령이라고 확인되는 경우, 흐름은, 단계 206에 진행되어 입력 데이터 항목들을 제1 소스 레지스터로부터 검색하고, 단계 208에 진행되어서는 입력 데이터 항목들을 제2 소스 레지스터로부터 검색한다. 선행하는 도면들의 설명을 읽으면 단계 206과 208이 순서적으로 실시될 필요는 없고, 실제로 전형적으로는 병렬로 실시되지만, 간략을 기하기 위해 도 9에서의 이 순서적 방식으로 단지 도시디어 있다는 것을 알 것이다. 단계 210에서, 이 벡터 인터리빙 명령에 의해 명시된 데이터 처리 연산은 벡터 인터리빙 명령에 의해 명시된 것처럼 입력 데이터 항목들의 쌍들을 사용하여 실시되고, 단계 212에서, 결과 데이터 항목들은 상기 접한 특별한 타입의 벡터 인터리빙 명령에 대해 적절하게 목적지 레지스터에서의 교대 위치들에 기억된다. 그 후, 흐름은 단계 200으로 되돌아간다.
도 10은, 상이한 타입의 벡터 인터리빙 명령을 접할 수도 있는 실시예의 추가의 상세 내용을 부여하는, 다른 실시예의 방법에서 취해지는 단계들의 시퀀스를 도시한 것이다. 흐름은 단계 220에서 시작되어 명령 디코더 회로소자에서 수신한 다음 명령을 디코딩한다. 이것이 (단계 222에서) 벡터 인터리빙 명령이라고 확인되지 않은 경우, 그 흐름은 단계 224에 진행되어 이러한 다른 타입의 명령이 적절하게 처리된다(또, 이것은 본 개시내용의 관심사가 되지 않는다). 이것이 벡터 인터리빙 명령일 때, 흐름은 단계 224에 진행되어, 이것이 "쌍별" 또는 "대각선" 스타일의 벡터 인터리빙 명령인지를 판정한다. 이것이 쌍별 벡터 인터리빙 명령인 경우에, 흐름은 단계 226에 진행되어, (명령에 지정된 것처럼) 데이터 항목들의 쌍들의 제1 세트를 제1 소스 레지스터로부터 검색하고 데이터 항목들의 쌍들의 제2 세트를 제2 소스 레지스터로부터 검색한다. 그 후, 단계 228에서는, 이 쌍들에 대해 상기 명령에 의해 지정된 요구된 데이터 처리 연산을 시행한다. 그 후, 단계 230에서는, 데이터 항목들의 제1 쌍들의 결과들을 목적지 레지스터에서의 홀수의 위치들에 기억시키고, 데이터 항목들의 쌍들의 제2 세트로부터의 결과들을 목적지 레지스터에서 짝수의 위치들에 기억시킨다. 단계 230에서 괄호 안에 도시된 것처럼, 이러한 홀수와 짝수의 선택권은 (예를 들면, 쌍별 명령의 2개의 변형 예에 의해) 반전될 수 있다. 그 후, 흐름은 단계 220으로 되돌아간다. 단계 224를 고려하는 것을 되돌아가면, 대신에 이것이 대각 벡터 인터리빙 명령일 경우, 흐름을 단계 224로부터 단계 232로 진행되어, 제1 및 제2 소스 레지스터에서의 대각선으로 인접한 위치들로부터의 입력 데이터 항목들의 쌍들을 검색하고 단계 234에서는 이들에 대해 벡터 인터리빙 명령에 의해 명시된 데이터 처리 연산을 시행한다. 그 후, 단계 236에서, 데이터 처리 연산들의 결과들을 짝수 위치들이 수정되지 않은(변경되지 않은)채로 있는 목적지 레지스터에서 홀수의 위치들에 기억시킨다. 도 10의 단계 236에서 괄호안에 넣어진 단어 "짝수" 및 "홀수"는, 홀수와 짝수의 이 선택권이 (예를 들면, 상기 대각 명령의 2개의 변형 예에 의해) 반전될 수 있다는 것을 가리킨다. 그 후, 흐름은 단계 220으로 되돌아간다.
도 11은 사용할 수도 있는 시뮬레이터 구현을 도시한 것이다. 상술한 실시예들은 관련된 기술들을 지원하는 특정한 처리 하드웨어를 동작시키는 장치 및 방법들의 관점에서 본 발명을 구현하지만, 컴퓨터 프로그램의 이용을 통해 구현되는 여기서 설명된 실시예들에 따라 명령 실행 환경을 제공하는 것도 가능하다. 이러한 컴퓨터 프로그램들은, 하드웨어 아키텍처의 소프트웨어 기반 구현을 제공하는 한, 시뮬레이터라고 하는 경우가 많다. 각종의 시뮬레이터 컴퓨터 프로그램들은, 에뮬레이터들, 가상 머신들, 모델들, 및 동적 이진 변환기를 비롯한 이진 변환기들을 포함한다. 전형적으로, 시뮬레이터 구현은, 시뮬레이터 프로그램(710)을 지원하는 호스트 운영체계(720)를 선택적으로 동작시키는 호스트 프로세서(730)상에서 동작할 수도 있다. 일부의 배치들에는, 하드웨어와 상기 제공된 명령 실행 환경간의 시뮬레이션의 다수의 층들, 및/또는 동일한 호스트 프로세서상에 제공된 다수의 별개의 명령 실행 환경들이 존재할 수도 있다. 역사적으로, 강력한 프로세서들은 합리적 속도로 실행하는 시뮬레이터 구현을 제공하는데 필요하지만, 이러한 해결방법은, 특정한 상황에서, 이를테면, 호환성 또는 재사용 목적을 위해 또 하나의 프로세서 고유의 코드를 실행하기를 바라는 경우에 정당화될 수도 있다. 예를 들면, 시뮬레이터 구현은, 호스트 프로세서 하드웨어에서 지원하지 않는 추가의 기능성을 명령 실행 환경에 제공하여도 되거나, 전형적으로 상이한 하드웨어 아키텍처와 관련된 명령 실행 환경을 제공하여도 된다. 시뮬레이션의 개요는, "Some Efficient Architecture Simulation Techniques", Robert Bedichek, Winter 1990 USENIX Conference, Pages 53-63에 제시되어 있다.
시뮬레이션된 실시예에서, 특별한 하드웨어 구성들 또는 특징들을 참조하여 실시예들을 이전에 설명한 결과로, 동등한 기능성이 적절한 소프트웨어 구성들 또는 특징들에 의해 제공되어도 된다. 예를 들면, 회로소자는, 시뮬레이션된 실시예에서 컴퓨터 프로그램 로직으로서 구현되어도 된다. 마찬가지로, 메모리 하드웨어, 이를테면 레지스터나 캐시는, 시뮬레이션된 실시예에서 소프트웨어 데이터 구조로서 구현되어도 된다. 이전에 설명된 실시예들에서 참조한 하드웨어 요소들 중 하나 이상이 호스트 하드웨어(예를 들면, 호스트 프로세서 730)상에 존재하는 배치들에 있어서, 일부의 시뮬레이션된 실시예들은, 적절한 경우, 호스트 하드웨어를 이용하여도 된다.
시뮬레이터 프로그램(710)은, (비일시적 매체일 수도 있는) 컴퓨터 판독 가능한 기억매체에 기억되어도 되고, 이 시뮬레이터 프로그램(710)에 의해 모형이 만들어지는 하드웨어 아키텍처의 애플리케이션 프로그램 인터페이스와 같은 (애플리케이션들, 운영체계들, 및 하이퍼바이저를 포함할 수도 있는) 타겟 코드(700)에 프로그램 인터페이스(명령 실행 환경)를 제공한다. 따라서, 자격 사용 정보에 의해 실행이 영향을 받는 상술한 명령들을 포함하는 타겟 코드(700)의 프로그램 명령들은, 시뮬레이터 프로그램(710)을 사용하여 명령 실행 환경내에서 실행되어도 되어, 상술한 장치(2)의 하드웨어 특징을 실제로 갖지 않는 호스트 컴퓨터(730)는, 이 특징들을 에뮬레이트 할 수 있다.
간단한 전반적인 요약에는, 장치들, 명령들, 이 장치들의 동작 방법들, 및 가상 머신 구현들을 포함하는, 데이터 처리장치에서의 벡터 인터리빙 기술들이 개시되어 있다. 벡터 인터리빙 명령은, 제1 소스 레지스터, 제2 소스 레지스터, 및 목적지 레지스터를 지정한다. 입력 데이터 항목들의 제1 세트는 제1 소스 레지스터로부터 검색되고, 입력 데이터 항목들의 제2 세트는 제2 소스 레지스터로부터 검색된다. 데이터 처리 연산은, 입력 데이터 항목들의 제1 및 제2 세트로부터 취해진 선택된 입력 데이터 항목쌍들에 관해 수행되어 결과 데이터 항목들의 세트를 발생하고, 이들은 목적지 레지스터에 결과 데이터 벡터로서 기억된다. 제1 소스 레지스터 의존 결과 데이터 항목들은 목적지 데이터 벡터에서 교대 위치들의 제1 세트에 기억되고, 제2 소스 레지스터 의존 결과 데이터 항목들은 목적지 데이터 벡터에서 교대 위치들의 제2 세트에 기억된다.
본 출원에서, "...하도록 구성된"의 단어는, 장치의 요소가 상기 명시된 동작을 실시할 수 있는 구성을 갖는다는 것을 의미하는데 사용된다. 본 문맥에서, "구성"은, 하드웨어 또는 소프트웨어의 상호연결의 배치 또는 방식을 의미한다. 예를 들면, 상기 장치는 상기 명시된 동작을 제공하는 전용 하드웨어를 가져도 되거나, 프로세서 또는 다른 처리 디바이스는 그 기능을 행하도록 프로그래밍되어도 된다. "하도록 구성된"은, 상기 장치 요소가 임의의 방식으로 상기 명시된 동작을 제공하기 위해서 변경될 필요가 있다는 것을 암시하지는 않는다.
여기서는 본 발명의 실시예들을 첨부도면을 참조하여 상세히 설명하였지만, 본 발명은 구체적인 실시예들에 한정되지 않고, 첨부된 청구항에서 기재된 것과 같은 본 발명의 범위 및 사상으로부터 벗어나지 않고 당업자가 변경, 부가 및 수정을 여러 가지로 실시할 수 있다는 것을 알 수 있다. 예를 들면, 본 발명의 범위로부터 벗어나지 않고 종속항의 특징들과 독립항의 특징들을 여러 가지로 조합할 수 있다.
Claims (22)
- 명령들을 디코딩 하는 명령 디코더 회로소자; 및
입력 데이터 벡터들에서의 각각의 위치들에서 복수의 입력 데이터 항목들을 포함하는 입력 데이터 벡터들에 명령들에 의해 지정된 벡터 처리 연산들을 선택적으로 적용하는 데이터 처리 회로소자를 구비하는, 장치로서,
상기 명령 디코더 회로소자는, 제1 소스 레지스터, 제2 소스 레지스터, 및 목적지 레지스터를 지정하는 벡터 인터리빙 명령에 응답하여, 제어신호들을 발생하여 데이터 처리 회로소자를 제어하여:
입력 데이터 항목들의 제1 세트를 제1 소스 레지스터로부터 검색하고;
입력 데이터 항목들의 제2 세트를 제2 소스 레지스터로부터 검색하고;
입력 데이터 항목들의 제1 및 제2 세트로부터 취해진 적어도 선택된 입력 데이터 항목쌍들에 관해 데이터 처리 연산을 수행하여 결과 데이터 항목들의 세트를 발생하며;
목적지 레지스터에, 결과 데이터 벡터로서 결과 데이터 항목들의 세트를 기억하는, 벡터 인터리빙 프로세스를 실시하는 명령 디코더 회로소자이고,
제1 소스 레지스터 콘텐트 의존성을 갖는 제1 소스 레지스터 의존 결과 데이터 항목들은 목적지 데이터 벡터에서 교대 위치들의 제1 세트에 기억되고, 제2 소스 레지스터 콘텐트 의존성을 갖는 제2 소스 레지스터 의존 결과 데이터 항목들은 목적지 데이터 벡터에서 교대 위치들의 제2 세트에 기억되는, 장치.
- 제 1 항에 있어서,
입력 데이터 항목들의 제1 및 제2 세트로부터 취해진 상기 선택된 입력 데이터 항목쌍들은,
제1 소스 레지스터에서 입력 데이터 항목들의 인접한 쌍들로 형성된 입력 데이터 항목쌍들의 제1 세트; 및
제2 소스 레지스터에서 입력 데이터 항목들의 인접한 쌍들로 형성된 입력 데이터 항목쌍들의 제2 세트를 포함하는, 장치.
- 제 2 항에 있어서,
목적지 데이터 벡터에서 교대 위치들의 제1 세트는, 목적지 데이터 벡터에서 교대 위치들의 제2 세트와 교대로 있는, 장치.
- 제 3 항에 있어서,
교대 위치들의 제1 세트는 목적지 데이터 벡터에서 위치들의 짝수의 세트이고, 교대 위치들의 제2 세트는 목적지 데이터 벡터에서 위치들의 홀수의 세트인, 장치.
- 제 3 항에 있어서,
교대 위치들의 제1 세트는 목적지 데이터 벡터에서 위치들의 홀수의 세트이고, 교대 위치들의 제2 세트는 목적지 데이터 벡터에서 위치들의 짝수의 세트인, 장치.
- 제 1 항에 있어서,
입력 데이터 항목들의 제1 및 제2 세트로부터 취해진 상기 선택된 입력 데이터 항목쌍들은 제2 소스 레지스터에서의 교대하는 입력 데이터 항목들과 쌍을 이룬 제1 소스 레지스터에서의 교대하는 입력 데이터 항목들로 형성된 대각 입력 데이터 항목쌍을 포함하는, 장치.
- 제 6 항에 있어서,
제1 소스 레지스터 의존 결과 데이터 항목들과 제2 소스 레지스터 의존 결과 데이터 항목들은 결과 데이터 항목들의 동일한 세트이고, 교대 위치들의 제1 세트와 교대 위치들의 제2 세트는 목적지 데이터 벡터에서 교대 위치들의 동일한 세트인, 장치.
- 제 6 항 또는 제 7 항에 있어서,
교대 위치들의 제1 세트와 교대 위치들의 제2 세트는, 이전의 데이터 항목들의 세트가 목적지 데이터 벡터에 남아 있는 위치들의 추가의 세트와 교대로 있고, 이때의 이전의 데이터 항목들의 세트는, 데이터 처리 회로소자가 벡터 인터리빙 프로세스를 시작하기 전에 목적지 데이터 벡터에서의 위치들의 추가의 세트에 존재하는, 장치.
- 제 8 항에 있어서,
위치들의 제1 세트가 목적지 데이터 벡터에서 위치들의 짝수의 세트이고, 위치들의 추가의 세트가 목적지 데이터 벡터에서 위치들의 홀수의 세트인, 장치.
- 제 8 항에 있어서,
위치들의 제1 세트는 목적지 데이터 벡터에서 위치들의 홀수의 세트이고, 위치들의 추가의 세트가 목적지 데이터 벡터에서 위치들의 짝수의 세트인, 장치.
- 제 6 항 내지 제 10 항 중 어느 한 항에 있어서,
제1 소스 레지스터에서의 교대하는 입력 데이터 항목들이 제1 소스 레지스터에서의 위치들의 짝수의 세트로부터 검색되고, 제2 소스 레지스터에서의 교대하는 입력 데이터 항목들이 제2 소스 레지스터에서의 위치들의 홀수의 세트로부터 검색되는, 장치.
- 제 6 항 내지 제 10 항 중 어느 한 항에 있어서,
제1 소스 레지스터에서의 교대하는 입력 데이터 항목들이 제1 소스 레지스터에서의 위치들의 홀수의 세트로부터 검색되고, 제2 소스 레지스터에서의 교대하는 입력 데이터 항목들이 제2 소스 레지스터에서의 위치들의 짝수의 세트로부터 검색되는, 장치.
- 선행하는 청구항 중 어느 한 항에 있어서,
데이터 처리 연산은 산술 연산, 논리 연산 또는 시프트 연산인, 장치.
- 선행하는 청구항 중 어느 한 항에 있어서,
벡터 인터리빙 명령에서 지정된 목적지 레지스터는 제1 소스 레지스터와 제2 소스 레지스터 중 한쪽인, 장치.
- 선행하는 청구항 중 어느 한 항에 있어서,
벡터 인터리빙 명령이 입력 데이터 벡터들에서 각각의 위치들에 대응한 술어 비트들을 포함하는 술어값을 추가로 지정하고, 데이터 처리 회로소자는 그 술어값에서의 비설정 술어 비트에 응답하여, 비설정 술어 비트에 대응하는 벡터 인터리빙 프로세스에서 입력 데이터 항목들의 제1 세트와 입력 데이터 항목들의 제2 세트의 입력 데이터 항목의 관여를 추가로 억제하는, 장치.
- 선행하는 청구항 중 어느 한 항에 있어서,
벡터 인터리빙 명령은, 입력 데이터 항목들의 제1 세트의 제1 데이터 항목 사이즈, 입력 데이터 항목들의 제2 세트의 제2 데이터 항목 사이즈, 및 결과 데이터 항목들의 세트의 결과 데이터 항목 사이즈를 한층 더 지정하는, 장치.
- 제 16 항에 있어서,
입력 데이터 항목들의 제2 세트의 제1 데이터 항목 사이즈와 제2 데이터 항목 사이즈는, 결과 데이터 항목들의 세트의 결과 데이터 항목 사이즈보다 작은, 장치.
- 제 16 항에 있어서,
입력 데이터 항목들의 제2 세트의 제1 데이터 항목 사이즈와 제2 데이터 항목 사이즈는, 결과 데이터 항목들의 세트의 결과 데이터 항목 사이즈보다 큰, 장치.
- 데이터 처리장치의 동작 방법으로서,
명령들을 디코딩 하는 단계;
입력 데이터 벡터들에서의 각각의 위치들에서 복수의 입력 데이터 항목들을 포함하는 입력 데이터 벡터들에, 명령들에 의해 지정된 벡터 처리 연산들을 선택적으로 적용하는 단계;
상기 장치의 제1 소스 레지스터, 제2 소스 레지스터, 및 목적지 레지스터를 지정하는 벡터 인터리빙 명령에 응답하여, 제어신호들을 발생하여 상기 장치의 데이터 처리 회로소자를 제어하여:
입력 데이터 항목들의 제1 세트를 제1 소스 레지스터로부터 검색하는 것;
입력 데이터 항목들의 제2 세트를 제2 소스 레지스터로부터 검색하는 것;
입력 데이터 항목들의 제1 및 제2 세트로부터 취해진 적어도 선택된 입력 데이터 항목쌍들에 관해 데이터 처리 연산을 수행하여 결과 데이터 항목들의 세트를 발생하는 것; 및
목적지 레지스터에, 결과 데이터 벡터로서 결과 데이터 항목들의 세트를 기억하는 것을 포함하는, 벡터 인터리빙 프로세스를 실시하는 단계를 포함하고,
제1 소스 레지스터 콘텐트 의존성을 갖는 제1 소스 레지스터 의존 결과 데이터 항목들은 목적지 데이터 벡터에서 교대 위치들의 제1 세트에 기억되고, 제2 소스 레지스터 콘텐트 의존성을 갖는 제2 소스 레지스터 의존 결과 데이터 항목들은 목적지 데이터 벡터에서 교대 위치들의 제2 세트에 기억되는, 방법.
- 장치로서,
명령들을 디코딩 하는 수단;
입력 데이터 벡터들에서의 각각의 위치들에서 복수의 입력 데이터 항목들을 포함하는 입력 데이터 벡터들에, 명령들에 의해 지정된 벡터 처리 연산들을 선택적으로 적용하는 수단;
상기 장치의 제1 소스 레지스터, 제2 소스 레지스터, 및 목적지 레지스터를 지정하는 벡터 인터리빙 명령에 응답하여, 제어신호들을 발생하여 상기 장치의 데이터 처리 회로소자를 제어하여:
입력 데이터 항목들의 제1 세트를 제1 소스 레지스터로부터 검색하는 수단;
입력 데이터 항목들의 제2 세트를 제2 소스 레지스터로부터 검색하는 수단;
입력 데이터 항목들의 제1 및 제2 세트로부터 취해진 적어도 선택된 입력 데이터 항목쌍들에 관해 데이터 처리 연산을 수행하여 결과 데이터 항목들의 세트를 발생하는 수단; 및
결과 데이터 항목들의 세트를 목적지 레지스터에 결과 데이터 벡터로서 기억하는 수단을 포함하는, 벡터 인터리빙 프로세스를 실시하는 수단을 구비하고,
제1 소스 레지스터 콘텐트 의존성을 갖는 제1 소스 레지스터 의존 결과 데이터 항목들은 목적지 데이터 벡터에서 교대 위치들의 제1 세트에 기억되고, 제2 소스 레지스터 콘텐트 의존성을 갖는 제2 소스 레지스터 의존 결과 데이터 항목들은 목적지 데이터 벡터에서 교대 위치들의 제2 세트에 기억되는, 장치.
- 호스트 데이터 처리장치를 제어하여:
명령들을 디코딩 하는 명령 디코딩 프로그램 로직; 및
입력 데이터 벡터 구조들에서의 각각의 위치들에서 복수의 입력 데이터 항목들을 포함하는 입력 데이터 벡터 구조들에 명령들에 의해 지정된 벡터 처리 연산들을 선택적으로 적용하는 데이터 처리 프로그램 로직을 포함하는, 명령들 실행 환경을 제공하는 컴퓨터 프로그램으로서,
상기 명령 디코딩 프로그램 로직은, 제1 소스 데이터 구조, 제2 소스 데이터 구조, 및 목적지 데이터 구조를 지정하는 벡터 인터리빙 명령에 응답하여, 제어신호들을 발생하여 데이터 처리 프로그램 로직을 제어하여:
입력 데이터 항목들의 제1 세트를 제1 소스 데이터 구조로부터 검색하고;
입력 데이터 항목들의 제2 세트를 제2 소스 데이터 구조로부터 검색하고;
입력 데이터 항목들의 제1 및 제2 세트로부터 취해진 적어도 선택된 입력 데이터 항목쌍들에 관해 데이터 처리 연산을 수행하여 결과 데이터 항목들의 세트를 발생하며;
목적지 데이터 구조에, 결과 데이터 벡터 구조로서 결과 데이터 항목들의 세트를 기억하는, 벡터 인터리빙 프로세스를 실시하는 명령 디코딩 프로그램 로직이고,
제1 소스 데이터 구조 콘텐트 의존성을 갖는 제1 소스 데이터 구조 의존 결과 데이터 항목들은 목적지 데이터 벡터 구조에서 교대 위치들의 제1 세트에 기억되고, 제2 소스 데이터 구조 콘텐트 의존성을 갖는 제2 소스 데이터 구조 의존 결과 데이터 항목들은 목적지 데이터 벡터 구조에서 교대 위치들의 제2 세트에 기억된다.
- 청구항 24에 따른 컴퓨터 프로그램을 비일시적 방식으로 기억하는 컴퓨터 판독 가능한 기억 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1711707.8 | 2017-07-20 | ||
GB1711707.8A GB2564853B (en) | 2017-07-20 | 2017-07-20 | Vector interleaving in a data processing apparatus |
PCT/GB2018/051854 WO2019016508A1 (en) | 2017-07-20 | 2018-07-02 | INTERLACING VECTORS IN A DATA PROCESSING APPARATUS |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200028965A true KR20200028965A (ko) | 2020-03-17 |
KR102591988B1 KR102591988B1 (ko) | 2023-10-20 |
Family
ID=59771758
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207003377A KR102591988B1 (ko) | 2017-07-20 | 2018-07-02 | 데이터 처리장치에서의 벡터 인터리빙 |
Country Status (9)
Country | Link |
---|---|
US (1) | US11093243B2 (ko) |
EP (1) | EP3655852B1 (ko) |
JP (1) | JP7186212B2 (ko) |
KR (1) | KR102591988B1 (ko) |
CN (1) | CN110914801B (ko) |
GB (1) | GB2564853B (ko) |
IL (1) | IL271636B2 (ko) |
TW (1) | TWI766056B (ko) |
WO (1) | WO2019016508A1 (ko) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11449336B2 (en) * | 2019-05-24 | 2022-09-20 | Texas Instmments Incorporated | Method of storing register data elements to interleave with data elements of a different register, a processor thereof, and a system thereof |
US20240004648A1 (en) * | 2022-07-02 | 2024-01-04 | Intel Corporation | Vector unpack based on selection information |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6418529B1 (en) * | 1998-03-31 | 2002-07-09 | Intel Corporation | Apparatus and method for performing intra-add operation |
US20100106944A1 (en) * | 2004-07-13 | 2010-04-29 | Arm Limited | Data processing apparatus and method for performing rearrangement operations |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7301541B2 (en) * | 1995-08-16 | 2007-11-27 | Microunity Systems Engineering, Inc. | Programmable processor and method with wide operations |
US5845112A (en) | 1997-03-06 | 1998-12-01 | Samsung Electronics Co., Ltd. | Method for performing dead-zone quantization in a single processor instruction |
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 |
US6324638B1 (en) * | 1999-03-31 | 2001-11-27 | International Business Machines Corporation | Processor having vector processing capability and method for executing a vector instruction in a processor |
US7624138B2 (en) * | 2001-10-29 | 2009-11-24 | Intel Corporation | Method and apparatus for efficient integer transform |
US20030167460A1 (en) * | 2002-02-26 | 2003-09-04 | Desai Vipul Anil | Processor instruction set simulation power estimation method |
US9146738B2 (en) * | 2002-03-30 | 2015-09-29 | Hewlett-Packard Development Company, L.P. | Interleaving bits of multiple instruction results in a single destination register |
US7392368B2 (en) * | 2002-08-09 | 2008-06-24 | Marvell International Ltd. | Cross multiply and add instruction and multiply and subtract instruction SIMD execution on real and imaginary components of a plurality of complex data elements |
GB2409065B (en) * | 2003-12-09 | 2006-10-25 | Advanced Risc Mach Ltd | Multiplexing operations in SIMD processing |
US7933405B2 (en) * | 2005-04-08 | 2011-04-26 | Icera Inc. | Data access and permute unit |
US7555514B2 (en) * | 2006-02-13 | 2009-06-30 | Atmel Corportation | Packed add-subtract operation in a microprocessor |
US8255446B2 (en) * | 2006-12-12 | 2012-08-28 | Arm Limited | Apparatus and method for performing rearrangement and arithmetic operations on data |
JP2009048532A (ja) * | 2007-08-22 | 2009-03-05 | Nec Electronics Corp | マイクロプロセッサ |
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 |
GB2484654B (en) * | 2010-10-12 | 2013-10-09 | Advanced Risc Mach Ltd | Conditional selection of data elements |
PL3422178T3 (pl) * | 2011-04-01 | 2023-06-26 | Intel Corporation | Przyjazny dla wektorów format instrukcji i jego wykonanie |
US9021233B2 (en) * | 2011-09-28 | 2015-04-28 | Arm Limited | Interleaving data accesses issued in response to vector access instructions |
CN103999037B (zh) * | 2011-12-23 | 2020-03-06 | 英特尔公司 | 用于响应于单个指令来执行横向相加或相减的系统、装置和方法 |
WO2013095631A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Systems, apparatuses, and methods for performing a butterfly horizontal and cross add or substract in response to a single instruction |
US9477467B2 (en) * | 2013-03-30 | 2016-10-25 | Intel Corporation | Processors, methods, and systems to implement partial register accesses with masked full register accesses |
US9785437B2 (en) * | 2014-12-23 | 2017-10-10 | Intel Corporation | Method and apparatus for performing a vector bit reversal and crossing |
US10013253B2 (en) * | 2014-12-23 | 2018-07-03 | Intel Corporation | Method and apparatus for performing a vector bit reversal |
US10001995B2 (en) * | 2015-06-02 | 2018-06-19 | Intel Corporation | Packed data alignment plus compute instructions, processors, methods, and systems |
GB2540939B (en) * | 2015-07-31 | 2019-01-23 | Advanced Risc Mach Ltd | An apparatus and method for performing a splice operation |
CN105335247B (zh) * | 2015-09-24 | 2018-04-20 | 中国航天科技集团公司第九研究院第七七一研究所 | 高可靠系统芯片中Cache的容错结构及其容错方法 |
-
2017
- 2017-07-20 GB GB1711707.8A patent/GB2564853B/en active Active
-
2018
- 2018-07-02 IL IL271636A patent/IL271636B2/en unknown
- 2018-07-02 WO PCT/GB2018/051854 patent/WO2019016508A1/en unknown
- 2018-07-02 TW TW107122737A patent/TWI766056B/zh active
- 2018-07-02 KR KR1020207003377A patent/KR102591988B1/ko active IP Right Grant
- 2018-07-02 EP EP18739625.4A patent/EP3655852B1/en active Active
- 2018-07-02 JP JP2020501160A patent/JP7186212B2/ja active Active
- 2018-07-02 CN CN201880046751.3A patent/CN110914801B/zh active Active
- 2018-07-02 US US16/630,622 patent/US11093243B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6418529B1 (en) * | 1998-03-31 | 2002-07-09 | Intel Corporation | Apparatus and method for performing intra-add operation |
US20100106944A1 (en) * | 2004-07-13 | 2010-04-29 | Arm Limited | Data processing apparatus and method for performing rearrangement operations |
Also Published As
Publication number | Publication date |
---|---|
IL271636B2 (en) | 2023-11-01 |
GB201711707D0 (en) | 2017-09-06 |
IL271636B1 (en) | 2023-07-01 |
EP3655852A1 (en) | 2020-05-27 |
GB2564853A (en) | 2019-01-30 |
KR102591988B1 (ko) | 2023-10-20 |
TWI766056B (zh) | 2022-06-01 |
WO2019016508A1 (en) | 2019-01-24 |
JP7186212B2 (ja) | 2022-12-08 |
CN110914801B (zh) | 2023-10-24 |
IL271636A (en) | 2020-02-27 |
TW201917710A (zh) | 2019-05-01 |
GB2564853B (en) | 2021-09-08 |
EP3655852B1 (en) | 2023-09-13 |
CN110914801A (zh) | 2020-03-24 |
US20210026629A1 (en) | 2021-01-28 |
US11093243B2 (en) | 2021-08-17 |
JP2020527797A (ja) | 2020-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5646737B2 (ja) | 条件付き比較命令 | |
JP7253492B2 (ja) | データ処理装置における乗累算 | |
US9965275B2 (en) | Element size increasing instruction | |
KR102584031B1 (ko) | 데이터 처리장치에서의 요소 바이 벡터 연산 | |
US11003447B2 (en) | Vector arithmetic and logical instructions performing operations on different first and second data element widths from corresponding first and second vector registers | |
JP2019519865A (ja) | 並べ替え動作を実行するための装置および方法 | |
JP7324754B2 (ja) | ベクトル・キャリー付き加算命令 | |
KR102591988B1 (ko) | 데이터 처리장치에서의 벡터 인터리빙 | |
JP4686435B2 (ja) | 演算装置 | |
JP2018500629A (ja) | 3d座標から3dのz曲線インデックスを計算するための機械レベル命令 | |
JP6818010B2 (ja) | ベクトル長クエリ命令 | |
WO2023199015A1 (en) | Technique for handling data elements stored in an array storage | |
GB2617828A (en) | Technique for handling data elements stored in an array storage | |
KR20240140968A (ko) | 메모리 액세스 동작을 수행하기 위한 기술 |
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 |