KR20180037961A - 벡터 길이 질의 명령 - Google Patents
벡터 길이 질의 명령 Download PDFInfo
- Publication number
- KR20180037961A KR20180037961A KR1020187003457A KR20187003457A KR20180037961A KR 20180037961 A KR20180037961 A KR 20180037961A KR 1020187003457 A KR1020187003457 A KR 1020187003457A KR 20187003457 A KR20187003457 A KR 20187003457A KR 20180037961 A KR20180037961 A KR 20180037961A
- Authority
- KR
- South Korea
- Prior art keywords
- vector
- value
- instruction
- scaling
- scaled
- Prior art date
Links
- 239000013598 vector Substances 0.000 title claims abstract description 156
- 238000000034 method Methods 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 6
- 230000001419 dependent effect Effects 0.000 claims description 3
- 238000004590 computer program Methods 0.000 claims 1
- 230000006399 behavior Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005096 rolling process 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/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/3004—Arrangements for executing specific machine instructions to perform operations on memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
벡터 처리 연산을 지원하는 데이터 처리 시스템(2)은 스케일링 벡터 길이 질의 명령을 이용한다. 스케일링 벡터 길이 질의 명령은, 이 명령에 의해 지정된 가변 벡터 성분 크기에 대한 벡터 내부의 성분들의 수에 이 명령에 의해 지정된 스케일링 값을 곱한 값에 의존하는 결과값을 반환한다. 스케일 벡터 길이 질의 명령은 카운트 명령, 증분 명령 또는 감분 명령의 형태를 갖는다. 명령은 이 명령에 대해 지정된 레지스터 성분 크기에 대해 제공된 벡터 성분들의 수를 나타내는 부분적인 결과값에 모듈로(M) 또는 2의 거듭제곱 등의 제약을 적용하는 패턴 제약을 포함한다.
Description
본 발명은 데이터 처리 시스템 분야에 관한 것이다. 특히, 본 발명은 벡터 처리를 지원하는 데이터 처리 시스템에 관한 것이다.
복수의 벡터 성분들을 포함하는 벡터 피연산자들의 처리를 지원하는 데이터 처리 시스템을 제공하는 것이 아려져 있다. 종래에는, 벡터 레지스터 내부의 비트 수가 해당 프로세서 아키텍처에 의해 정의된다. 벡터 레지스터 내부의 비트 수는 서로 다른 크기를 갖는 벡터 성분들에 의해 나뉘어 서로 다른 수의 벡터 성분들이 특정한 벡터 레지스터에 의해 제공된다.
본 발명의 적어도 일부 실시예에 따르면, 데이터 처리장치로서, 벡터 처리 연산을 행하는 처리회로와, 프로그램 명령을 디코드하여 상기 처리회로가 상기 벡터 처리 연산을 행하도록 제어하는 제어신호를 발생하는 디코더 회로를 구비하고, 상기 디코드 회로는, 스케일링된(scaled) 벡터 길이 질의 명령에 응답하여, 상기 처리회로를 제어함으로써, 상기 벡터 처리 연산을 행할 때 상기 데이터 처리장치에 의해 사용된 벡터 길이에 상기 스케일링된 벡터 길이 질의 명령에 의해 지정된 스케일링 값을 곱한 값에 의존하는 결과값을 반환하는 데이터 처리장치가 제공된다.
본 발명의 적어도 일부 실시예에 따르면, 데이터 처리장치로서, 벡터 처리 연산을 행하는 처리수단과, 프로그램 명령을 디코드하여 상기 처리회로가 상기 벡터 처리 연산을 행하도록 제어하는 제어신호를 발생하는 디코더 수단을 구비하고, 상기 디코드 수단은, 스케일링된 벡터 길이 질의 명령에 응답하여, 상기 처리수단을 제어함으로써, 상기 벡터 처리 연산을 행할 때 상기 데이터 처리장치에 의해 사용된 벡터 길이에 상기 스케일링된 벡터 길이 질의 명령에 의해 지정된 스케일링 값을 곱한 값에 의존하는 결과값을 반환하는 데이터 처리장치가 제공된다.
본 발명의 적어도 일부 실시예에 따르면, 스케일링된 벡터 길이 질의 명령을 디코드하여, 처리회로를 제어함으로써, 벡터 처리 연산을 행할 때 사용된 벡터 길이에 상기 스케일링된 벡터 길이 질의 명령에 의해 지정된 스케일링 값을 곱한 값에 의존하는 결과값을 반환하는 단계를 포함하는 데이터 처리방법이 제공된다.
이하, 다음의 첨부도면을 참조하여 본 발명을 더욱 상세히 설명한다.
도 1은 벡터 처리를 지원하는 데이터 처리 시스템을 개략적으로 나타낸 것이다.
도 2는 복수의 다른 형태의 스케일링 벡터 길이 질의 명령을 개략적으로 나타낸 것이다.
도 3은 도 2의 다양한 종류의 스케일링 벡터 길이 질의 명령의 거동의 예를 개략적으로 나타낸 것이다.
도 4는 스케일링 벡터 길이 질의 명령에 응답하여 결과값을 생성하는 룩업표(look-up table) 구현예를 개략적으로 나타낸 것이다.
도 5는 스케일링 벡터 길이 질의 명령의 거동을 개략적으로 나타낸 흐름도이다.
도 6은 가상머신 구현예를 개략적으로 나타낸 것이다.
도 1은 벡터 처리를 지원하는 데이터 처리 시스템을 개략적으로 나타낸 것이다.
도 2는 복수의 다른 형태의 스케일링 벡터 길이 질의 명령을 개략적으로 나타낸 것이다.
도 3은 도 2의 다양한 종류의 스케일링 벡터 길이 질의 명령의 거동의 예를 개략적으로 나타낸 것이다.
도 4는 스케일링 벡터 길이 질의 명령에 응답하여 결과값을 생성하는 룩업표(look-up table) 구현예를 개략적으로 나타낸 것이다.
도 5는 스케일링 벡터 길이 질의 명령의 거동을 개략적으로 나타낸 흐름도이다.
도 6은 가상머신 구현예를 개략적으로 나타낸 것이다.
도 1은 데이터 값들(8)과 프로그램 명령들(10)을 기억하는 메모리(6)에 접속된 프로세서(4)를 구비한 데이터 처리 시스템(2)을 개략적으로 나타낸 것이다. 프로세서(4)는, 메모리(6)에서 프로그램 명령(10)을 페치하고 페치된 프로그램 명령을 디코더 회로(14)에 공급하는 명령 페치부(12)를 구비한다. 디코더 회로(14)는, 페치된 프로그램 명령을 디코드하고, 디코드된 벡터 명령에 의해 지정된 벡터 레지스터 회로(20) 내부에 기억된 벡터 레지스터들에 대해 벡터 처리 연산을 행하도록 벡터 처리회로(18)를 제어하는 제어신호(16)를 발생한다. 이때, 실제로는, 프로세서(4)는 일반적으로 더 많은 수의 회로 성분들을 포함하고, 이들 회로 성분을 도면에서 생략하였다는 것을 알 수 있다.
도 1에는 본 실시예에서는 256의 벡터 비트 크기를 갖는 예시적인 벡터 레지스터 Zi가 더 도시되어 있다. 벡터 레지스터 Zi는 16개의 벡터 성분 a0-a15으로 구성된다. 각각의 이들 벡터 성분은 16비트의 벡터 비트 크기를 가지며, 따라서 벡터 레지스터 Zi 내부의 벡터 성분 수는 16이다. 벡터 성분 크기는 디코드되고 있는 벡터 명령에 의해 제정되는 변수이다. 예를 들어, 벡터 명령이 인코드되어 벡터 성분이 바이트, 반단어(half word), 단어 또는 2배 단어(double word)(각각 8, 16, 32, 64 비트)인 것을 지정한다. 따라서, 256 비트로 이루어진 벡터 레지스터 Zi에 대해, 이것은 16개의 16비트 벡터 성분, 8개의 32비트 벡터 성분 또는 4개의 64비트 벡터 성분을 지원한다.
프로세서(4)의 주어진 구현예는 특정한 비트 크기를 갖는 벡터 레지스터들 Zi를 지원하는 벡터 레지스터 회로(20)를 포함하게 된다. 그러나, 동일한 명령 세트 아키텍처를 사용하는 프로세서(4)의 다른 구현예는 이와 다른 크기, 예를 들어, 512비트, 384비트, 1024비트 등의 벡터 레지스터를 지원한다.
벡터 명령을 포함하는 프로그램 코드가 어떤 변형이나 상당한 변형을 필요로 하지 않으면서 다양한 크기의 벡터 레지스터들 Zi를 제공하는 벡터 레지스터 회로(20)에 적응할 수 있도록 하는 한가지 방법으로서, 한 개 이상의 스케일링 벡터 길이 질의 명령이 제공된다. 이들 스케일링 벡터 길이 질의 명령은, 스케일링 벡터 길이 질의 명령에 의해 지정된 가변 벡터 성분 크기(예를 들어, 바이트, 반단어, 단어 또는 2배 단어)에 대한 벡터 내부의 성분의 수에 스케일링 벡터 길이 질의 명령에 의해 지정된 스케일링 값을 곱한 값에 의존하는 결과값을 반환한다. 이와 같은 스케일링 벡터 길이 질의 명령은, 구현예의 특정한 벡터 레지스터 크기를 고려할 수 있고 또한 구현되고 있는 벡터 코드에 의해 제공되는 프로그램 루프 롤링(program loop rolling)의 정도를 거쳐 고려할 수 있는 결과를 반환할 수 있다. 스케일링 값은 스케일링 벡터 길이 질의 명령 내에서 인코드되는 상수 정수값(예를 들어, 명령 내부의 즉시값(immediate value))의 형태로 제공되어도 된다.
도 2는 다양한 다른 형태의 스케일링 벡터 길이 질의 명령을 개략적으로 나타낸 것이다. 특히, 벡터 길이 질의 명령의 종류는 카운트 명령, 증분 명령 또는 감분(decrement) 명령일 수 있다. 스케일링 벡터 길이 질의 명령인 또 다른 종류의 명령도 가능하다. 스케일링 벡터 길이 질의 명령은, 결과값이 결정되는 기준이 되는 벡터 성분 크기를 더 지정한다. 따라서, 벡터 성분 크기는 바이트 B, 반단어 H, 단어 W 또는 2배 단어 D일 수 있다. 스케일링 벡터 길이 질의 명령은, 명령에 대한 입력 피연산자 값에 대한 소스와 기록할 결과값에 대한 목적지로서의 역할을 하는 스칼라 레지스터 Xd를 더 지정한다.
도 2에 도시된 스케일링 벡터 길이 질의 명령 내부의 최종적인 2개의 파라미터는, 처리장치에 의해 사용되는 벡터 길이가 지정될 때 겪게 되며 스케일링 벡터 길이 질의 명령의 결과값이 반환될 때 따르게 되는 패턴 제약(pattern constraint)를 지정하는 필드이다. 벡터 패턴 제약은 다양한 다른 형태를 취할 수 있다. 이 제약은, 예를 들어, 장치에 의해 제공되는 최대값이 지정된 값 M의 배수인 것일 수 있는데, 예를 들어, 벡터 성분들의 수에 대한 값이 값 M의 배수(modulo(M))가 되도록 제약을 받는다. 제약 패턴의 또 다른 예는, 지원된 벡터 성분들의 수에 대해 반환된 최대값이 2의 거듭제곱, 예를 들어, 2, 4, 8, 16, 32 등이 되어야 한다는 것이다. 제약 패턴의 또 다른 예는, 벡터 레지스터 Zi의 물리적인 크기를 벗어난 지원된 성분들의 수의 최대값에 대해 제약이 적용되지 않는 것이다. 따라서, 벡터 레지스터의 길이가 256비트이고, 성분 크기가 16이면, 이와 같이 "모두"라는 제약에 따르면, 벡터 성분의 수가 16이라는 것을 기준으로 결과값이 반환되게 된다.
스케일링 벡터 길이 질의 명령에 의해 지정된 마지막 파라미터는 스케일링 값이다. 이것은 스케일링 벡터 길이 질의 명령 내부에서 인코드된 상수 정수값일 수 있으며 즉시값을 갖는다. 이와 같은 스케일링 값은 다양한 값을 가질 수 있지만, 1 내지 8(8을 포함한다)의 범위를 갖는 스케일링 값이 스케일링 벡터 길이 질의 명령을 인코드하는데 사용된 명령 비트 공간을 보존하면서 일반적으로 발견되는 대부분의 루프 언롤링(loop unrolling)의 정도를 지원할 수 있다는 것이 밝혀졌다.
도 3은 몇 개의 예시적인 스케일링 벡터 길이 질의 명령에 대해 반환된 결과값을 개략적으로 나타낸 것이다. 도시된 열들은, 벡터 비트 크기(즉, 벡터 레지스터 Zi의 비트 크기), 벡터 성분 비트 크기(예를 들어, 바이트, 반단어, 단어, 2배 단어), 벡터 패턴 제약(예를 들어, A, modulo(M), 2의 거듭제곱 등), 스케일링 값(예를 들어, 1 내지 8의 범위를 갖는 명령 그 자체 내부에서 인코드된 상수값)이, 명령 종류(예를 들어, 카운트, 증분, 감분)이다. 입력값은 카운트 명령에 대해서는 "0"으로 생각되어도 되고 증분 및 감분 명령의 경우에는 입력 레지스터 Xd에 의해 제공된 값이어도 된다.
도 3에 도시된 첫 번째 행을 고려하면, 이것은 128의 벡터 비트 크기를 지정한다. 벡터 성분 비트 크기는 8이다. 따라서, 제약을 받지 않은 최대 벡터 성분 계수값은 16이다. 이 행에 대한 패턴 제약은 "모두"이며, 따라서 이것은 제약을 받지 않는 패턴에 해당한다. 첫 번째 행의 스케일링은 "1"이므로 스케일링에 의해 결과가 변경되지 않는다. 명령 종류는 카운트이므로, 벡터 레지스터 내부의 바이트 크기를 갖는 벡터 성분들의 수의 단순한 계수값이 제공되며 이것은 16이다.
더욱 복잡한 예는 다섯 번째 행에 주어져 있다. 이 경우 벡터 비트 크기는 256이고 벡터 성분 비트 크기는 32이다. 이것은 지원된 벡터 성분들의 제약을 받지 않은 수가 8인 것을 나타내고 있다. 그러나, 패턴 제약은, 지원되어야 하는 벡터 성분들의 수가 3의 배수이어야 한다는 것이다. 따라서, 이 패턴 제약은 지원된 최대값으로 생각된 벡터 성분의 수를 6으로 줄인다. 다섯 번째 행의 스케일링 값이 2이며 명령 종류가 카운트이므로, 결과값은 패턴 제약의 결과값의 2배, 즉 12이다.
또 다른 예가 20번째 행에 주어진다. 이 행에서 벡터 비트 크기는 384이고 벡터 성분 비트 크기는 16이다. 이것은 벡터 레지스터에 의해 지원된 로 벡터(raw vector) 성분 수가 24라는 것을 나타낸다. 그러나, 이 행에서 적용되는 패턴 제약은, 지원된 벡터 계수값이 2의 거듭제곱이어야 한다는 것이므로, 지원된 비트 크기 16의 벡터 성분들의 최대 수가 16인 것으로 생각된다. 스케일링 인자 2가 적용된다. 따라서, 스케일링된 부분 결과값은 32이다. 명령 종류는 스케일링 벡터 길이 질의 명령의 증분 종류이며, 스칼라 레지스터 Xd 내부에 유지된 증분에 대한 입력값은 48이다. 이것은 80의 결과값(증분된 값)을 제공한다.
이와 같은 스케일링 벡터 길이 질의 명령이 스케일링된 카운트 명령일 때, 이것은 지원된 성분의 수에 스케일링 값을 곱한 값에 의존하는 카운트 값을 반환한다. 스케일링 벡터 길이 질의 명령이 스케일링된 증분 명령일 때, 이것은 (벡터 비트 크기, 벡터 성분 비트 크기, 패턴 제약 및 스케일링 값에 의존하여 결정된 값만큼) 증분될 입력값에 의존하는 증분 결과값을 반환한다. 마찬가지로, 스케일링 벡터 길이 질의 명령이 스케일링된 감분 명령일 때, 이것은 감분할 입력값에 의존하는 감분 결과값을 반환한다.
도 4는 스케일링 벡터 길이 질의 명령에 응답하여 결과값을 결정하는 회로의 구현예를 나타낸 것이다. 이 구현예는, 결과값들의 테이블(24)로 색인을 만드는 테이블 어드레스 디코더(22)를 구비한 룩업표의 형태를 갖는다. 스케일링 벡터 길이 질의 명령으로부터의 파라미터들(필드들)이 테이블 디코더(22)에 대한 입력으로 주어진다. 이들 필드는 성분 크기(2비트), 적용된 제약 패턴(5비트) 및 적용된 스케일링 값(3비트)을 포함한다. 테이블 어드레스 디코더(22)는, 특정한 구현, 즉 구현된 특정한 벡터 길이에 대해 고정된 형태를 갖는다. 테이블 어드레스 디코더(22)는, 그것에게 주어진 입력신호에 응답하여, 결과값들의 테이블(24)로부터 한 개의 결과값을 선택하는 1-핫(1-hot) 출력을 발생한 후, 스케일링 벡터 길이 질의 명령이 스케일링 증분 명령 또는 스케일링 감분 명령인 경우에는 이 결과값이 증분 또는 감분 회로(가산기 또는 감산기)에 각각 주어진다.
도 5는 스케일링 벡터 길이 질의 명령의 처리의 논리 흐름을 개략적으로 나타낸 흐름도이다. 이때, 실제적으로는 이와 같은 처리는 일반적으로 병렬로 실행되고 도 5에 도시된 개별 스텝들도 사실상 병렬로 실행될 수도 있다는 것은 자명하다. 스텝 26에서는, 스케일링 벡터 길이 질의 명령이 수신될 때까지 처리를 대기한다. 그후, 스텝 28은 지정된 벡터 성분 크기에 대한 해당 벡터 레지스터 구현에 의해 지원된 벡터 성분의 로(raw) 최대수를 결정한다. 스텝 30은 스케일링 벡터 길이 질의 명령에 의해 지정된 제약 패턴(만일 존재한다면)을 적용한다. 스텝 32는 스텝 26에서 제약 패턴을 적용하여 결정된 부분적인 결과를 스케일링한다. 명령 종류가 카운트 명령이면, 스텝 36은 카운트 결과값을 목적지 레지스터에 기록한다. 명령 종류가 증분이면, 스텝 38은 스텝 32에서 결정된 증분값에 의해 이미 유지된 목적지 레지스터 값을 증분하고, 증분된 결과값을 목적지 레지스터에 기록한다. 스텝 34에서 결정된 명령 종류가 감분이면, 스텝 40은 스텝 32에서 계산된 감분값만큼 목적지 레지스터 값을 감분하고, 그 결과를 목적지 레지스터에 기록한다.
도 6은 사용될 수 있는 가상머신 구현예를 나타낸 것이다. 전술한 실시예가 해당 기술을 지원하는 구체적인 처리 하드웨어를 작동하는 장치 및 방법에 대해 본 발명을 구현하지만, 하드웨어 장치들의 소위 가상머신 구현을 제공할 수도 있다. 이들 가상 머신 구현은 가상 머신 프로그램(510)을 지원하는 호스트 운영체계(520)를 실행하는 호스트 프로세서(530) 상에서 실행된다. 일반적으로, 합당한 속도에서 실행되는 가상머신 구현예를 제공하기 위해서는 크고 강력한 프로세서가 필요하지만, 호환성이나 재사용의 이유로 인해 다른 프로세서에 대해 네이티브한 코드를 실행하는 요구가 존재하는 경우 등과 같은 특정한 상황에서는 이와 같은 접근방법이 정당화되어도 된다. 가상머신 프로그램(510)은 어플리케이션 프로그램(500)에 대한 어플리케이션 프로그램 인터페이스를 제공하는데, 이것은 가상머신 프로그램(5100에 의해 모델링되고 있는 장치인 실제 하드웨어에 의해 제공되는 어플리케이션 프로그램 인터페이스와 동일하다. 따라서, 전술한 메모리 액세스의 제어를 포함하는 프로그램 명령들은 가상머신 프로그램(51)을 사용하는 어플리케이션 프로그램(500) 내부에서부터 실행되어 가상머신 하드웨어와의 상호작용을 모델링해도 된다.
첨부도면을 참조하여 본 발명의 예시적인 실시예들을 상세히 설명하였지만, 본 발명은 이들 실시예에 한정되지 않으며, 첨부된 청구범위의 보호범위 및 사상을 벗어나지 않으면서 본 발명이 속한 기술분야의 당업자에 의해 다양한 변경, 부가 및 변화가 행해질 수 있다는 것은 자명하다. 예를 들면, 종속항들의 특징들의 다양한 조합이 독립항들의 특징과 행해질 수도 있다.
Claims (15)
- 데이터 처리장치로서,
벡터 처리 연산을 행하는 처리회로와,
프로그램 명령을 디코드하여 상기 처리회로가 상기 벡터 처리 연산을 행하도록 제어하는 제어신호를 발생하는 디코더 회로를 구비하고,
상기 디코드 회로는, 스케일링된 벡터 길이 질의 명령에 응답하여, 상기 처리회로를 제어함으로써, 상기 스케일링된 벡터 길이 질의 명령에 의해 지정된 가변 벡터 성분 크기에 대한 벡터 내부의 성분들의 수에 상기 스케일링된 벡터 길이 질의 명령에 의해 지정된 스케일링 값을 곱한 값에 의존하는 결과값을 반환하는, 데이터 처리장치.
- 제 1항에 있어서,
상기 스케일링 값은 상기 스케일링된 벡터 길이 질의 명령 내부에서 인코딩된 상수 정수값인 데이터 처리장치.
- 제 1항 또는 제 2항에 있어서,
상기 스케일링 값은 1 내지 8의 범위에 놓이는 데이터 처리장치.
- 제 1항 내지 제 3항 중 어느 한 항에 있어서,
상기 벡터 성분 크기는 8비트, 16비트, 32비트 및 64비트 중 한 개에서 선택된 데이터 처리장치.
- 제 1항 내지 제 4항 중 어느 한 항에 있어서,
상기 스케일링된 벡터 길이 질의 명령은 한 개 이상의 또 다른 파라미터들을 포함하고, 상기 처리회로에 의해 반환된 상기 결과값은 상기 한개 이상의 또 다른 파라미터들에 의존하는 데이터 처리장치.
- 제 5항에 있어서,
상기 한개 이상의 또 다른 파라미터는 상기 데이터 처리장치에 의해 사용되는 벡터 길이가 결정될 때 겪게 되는 벡터 패턴 제약을 포함하는 데이터 처리장치.
- 제 6항에 있어서,
상기 벡터 패턴 제약은, 상기 성분들의 수가,
상기 데이터 처리장치에 의해 제공되고 지정된 값 M의 배수인 최대값,
상기 데이터 처리장치에 의해 제공되고 2의 거듭제곱인 최대값, 및
상기 데이터 처리장치에 의해 제공된 최대값
중에서 한 개인 것으로 지정하는 데이터 처리장치.
- 제 1항 내지 제 7항 중 어느 한 항에 있어서,
상기 스케일링된 벡터 길이 질의 명령은, 상기 성분들의 수에 상기 스케일링 값을 곱한 값에 의존하는 카운트 결과값을 반환하는 스케일링된 카운트 명령인 데이터 처리장치.
- 제 1항 내지 제 8항 중 어느 한 항에 있어서,
상기 스케일링된 벡터 길이 질의 명령은, 증분할 입력값에 의존하는 증분 결과값을 반환하는 스케일링된 증분 명령인 데이터 처리장치.
- 제 1항 내지 제 9항 중 어느 한 항에 있어서,
상기 스케일링된 벡터 길이 질의 명령은, 감분할 입력값에 의존하는 감분(decrement) 결과값을 반환하는 스케일링된 감분 명령인 데이터 처리장치.
- 제 1항 내지 제 10항 중 어느 한 항에 있어서,
상기 벡터 처리회로는 상기 스케일링 값에 의존하여 어드레스가 지정되어 상기 결과값을 적어도 부분적으로 결정하는 룩업표를 포함하는 데이터 처리장치.
- 제 5항 및 제 11항에 있어서,
상기 룩업표는 상기 한 개 이상의 또 다른 파라미터들에 의존하여 어드레스가 지정되는 데이터 처리장치.
- 데이터 처리장치로서,
벡터 처리 연산을 행하는 처리수단과,
프로그램 명령을 디코드하여 상기 처리회로가 상기 벡터 처리 연산을 행하도록 제어하는 제어신호를 발생하는 디코더 수단을 구비하고,
상기 디코드 수단은, 스케일링된 벡터 길이 질의 명령에 응답하여, 상기 처리수단을 제어함으로써, 상기 스케일링된 벡터 길이 질의 명령에 의해 지정된 가변 벡터 성분 크기에 대한 벡터 내부의 성분들의 수에 상기 스케일링된 벡터 길이 질의 명령에 의해 지정된 스케일링 값을 곱한 값에 의존하는 결과값을 반환하는, 데이터 처리장치.
- 스케일링된 벡터 길이 질의 명령에 응답하여, 처리회로를 제어함으로써, 상기 스케일링된 벡터 길이 질의 명령에 의해 지정된 가변 벡터 성분 크기에 대한 벡터 내부의 성분들의 수에 상기 스케일링된 벡터 길이 질의 명령에 의해 지정된 스케일링 값을 곱한 값에 의존하는 결과값을 반환하는 단계를 포함하는 데이터 처리방법.
- 청구항 1 내지 12 중 어느 한 항에 기재된 장치에 대응하는 가상머신 실행 환경을 제공하도록 컴퓨터를 제어하기 위해 비일시적인 기억매체에 기억된 컴퓨터 프로그램.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP15386026.7 | 2015-07-31 | ||
EP15386026.7A EP3125109B1 (en) | 2015-07-31 | 2015-07-31 | Vector length querying instruction |
PCT/EP2016/064500 WO2017021055A1 (en) | 2015-07-31 | 2016-06-23 | Vector length querying instruction |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180037961A true KR20180037961A (ko) | 2018-04-13 |
KR102586258B1 KR102586258B1 (ko) | 2023-10-10 |
Family
ID=54140382
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020187003457A KR102586258B1 (ko) | 2015-07-31 | 2016-06-23 | 벡터 길이 질의 명령 |
Country Status (8)
Country | Link |
---|---|
US (1) | US11314514B2 (ko) |
EP (1) | EP3125109B1 (ko) |
JP (1) | JP6818010B2 (ko) |
KR (1) | KR102586258B1 (ko) |
CN (1) | CN107851022B (ko) |
IL (1) | IL256403B (ko) |
TW (1) | TWI721999B (ko) |
WO (1) | WO2017021055A1 (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170046168A1 (en) * | 2015-08-14 | 2017-02-16 | Qualcomm Incorporated | Scalable single-instruction-multiple-data instructions |
US11269636B2 (en) * | 2019-05-27 | 2022-03-08 | Texas Instmments Incorporated | Look-up table write |
CN110333857B (zh) * | 2019-07-12 | 2023-03-14 | 辽宁工程技术大学 | 一种基于约束规划的自定义指令自动识别方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004510265A (ja) * | 2000-09-28 | 2004-04-02 | シーバーグ、エルリング、クリステン | 最適局部シーケンス配列類似スコアの測定 |
US20120284487A1 (en) * | 2011-05-02 | 2012-11-08 | Saankhya Labs Private Limited | Vector Slot Processor Execution Unit for High Speed Streaming Inputs |
US20140207838A1 (en) * | 2011-12-22 | 2014-07-24 | Klaus Danne | Method, apparatus and system for execution of a vector calculation instruction |
US20140289502A1 (en) * | 2013-03-19 | 2014-09-25 | Apple Inc. | Enhanced vector true/false predicate-generating instructions |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6133547A (ja) | 1984-07-25 | 1986-02-17 | Fujitsu Ltd | ベクトル・レジスタのオ−バフロ−情報通知方式 |
US4745547A (en) | 1985-06-17 | 1988-05-17 | International Business Machines Corp. | Vector processing |
US5537606A (en) * | 1995-01-31 | 1996-07-16 | International Business Machines Corporation | Scalar pipeline replication for parallel vector element processing |
US6788303B2 (en) * | 2001-02-27 | 2004-09-07 | 3Dlabs Inc., Ltd | Vector instruction set |
US20040073773A1 (en) * | 2002-02-06 | 2004-04-15 | Victor Demjanenko | Vector processor architecture and methods performed therein |
US9170812B2 (en) * | 2002-03-21 | 2015-10-27 | Pact Xpp Technologies Ag | Data processing system having integrated pipelined array data processor |
US8966223B2 (en) * | 2005-05-05 | 2015-02-24 | Icera, Inc. | Apparatus and method for configurable processing |
US7725624B2 (en) | 2005-12-30 | 2010-05-25 | Intel Corporation | System and method for cryptography processing units and multiplier |
CN101535945A (zh) * | 2006-04-25 | 2009-09-16 | 英孚威尔公司 | 全文查询和搜索系统及其使用方法 |
GB2464292A (en) | 2008-10-08 | 2010-04-14 | Advanced Risc Mach Ltd | SIMD processor circuit for performing iterative SIMD multiply-accumulate operations |
US8555034B2 (en) * | 2009-12-15 | 2013-10-08 | Oracle America, Inc. | Execution of variable width vector processing instructions |
US10175990B2 (en) * | 2009-12-22 | 2019-01-08 | Intel Corporation | Gathering and scattering multiple data elements |
US20110158310A1 (en) * | 2009-12-30 | 2011-06-30 | Nvidia Corporation | Decoding data using lookup tables |
CN101901248B (zh) * | 2010-04-07 | 2012-08-15 | 北京星网锐捷网络技术有限公司 | 一种布隆过滤器的生成、更新以及查询元素方法和装置 |
JP5699554B2 (ja) * | 2010-11-11 | 2015-04-15 | 富士通株式会社 | ベクトル処理回路、命令発行制御方法、及びプロセッサシステム |
EP2788902B1 (en) * | 2011-12-08 | 2019-04-17 | Oracle International Corporation | Techniques for more efficient usage of memory-to-cpu bandwidth |
US9557993B2 (en) * | 2012-10-23 | 2017-01-31 | Analog Devices Global | Processor architecture and method for simplifying programming single instruction, multiple data within a register |
CN103105775B (zh) * | 2012-12-17 | 2014-04-16 | 清华大学 | 基于序优化与在线核极限学习机的分层迭代优化调度方法 |
US20140189310A1 (en) | 2012-12-27 | 2014-07-03 | Nvidia Corporation | Fault detection in instruction translations |
CN103020018B (zh) * | 2012-12-27 | 2015-09-30 | 南京师范大学 | 一种基于多维伪随机序列的压缩感知矩阵构造方法 |
US9282014B2 (en) * | 2013-01-23 | 2016-03-08 | International Business Machines Corporation | Server restart management via stability time |
US10437600B1 (en) * | 2017-05-02 | 2019-10-08 | Ambarella, Inc. | Memory hierarchy to transfer vector data for operators of a directed acyclic graph |
-
2015
- 2015-07-31 EP EP15386026.7A patent/EP3125109B1/en active Active
-
2016
- 2016-06-23 US US15/741,303 patent/US11314514B2/en active Active
- 2016-06-23 CN CN201680044118.1A patent/CN107851022B/zh active Active
- 2016-06-23 JP JP2018503589A patent/JP6818010B2/ja active Active
- 2016-06-23 WO PCT/EP2016/064500 patent/WO2017021055A1/en active Application Filing
- 2016-06-23 KR KR1020187003457A patent/KR102586258B1/ko active IP Right Grant
- 2016-07-20 TW TW105122825A patent/TWI721999B/zh active
-
2017
- 2017-12-19 IL IL256403A patent/IL256403B/en active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004510265A (ja) * | 2000-09-28 | 2004-04-02 | シーバーグ、エルリング、クリステン | 最適局部シーケンス配列類似スコアの測定 |
US20120284487A1 (en) * | 2011-05-02 | 2012-11-08 | Saankhya Labs Private Limited | Vector Slot Processor Execution Unit for High Speed Streaming Inputs |
US20140207838A1 (en) * | 2011-12-22 | 2014-07-24 | Klaus Danne | Method, apparatus and system for execution of a vector calculation instruction |
US20140289502A1 (en) * | 2013-03-19 | 2014-09-25 | Apple Inc. | Enhanced vector true/false predicate-generating instructions |
Also Published As
Publication number | Publication date |
---|---|
US11314514B2 (en) | 2022-04-26 |
CN107851022A (zh) | 2018-03-27 |
IL256403B (en) | 2019-08-29 |
JP6818010B2 (ja) | 2021-01-20 |
JP2018521422A (ja) | 2018-08-02 |
CN107851022B (zh) | 2022-05-17 |
WO2017021055A1 (en) | 2017-02-09 |
TW201717051A (zh) | 2017-05-16 |
KR102586258B1 (ko) | 2023-10-10 |
EP3125109A1 (en) | 2017-02-01 |
IL256403A (en) | 2018-02-28 |
US20180196673A1 (en) | 2018-07-12 |
TWI721999B (zh) | 2021-03-21 |
EP3125109B1 (en) | 2019-02-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20170097018A (ko) | 벡터 브로드캐스트 및 xorand 로직 명령어를 위한 장치 및 방법 | |
KR20180066146A (ko) | 벡터 데이터 전송 명령어 | |
KR102586258B1 (ko) | 벡터 길이 질의 명령 | |
KR20180067582A (ko) | 벡터 로드 명령어 | |
CN111782270A (zh) | 一种数据处理方法及装置、存储介质 | |
KR20180035211A (ko) | 벡터 산술 명령 | |
JP7186212B2 (ja) | データ処理装置におけるベクトル・インタリーブ | |
JP6874262B2 (ja) | ベクトル被演算子ビットサイズの制御 | |
US20200371793A1 (en) | Vector store using bit-reversed order | |
GB2617829A (en) | Technique for handling data elements stored in an array storage | |
WO2023199014A1 (en) | Technique for handling data elements stored in an array storage | |
US20050228970A1 (en) | Processing unit with cross-coupled alus/accumulators and input data feedback structure including constant generator and bypass to reduce memory contention | |
JP5263497B2 (ja) | 信号処理プロセッサ及び半導体装置 | |
TW202307653A (zh) | 陳述技術 | |
JP5263498B2 (ja) | 信号処理プロセッサ及び半導体装置 | |
JP5311008B2 (ja) | 信号処理プロセッサ及び半導体装置 | |
JP2006526194A (ja) | 超長命令語を用いたマルチプル・レジスター・ロード | |
JPS63116238A (ja) | デ−タプロセツサ装置 | |
JP2012150589A (ja) | 演算装置 | |
JP2007066233A (ja) | 情報処理装置 |
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 |