KR102586259B1 - 레지스터 기반의 복소수 처리 - Google Patents

레지스터 기반의 복소수 처리 Download PDF

Info

Publication number
KR102586259B1
KR102586259B1 KR1020207004143A KR20207004143A KR102586259B1 KR 102586259 B1 KR102586259 B1 KR 102586259B1 KR 1020207004143 A KR1020207004143 A KR 1020207004143A KR 20207004143 A KR20207004143 A KR 20207004143A KR 102586259 B1 KR102586259 B1 KR 102586259B1
Authority
KR
South Korea
Prior art keywords
complex
components
data items
real
data
Prior art date
Application number
KR1020207004143A
Other languages
English (en)
Other versions
KR20200026992A (ko
Inventor
에릭 비스콘디
엠보우 욜
Original Assignee
에이알엠 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에이알엠 리미티드 filed Critical 에이알엠 리미티드
Publication of KR20200026992A publication Critical patent/KR20200026992A/ko
Application granted granted Critical
Publication of KR102586259B1 publication Critical patent/KR102586259B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/4806Computations with complex numbers
    • G06F7/4812Complex multiplication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields

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 Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)
  • Hardware Redundancy (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

입력 데이터 벡터들 내부의 각각의 위치에 있는 복수의 입력 데이터 항목들을 포함하는 입력 데이터 벡터들에 대한 벡터 처리 연산을 지원하기 위한 장치, 방법, 프로그램 및 복소수 처리 명령이 제공된다. 명령에 응답하여, 적어도 한 개의 제1 세트의 데이터 항목들이 제1 소스 레지스터 내부의 교번하는 위치들로부터 추출되고, 적어도 한 개의 제2 세트의 데이터 항목들이 제2 소스 레지스터 내부의 교번하는 위치들로부터 추출되고, 제1 및 제2 소스 레지스터들 내부의 연속된 데이터 항목들이 복소수들의 각각의 세트들의 교번하는 실수 및 허수 성분들을 포함한다. 2 세트의 데이터 항목들을 피연산자로 사용하여 복소수 성분들의 결과 세트가 생성되고, 복소수 성분들의 결과 세트는 2개의 세트의 복소수들에 적용된 복소수 연산의 복소수 결과의 실수부 및 허수부 중에서 한 개다. 복소수 성분들의 결과 세트는 목적지 레지스터에 인가된다.

Description

레지스터 기반의 복소수 처리
본 발명은 데이터 처리장치에 관한 것이다. 특히, 본 발명은 데이터 처리장치에서 복소수 연산을 행하는 것에 관한 것이다.
데이터 처리장치는 다양한 상황에서 복소수 연산을 행하는 것이 필요하다. 일부 데이터 처리 시스템은, 벡터 처리 명령에 의해 지정된 소스 피연산자 또는 결과 값이 지정된 데이터 처리 연산을 병렬로 겪는 복수의 데이터 항목들을 포함하는 벡터인 벡터 명령의 처리를 지원한다. 복소수의 2부분의 구조(즉, 그것의 실수부 및 허수부)는, 벡터화 방식으로 복소수 연산을 행할 수 있는 데이터 처리 시스템을 제공하는 것이 하찮은 것이 아니라는 것을 의미한다.
일 실시예에서는, 명령들을 디코드하는 명령 디코더 회로와, 명령들에 의해 지정된 벡터 처리 연산을 입력 데이터 벡터들 내부의 각각의 위치에 있는 복수의 입력 데이터 항목들을 포함하는 입력 데이터 벡터들에 선택적으로 적용하는 데이터 처리회로를 구비하고, 상기 명령 디코더 회로는, 복소수 연산, 제1 소스 레지스터, 제2 소스 레지스터 및 목적지 레지스터를 지정하는 복소수 처리 명령에 응답하여, 제어신호를 발생하여 상기 데이터 처리회로를 제어함으로써, 상기 제1 소스 레지스터 내부의 연속된 데이터 항목들이 제1 세트의 복소수들의 교번하는 실수 및 허수 성분들을 포함하는 상기 제1 소스 레지스터 내부의 교번하는 위치들로부터 적어도 한 개의 제 1 세트의 데이터 항목들을 추출하고, 상기 제2 소스 레지스터 내부의 연속된 데이터 항목들이 제2 세트의 복소수들의 교번하는 실수 및 허수 성분들을 포함하는 상기 제2 소스 레지스터 내부의 교번하는 위치들로부터 적어도 한 개의 제 2 세트의 데이터 항목들을 추출하고, 상기 제1 및 제2 세트의 데이터 항목들을 피연산자들로서 사용하여, 상기 제1 세트의 복소수들 및 상기 제2 세트의 복소수들에 적용된 복소수 연산의 복소수 결과의 실수부 및 허수부 중에서 한 개인 복소수 성분들의 결과 세트를 생성하고, 상기 복소수 성분들의 결과 세트를 상기 목적지 레지스터에 인가하고, 상기 데이터 처리회로가 제어신호에 응답하여 상기 복소수 성분들의 결과 세트를 상기 목적지 레지스터 내부의 연속된 위치들에 인가하는 장치가 제공된다.
또 다른 실시예에서는, 데이터 처리장치의 작동방법으로서, 명령들을 디코드하는 단계와, 명령들에 의해 지정된 벡터 처리 연산을 입력 데이터 벡터들 내부의 각각의 위치에 있는 복수의 입력 데이터 항목들을 포함하는 입력 데이터 벡터들에 선택적으로 적용하는 단계와, 복소수 연산, 제1 소스 레지스터, 제2 소스 레지스터 및 목적지 레지스터를 지정하는 복소수 처리 명령에 응답하여, 제어신호를 발생하여 상기 데이터 처리장치의 데이터 처리회로를 제어함으로써, 상기 제1 소스 레지스터 내부의 연속된 데이터 항목들이 제1 세트의 복소수들의 교번하는 실수 및 허수 성분들을 포함하는 상기 제1 소스 레지스터 내부의 교번하는 위치들로부터 적어도 한 개의 제 1 세트의 데이터 항목들을 추출하고, 상기 제2 소스 레지스터 내부의 연속된 데이터 항목들이 제2 세트의 복소수들의 교번하는 실수 및 허수 성분들을 포함하는 상기 제2 소스 레지스터 내부의 교번하는 위치들로부터 적어도 한 개의 제 2 세트의 데이터 항목들을 추출하고, 상기 제1 및 제2 세트의 데이터 항목들을 피연산자들로서 사용하여, 상기 제1 세트의 복소수들 및 상기 제2 세트의 복소수들에 적용된 복소수 연산의 복소수 결과의 실수부 및 허수부 중에서 한 개인 복소수 성분들의 결과 세트를 생성하고, 상기 복소수 성분들의 결과 세트를 상기 목적지 레지스터에 인가하는 단계를 포함하고, 상기 데이터 처리회로는 제어신호에 응답하여 상기 복소수 성분들의 결과 세트를 상기 목적지 레지스터 내부의 연속된 위치들에 인가하는 데이터 처리장치의 작동방법이 제공된다.
또 다른 실시예에서는, 명령들을 디코드하는 수단과, 명령들에 의해 지정된 벡터 처리 연산을 입력 데이터 벡터들 내부의 각각의 위치에 있는 복수의 입력 데이터 항목들을 포함하는 입력 데이터 벡터들에 선택적으로 적용하는 수단과, 복소수 연산, 제1 소스 레지스터, 제2 소스 레지스터 및 목적지 레지스터를 지정하는 복소수 처리 명령에 응답하여, 제어신호를 발생하여 데이터 처리장치 내부의 데이터 처리 수단을 제어함으로써, 상기 제1 소스 레지스터 내부의 연속된 데이터 항목들이 제1 세트의 복소수들의 교번하는 실수 및 허수 성분들을 포함하는 상기 제1 소스 레지스터 내부의 교번하는 위치들로부터 적어도 한 개의 제 1 세트의 데이터 항목들을 추출하고, 상기 제2 소스 레지스터 내부의 연속된 데이터 항목들이 제2 세트의 복소수들의 교번하는 실수 및 허수 성분들을 포함하는 상기 제2 소스 레지스터 내부의 교번하는 위치들로부터 적어도 한 개의 제 2 세트의 데이터 항목들을 추출하고, 상기 제1 및 제2 세트의 데이터 항목들을 피연산자들로서 사용하여, 상기 제1 세트의 복소수들 및 상기 제2 세트의 복소수들에 적용된 복소수 연산의 복소수 결과의 실수부 및 허수부 중에서 한 개인 복소수 성분들의 결과 세트를 생성하고, 상기 복소수 성분들의 결과 세트를 상기 목적지 레지스터에 인가하는 수단을 구비하고, 상기 데이터 처리 수단은 제어신호에 응답하여 상기 복소수 성분들의 결과 세트를 상기 목적지 레지스터 내부의 연속된 위치들에 인가하는 장치가 제공된다.
또 다른 실시예에서는, 호스트 데이터 처리장치를 제어하여, 명령들을 디코드하는 명령 디코딩 프로그램 로직과, 명령들에 의해 지정된 벡터 처리 연산을 입력 데이터 벡터 구조들 내부의 각각의 위치에 있는 복수의 입력 데이터 항목들을 포함하는 입력 데이터 벡터 구조들에 선택적으로 적용하는 데이터 처리 프로그램 로직을 포함하는 명령 실행 환경을 제공하는 컴퓨터 프로그램으로서, 상기 명령 디코딩 프로그램 로직은, 복소수 연산, 제1 소스 데이터 구조, 제2 소스 데이터 구조 및 목적지 데이터 구조를 지정하는 복소수 처리 명령에 응답하여, 제어신호를 발생하여 상기 데이터 처리 프로그램 로직을 제어함으로써, 상기 제1 소스 데이터 구조 내부의 연속된 데이터 항목들이 제1 세트의 복소수들의 교번하는 실수 및 허수 성분들을 포함하는 상기 제1 소스 데이터 구조 내부의 교번하는 위치들로부터 적어도 한 개의 제 1 세트의 데이터 항목들을 추출하고, 상기 제2 소스 데이터 구조 내부의 연속된 데이터 항목들이 제2 세트의 복소수들의 교번하는 실수 및 허수 성분들을 포함하는 상기 제2 소스 데이터 구조 내부의 교번하는 위치들로부터 적어도 한 개의 제 2 세트의 데이터 항목들을 추출하고, 상기 제1 및 제2 세트의 데이터 항목들을 피연산자들로서 사용하여, 상기 제1 세트의 복소수들 및 상기 제2 세트의 복소수들에 적용된 복소수 연산의 복소수 결과의 실수부 및 허수부 중에서 한 개인 복소수 성분들의 결과 세트를 생성하고, 상기 복소수 성분들의 결과 세트를 상기 목적지 데이터 구조에 인가하고, 상기 데이터 처리 프로그램 로직은 제어신호에 응답하여 상기 복소수 성분들의 결과 세트를 상기 목적지 데이터 구조 내부의 연속된 위치들에 인가하는 컴퓨터 프로그램이 제공된다.
이하, 다음의 첨부도면에 도시된 실시예를 참조하여 본 발명을 더욱 상세히 설명한다.
도 1은 일 실시예에서의 데이터 처리장치를 개략적으로 나타낸 것이다.
도 2는 일 실시예에서 비확대(non-widening) 복소수 연산을 행하는 데이터 처리회로를 개략적으로 나타낸 것이다.
도 3은 일 실시예에서 확대 복소수 연산을 행하는 데이터 처리회로를 개략적으로 나타낸 것이다.
도 4는 일 실시예에서 복제 연산을 사용한 복소수 연산에 선행하는 데이터 처리회로를 개략적으로 나타낸 것이다.
도 5는 4가지 종류의 부호를 갖는 승산 복소수 명령에 응답하는 실시예에서의 데이터 처리회로의 동작을 나타낸 것이다.
도 6은 도 5에 도시된 것과 같은 복소수 명령들의 사용 이후에 축소(narrowing) 시프트 연산을 사용하여 최종 세트의 벡터화된 복소수들을 생성하는 것을 나타낸 것이다.
도 7a 내지 도 7d는 일 실시예에서 4가지 다른 종류의 내적 명령들에 응답하는 데이터 처리회로를 개략적으로 나타낸 것이다.
도 8은 초기의 데이터 정밀도로 복귀하기 위해 도 7a 내지 도 7d에 도시된 것과 같은 복소 내적 명령의 사용 후에 일 실시예에서 행해지는 연산들의 시퀀스를 나타낸 것이다.
도 9a-도 9d는 일 실시예에서 4가지 다른 종류의 비확대 복소 내적 명령에 응답하는 데이터 처리회로를 개략적으로 나타낸 것이다.
도 10은 도 9a-도 9d에 도시된 것과 같은 명령의 실행 이후에 초기 데이터 정밀도로 복귀하기 위해 일 실시예에서 행해지는 연산들의 시퀀스를 나타낸 것이다.
도 11a 및 도 11b는 전치(transposition) 파라미터를 더 포함하는 복소 가산 명령을 지원하는 일 실시예의 데이터 처리회로를 개략적으로 나타낸 것이다.
도 12는 일 실시예에서 4개의 각각의 전치 파라미터들에 응답하여 행해지는 4개의 전치들의 세트를 나타낸 것이다.
도 13은 일 실시예의 방법을 행할 때 취해지는 단계들의 시퀀스를 나타낸 것이다.
도 14는 일 실시예에서 시뮬레이터 구현에를 제공하는 시스템의 구성요소들을 개략적으로 나타낸 것이다.
적어도 일부 실시예는, 명령들을 디코드하는 명령 디코더 회로와, 명령들에 의해 지정된 벡터 처리 연산을 입력 데이터 벡터들 내부의 각각의 위치에 있는 복수의 입력 데이터 항목들을 포함하는 입력 데이터 벡터들에 선택적으로 적용하는 데이터 처리회로를 구비하고, 상기 명령 디코더 회로는, 복소수 연산, 제1 소스 레지스터, 제2 소스 레지스터 및 목적지 레지스터를 지정하는 복소수 처리 명령에 응답하여, 제어신호를 발생하여 상기 데이터 처리회로를 제어함으로써, 상기 제1 소스 레지스터 내부의 연속된 데이터 항목들이 제1 세트의 복소수들의 교번하는 실수 및 허수 성분들을 포함하는 상기 제1 소스 레지스터 내부의 교번하는 위치들로부터 적어도 한 개의 제 1 세트의 데이터 항목들을 추출하고, 상기 제2 소스 레지스터 내부의 연속된 데이터 항목들이 제2 세트의 복소수들의 교번하는 실수 및 허수 성분들을 포함하는 상기 제2 소스 레지스터 내부의 교번하는 위치들로부터 적어도 한 개의 제 2 세트의 데이터 항목들을 추출하고, 상기 제1 및 제2 세트의 데이터 항목들을 피연산자들로서 사용하여, 상기 제1 세트의 복소수들 및 상기 제2 세트의 복소수들에 적용된 복소수 연산의 복소수 결과의 실수부 및 허수부 중에서 한 개인 복소수 성분들의 결과 세트를 생성하고, 상기 복소수 성분들의 결과 세트를 상기 목적지 레지스터에 인가하는 장치를 제공한다.
최근의 데이터 처리 시스템은, 다양한 상황에서, 예를 들어, 몇 개만 예를 들면, 디지털 통신, 레이더 시스템 및 광학 시스템에서 복소수 산술 연산을 행하는 것이 필요할 수 있다. 더구나, 벡터화 방식으로(즉, 데이터 벡터 내부의 복수의 데이터 항목들에 대해 단일의 명령에 의해 지정된 데이터 처리 연산을 병렬로 적용하기 위해) 데이터를 처리할 수 있는 데이터 처리 시스템은 스루풋과 처리 효율 면에서 이점을 제공할 수 있다. 그러나, 벡터 처리 기술을 복소수 데이터에 적용하는 것은 다양한 이유로 인해 간단하지 않다. 먼저, 복소수의 고유의 구조(실수 및 허수 성분들)는, 데이터 처리 시스템이 벡터 내부의 더 큰 세트의 데이터 항목들 내부의 각각의 개별적인 복소수 데이터 항목의 이들 각각의 부분들을 올바르게 취급하도록 구성되어야 하며, 더구나 2개의 세트의 복소수들의 각각의 성분들이 지정된 복소수 연산에서 결합될 수 있는 방식에 대해 입력 데이터의 벡터화된 속성이 추가적인 제약을 부가한다는 것을 의미한다. 본 발명은, 데이터 처리회로가 소스 레지스터들 각각 내부, 즉 소스 레지스터가 연속된 데이터 항목들이 복소수들의 세트의 실수 및 허수 성분들 사이에서 교번하는 연속된 데이터 항목들의 세트를 유지하고 실수 및 허수 성분들이 쌍을 이루어 개별적인 복소수들을 형성하는 것으로 인식되는 위치에 있는 교번하는 위치들로부터 데이터 항목들의 세트를 추출하는 접근방법을 제공한다. 따라서, 데이터 처리회로는 소스 레지스터로부터 예를 들면 실수 성분들을 꺼낼 수 있다(이때 다른 실시예에서는 대안으로서 또는 덧붙여서 허수 성분들을 마찬가지로 추출할 수도 있다는 것에 주목하기 바란다). 따라서, 데이터 처리회로는 각각의 소스 레지스터들로부터 추출된 성분들에 대해 필요한 복소수 연산을 적용하여 결과 세트의 복소수 성분들을 생성하는데, 이때 결과 세트의 복소수 성분들은 복소수 연산의 복소수 결과들의 실수 성분들의 세트이거나 허수 부분이다. 이때, 이것은 추가적인 세트의 복소수 성분들이 생성되는 것을 금지하지 않는데, 즉 복소수들의 세트의 실수 부분 및 허수 부분들이 생성될 수 있지만, 일부 실시예에서는 단지 한쪽 또는 다른 쪽이 생성된다. 그후, 결과 세트의 복소수 성분들이 복소수 처리 명령에서 지정된 목적지 레지스터에 적용되는데, 이때 이와 같은 적용은 다양한 형태를 가질 수 있다. 예를 들어, 결과 세트는 간단히 목적지 레지스터에 기억되거나, 목적지 레지스터의 기존의 콘텐츠와 함께 (다양한 수학적 방법에 의해) 누적된다.
전술한 것과 같이, 복소수 성분들의 결과 세트는 정의된 특정한 복소수 처리 명령에 따라 변동할 수 있지만, 일부 실시예에서 복소수 성분들의 결과 세트는 복소수 결과의 실수 성분들의 세트이다. 마찬가지로, 다른 실시예에서 복소수 성분의 결과 세트는 복소수 결과의 허수 성분들의 세트이다.
복소수 처리 명령에 응답하여 데이터 처리회로에 의해 생성된 복소수 성분들의 결과 세트는 다양한 방식으로 목적지 레지스터에 인가될 수 있지만, 일부 실시예에서는, 데이터 처리회로가 제어신호에 응답하여 복소수 성분들의 결과 세트를 목적지 레지스터 내부의 연속된 위치들에 인가한다. 따라서, 복소수 성분들의 결과 세트가 복소수 연산의 복소수 결과의 실수 부분 및 허수 부분 중에서 한 개일 경우, 이것은, 목적지 레지스터의 콘텐츠가 제1 및 제2 소스 레지스터들의 콘텐츠와 다른 포맷을 갖는다는 것을 의미하는데, 즉 제1 및 제2 소스 레지스터들이 복소수들의 세트의 실수 및 허수 성분들의 연속된 쌍들을 유지하는 경우, 목적지 레지스터가 연속된 실수 성분들이나 연속된 허수 성분들만을 유지한다. 이것은 다양한 복소수 연산이 정의될 수 있게 하면서도, 벡터처리 구성 내에서 결과가 여전히 취급될 수 있다.
실제로, 이와 같은 일부 실시예에서는 복소수 성분들의 결과 세트의 각각의 복소수 성분이 제1 및 제2 세트의 데이터 항목들의 각각의 데이터 항목보다 폭이 넓다. 따라서, 복소수 성분들의 결과 세트의 성분들의 이와 같은 확대는, 이와 같이 구성하지 않았더라면 벡터 처리의 각각의 레인들 내부에 복소수 성분들을 끼워넣기 위해 결과 세트의 복소수 성분들의 상당한 절단(truncation)을 필요로 할 지도 모르는 벡터 처리 환경 내에서의 동작에도 불구하고, 복소수 성분들의 결과 세트의 정밀도가 더 잘 유지된다는 것을 의미한다. 따라서, 본 발명은, 예를 들어, 복소수들의 결과 세트의 실수 및 허수 성분들이 2개의 별개의 명령들에 의해 결정될 수 있고, 그후 이들 성분들을 실수 및 허수의 복소수 쌍들의 연속된 세트로 재결합할 수 있는 기회를 갖는 접근방법을 제공한다는 것을 알 수 있다.
그렇지만, 전술한 일부 실시예에서는, 데이터 처리회로가 복소수 성분들의 결과 세트를 목적지 레지스터 내부의 연속된 위치에 적용할 수 있지만, 일부 실시예에서는, 데이터 처리회로가 복소수 실수 성분들의 결과 세트와 복소수 허수 성분들의 대응하는 결과 세트 모두를 생성한 후, 이것들이 목적지 레지스터에의 인가시에 인터리브될 수 있어, 복소수들의 연속된 세트를 구현하는 연속된 실수 및 허수 성분 쌍들이 발생된다. 따라서, 일부 실시예에서는, 데이터 처리회로가 제어신호에 응답하여, 복소수 성분들의 추가적인 결과 세트와 인터리브하여 복소수 성분들의 결과 세트를 목적지 레지스터 내부의 교번하는 위치에 인가하고, 복소수 성분들의 결과 세트가 복소수 결과의 실수 성분들의 세트일 때에는, 복소수 성분들의 추가적인 결과 세트가 복소수 결과의 허수 성분들의 세트이고, 복소수 성분들의 결과 세트가 복소수 결과의 허수 성분들의 세트일 때에는, 복소수 성분들의 추가적인 결과 세트가 복소수 결과의 실수 성분들의 세트이다.
데이터 처리회로가 제1 및 제2 소스 레지스터들 내부의 그들의 각각의 교번하는 위치들로부터 제1 세트의 데이터 항목들 및 제 2 세트의 데이터 항목들을 추출하는 방법은 다양하게 정의될 수 있으며, 실제로 일부 실시예에서는 다양하게 제어되는데, 예를 들어, 일부 실시예에서는, 복소수 처리 명령이 제1 세트의 데이터 항목들을 제1 소스 레지스터 내부의 짝수 위치들에서 추출할 것인지 또는 홀수 위치들에서 추출할 것인지 더 지정하고, 복소수 처리 명령은 제2 세트의 데이터 항목들을 제2 소스 레지스터 내부의 짝수 위치들에서 추출할 것인지 또는 홀수 위치들에서 추출할 것인지 더 지정한다. "짝수" 및 "홀수" 위치들은 본 발명에서는 "하단" 및 "상단" 위치들로도 부른다.
복소수 연산을 행하기 위해 제1 및 제2 세트의 데이터 항목이 추출되기 전에 제1 소스 레지스터 및 제2 소스 레지스터 중 적어도 한 개에 인가되는 추가적인 데이터 처리가 더 존재할 수도 있는데, 일부 실시예에서, 복소수 처리 명령은 제1 소스 레지스터 및 제2 소스 레지스터 중에서 적어도 한 개에 대한 복제 색인을 더 지정하고, 데이터 처리회로는 제어신호에 더 응답하여, 복제 색인에 의해 표시된 복소수들의 소스 세트를 제1 소스 레지스터 및 제2 소스 레지스터 중에서 적어도 한 개에 복제한다. 따라서, 제1 및 제2 소스 레지스터들 중에서 적어도 한 개의 이와 같은 "색인"은 프로그래머가 각각의 레지스터 내부에 유지된 데이터의 서브셋을 식별할 수 있게 하며, 그후 이와 같은 서브셋이 재현되어, 제1 및 제2 데이터 세트의 추출이 이와 같은 재현된 서브셋을 사용한다. 예를 들어, 정의된 색인의 속성에 따라, 복제 색인이 벡터 레지스터의 소정의 부분들의 2개의 절반부들 중에서 한개를 지정한 후, 복제가 이와 같은 지정된 절반부가 각각의 소정의 부분 내부의 나머지 절반부 내부에 복사되게 한다. 특정한 한가지 예를 들면, 복제 색인이 적용되는 벡터 레지스터의 유닛들이 128비트의 길이를 갖고, 복제 색인이 이와 같은 유닛의 상부 절반부를 지정하고, 본 발명이 이 128비트의 공간을 사용하여 4개의 연속된 32비트의 복i 성분들(즉 2개의 64비트 복소수들)을 기억하는 경우, 복제는 식별된 64비트의 복소수가 이 128비트의 유닛 내부의 인접한 64비트의 공간 내부에 복제되게 할 것이다. 이와 같은 조작은 벡터 레지스터의 전체 폭에 걸쳐 반복된다.
전술한 예는 한 번의 복제가 행해지는 것을 예로 들었지만, 일부 실시예에서는 복소수들의 소스 세트의 복제가 한 번보다 많은 복소수들의 소스 세트의 복제를 포함한다. 예를 들어, 복제 색인이 벡터의 지정된 유닛의 1/4을 지정하는 경우, 이와 같은 1/4가 3회 복제되어 전체 유닛을 채운다. 128비트의 유닛의 전술한 예를 유지하지만, 복소수 성분들이 각각 16비트인 예에서, 이와 같은 구성은 식별된 32비트의 복소수(16비트의 실수 성분 및 16비트의 허수 성분)가 이와 같은 128비트 유닛 위의 나머지 3개의 32비트 부분들 내부에 복제되게 할 것이다. 이와 같은 "색인"은 본 발명에서 설명하는 모든 명령에 적용된다.
일부 실시예에서는, 제1 소스 레지스터로부터 한 개의 세트의 데이터 항목들 만이 추출되어, 제1 소스 레지스터 내부의 복소수들의 세트의 실수 성분들의 세트 또는 허수 성분들의 세트를 표시하지만, 일부 실시예에서는, 실수 및 허수 성분들 모두가 추출된다. 따라서, 이들 실시예에서는, 제1 소스 레지스터로부터 추출된 적어도 한 개의 제1 세트의 데이터 항목들이 제1 세트의 데이터 항목들과 제 3 세트의 데이터 항목들을 포함하고, 제1 세트의 데이터 항목들이 제1 세트의 복소수들의 실수 성분들일 때에는, 제3 세트의 데이터 항목들이 제1 세트의 복소수들의 허수 성분들이고, 제1 세트의 데이터 항목들이 제1 세트의 복소수들의 허수 성분들일 때에는, 제3 세트의 데이터 항목들이 제1 세트의 복소수들의 실수 성분들이고, 데이터 처리회로는 제어신호에 더 응답하여 제3 세트의 데이터 항목들을 피연산자들로서 더 사용하여 복소수 성분들의 결과 세트를 생성한다. 따라서, 데이터 처리회로는, 정의된 특정한 복소수 처리 명령(따라서 복소수 연산)에 적절한, 복소수 연산에 포함시키기 위한 제1 세트의 복소수들의 실수 및 허수 성분들 모두를 갖는다.
마찬가지로, 일부 실시예에서는, 제2 소스 레지스터로부터 추출된 적어도 한 개의 제2 세트의 데이터 항목들이 제2 세트의 데이터 항목들 및 제 4 세트의 데이터 항목들을 포함하고, 제2 세트의 데이터 항목들이 제2 세트의 복소수들의 실수 성분들일 때에는, 제4 세트의 데이터 항목들이 제2 세트의 복소수들의 허수 성분들이고, 제2 세트의 데이터 항목들이 제2 세트의 복소수들의 허수 성분들일 때에는, 제4 세트의 데이터 항목들이 제2 세트의 복소수들의 실수 성분들이고, 데이터 처리회로는 제어신호에 더 응답하여 제4 세트의 데이터 항목들을 피연산자들로서 더 사용하여 복소수 성분들의 결과 세트를 생성한다.
복소수 연산은 다양한 형태를 취할 수 있지만, 일부 실시예에서, 복소수 연산은 복소 내적 연산이고, 데이터 처리회로는, 제어신호에 응답하여, 제1 세트의 복소수들의 실수 및 허수 성분 쌍들의 쌍들의 세트와 제2 세트의 복소수들의 실수 및 허수 성분 쌍들의 쌍들의 세트의 부분 곱들로부터 복소수 성분들의 결과 세트를 누산하는 누산회로를 구비한다. 일부 실시예에서, 복소수 연산은 복소 승산 연산을 포함한다. 일부 실시예에서, 복소수 연산은 복소 가산 연산이다. 일부 실시예에서, 복소수 연산은 복소 감산 연산이다.
본 발명은, 제1 및 제2 세트의 복소수들 중에서 한 개 또는 모두의 성분들의 추가적인 조작이 복소수 연산 이전에 행해지는 것을 더 제공하는데, 예를 들어, 이와 같이 구성하지 않은 경우 제1 및 제2 소스 레지스터 중에서 적어도 한 개의 콘텐츠를 조장하기 위해서는 추가적인 명령이 실행될 필요가 있을 수 있는, 필요한 복소수 결과의 특히 효율적인 결정을 가능하게 하는 것으로 판명되었다. 따라서, 일부 실시예는, 복소수 처리 명령이 전치 파리미터를 더 지정하고, 데이터 처리회로는 제어신호에 응답하여, 제1 및 제2 세트의 복소수들에 대한 복소수 연산의 적용 전에, 제1 및 제2 세트의 복소수들 중에서 적어도 한 개에 대해 전치 연산을 적용한다.
제1 및 제 2 세트의 복소수들 중에서 적어도 한 개에 적용되는 전치 연산은 다양하게 정의될 수 있다. 이것은 "회전(rotation)"으로 불리며, 실제로 일부 경우에는, 원점을 중심으로 한 복소 평면에 표시된 복소수들의 회전에 대응하지만, 본 발명은 이와 같은 "진정한" 회전에 대응하는 전치에 한정되는 것은 아니며, 일부 실시예에서, 전치 연산은, 제1 세트의 복소수들과 제2 세트의 복소수들 중에서 적어도 한 개에 있어서, 실수의 허수 성분들로의 치환, 허수의 실수 성분들로의 치환, 실수 및 허수 성분들의 교환, 실수 성분의 부정(negation)과, 허수 성분들의 부정 중에서 적어도 한가지를 포함한다.
전치 파라미터는 다양하게 제공되지만, 일부 실시예에서, 복소수 처리 명령은 전치 파라미터를 즉시값(immediate value)으로서 지정한다. 전술한 것과 같이, 전치가 복소 평면에서의 진정한 회전에 항상 직접 대응하는 것은 아니지만, 전치 파라미터는 본 발명에서 "회전값"으로 부르는 경우가 있으며, 일부 실시예에서는, 복소 평면 회전 예와 유사하게, 복소 평면에서의 1/4 회전에 대한 회전 각도를 참조하여, 0, 90, 180 및 270으로 라벨이 붙여지는 4가지 값들의 세트 중에서 한 개를 취한다.
전술한 것과 같이, 복소수 성분들의 결과 세트는 목적지 레지스터에 다양하게 인가되지만, 일부 실시예에서, 목적지 레지스터에 대한 복소수 성분들의 결과 세트의 인가는 목적지 레지스터 내부에의 복소수 성분들의 결과 세트의 기억을 포함한다. 다른 실시예에서, 목적지 레지스터에 대한 복소수 성분들의 결과 세트의 인가는 목적지 레지스터의 콘텐츠로 복소수 성분들의 결과 세트를 누적하는 것을 포함한다.
목적지 레지스터가 제1 및 제2 소스 레지스터들 모두와 별개의 레지스터로 지정되어도 되지만, 일부 실시예에서는, 목적지 레지스터가 제1 소스 레지스터 및 제2 소스 레지스터 중에서 한 개인 "상쇄적인(destructive)" 연산이 정의된다.
결과값을 유지하기 위해 정의된 스토리지에 대해 결과값이 너무 큰 상황을 데이터 처리회로가 처리하는 방법은 다양한 형태를 취할 수 있다. 예를 들어, 이 값은 랩 어라운드(wrap around)될 수도 있지만(즉, 최대값을 너머서 0으로 복귀한다), 일부 실시예에서 복소수 연산은 포화 연산(saturating operation)이다(즉, 최대값을 넘으면 결과가 이 최대값에서 유지된다).
적어도 일부 실시예는, 데이터 처리장치의 작동방법으로서, 명령들을 디코드하는 단계와, 명령들에 의해 지정된 벡터 처리 연산을 입력 데이터 벡터들 내부의 각각의 위치에 있는 복수의 입력 데이터 항목들을 포함하는 입력 데이터 벡터들에 선택적으로 적용하는 단계와, 복소수 연산, 제1 소스 레지스터, 제2 소스 레지스터 및 목적지 레지스터를 지정하는 복소수 처리 명령에 응답하여, 제어신호를 발생하여 상기 데이터 처리장치의 데이터 처리회로를 제어함으로써, 상기 제1 소스 레지스터 내부의 연속된 데이터 항목들이 제1 세트의 복소수들의 교번하는 실수 및 허수 성분들을 포함하는 상기 제1 소스 레지스터 내부의 교번하는 위치들로부터 적어도 한 개의 제 1 세트의 데이터 항목들을 추출하고, 상기 제2 소스 레지스터 내부의 연속된 데이터 항목들이 제2 세트의 복소수들의 교번하는 실수 및 허수 성분들을 포함하는 상기 제2 소스 레지스터 내부의 교번하는 위치들로부터 적어도 한 개의 제 2 세트의 데이터 항목들을 추출하고, 상기 제1 및 제2 세트의 데이터 항목들을 피연산자들로서 사용하여, 상기 제1 세트의 복소수들 및 상기 제2 세트의 복소수들에 적용된 복소수 연산의 복소수 결과의 실수부 및 허수부 중에서 한 개인 복소수 성분들의 결과 세트를 생성하고, 상기 복소수 성분들의 결과 세트를 상기 목적지 레지스터에 인가하는 단계를 포함하는 데이터 처리장치의 작동방법을 제공한다.
적어도 일부 실시예는, 명령들을 디코드하는 수단과, 명령들에 의해 지정된 벡터 처리 연산을 입력 데이터 벡터들 내부의 각각의 위치에 있는 복수의 입력 데이터 항목들을 포함하는 입력 데이터 벡터들에 선택적으로 적용하는 수단과, 복소수 연산, 제1 소스 레지스터, 제2 소스 레지스터 및 목적지 레지스터를 지정하는 복소수 처리 명령에 응답하여, 제어신호를 발생하여 데이터 처리장치 내부의 데이터 처리 수단을 제어함으로써, 상기 제1 소스 레지스터 내부의 연속된 데이터 항목들이 제1 세트의 복소수들의 교번하는 실수 및 허수 성분들을 포함하는 상기 제1 소스 레지스터 내부의 교번하는 위치들로부터 적어도 한 개의 제 1 세트의 데이터 항목들을 추출하고, 상기 제2 소스 레지스터 내부의 연속된 데이터 항목들이 제2 세트의 복소수들의 교번하는 실수 및 허수 성분들을 포함하는 상기 제2 소스 레지스터 내부의 교번하는 위치들로부터 적어도 한 개의 제 2 세트의 데이터 항목들을 추출하고, 상기 제1 및 제2 세트의 데이터 항목들을 피연산자들로서 사용하여, 상기 제1 세트의 복소수들 및 상기 제2 세트의 복소수들에 적용된 복소수 연산의 복소수 결과의 실수부 및 허수부 중에서 한 개인 복소수 성분들의 결과 세트를 생성하고, 상기 복소수 성분들의 결과 세트를 상기 목적지 레지스터에 인가하는 장치를 제공한다.
적어도 일부 실시예는, 호스트 데이터 처리장치를 제어하여, 명령들을 디코드하는 명령 디코딩 프로그램 로직과, 명령들에 의해 지정된 벡터 처리 연산을 입력 데이터 벡터 구조들 내부의 각각의 위치에 있는 복수의 입력 데이터 항목들을 포함하는 입력 데이터 벡터 구조들에 선택적으로 적용하는 데이터 처리 프로그램 로직을 포함하는 명령 실행 환경을 제공하는 컴퓨터 프로그램으로서, 상기 명령 디코딩 프로그램 로직은, 복소수 연산, 제1 소스 데이터 구조, 제2 소스 데이터 구조 및 목적지 데이터 구조를 지정하는 복소수 처리 명령에 응답하여, 제어신호를 발생하여 상기 데이터 처리 프로그램 로직을 제어함으로써, 상기 제1 소스 데이터 구조 내부의 연속된 데이터 항목들이 제1 세트의 복소수들의 교번하는 실수 및 허수 성분들을 포함하는 상기 제1 소스 데이터 구조 내부의 교번하는 위치들로부터 적어도 한 개의 제 1 세트의 데이터 항목들을 추출하고, 상기 제2 소스 데이터 구조 내부의 연속된 데이터 항목들이 제2 세트의 복소수들의 교번하는 실수 및 허수 성분들을 포함하는 상기 제2 소스 데이터 구조 내부의 교번하는 위치들로부터 적어도 한 개의 제 2 세트의 데이터 항목들을 추출하고, 상기 제1 및 제2 세트의 데이터 항목들을 피연산자들로서 사용하여, 상기 제1 세트의 복소수들 및 상기 제2 세트의 복소수들에 적용된 복소수 연산의 복소수 결과의 실수부 및 허수부 중에서 한 개인 복소수 성분들의 결과 세트를 생성하고, 상기 복소수 성분들의 결과 세트를 상기 목적지 데이터 구조에 인가하는 컴퓨터 프로그램을 제공한다.
적어도 일부 실시예는, 전술한 컴퓨터 프로그램 실시예에 따른 컴퓨터 프로그램을 비일시적으로 기억하는 컴퓨터 판독가능한 기억매체를 제공한다.
이하, 첨부도면을 참조하여 특정한 일부 실시예를 설명한다.
도 1은 본 발명의 다양한 실시예를 구현한 데이터 처리장치(10)를 개략적으로 나타낸 것이다. 이 장치는, 그것이 실행하는 명령들의 시퀀스에 응답하여 데이터 항목들에 대해 데이터 처리 연산을 행하는 데이터 처리회로(12)를 구비한다. 이들 명령은, 데이터 처리장치가 액세스하는 메모리(14)로부터 검색되고, 본 발명이 속하는 기술분야의 당업자에게 자명한 것은 방식으로, 이와 같은 목적을 위해 페치회로(16)가 설치된다. 더구나, 페치회로(16)에 의해 검색된 명령들은 명령 디코더회로(18)에 전달되고, 이 디코더회로는 처리회로(12)와, 레지스터들의 세트(20) 및 로드/스토어 유닛(22)의 환경설정 및 동작의 다양한 국면을 제어하도록 구성된 제어신호를 발생한다. 일반적으로, 데이터 처리회로(12)는 파이프라인 방식으로 구성되지만, 이것의 상세는 본 발명과 관련이 적다. 본 기술분야의 당업자에게 도 1이 나타내는 일반적인 구성이 자명하며, 이것의 더 상세한 설명은 간략을 위해 생략한다. 레지스터들(20)은, 도 1에서 알 수 있는 것과 같이, 각각이 복수의 데이터 성분들을 위한 스토리지를 구비하여, 처리회로가 지정된 레지스터 내부의 지정된 데이터 성분에 대해 데이터 처리 연산을 적용하거나, 지정된 레지스터 내부의 지정된 그룹의 데이터 성분들("벡터")에 대해 데이터 처리 연산을 적용할 수 있다. 특히, 도시된 데이터 처리장치는 벡터화된 데이터 처리 연산과 관련되며, 특히 복소수 처리 명령들의 실행과 관련되고, 레지스터들(20) 내부에 유지된 데이터 성분들에 대해, 이것의 더욱 상세한 설명이 특정한 실시예들을 참조하여 이하에서 상세히 뒤따를 것이다. 명령의 실행시 데이터 처리회로(12)가 필요로 하는 데이터 값과 이들 데이터 처리 명령들의 결과로써 발생된 데이터 값들은 로드/스토어 유닛(22)에 의해 메모리(14)에 대해 기록 및 판독된다. 또한, 일반적으로 도 1의 메모리(14)는, 본 발명의 명령들이 일반적으로 소정의 시퀀스의 명령들("프로그램")로서 기억될 수 있는 컴퓨터 판독가능한 기억매체의 일례로 간주할 수 있으며, 그후 이 프로그램을 처리회로가 실행한다. 그러나, 처리회로는, RAM, ROM, 네트워크 인터페이스를 거치는 것 등의 다양한 다른 소스로부터 이와 같은 프로그램을 액세스한다. 본 발명은, 처리회로(12)가 실행할 수 있는 다양한 신규한 명령들을 기술하며, 뒤따르는 도면은 이들 명령의 속성의 추가적인 설명과, 이들 명령의 실행을 지원하기 위한 데이터 처리회로의 변형을 제공한다.
도 2는 일 실시예에서 복소 승산 명령을 지원하기 위한 데이터 처리회로를 개략적으로 나타낸 것이다. 도면의 하부에서 볼 수 있는 것과 같이, 복소 승산 명령 CMUL은 제1 소스 레지스터 S1, 제2 소스 레지스터 S2 및 목적지 레지스터 Z을 지정한다. 더구나, 본 실시예에서는 복소 승산 명령이 포함된 복소수 성분들의 데이터 크기를 더 지정하는데, 즉 ".s"의 추가적인 명기는 이들이 32비트 값이라는 것을 나타낸다. 이와 같은 명령에 응답하여(또는 도 1의 상기한 설명에서 알 수 있는 것과 같이 엄밀하게 말하면 명령이 응답하는 디코드 회로(18)에 의해 발생된 제어신호에 응답하여). 데이터 처리회로는 제1 소스 레지스터 S1 및 제2 소스 레지스터 S2로부터 실수 복소수 성분들의 세트와 허수 복소수 성분들의 세트를 추출하는데, 이때 이들 성분들 각각은 32비트 값이다. 도 2의 소스 레지스터들 S1 및 S2의 콘텐츠에 라벨을 붙이는 예시적인 성분으로 나타낸 것과 같이, 각각의 소스 레지스터의 콘텐츠는 복소수 성분 쌍들, 즉 실수 및 허수 성분들의 시퀀스이다. 소스 레지스터 내부의 이와 같은 데이터의 구조는, 복소수들이 함께 레지스터들 내부와 복소수들이 로딩되었던 메모리 위치에 기억되어, 메모리에서 별개의 실수 및 허수 성분들 로드하기 위한 로딩 및 디인터리빙 동작과 관련된 복잡함이 필요없다는 점에서 유용하다. 더구나, 도시된 명령과 이것을 지원하기 위한 데이터 처리회로의 설치는, 각각의 소스 레지스터 내부의 인터리브된 실수 성분 및 허수 성분들이 직접 처리될 수 있어, 이들 세트의 값들을 레지스터들 내부에 옮기고 이 값들을 메모리에 반환하는 연속된 로드 및 스토어 명령들의 사용을 가능하게 하여, 구현의 용이함과 개량된 성능의 지원에 도움이 된다는 것을 의미한다. 도 2에 도시된 구체적인 예에서는, 복소 승산 명령 중에서, 제1 및 제2 소스 레지스터로부터 각각의 입력들의 쌍들을 수신하는 승산 유닛들의 세트(30)가 도시되어 있다. 이때, 도면에서는 각각의 소스 레지스터와 목적지 레지스터에 있는 4개의 성분들의 세트만 도시하고 명시적으로 라벨을 붙였지만, 본 발명은, 이와 같은 처리가 벡터 레지스터의 전체 폭에 걸쳐 (도면의 좌측 및 우측으로의 점선으로 나타낸 것과 같이) 복제되는 것을 제공한다. 승산 유닛들(30)에 의해 행해진 승산 연산의 결과는 가산 유닛들(32)에 대한 쌍을 이룬 입력을 제공하는데, 이때, 2가지 경우에는 가산 유닛들에 대한 입력들 중에서 한 개가 가산 유닛에 인가되기 전에 니게이트(negate)된다(즉, 감산을 구현한다). 그후, 가상 유닛들(32)의 결과는 결과 레지스터 Z 내부의 각각의 위치에 기억된다. 32비트 값이 지정되는 본 실시예에서, 가산 유닛들(32)에 의해 발생된 결과값들의 세트는 각각 32비트 값이다.
도 2의 CMUL 명령이 속하고, 비확대 명령들인 본 발명에 의해 제공된 명령들의 세트의 일례는 다음과 같다:
· CMUL: 회전을 갖는 복소 승산;
· CMLA: 회전을 갖는 복소 승산 누산;
· SQRDCMULH: 회전을 갖고 높은 절반부로 복귀하는(returning high half) 부호를 갖는 포화 라운딩(rounding) 배정도(doubling) 복소 승산;
· SQRDCMLAH: 회전을 갖고 높은 절반부로 복귀하는 부호를 갖는 포화 라운딩 배정도(doubling) 복소 승산 누산.
도 3은, 도 2의 예와 눈에 띄는 차이점을 나타내는 일 실시예에 있어서 다른 복소수 처리 명령을 개략적으로 나타낸 것이다. 이 예에서, 명령 명명법 SQDMLALBT는 "부호를 갖는 배정도 승산 가산 롱(long) 하단 상단"에 해당한다. 이와 같은 명령을 지원하기 위해 설치된 데이터 처리회로에 대해 도 3에 나타낸 것과 같이, 4개의 승산 유닛들의 세트(36)는 제1 및 제 2 소스 레지스터에서 입력들을 수신하는데, 이때 명령은 마찬가지로 "단정도(single)"의 32비트 값들이 각각으로부터 추출되어야 한다는 것을 지정("s")하였다. 이때, 이 명령의 "상단 하단" 특징은, 성분들의 쌍들의 하부 절반부가 제1 소스 레지스터 zs1에서 추출되고, 성분들의 쌍들의 상부 절반부가 제2 소스 레지스터 zs2에서 추출되어야 한다는 것을 나타낸다. 이들 쌍들 사이의 승산 연산의 결과는 가산 유닛들(38)의 세트에 대한 한 개의 입력을 추출하고, 이 가산 유닛들은 이와 같은 세트의 값들을 목적지 레지스터 zd로부터 추출된 값들에 가산하는데, 즉 이것은 누산 연산이다. 더구나, 명령은 목적지 레지스터에 있는 성분들의 사이즈를 "d"로서 지정하는데, 즉 64비트 값이다. 즉, 이와 같은 연산은 확대 연산이다. 예시된 명령의 결과로써, 소스 레지스터 zs1 및 소스 레지스터 zs2의 복소수들의 세트 사이의 승산의 결과의 허수 성분들의 세트가 생성되어 목적지 레지스터 zd에 누산되어, 입력 성분들에 대한 결과 성분들의 확대를 허용하여, 정밀도가 보존된다. 도 2의 경우에서와 같이, 도면에서는 4개의 성분들의 세트만 명시적으로 각각의 소스 레지스터에서 추출되어 목적지 레지스터에 누산되는 것으로 나타내었지만, 본 발명은, 이와 같은 처리가 벡터 레지스터의 전체 폭에 걸쳐 (도면의 좌측 및 우측으로의 점선 및 타원으로 나타낸 것과 같이) 복제되는 것을 제공한다.
가산/감산 상단/하단 상단/하단(이때 상단 및 하단은 액세스된 복소수들의 상부 절반부 및 하부 절반부, 즉 각각의 복소수의 실수 및 허수 부분들을 말한다)을 지정하는 확대 명령인 도 3의 SQDMLALBT 명령이 속하는 본 발명에 의해 제공되는 명령들의 예시적인 세트는 다음과 같다:
· SQDMLALB: 부호를 갖는 승산 가산 롱 하단 하단:
· SQDMLSLB: 부호를 갖는 승산 감산 롱 하단 하단:
· SQDMLALT: 부호를 갖는 승산 가산 롱 상단 상단:
· SQDMLSLT: 부호를 갖는 승산 감산 롱 상단 상단:
· SQDMLALBT: 부호를 갖는 승산 가산 롱 하단 상단: 및
· SQDMLSLBT: 부호를 갖는 승산 감산 롱 하단 상단.
이때, 이들은 모두 "MLA"(승산 누산으로도 알려진 승산 가산) 명령이며, 예를 들어, 목적지 레지스터의 기존의 콘텐츠가 누산되어야 하는 누산처리의 최초의 반복시에 사용하기 위해, "MUL" 버전(즉, 순수한 승산 버전)이 더 제공된다. 이를 위해 상기한 목적의 "MLA"가 단지 "MUL"에 의해 치환되면 된다.
도 4는 본 발명에 따른 또 다른 예시적인 명령, 즉 복소 승산 누산 명령을 제공하기 위해 설치된 일 실시예의 데이터 처리회로를 개략적으로 나타낸 것이다. 도 4에서 주목한 것은, 제2 소스 레지스터 zs2에 대한 복제 색인("[1]")의 추가적인 지정이다. 도면에 도시된 것과 같이, 지원된 처리의 벡터화된 속성이 128비트 그래뉼(granule)로 적용되고, 즉 예시된 처리가 벡터 레지스터들의 폭에 걸쳐 이들 128비트 그레뉼로 반복되고, 입력 성분 사이즈가 단정도, 즉 32비트인 것으로 명령이 지정하는 경우, "1"로서 복제 색인을 지정하는 것은, 128비트 그래뉼의 상부 절반부에 있는 32비트 값들의 쌍으로 표시되는 복소수가 하부 절반부에 복제되어야 한다는 것을 나타낸다. 이때, 다른 예에서는, 예를 들어, 명령이 같은 128비트 그래뉼 내부에 "절반"(즉, 16비트) 값들을 지정하려면, 그래뉼의 콘텐츠가 2배 많은 복소수를 표시하는데, 즉 8개의 16비트 값이 존재하게 되고, 이와 같은 복제 색인은 이 세트에 있는 (4개 중) 2개의 복소수들이 나머지 3개에 복제되게 할 것이다. 그러나, 도 4에 도시된 구체적인 예를 고려하면, 복제 이후에 제1 및 제 2 소스 레지스터로부터 추출된 성분들은, 사실상 도 2에 도시된 유닛들 30과 같은 승산 유닛들인 승산 유닛들 40에 입력들의 쌍들을 제공한다. 마찬가지로, 승산 유닛들(40)의 쌍들의 결과는 가산 유닛들(42)에 대한 입력을 제공한다. 도 2의 경우에서와 같이, 가상 유닛들(42) 중에서 2개가 그들의 입력들 중에서 한 개가 니게이트되지만, 도 2의 예와 달리, 도 4의 예의 명령은 누산 연산이므로, 목적지 레지스터에 유지된 각각의 성분들의 기존의 콘텐츠가 가상 유닛들(42)에 대한 추가적인 입력을 제공한다. 이와 같이 생성된 결과값은 목적지 레지스터 zds3의 각각의 성분들의 새로운 콘텐츠를 구성한다. 이때, 이것은 확대 명령이 아닌데, 즉 결과 성분들이 입력 성분들과 동일한 사이즈를 가지므로, 이와 같은 명령의 실행 이후의 목적지 레지스터의 콘텐츠는 복소수들의 세트의 인터리브된 실수 및 허수 성분들의 세트인데, 즉 2개의 소스 레지스터가 갖는 것과 같은 포맷을 갖는다. 도 2 및 도 3의 경우에서와 같이, 도면에는 4개의 성분들의 세트가 명시적으로 각각의 소스 레지스터에서 추출되어 목적지 레지스터에 누산되는 것으로 도시되었지만, 본 발명은, 이와 같은 처리가 벡터 레지스터의 전체 폭에 걸쳐 (도면의 좌측 및 우측으로의 점선 및 타원으로 나타낸 것과 같이) 복제되는 것을 제공한다.
도 5는 일부 실시예에서의 또 다른 명령들의 세트의 연산을 나타낸 것이다. 이들은 모두 (첫번째 명령의 예에서) 연속된 실수 복소수 성분들의 세트 또는 (도시된 세 번째 및 네 번째 명령의 예에서) 연속된 허수 성분의 세트를 발생하는 확대 명령으로 볼 수 있다. 이때, 구체적인 사이즈는 도면에 포괄적인 것으로, 예를 들어, <Zda>.<T> 및 <Zn><Tb>인 것으로 유지되지만, 도 2-4에 대해 전술한 것과 같이, 각각의 명령은 처리할 데이터 성분의 사이즈와 발생된 결과 데이터 성분들의 사이즈를 지정한다. 도 5의 표시에서는, 처리의 종료시에, 생성된 실수 및 허수 결과들이 디인터리브되어, 목적지 레지스터 Zda가 모든 실수 결과들을 포함하고 Zdb가 모두 허수 결과들을 포함한다는 것을 알 수 있다. 그후, 도 6을 참조하면, 축소 시프트 연산을 사용하여 목적지 레지스터 Zc에 복소수 성분들의 도시된 결과 세트를 생성하기 위해 레지스터들 Za 및 Zb로부터의 데이터를 재정렬하는데, 이것들은 원래의 소스 레지스터들 Zn 및 Zm(도 5)의 연속된 복소수 포맷을 가지므로 데이터의 추가적인 재정렬이 필요하지 않다. 따라서, 이와 같은 결과 복소수들의 세트는 인접한 스토어 연산에서 메모리에 다시 기억될 수 있다. 이전의 도면의 경우에서와 같이, 도 5 및 도 6에서는 4개의 성분들의 세트만 각각의 소스 레지스터에서 추출되어 목적지 레지스터에 누산되는 것으로 명시적으로 도시하였지만, 본 발명은, 이와 같은 처리가 벡터 레지스터의 전체 폭에 걸쳐 복제되는 것을 제공한다.
이들 승산 가산/감산 상단/하단 상단/하단 명령을 이용하는 명령들(1)의 예시적인 프로그램 시퀀스는 예를 들어 다음과 같다:
예시적인 코드 시퀀스(1):
...
.Loop.
Figure 112020014697889-pct00001
전술한 승산 명령 뿐만 아니라, 본 발명은 다양한 복소 내적 명령들을 더 제공하는데, 이들 중에서 일부를, 이것들을 지원하기 위해 설치된 데이터 처리회로와 함께, 도 7a-도 7b의 예시적인 실시예에 나타낸다. 이와 같은 복소 내적 연산을 지원하는 첫 번째 접근방법에서는, 도 7a-도 7에 나타낸 것과 같이, 결과값들의 실수 및 허수 부분들이 별개로 계산된다. 따라서, 이것은 도시된 명령의 세트가 결과 데이터에 대해 확대 효과를 발생할 수 있게 하며, 이것은 도 7a-도 7의 예에서 데이터 정밀도를 4배만큼 확대하는 것으로 볼 수 있는데, 즉 입력 복소수 성분들(실수 및 허수)이 각각 16비트 값인 한편, 결과값은 64비트 값이다. 내적 유닛들(50)은 각각 각각의 소스 레지스터부터 취해진 한쌍의 복소수들의 각각의 실수 및 허수 성분들로부터 4개의 입력 성분들의 각각의 세트로부터의 부분 곱을 산출한다. 이때, 어떤 경우("-1"로 라벨이 붙여진) 주어진 입력이 니게이트된다. 이와 같이 발생된 부분 곱들은 가산회로(52)에 의해 누산된다. 이들 도면에 나타낸 것과 같이, 이들 연산은, 목적지 레지스터의 각각의 부분의 기존의 콘텐츠가 최종 결과를 발생하는 가산 유닛들에 대한 추가적인 입력을 구성하는 누산 연산이다. 따라서, 도 7a-도 7d에 도시된 연산을 간략히 요약하면, CDOTRE는 2개의 복소 승산의 실수부를 누산하고, CDOTIM는 2개의 복소 승산의 허수부를 누산하고, CCDOTRE는 2개의 복소 공역 승산의 실수부를 누산하고, CCDOTIM는 2개의 복소 공역 승산의 허수부를 누산한다.
("정규" 복소 승산이 행해지고 있는지 또는 복소 공역 승산이 행해지고 있는지에 따라) 이들 2가지 명령들의 사용 이후에, 초기의 데이터 정밀도로 복귀하기 위해, 도 8에 도시된 것과 같은 연산들의 시퀀스가 실행될 수 있다. 도시된 것과 같이, 레지스터들 Za, Zb, Zc 및 Zd의 실수 및 허수 성분들이 축소 시프트 연산을 겪어, 목적지 레지스터들 Ze 및 Zf 내부에 2 세트의 각각의 실수 및 허수 성분들을 인터리브한 후, 추가적인 축소 시프트 연산을 행하여 성분 사이즈를 더(그리고 원래의 소스 레지스터의 사이즈로 다시) 줄이고, 실수 및 허수 성분들을 인터리브하여 한 개의 레지스터 내부에 최종 복소수 결과를 제공한다. 이전의 도면의 경우에서와 같이, 도 7a-도 7d와 도 8에 명시적으로 도시된 회로와 처리는 벡터 레지스터의 전체 폭을 가로질러 복제될 수 있다.
본 발명의 이점은, 도 7a-도 7에 나타낸 것과 같은 명령을 사용하여 본 발명에 따라 취해진 접근방법과 비교하여 이와 같은 복소 내적 처리의 종래의 구현예를 나타내는 이하의 2개의 예시적인 코드 시퀀스 (2) 및 (3)을 고려하면 알 수 있다. 본 발명의 CDOT 명령은, 누산 여유공간(headroom)을 증가시키면서(16비트 입력에 대한 64비트 누산기, 즉 4x), 데이터 처리회로의 계산 스루풋의 상당한 향상(2x0을 허용한다.
예시적인 종래기술의 코드 시퀀스(복소 내적의 ARM(등록상표) NEONTM 구현):
Figure 112020014697889-pct00002
Figure 112020014697889-pct00003
(CDOT을 이용한 복소 내적에 대한) 본 발명에 따른 예시적인 코드 시퀀스(3):
Figure 112020014697889-pct00004
Figure 112020014697889-pct00005
복소 내적 연산을 지원하는 또 다른 접근방법도 본 발명에 의해 제공되며, 도 9a-도 9d와 도 10을 참조하여 이하에서 설명한다. 이때, 전술한 복소 내적 명령들과 달리, 데이터 확장은 단지 2x이고, 도 9a-도 9d의 예에서 볼 수 있는 것과 같이, 내적 명령들의 결과가 결과 레지스터 내부에 여전히 인터리브된다(즉, 교번하는 실수 및 허수 성분들). 이와 같은 접근방법에서는, 도 9a-도 9d에서 알 수 있는 것과 같이, 각각의 소스 레지스터들로부터 추출된 성분들에 대한 초기의 연산 세트는 단지 승산 유닛들(54)에 의해 행해진 승산 연산 뿐이다. 도 7a-도 7d의 예와 마찬가지로, 특정한 입력들이 니게이트된다는 것에 주목하기 바란다. 또한, 도 9a-도 9d의 예에서는, 단지 한 개의 명령, 즉 SQRDCDOT이 정의되지만, 4개의 에에 나타낸 이와 같은 명령에 대한 4가지 다른 응답은, 전치를 나타내는, 즉 각각의 소스 레지스터의 각각의 실수 및 허수 성분들을 조합하는 특정한 방법을 나타내는 명령 내부의 추가적인 파라미터(즉, #0, #90, #180 및 #270)의 사용에 기인한다. 이것들은 복소 평면에서의 복소수의 회전과 유사하게 본 발명에서는 "회전"으로 구어체로 부르지만, 일반적으로 행해지는 전치는 엄밀하게는 복소 평면에서의 회전과 일치하지는 않는다는 것을 아는 것이 중요하다. 이것은 도 12를 참조하여 더 이해될 수 있는데, 이때 "회전값"의 4가지 다른 값들에 대해 제1 및 제2 소스 레지스터들로부터 취해진 성분들의 대응하는 사용이 도시되며, 이때 제2 소스 레지스터에 대해 사용된 전체가 사실상 회전 파라미터 값으로 주어진 각도의 회전만큼 표시된 복소수의 복소 평면에서의 회전과 일치하는 것을 알 수 있지만, 이것은 제1 소스 레지스터의 경우에, 따라서 일반적으로 이들 전치가 엄밀하게는 복소 평면에서의 회전이 아니라는 언급에 적용되는 전치에 대해서는 해당하지 않는다. 승산 유닛들(54)의 결과는 도 9a-도 9d에 도시된 누산(가산) 유닛들(56)에 대한 첫 번째 입력들의 쌍들을 제공하고, 목적지 레지스터의 각각의 부분의 기존의 콘텐츠는 추가적인 입력(즉, 누산을 위한)을 제공한다. 따라서, 실수 및 허수 성분들이 이와 같은 접근방법에 따라 생성되어 복소 내적 결과를 제공하지만, 이것은 생성된 실수 및 허수 성분들이 실수 및 허수 입력 성분들의 사이즈의 2배인 확대 연산이 된다. 전술한 첫 번째 접근방법에서와 마찬가지로, 도 9a-도 9d의 SQRDCDOT 명령의 사용 이후에 한쌍의 축소 시프트 연산을 행하여, 데이터를 다시 초기의 데이터 정밀도로 되돌리고 한 개의 목적지 레지스터에 있는 실수 및 허수 결과들을 다른 목적지 레지스터에 있는 실수 및 허수 성분들로 인터리브하여 한 개의 세트의 복소수 성분들을 형성하고, 인터리브된 실수 및 허수 성분들이 도 10에서 알 수 있는 것과 같이, 한 개의 목적지 레지스터 내부에 복소수 값들을 형성한다. 이전의 도면의 경우에서와 마찬가지로, 도 9a-도 9d 및 도 10에 명시적으로 나타낸 회로 및 처리는 벡터 레지스터의 전체 폭에 걸쳐 반복될 수 있다.
전술한 "회전값"은 후술하는 것과 같이 본 발명에서 설명한 다수의 다른 복소수 처리 명령들에 유용하게 적용될 수 있다. 예를 들어, 복수 가산 명령들은, 성분들의 쌍들을 상쇄적인 방식으로 제1 소스 벡터의 대응하는 성분들에 가산하기 전에, 극성 표시로 고려할 때, 제2 소스 벡터의 복소수들을 90도 또는 270도만큼 회전시킬 수 있다.
복수 승산-가산 명령은 피연산자들의 변환을 행하여 이들 명령들 중에서 2개를 결합함으로써 복소수들에 대해 승산-가산 연산의 생성을 허용한다. 행해지는 변환은 다음과 같다: (1) 극성 형태로 고려할 때, 제2 소스 벡터의 복소수들은 제1 소스 벡터의 복제된 실수 성분들을 승산하기 전에 0도 또는 180도 만큼 회전된다. (2) 극성 형태로 고려할 때, 제2 소스 벡터의 복소수들은 제1 소스 벡터의 복제된 허수 성분에 의한 승산전에 90 또는 270도 만큼 회전된다. 그후, 결과적으로 얻어진 곱들을 목적지 및 가수(addend) 벡터의 대응하는 성분들에 가산한다. 그후, 이들 변환을 이용하여, 2개의 명령들이 유리하게 결합될 수 있다. 예를 들어, 다음의 시퀀스를 고려하면,
SQRDCMLAH Zda.S,Zn,S,Zm.S#A
SQRDCMLAH Zda.S,Zn,S,Zm.S#B
A 및 B의 의미있는 조합은 다음과 같다:
A=0, B=90, 이 경우, Zn 및 Zm에 있는 복소수들의 2개의 벡터들이 승산되고, 곱이 Zda에 있는 복소수들에 가산된다.
A=0, B=270. Zn에 있는 복소수들의 공역값들이 Zm에 있는 복소수들에 의해 승산되고, 곱이 Zda에 있는 복소수들에 가산된다.
A=180, B=270, 이 경우, Zn 및 Zm에 있는 복소수들의 2개의 벡터들이 승산되고, 곱이 Zda에 있는 복소수들로부터 감산된다.
A=180, B=90. Zn에 있는 복소수들의 공역값들이 Zm에 있는 복소수들에 의해 승산되고, 곱이 Zda에 있는 복소수들로부터 감산된다.
전술한 것과 같이, 확대 복소 고정점 명령은 복소수들을 처리하면서 복소수들의 실수 및 허수 성분들을 디인터리브하여, 입력값들보다 높은 수치 정밀도를 갖는 복소 결과값의 성분들을 생성한다(즉, 입력값들이 "확대"된다). 따라서, 이들 명령은, 복소 결과값의 두가지 성분들이 목적지 내부의 인접한 성분들에 기록되도록 각각의 복수수의 실수 및 허수 성분들을 함께 처리하는 다른 복소 명령들과 현저하게 다르다. 이하의 명령들은 복소 승산-가산의 결과의 확대된 성분들을 생성할 때 유용하다:
· SQDMLALBT: 확대된 허수값들;
· SQDMLSLT: 확대된 실수값들;
· SQDMLALB: 확대된 공역 실수값들;
· SQDMLSLBT: 확대된 공역 허수값들.
고정점 복소 내적 명령들은 예를 들어, 8비트 또는 16비트의 부호를 갖는 정수 복소수들의 쌍들로 소스 벡터의 한계를 정한다. 각 쌍 내부에서, 첫 번째 소스 벡터 내부의 복소수은 제2 소스 벡터에 있는 대응하는 복소수들에 의해 승산되고, 결과적으로 얻어지는 확대된 곱들이 합산되고, 예를 들어, 제1 소스 벡터의 복소수들의 쌍들을 중첩하는 누산기의 32비트 또는 64비트의 성분들에 가산된다.
이들 명령은 기본적인 내적 기능을 제공하는 것 이외에 복소수들을 디인터리브한다. 따라서, 소스 벡터들은 인터리브된 복소수들의 실수 및 허수 성분들을 포함하지만, 목적지 벡터는 확대된 실수 또는 확대된 허수 성분들의 배타적인 세트를 유지한다. 이들 명령들에 대해 회전값을 이용하면 다음과 같다:
회전이 0이면, 결과는 복소 내적 연산의 실수 성분들을 포함하는 벡터이다.
회전이 90이면, 결과는 복소 내적 연산의 허수 성분들을 포함하는 벡터이다.
회전이 180이면, 결과는 복소 공역 내적 연산의 실수 성분들을 포함하는 벡터이다.
회전이 270이면, 결과는 복소 공역 내적 연산의 허수 성분들을 포함하는 벡터이다.
부호를 갖는/부호를 갖지 않는 정수 복소 내적 명령은 소스 벡터들을 예를 들어 8비트 또는 16비 비트의 부호를 갖는/부호를 갖지 않는 정수 복소수들의 쌍들로 경계를 정한다. 각각의 쌍 내에서, 제1 소스 벡터의 복소수들이 제2 소스 벡터의 대응하는 복소수들에 의해 승산되고, 그 결과 얻어지는 확대된 곱이 합산되어, 예를 들어, 제1 소스 벡터 내부의 복소수들의 쌍들과 정렬되는 누산기의 예를 들어 32비트 또는 64비트 성분(목적지 성분)에 가산된다.
피승수 소스 벡터로부터 판독된 값들은 승산단계를 행하기 전에 회전 파라미터에 근거하여 변환된다. 중간 회전값에 따라 소스 복소수들의 부분들의 어느 것도 치환 및/또는 니게이트되지 않거나, 이들 부분들 중에서 한 개 또는 양쪽이 치환 및/또는 니게이트된다. 이들 명령에 대해 회전값을 사용하면 다음과 같다:
회전이 0이면, 제2 소스로부터의 복소수들의 홀수 성분들이 니게이트되고, 목적지 벡터가 복소 내적 연산의 실수 성분들을 포함한다.
회전이 90면, 제2 소스로부터의 복소수들의 실수 및 허수 부분들이 교환되고, 목적지 벡터가 복소 내적 연산의 허수 성분들을 포함한다.
회전이 190이면, 변환이 적용되지 않고, 목적지 벡터가 복소 공역 내적 연산의 실수 성분들을 포함한다.
회전이 270이면, 제2 소스로부터의 복소수들의 짝수 성분들이 니게이트되고, 제2 소스로부터 유도된 결과적인 벡터의 실수 및 허수 부분들이 교환되고, 목적지 벡터가 복소 공역 내적 연산의 허수 성분들을 포함한다.
일부 실시예에서, 복소수 연산은 다양한 복소수 가산(즉, 복소수 감산을 포함한다)이며 이들 중에서 일부를 지원하는 데이터 처리회로를 도 11a 및 도 11b에 나타낸다. 다시 한번 더 전술한 "회전값"이 사용되는데, 도 11a의 예에서는 #90의 값이 사용되고 도 11b의 예에서는 #270의 값이 사용된다. 이때, 도면에 도시된 것과 같이, (4의 세트인) 이들 회전값은 실제로 2비트 값으로 표시되는 것으로 제안되는데, 이때 이들 예 00은 #90에 대응하는 01은 #270에 대응한다.
도 11a 및 도 11b에 나타낸 예는 복소 가산 명령을 지원하기 위해 제공된 데이터 처리회로를 나타내며, 일례에서 명령 세트가 SQCADD 또는 UQASS(즉, 부호를 갖거나 갖지 않은 포화 복소 가산 명령의 변종)으로 정의되고, 이때 포화는 결과의 각 성분의 결과값이 랩 어라운드하지 않고, 소정의 최대값에서 포화된다는 것을 의미한다. 따라서, 가산부(60)는 입력 소스 레지스터들의 각각의 실수 및 허수 성분들로부터 입력을 취하고, (일부 입력은 니게이트되고) 이것들을 합산하여 목적지 레지스터에서 인터리브되는 실수 및 허수 성분들을 발생한다. 다양한 값들의 회전 파라미터를 사용하여, 제1 및 제2 소스 레지스터들 내부의 복소수들의 실수 및 허수 성분들의 조합의 모든 필요한 순열이 얻어질 수 있다. 이전의 도면에서와 같이, 도 11a 및 도 11b에 명시적으로 도시된 회로와 처리가 벡터 레지스터의 전체 폭에 걸쳐 복제될 수 있다.
또 다른 예에서, SUBLTB 및 ADDLTB 명령은 인터리브된 실수 및 허수 성분들에 작용하고 이들 명령은 확대 명령이다. 이들 명령은 복소수 X 및 Y가 주어질 때 복소 가산 (X+jY) 또는 (X-jY)의 결과의 확대된 성분들을 발생할 때 유용하다:
ADDLBT: (X+jY)를 계산시 확대된 허수 값들
SUBLBT: (X+jY)를 계산시 확대된 실수 값들
SUBLTB: (X-jY)를 계산시 확대된 허수 값들
ADDLTB: (X-jY)를 계산시 확대된 실수 값들
도 13은 일 실시예의 방법을 행할 때 취하는 스텝들의 시퀀스를 나타낸 것이다. 이 흐름은 스텝 100에서 개시하는 것으로 생각할 수 있는데, 이 스텝에서는 수신된 명령들의 시퀀스 내부의 다음 명령이 디코드된다. 그후, 스텝 102에서 이것이 본 발명의 복소수 명령인지 여부가 판정된다. 복소수 명령이 아닌 경우에는, 스텝 104를 거쳐 흐름이 진행하는데, 이 스텝에서 이들 명령이 적절히 처리되며, 이것은 본 발명의 관심사는 아니다. 그후, 스텝 100으로 흐름이 복귀하여 다음 명령을 디코드한다. 그러나, 이것이 복소수 명령이면, 스텝 106으로 흐름이 진행하여, 마주친 복소수 명령의 특정한 종류에 따라, 제1 소스 레지스터로부터 실수 및/또는 허수 성분들이 추출되고, 스텝 108에서 제2 소스 레지스터로부터 실수 및/또는 허수 성분들이 추출된다. 이I, 스텝 106 및 108에서의 추출은 보통 병렬로 행해지는데, 이것을 간략을 위해 도 13에서는 이와 같은 순차적인 방식으로만 설명한다는 것에 주목하기 바란다. 그후, 스텝 110에서, 이들 추출된 성분들을 이용하여 복소수 연산이 행해진다. 스텝 112는, 이것이 인터리브된 결과인지 아닌지 판정한다. 인터리브된 결과인 경우, 스텝 114를 거쳐 흐름이 진행하는데, 이 스텝에서 실수 및 허수 결과 성분들이 목적지 레지스터에의 인가시에 인터리브되고, 인터리브된 결과가 아닌 경우 스텝 116을 거쳐 흐름이 진행하는데, 이 스텝에서 실수 결과 성분들의 세트 또는 허수 결과 성분들의 세트인 인터리브된 결과가 지정된 목적지 레지스터에 인가된다. 그후, 어떤 루트에 의해서도, 스텝 100으로 흐름이 복귀하여 다음 명령이 디코드된다.
도 14는 사용될 수 있는 시뮬레이터 구현예를 나타낸 것이다. 전술한 실시예는 해당 기술을 지원하는 특정한 처리 하드웨어를 작동하기 위한 장치 및 방법에 관해 본 발명을 구현하지만, 컴퓨터 프로그램의 사용을 통해 구현되는 본 발명에서 설명한 실시예에 따라 명령 실행 환경을 제공하는 것도 가능하다. 이와 같은 컴퓨터 프로그램은, 하드웨어 아키텍처의 소프트웨어 기반의 구현을 제공하는 한, 시뮬레이터로 부르는 경우가 많다. 다양한 시뮬레이터 컴퓨터 프로그램은 에뮬레이터, 가상머신, 모델, 및 동적 이진 변환기를 포함하는 이진 변환기를 포함한다. 보통, 시뮬레이터 구현은, 옵션으로 시뮬레이터 프로그램(710)을 지원하는 호스트 운영체계(720)를 실행하는 호스트 프로세서(730) 상에서 실행된다. 일부 구성에서는, 하드웨어와 제공된 명령 실행 환경 사이에 복수 층의 시뮬레이션이 존재하고, 및/또는 동일한 호스트 프로세서 상에서 복수의 별개의 명령 실행 환경이 제공된다. 역사적으로, 합당한 속도에서 실행되는 시뮬레이터 구현을 제공하기 위해 강력한 프로세서들이 요구되었지만, 이와 같은 접근방법은, 호환성이나 재사용 이유로 인해 다른 프로세서에 대해 네이티브한 코드를 실행하려는 요구가 있을 때 등과 같은, 특정한 상황에서 정당화된다. 예를 들어, 시뮬레이터 구현은, 호스트 프로세서 하드웨어에 의해 지원되지 않는 추가적인 기능을 갖는 명령 실행 환경을 제공하거나, 보통 다양한 하드웨어 아키텍처와 관련된 명령 실행 환경을 제공한다. 시뮬레이터의 개관에 대해서는 "Some Efficient Architecture Simulation Techniques", Robert Bedichek, Winter 1990 USENIX Conference, Pages 53-63에 기재되어 있다.
본 실시예를 특정한 하드웨어 구성 또는 특징을 참조하여 설명하였지만, 시뮬레이션된 실시예에서는, 적절한 소프트웨어 구성 또는 특징에 의해 동등한 기능이 제공된다. 예를 들어, 특정한 회로가 시뮬레이션된 실시예에서는 컴퓨터 프로그램 논리로 구현된다. 마찬가지로, 레지스터 또는 캐시 등의 메모리 하드웨어도 시뮬레이션된 실시예에서는 소프트웨어 데이터 구조로 구현된다. 전술한 실시예에서 참조한 한 개 이상의 하드웨어 구성요소들이 호스트 하드웨어(예를 들어, 호스트 프로세서(730) 상에 존재하는 구성에서는, 적절한 경우에, 일부 시뮬레이션된 실시예가 호스트 하드웨어를 이용한다.
시뮬레이터 프로그램(710)은, 컴퓨터 판독가능한 기억매체(이것은 비일시적인 매체일 수도 있다)에 기억되고, 시뮬레이터 프로그램(710)에 의해 모델링되고 있는 하드웨어 아키텍처의 응용 프로그램 인터페이스와 동일한 타겟 코드(700)에 대한 프로그램 인터페이스(명령 실행 환경)를 제공한다. 따라서, 전술한 복소수 처리 명령을 포함하는 타겟 코드(700)의 프로그램 명령은 시뮬레이터 프로그램(710)을 사용하는 명령 실행 환경 내에서 실행됨으로써, 전술한 장치의 하드웨어 특징을 실제로 갖지 않는 호스트 컴퓨터(730)가 이들 특징을 에뮬리에션할 수 있다.
요약하면, 입력 데이터 벡터들 내부의 각각의 위치에 있는 복수의 입력 데이터 항목들을 포함하는 입력 데이터 벡터들에 대한 벡터 처리 연산을 지원하기 위해 장치, 방법, 프로그램 및 복소수 처리 명령이 제공된다. 명령들에 응답하여, 적어도 한 개의 제1 세트의 데이터 항목들이 제1 소스 레지스터 내부의 교번하는 위치들로 추출되고, 적어도 한 개의 제2 세트의 데이터 항목들이 제2 소스 레지스터 내부의 교번하는 위치들로부터 추출되고, 제1 및 제2 소스 레지스터들 내부의 연속된 데이터 항목들이 각각의 세트의 복소수들의 교번하는 실수 및 허수 성분들을 포함한다. 2 세트의 데이터 항목들을 피연산자로 사용하여 결과 세트의 복소수 성분들이 발생되고, 결과 세트의 복소수 성분들은 2개의 세트의 복소수들에 적용된 복i 연산의 복소수 결과의 실수 부분 및 허수 부분 중 한 개이다. 결과 세트의 복소수 성분은 목적지 레지스터에 인가된다.
본 발명에서, 단어 "하도록 구성된"은 장치의 구성요소가 정의된 동작을 행할 수 있는 구성을 갖는다는 것을 의미하기 위해 사용된다. 이와 관련하여, "구성"은 하드웨어 또는 소프트웨어의 배치 또는 상호접속 방식을 의미한다. 예를 들어, 장치는 정의된 동작을 제공하는 전용 하드웨어를 갖거나, 프로세서 또는 기타의 처리장치가 기능을 행하도록 프로그래밍되어도 된다. "하도록 구성된"은 이 장치의 구성요소가 정의된 동작을 제공하기 위해 어떤 식으로 변경될 필요가 있는 것을 시사하는 것은 아니다.
첨부도면을 참조하여 본 발명의 예시적인 실시예들을 상세히 설명하였지만, 본 발명은 이들 실시예에 한정되지 않으며, 첨부된 청구범위의 보호범위 및 사상을 벗어나지 않으면서 본 발명이 속한 기술분야의 당업자에 의해 다양한 변경, 부가 및 변화가 행해질 수 있다는 것은 자명하다. 예를 들면, 종속항들의 특징들의 다양한 조합이 독립항들의 특징과 행해질 수도 있다.

Claims (25)

  1. 명령들을 디코드하는 명령 디코더 회로와,
    명령들에 의해 지정된 벡터 처리 연산을 입력 데이터 벡터들 내부의 각각의 위치에 있는 복수의 입력 데이터 항목들을 포함하는 입력 데이터 벡터들에 선택적으로 적용하는 데이터 처리회로를 구비하고,
    상기 명령 디코더 회로는, 복소수 연산, 제1 소스 레지스터, 제2 소스 레지스터 및 목적지 레지스터를 지정하는 복소수 처리 명령에 응답하여, 제어신호를 발생하여 상기 데이터 처리회로를 제어함으로써,
    상기 제1 소스 레지스터 내부의 연속된 데이터 항목들이 제1 세트의 복소수들의 교번하는 실수 및 허수 성분들을 포함하는 상기 제1 소스 레지스터 내부의 교번하는 위치들로부터 적어도 한 개의 제 1 세트의 데이터 항목들을 추출하고,
    상기 제2 소스 레지스터 내부의 연속된 데이터 항목들이 제2 세트의 복소수들의 교번하는 실수 및 허수 성분들을 포함하는 상기 제2 소스 레지스터 내부의 교번하는 위치들로부터 적어도 한 개의 제 2 세트의 데이터 항목들을 추출하고,
    상기 제1 및 제2 세트의 데이터 항목들을 피연산자들로서 사용하여, 상기 제1 세트의 복소수들 및 상기 제2 세트의 복소수들에 적용된 상기 복소수 연산의 복소수 결과의 실수부 및 허수부 중에서 한 개인 복소수 성분들의 결과 세트를 생성하고,
    상기 복소수 성분들의 결과 세트를 상기 목적지 레지스터에 인가하고,
    상기 데이터 처리회로가 제어신호에 응답하여 상기 복소수 성분들의 결과 세트를 상기 목적지 레지스터 내부의 연속된 위치들에 인가하는 장치.
  2. 제 1항에 있어서,
    상기 복소수 성분들의 결과 세트는 복소수 결과의 실수 성분들의 세트인 장치.
  3. 제 1항에 있어서,
    상기 복소수 성분들의 결과 세트는 복소수 결과의 허수 성분들의 세트인 장치.
  4. 삭제
  5. 제 1항에 있어서,
    상기 복소수 성분들의 결과 세트의 각각의 복소수 성분이 상기 제1 및 제2 세트의 데이터 항목들의 각각의 데이터 항목보다 폭이 넓은 장치.
  6. 삭제
  7. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 복소수 처리 명령은 상기 제1 세트의 데이터 항목들을 상기 제1 소스 레지스터 내부의 홀수 위치들에서 추출할 것인지 또는 짝수 위치들에서 추출할 것인지 더 지정하고, 상기 복소수 처리 명령은 상기 제2 세트의 데이터 항목들을 상기 제2 소스 레지스터 내부의 홀수 위치들에서 추출할 것인지 또는 짝수 위치들에서 추출할 것인지 더 지정하는 장치.
  8. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 복소수 처리 명령은 상기 제1 소스 레지스터 및 상기 제2 소스 레지스터 중에서 적어도 한 개에 대한 복제 색인을 더 지정하고, 상기 데이터 처리회로는 제어신호에 더 응답하여, 상기 복제 색인에 의해 표시된 복소수들의 소스 세트를 상기 제1 소스 레지스터 및 상기 제2 소스 레지스터 중에서 적어도 한 개에 복제하는 장치.
  9. 제 8항에 있어서,
    상기 복소수들의 소스 세트의 복제가 한 번보다 많은 복소수들의 소스 세트의 복제를 포함하는 장치.
  10. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 제1 소스 레지스터로부터 추출된 적어도 상기 한 개의 제1 세트의 데이터 항목들이 상기 제1 세트의 데이터 항목들과 제 3 세트의 데이터 항목들을 포함하고,
    상기 제1 세트의 데이터 항목들이 상기 제1 세트의 복소수들의 실수 성분들일 때에는, 상기 제3 세트의 데이터 항목들이 상기 제1 세트의 복소수들의 허수 성분들이고, 상기 제1 세트의 데이터 항목들이 상기 제1 세트의 복소수들의 허수 성분들일 때에는, 상기 제3 세트의 데이터 항목들이 상기 제1 세트의 복소수들의 실수 성분들이고,
    상기 데이터 처리회로는 제어신호에 더 응답하여 상기 제3 세트의 데이터 항목들을 피연산자들로서 더 사용하여 상기 복소수 성분들의 결과 세트를 생성하는 장치.
  11. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 제2 소스 레지스터로부터 추출된 상기 적어도 한 개의 제2 세트의 데이터 항목들이 상기 제2 세트의 데이터 항목들 및 제 4 세트의 데이터 항목들을 포함하고,
    상기 제2 세트의 데이터 항목들이 상기 제2 세트의 복소수들의 실수 성분들일 때에는, 상기 제4 세트의 데이터 항목들이 상기 제2 세트의 복소수들의 허수 성분들이고, 상기 제2 세트의 데이터 항목들이 상기 제2 세트의 복소수들의 허수 성분들일 때에는, 상기 제4 세트의 데이터 항목들이 상기 제2 세트의 복소수들의 실수 성분들이고,
    상기 데이터 처리회로는 제어신호에 더 응답하여 상기 제4 세트의 데이터 항목들을 피연산자들로서 더 사용하여 상기 복소수 성분들의 결과 세트를 생성하는 장치.
  12. 제 10항에 있어서,
    상기 복소수 연산은 복소 내적 연산이고, 상기 데이터 처리회로는, 제어신호에 응답하여, 상기 제1 세트의 복소수들의 실수 및 허수 성분 쌍들의 쌍들의 세트와 상기 제2 세트의 복소수들의 실수 및 허수 성분 쌍들의 쌍들의 세트의 부분 곱들로부터 상기 복소수 성분들의 결과 세트를 누산하는 누산회로를 구비한 장치.
  13. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 복소수 연산은 복소 승산 연산을 포함하는 장치.
  14. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 복소수 연산은 복소 가산 연산 또는 복소 감산 연산인 장치.
  15. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 복소수 처리 명령은 전치 파라미터를 더 지정하고, 상기 데이터 처리회로는 제어신호에 응답하여, 상기 제1 및 제2 세트의 복소수들에 대한 상기 복소수 연산의 적용 전에, 상기 제1 및 제2 세트의 복소수들 중에서 적어도 한 개에 대해 전치 연산을 적용하는 장치.
  16. 제 15항에 있어서,
    상기 전치 연산은,
    상기 제1 세트의 복소수들과 상기 제2 세트의 복소수들 중에서 적어도 한 개에 있어서,
    실수의 허수 성분들로의 치환,
    허수의 실수 성분들로의 치환,
    실수 및 허수 성분들의 교환,
    실수 성분의 부정(negation)과,
    허수 성분들의 부정 중에서 적어도 한가지를 포함하는 장치.
  17. 제 15항에 있어서,
    상기 복소수 처리 명령은 상기 전치 파라미터를 즉시값(immediate value)으로서 지정하는 장치.
  18. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 목적지 레지스터에 대한 상기 복소수 성분들의 결과 세트의 인가는 상기 목적지 레지스터 내부에의 상기 복소수 성분들의 결과 세트의 기억을 포함하는 장치.
  19. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 목적지 레지스터에 대한 상기 복소수 성분들의 결과 세트의 인가는 상기 목적지 레지스터의 콘텐츠로 상기 복소수 성분들의 결과 세트를 누적하는 것을 포함하는 장치.
  20. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 목적지 레지스터가 상기 제1 소스 레지스터 및 상기 제2 소스 레지스터 중에서 한 개인 장치.
  21. 제 1항 내지 제 3항 중 어느 한 항에 있어서,
    상기 복소수 연산은 포화 연산인 장치.
  22. 데이터 처리장치의 작동방법으로서,
    명령들을 디코드하는 단계와,
    명령들에 의해 지정된 벡터 처리 연산을 입력 데이터 벡터들 내부의 각각의 위치에 있는 복수의 입력 데이터 항목들을 포함하는 입력 데이터 벡터들에 선택적으로 적용하는 단계와,
    복소수 연산, 제1 소스 레지스터, 제2 소스 레지스터 및 목적지 레지스터를 지정하는 복소수 처리 명령에 응답하여, 제어신호를 발생하여 상기 데이터 처리장치의 데이터 처리회로를 제어함으로써,
    상기 제1 소스 레지스터 내부의 연속된 데이터 항목들이 제1 세트의 복소수들의 교번하는 실수 및 허수 성분들을 포함하는 상기 제1 소스 레지스터 내부의 교번하는 위치들로부터 적어도 한 개의 제 1 세트의 데이터 항목들을 추출하고,
    상기 제2 소스 레지스터 내부의 연속된 데이터 항목들이 제2 세트의 복소수들의 교번하는 실수 및 허수 성분들을 포함하는 상기 제2 소스 레지스터 내부의 교번하는 위치들로부터 적어도 한 개의 제 2 세트의 데이터 항목들을 추출하고,
    상기 제1 및 제2 세트의 데이터 항목들을 피연산자들로서 사용하여, 상기 제1 세트의 복소수들 및 상기 제2 세트의 복소수들에 적용된 복소수 연산의 복소수 결과의 실수부 및 허수부 중에서 한 개인 복소수 성분들의 결과 세트를 생성하고,
    상기 복소수 성분들의 결과 세트를 상기 목적지 레지스터에 인가하는 단계를 포함하고,
    상기 데이터 처리회로는 제어신호에 응답하여 상기 복소수 성분들의 결과 세트를 상기 목적지 레지스터 내부의 연속된 위치들에 인가하는 데이터 처리장치의 작동방법.
  23. 명령들을 디코드하는 수단과,
    명령들에 의해 지정된 벡터 처리 연산을 입력 데이터 벡터들 내부의 각각의 위치에 있는 복수의 입력 데이터 항목들을 포함하는 입력 데이터 벡터들에 선택적으로 적용하는 수단과,
    복소수 연산, 제1 소스 레지스터, 제2 소스 레지스터 및 목적지 레지스터를 지정하는 복소수 처리 명령에 응답하여, 제어신호를 발생하여 데이터 처리장치 내부의 데이터 처리 수단을 제어함으로써,
    상기 제1 소스 레지스터 내부의 연속된 데이터 항목들이 제1 세트의 복소수들의 교번하는 실수 및 허수 성분들을 포함하는 상기 제1 소스 레지스터 내부의 교번하는 위치들로부터 적어도 한 개의 제 1 세트의 데이터 항목들을 추출하고,
    상기 제2 소스 레지스터 내부의 연속된 데이터 항목들이 제2 세트의 복소수들의 교번하는 실수 및 허수 성분들을 포함하는 상기 제2 소스 레지스터 내부의 교번하는 위치들로부터 적어도 한 개의 제 2 세트의 데이터 항목들을 추출하고,
    상기 제1 및 제2 세트의 데이터 항목들을 피연산자들로서 사용하여, 상기 제1 세트의 복소수들 및 상기 제2 세트의 복소수들에 적용된 복소수 연산의 복소수 결과의 실수부 및 허수부 중에서 한 개인 복소수 성분들의 결과 세트를 생성하고,
    상기 복소수 성분들의 결과 세트를 상기 목적지 레지스터에 인가하는 수단을 구비하고,
    상기 데이터 처리 수단은 제어신호에 응답하여 상기 복소수 성분들의 결과 세트를 상기 목적지 레지스터 내부의 연속된 위치들에 인가하는 장치.
  24. 호스트 데이터 처리장치를 제어하여,
    명령들을 디코드하는 명령 디코딩 프로그램 로직과,
    명령들에 의해 지정된 벡터 처리 연산을 입력 데이터 벡터 구조들 내부의 각각의 위치에 있는 복수의 입력 데이터 항목들을 포함하는 입력 데이터 벡터 구조들에 선택적으로 적용하는 데이터 처리 프로그램 로직을 포함하는 명령 실행 환경을 제공하는, 컴퓨터 판독 가능한 기억매체에 기억된, 컴퓨터 프로그램으로서,
    상기 명령 디코딩 프로그램 로직은, 복소수 연산, 제1 소스 데이터 구조, 제2 소스 데이터 구조 및 목적지 데이터 구조를 지정하는 복소수 처리 명령에 응답하여, 제어신호를 발생하여 상기 데이터 처리 프로그램 로직을 제어함으로써,
    상기 제1 소스 데이터 구조 내부의 연속된 데이터 항목들이 제1 세트의 복소수들의 교번하는 실수 및 허수 성분들을 포함하는 상기 제1 소스 데이터 구조 내부의 교번하는 위치들로부터 적어도 한 개의 제 1 세트의 데이터 항목들을 추출하고,
    상기 제2 소스 데이터 구조 내부의 연속된 데이터 항목들이 제2 세트의 복소수들의 교번하는 실수 및 허수 성분들을 포함하는 상기 제2 소스 데이터 구조 내부의 교번하는 위치들로부터 적어도 한 개의 제 2 세트의 데이터 항목들을 추출하고,
    상기 제1 및 제2 세트의 데이터 항목들을 피연산자들로서 사용하여, 상기 제1 세트의 복소수들 및 상기 제2 세트의 복소수들에 적용된 복소수 연산의 복소수 결과의 실수부 및 허수부 중에서 한 개인 복소수 성분들의 결과 세트를 생성하고,
    상기 복소수 성분들의 결과 세트를 상기 목적지 데이터 구조에 인가하고,
    상기 데이터 처리 프로그램 로직은 제어신호에 응답하여 상기 복소수 성분들의 결과 세트를 상기 목적지 데이터 구조 내부의 연속된 위치들에 인가하는 컴퓨터 프로그램.
  25. 청구항 24에 기재된 컴퓨터 프로그램을 비일시적으로 기억하는 컴퓨터 판독가능한 기억매체.
KR1020207004143A 2017-07-20 2018-07-02 레지스터 기반의 복소수 처리 KR102586259B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1711700.3 2017-07-20
GB1711700.3A GB2564696B (en) 2017-07-20 2017-07-20 Register-based complex number processing
PCT/GB2018/051851 WO2019016507A1 (en) 2017-07-20 2018-07-02 COMPLEX NUMBER PROCESSING BASED ON REGISTERS

Publications (2)

Publication Number Publication Date
KR20200026992A KR20200026992A (ko) 2020-03-11
KR102586259B1 true KR102586259B1 (ko) 2023-10-10

Family

ID=59771743

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207004143A KR102586259B1 (ko) 2017-07-20 2018-07-02 레지스터 기반의 복소수 처리

Country Status (9)

Country Link
US (1) US11210090B2 (ko)
EP (1) EP3655851B1 (ko)
JP (1) JP7343473B2 (ko)
KR (1) KR102586259B1 (ko)
CN (1) CN110914800B (ko)
GB (1) GB2564696B (ko)
IL (1) IL271635B2 (ko)
TW (1) TWI773783B (ko)
WO (1) WO2019016507A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3602278B1 (en) * 2017-03-20 2022-09-28 Intel Corporation Systems, methods, and apparatuses for tile matrix multiplication and accumulation
GB2564696B (en) 2017-07-20 2020-02-05 Advanced Risc Mach Ltd Register-based complex number processing
CN118012506B (zh) * 2024-04-08 2024-06-07 龙芯中科技术股份有限公司 二进制翻译优化方法、装置、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050193185A1 (en) * 2003-10-02 2005-09-01 Broadcom Corporation Processor execution unit for complex operations
US20100106944A1 (en) * 2004-07-13 2010-04-29 Arm Limited Data processing apparatus and method for performing rearrangement operations

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5579253A (en) 1994-09-02 1996-11-26 Lee; Ruby B. Computer multiply instruction with a subresult selection option
US6839728B2 (en) 1998-10-09 2005-01-04 Pts Corporation Efficient complex multiplication and fast fourier transform (FFT) implementation on the manarray architecture
US7376812B1 (en) * 2002-05-13 2008-05-20 Tensilica, Inc. Vector co-processor for configurable and extensible processor architecture
US7660840B2 (en) * 2003-09-29 2010-02-09 Broadcom Corporation Method, system, and computer program product for executing SIMD instruction for flexible FFT butterfly
GB2411976B (en) * 2003-12-09 2006-07-19 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2409066B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
GB2411975B (en) * 2003-12-09 2006-10-04 Advanced Risc Mach Ltd Data processing apparatus and method for performing arithmetic operations in SIMD data processing
GB2409059B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
US20070198815A1 (en) 2005-08-11 2007-08-23 Coresonic Ab Programmable digital signal processor having a clustered SIMD microarchitecture including a complex short multiplier and an independent vector load unit
JP2009048532A (ja) * 2007-08-22 2009-03-05 Nec Electronics Corp マイクロプロセッサ
GB2464292A (en) * 2008-10-08 2010-04-14 Advanced Risc Mach Ltd SIMD processor circuit for performing iterative SIMD multiply-accumulate operations
CN101825998B (zh) * 2010-01-22 2012-09-05 龙芯中科技术有限公司 向量复数乘法运算的处理方法及相应的装置
US20120166511A1 (en) * 2010-12-22 2012-06-28 Hiremath Chetan D System, apparatus, and method for improved efficiency of execution in signal processing algorithms
KR20120077164A (ko) * 2010-12-30 2012-07-10 삼성전자주식회사 Simd 구조를 사용하는 복소수 연산을 위한 사용하는 장치 및 방법
CN102937967B (zh) * 2012-10-11 2018-02-27 南京中兴新软件有限责任公司 数据冗余实现方法及装置
CN103873522B (zh) * 2012-12-14 2018-07-06 联想(北京)有限公司 一种电子设备及应用于电子设备的文件分块方法
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
US20170177359A1 (en) 2015-12-21 2017-06-22 Intel Corporation Instructions and Logic for Lane-Based Strided Scatter Operations
US20170177362A1 (en) 2015-12-22 2017-06-22 Intel Corporation Adjoining data element pairwise swap processors, methods, systems, and instructions
GB2548908B (en) * 2016-04-01 2019-01-30 Advanced Risc Mach Ltd Complex multiply instruction
US11023231B2 (en) * 2016-10-01 2021-06-01 Intel Corporation Systems and methods for executing a fused multiply-add instruction for complex numbers
GB2564696B (en) 2017-07-20 2020-02-05 Advanced Risc Mach Ltd Register-based complex number processing

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050193185A1 (en) * 2003-10-02 2005-09-01 Broadcom Corporation Processor execution unit for complex operations
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
GB201711700D0 (en) 2017-09-06
TWI773783B (zh) 2022-08-11
CN110914800A (zh) 2020-03-24
GB2564696A (en) 2019-01-23
KR20200026992A (ko) 2020-03-11
WO2019016507A1 (en) 2019-01-24
US11210090B2 (en) 2021-12-28
JP7343473B2 (ja) 2023-09-12
IL271635A (en) 2020-02-27
IL271635B1 (en) 2023-10-01
EP3655851B1 (en) 2022-12-14
EP3655851A1 (en) 2020-05-27
GB2564696B (en) 2020-02-05
CN110914800B (zh) 2023-12-05
IL271635B2 (en) 2024-02-01
JP2020527795A (ja) 2020-09-10
US20210026628A1 (en) 2021-01-28
TW201908964A (zh) 2019-03-01

Similar Documents

Publication Publication Date Title
JP7454377B2 (ja) データ処理装置における拡大算術計算
CN111213125A (zh) 使用simd指令进行高效的直接卷积
US20080140750A1 (en) Apparatus and method for performing rearrangement and arithmetic operations on data
KR102586259B1 (ko) 레지스터 기반의 복소수 처리
JP7148526B2 (ja) データ処理装置におけるベクトルによる要素演算
JP7324754B2 (ja) ベクトル・キャリー付き加算命令
US11093243B2 (en) Vector interleaving in a data processing apparatus
TW202305588A (zh) 用於向量組合指令之處理設備、方法、及電腦程式
GB2617829A (en) Technique for handling data elements stored in an array storage
GB2617828A (en) Technique for handling data elements stored in an array storage

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