KR101334860B1 - 고속 회전 연산들을 수행하기 위한 시스템 및 방법 - Google Patents

고속 회전 연산들을 수행하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR101334860B1
KR101334860B1 KR1020117002010A KR20117002010A KR101334860B1 KR 101334860 B1 KR101334860 B1 KR 101334860B1 KR 1020117002010 A KR1020117002010 A KR 1020117002010A KR 20117002010 A KR20117002010 A KR 20117002010A KR 101334860 B1 KR101334860 B1 KR 101334860B1
Authority
KR
South Korea
Prior art keywords
data
coordinate
control value
output data
processor
Prior art date
Application number
KR1020117002010A
Other languages
English (en)
Other versions
KR20110025222A (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 KR20110025222A publication Critical patent/KR20110025222A/ko
Application granted granted Critical
Publication of KR101334860B1 publication Critical patent/KR101334860B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • 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
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49921Saturation, i.e. clipping the result to a minimum or maximum value
    • 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/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/768Data position reversal, e.g. bit reversal, byte swapping

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Advance Control (AREA)

Abstract

고속 회전 연산들을 수행하기 위한 시스템들 및 방법들이 개시된다. 특정 실시예에서, 방법은 단일 명령을 실행하는 단계를 포함한다. 이 방법은 제 1 좌표 및 제 2 좌표를 나타내는 제 1 데이터를 수신하는 단계, 한 세트의 90도 배수들로부터 선택된 제 1 회전 값을 나타내는 제 1 제어 값을 수신하는 단계, 및 상기 제 1 회전 값에 의해 회전된 제 1 데이터에 대응하는 출력 데이터를 기록하는 단계를 포함한다.

Description

고속 회전 연산들을 수행하기 위한 시스템 및 방법{SYSTEM AND METHOD TO PERFORM FAST ROTATION OPERATIONS}
본 개시는 일반적으로 고속 회전 연산들의 수행에 관한 것이다.
기술의 진보로 연산 디바이스들은 더 작고 더 강력해지게 되었다. 예를 들어, 작고 가벼우며 사용자들이 쉽게 휴대하는 휴대용 무선 전화들, 개인 디지털 보조기기(PDA: personal digital assistant)들 및 페이징 디바이스들과 같은 무선 연산 디바이스들을 포함하는 다양한 휴대용 개인 연산 디바이스가 현재 존재한다. 보다 구체적으로, 셀룰러폰과 IP 전화들과 같은 휴대용 무선 전화들은 무선 네트워크들을 통해 음성 및 데이터 패킷들을 전달할 수 있다.
무선 링크를 통해 전달되는 데이터의 수신은 데이터 디코딩 기능을 포함한다. 데이터 디코딩 기능은 곱셈 연산들을 사용하는 하나 이상의 벡터 회전 연산들을 수반할 수 있다. 예를 들어, 무선 데이터는 동상(in-phase) 성분 및 직교(quadrature) 성분과 같은 복소값들을 갖는 벡터들 간의 각 변위(angular displacement)를 포함하는 일련의 심벌들로서 인코딩될 수 있다. 이러한 심벌들로부터 데이터를 리트리브(retrieve)하는 것은 디코딩 동안 누적된 위상을 보상하기 위해서와 같이 벡터들의 회전을 필요로 할 수 있다. 이러한 벡터 연산들은 휴대용 디바이스에서 특히 한정된 처리 자원들을 소비할 수 있다.
고속 벡터 회전 연산들을 수행하기 위한 시스템들 및 방법들이 개시된다. 엔드포인트 좌표 데이터에 의해 식별되는 벡터들이 좌표 원점을 중심으로 하나 이상의 제어 값에 의해 지정된 회전도 또는 각 변위만큼 회전될 수 있다. 개시된 실시예들은 모뎀 디바이스 또는 프로세서에서와 같이 무선 데이터의 인코딩 또는 디코딩에 관련하여, 또는 다른 애플리케이션들에 관련하여 동작할 수 있다.
특정 실시예에서, 프로세서에서 단일 벡터 회전 명령을 실행하는 단계를 포함하는 방법이 개시된다. 단일 벡터 회전 명령은 제 1 좌표 및 제 2 좌표를 나타내는 제 1 데이터를 수신하는 단계, 한 세트의 90도 배수들로부터 선택된 제 1 회전 값을 나타내는 제 1 제어 값을 수신하는 단계, 및 상기 제 1 회전 값에 의해 회전된 제 1 데이터에 대응하는 출력 데이터를 데이터 저장 엘리먼트에 기록하는 단계를 포함한다.
다른 특정 실시예에서는, 제어 값에 응답하여 제 1 좌표 데이터와 제 2 좌표 데이터를 선택적으로 교환(swap)하기 위한 수단을 포함하는 프로세서가 개시된다. 프로세서는 또한 제 1 부정(negated) 좌표 데이터를 생성하도록 상기 제 1 좌표 데이터를 부정하고 제 2 부정 좌표 데이터를 생성하도록 상기 제 2 부정 데이터를 부정하기 위한 수단을 포함한다. 프로세서는 또한 상기 제어 값에 응답하여 상기 제 1 좌표 데이터 또는 상기 제 1 부정 좌표 데이터를 선택적으로 출력하고 상기 제 2 좌표 데이터 또는 상기 제 2 부정 좌표 데이터를 선택적으로 출력하기 위한 수단을 포함한다. 상기 제어 값은 상기 제 1 좌표 데이터 및 상기 제 2 좌표 데이터로 표현되는 벡터의 회전도를 나타낸다.
특정 실시예에서, 고속 벡터 회전 연산들을 수행하기에 적합한 모뎀을 포함하는 시스템이 개시된다. 시스템은 안테나에 연결되도록 구성된 트랜시버를 포함한다. 모뎀은 상기 트랜시버로부터 무선 신호 데이터를 수신하도록 연결된다. 상기 무선 신호 데이터는 벡터 엔드포인트들의 위치들과 같은 좌표 위치들에 대응할 수 있는 심벌 데이터를 포함한다. 상기 모뎀은 제어 값에 응답하여 심벌 데이터와 관련된 제 1 좌표 데이터와 제 2 좌표 데이터를 선택적으로 교환하도록 구성된 크로스바(crossbar) 디바이스를 포함한다. 모뎀은 또한 상기 크로스바 디바이스의 출력을 부정하도록 구성된 벡터 덧셈기 디바이스를 포함한다. 모뎀은 또한 상기 제어 값에 응답하여 상기 벡터 덧셈기 디바이스의 출력 또는 상기 크로스바 디바이스의 출력을 선택적으로 출력하도록 연결된 멀티플렉서를 포함한다. 상기 제어 값은 상기 제 1 좌표 데이터 및 상기 제 2 좌표 데이터로 표현되는 제 1 벡터의 회전도를 나타낸다.
다른 특정 실시예에서, 단일 실행 사이클에서 벡터 회전을 수행하도록 프로세서에 의해 실행 가능한 프로세서 명령이 개시된다. 프로세서 명령은 명령 이름, 그리고 제 1 좌표 및 제 2 좌표를 포함하는 제 1 필드를 포함한다. 프로세서 명령은 또한 제 1 및 제 2 좌표 데이터를 회전시키기 위한 제 1 양을 나타내는 제 1 제어 값을 포함하는 제 2 필드를 포함한다. 상기 프로세서 명령의 실행시 상기 프로세서는 회전된 데이터를 메모리에 저장한다. 회전된 데이터는 제 1 제어 값에 의해 표시된 상기 제 1 양만큼 회전된 제 1 및 제 2 좌표 데이터에 대응한다.
개시된 실시예들에 의해 제공되는 특별한 한 가지 이점은 고속 벡터 회전 연산들에 의해 가능해지는 더 고속의 무선 데이터 디코딩이다. 본 개시의 다른 형태들, 이점들 및 특징들은 다음 섹션들: 도면의 간단한 설명, 발명을 실시하기 위한 구체적인 내용 및 특허청구범위를 포함하는 전체 출원의 검토 후 명백해질 것이다.
도 1은 고속 벡터 회전 연산을 수행하도록 구성된 휴대용 통신 디바이스의 특정한 예시적인 실시예의 블록도이다.
도 2는 고속 벡터 회전 명령을 실행하기 위한 시스템의 특정한 예시적인 실시예의 블록도이다.
도 3은 벡터 좌표 회전들을 수행하기 위한 시스템의 제 1 예시적인 실시예의 블록도이다.
도 4는 고속 벡터 회전 연산들을 발생시키기 위한 시스템의 특정 예시적인 실시예의 블록도이다.
도 5는 벡터 좌표 회전들을 수행하기 위한 시스템의 제 2 예시적인 실시예의 블록도이다.
도 6은 벡터 좌표 회전 시스템의 제 1 예시적인 실시예의 데이터 흐름도이다.
도 7은 벡터 좌표 회전 시스템의 제 2 예시적인 실시예의 데이터 흐름도이다.
도 8은 고속 벡터 회전 연산을 수행하기 위한 방법의 제 1 예시적인 실시예의 흐름도이다.
도 9는 고속 벡터 회전 연산을 수행하기 위한 방법의 제 2 예시적인 실시예의 흐름도이다.
도 1을 참조하면, 고속 벡터 회전 연산을 수행하도록 구성된 전자 디바이스의 특정 예시적인 실시예의 블록도가 도시되며 일반적으로 100으로 표시된다. 디바이스(100)는 메모리(132)에 연결되고 고속 벡터 회전 연산(190)을 수행하도록 구성된 모뎀(140)에도 연결되는 디지털 신호 프로세서(DSP: digital signal processor)(110)와 같은 프로세서를 포함한다.
도 1은 또한 디지털 신호 프로세서(110) 및 디스플레이(128)에 연결되는 디스플레이 제어기(126)를 도시한다. 코더/디코더(코덱(CODEC))(134) 또한 디지털 신호 프로세서(110)에 연결될 수 있다. 스피커(136) 및 마이크(138)가 코덱(134)에 연결될 수 있다.
모뎀(140)은 트랜시버(146)에 연결될 수 있다. 트랜시버(146)는 무선 안테나(142)에 연결되도록 구성될 수 있다. 트랜시버(146)는 트랜시버(146)가 안테나(142)에 연결될 때 수신되는 무선 신호에 대응하는 심벌 위상 데이터와 같은 좌표 데이터를 생성하도록 구성될 수 있다. 모뎀(140)은 무선 신호로부터 인코딩된 데이터를 리트리브하기 위한 디코딩 프로세스의 일부로서 트랜시버(146)로부터 수신되는 좌표 데이터에 고속 벡터 회전 연산(190)을 적용하도록 구성된다.
예를 들어, 심벌 위상 데이터는 (x, y) 좌표 시스템의 (0, 0) 좌표와 같은 좌표 원점에 한쪽 끝이 있는 벡터로서 표현될 수 있으며, 양의 x 축으로부터 45도 각도인 벡터에 대한 (1, 1) 좌표와 같은 벡터의 다른 한쪽의 좌표로 기술될 수 있다. 실례로서, 좌표 평면 내에서 90도의 회전도, 즉 각 변위로 (1, 1) 벡터의 벡터 회전을 수행하면, 회전된 벡터 (-1, 1)이 된다. 180도로 (1, 1) 벡터의 벡터 회전을 수행하면, 회전된 벡터 (-1, -1)이 된다. 270도로 (1, 1) 벡터의 벡터 회전을 수행하면, 회전된 벡터 (1, -1)이 된다.
특정 실시예들에서, 디스플레이 제어기(126), 메모리(132), 코덱(134), 모뎀(140) 및 트랜시버(146)는 시스템-인-패키지(system-in-package) 또는 시스템-온-칩(system-on-chip) 디바이스(122)에 포함된다. 특정 실시예에서, 입력 디바이스(130) 및 파워서플라이(144)는 시스템-온-칩 디바이스(122)에 연결된다. 더욱이, 도 1에 나타낸 것과 같은 특정 실시예에서, 디스플레이(128), 입력 디바이스(130), 스피커(136), 마이크(138), 무선 안테나(142) 및 파워서플라이(144)는 시스템-온-칩 디바이스(122) 외부에 있다. 그러나 디스플레이(128), 입력 디바이스(130), 스피커(136), 마이크(138), 무선 안테나(142) 및 파워서플라이(144) 각각은 인터페이스나 제어기와 같은 시스템-온-칩 디바이스(122)의 컴포넌트에 연결될 수 있다.
동작중에, 인코딩된 데이터를 포함하는 무선 신호가 안테나(142)에서 수신될 수 있고, 해당 좌표 데이터가 트랜시버(146)를 통해 모뎀(140)에 제공될 수 있다. 예를 들어, 좌표 데이터는 벡터의 X 및 Y 좌표를 표현할 수 있다. 모뎀(140)은 디코딩 프로세스의 일부로서 고속 벡터 회전 연산(190)을 이용하여 좌표 데이터의 회전들을 수행할 수 있다. 고속 벡터 회전 연산(190)은 모뎀(140)의 처리 사이클마다 다수의 좌표 회전을 가능하게 할 수 있어, 데이터의 고속 디코딩을 가능하게 할 수 있다. 또한, 고속 벡터 회전 연산(190)은 곱셈 또는 테이블 룩업(lookup) 없이 좌표 회전이 수행되게 할 수 있어, 디코딩 프로세스의 전력 소비를 줄일 수 있다.
특정 실시예에서, 모뎀(140)은 고속 벡터 회전 연산(190)을 수행하여 단일 프로세서 실행 사이클 동안 다수의 벡터 좌표 회전을 수행하기 위한 명령을 실행하도록 구성된 파이프라인형(pipelined) 프로세서를 포함한다. 예를 들어, 모뎀(140)은 제 1 좌표들에 의해 식별되는 제 1 벡터 및 제 2 좌표들에 의해 식별되는 제 2 벡터를 포함하는 심벌 데이터를 포함하는 무선 신호 데이터를 트랜시버(146)로부터 수신할 수 있다. 모뎀(140)은 단일 프로세서 명령을 실행함으로써 단일 실행 사이클 동안 제 1 벡터 및 제 2 벡터에 대한 동시 회전 연산들을 수행하도록 구성될 수 있다.
예를 들어, 예시적인 실시예에서 모뎀(140)은 도 4의 시스템(400)을 포함하는, 즉 제어 값에 응답하여 제 1 벡터의 제 1 좌표 데이터와 제 2 좌표 데이터를 선택적으로 교환하도록 구성된 크로스바 디바이스, 크로스바 디바이스의 출력을 부정하도록 구성된 벡터 덧셈기 디바이스, 및 제어 값에 응답하여 벡터 덧셈기 디바이스의 출력 또는 크로스바 디바이스의 출력을 선택적으로 출력하도록 연결된 멀티플렉서를 포함하는 실행 유닛을 갖는 파이프라인형 프로세서를 포함한다. 제어 값은 제 1 좌표 데이터 및 제 2 좌표 데이터로 표현된 제 1 벡터의 원하는 회전도(예를 들어, 90도의 배수)를 나타낼 수 있다.
특정 실시예에서, 모뎀(140)은 전용 하드웨어 컴포넌트들 및 회로를 포함하지 않을 수도 있으며, 대신 프로세서(110)의 단일 처리 사이클 동안 다수의 벡터 좌표 회전을 수행하도록 고속 벡터 회전 연산(190)이 실행되는 인터리빙된 멀티스레드 파이프라인형 프로세서의 처리 스레드와 같이 프로세서(110)에서 실행되는 모뎀 애플리케이션일 수 있다. 또 다른 실시예에서, 고속 벡터 회전 연산(190)은 전용 하드웨어, 펌웨어, 하나 이상의 다른 프로세서, 또는 이들의 임의의 조합에 의해 수행될 수 있다.
도 2를 참조하면, 고속 벡터 회전 연산 명령을 실행하기 위한 시스템이 도시되며 일반적으로 200으로 표시된다. 시스템(200)은 레지스터 파일(204)을 포함하는 프로세서(202)를 포함한다. 프로세서(202)는 회전 명령(206)을 수신하도록 구성된다. 특정 실시예에서, 시스템(200)은 도 1의 모뎀(140)에 포함되며, 회전 명령(206)은 도 1에 나타낸 고속 벡터 회전 연산(190)의 일부에 대응한다.
특정 실시예에서, 회전 명령(206)은 단일 실행 사이클에서 벡터 회전을 수행하도록 프로세서(202)에 의해 실행 가능한 프로세서 명령이다. 회전 명령(206)은 FastRotate라는 이름으로 표기된 명령 이름(260)을 포함한다. 회전 명령(206)은 또한 제 1 필드(Rss)(262) 및 제 2 필드(Rt)(264)를 포함한다. 회전 명령(206)은 어드레스(Rdd)(266)로 값(예를 들어, 벡터 회전 연산의 실행으로부터 발생하는 회전된 벡터)을 리턴한다.
특정 실시예에서, 제 1 필드(Rss)(262)는 레지스터 파일(204)의 제 1 레지스터(208)에 대응하는 어드레스를 포함한다. 제 2 필드(Rt)(262)는 레지스터 파일(204)의 제 2 레지스터(222)에 대응하는 어드레스를 포함한다. 리턴 어드레스(Rdd)(266)는 레지스터 파일(204)의 제 3 레지스터(240)에 대응한다.
특정 실시예에서, 프로세서(202)는 회전 명령(206)의 수신에 응답하여 제 1 데이터(210) 및 제 1 제어 값(224)(C1)에 액세스하도록 구성된다. 제 1 데이터(210)(예를 들어, 제 1 벡터)는 소스 레지스터(Rss)(208)로부터의 벡터의 제 1 좌표(x1)(212) 및 제 2 좌표(y1)(214)를 포함할 수 있다. 회전 명령(206)의 실행시, 프로세서(202)는 회전된 데이터(242)를 레지스터 파일(204)의 제 3 레지스터(240)와 같은 메모리에 저장한다. 회전된 데이터(242)는 제 1 제어 값(224)으로 표시되는 제 1 양만큼 회전된 제 1 데이터(210)에 대응하고, 회전된 데이터(242)는 목적지 레지스터(Rdd)(240)에서 회전된 좌표 A(244) 및 B(246)의 세트로서 저장될 수 있다. 특정 실시예에서, 프로세서(202)는 프로세서(202)의 단일 처리 사이클 동안 각각 회전 명령(206)을 수행하기에 적합할 수 있는 다수의 실행 유닛(270, 272)을 포함한다.
특정 실시예에서, 프로세서(202)는 또한 회전 명령(206)의 실행시 제 1 레지스터(208)로부터 제 2 데이터(216)(예를 들어, 제 2 벡터)를 판독하도록 구성되며, 제 2 데이터(216)는 제 3 좌표(x2)(218) 및 제 4 좌표(y2)(220)를 포함한다. 프로세서(202)는 또한 제 2 레지스터(222)로부터 제 2 제어 값(C2)(226)을 판독하도록 구성될 수 있다. 제 2 제어 값(226)은 제 2 데이터(216)를 회전시키기 위한 제 2 양을 나타낸다. 프로세서(202)는 제 2 회전된 데이터(248)를 레지스터 파일(204)의 제 3 레지스터(240)로 리턴할 수 있다. 제 2 회전된 데이터(248)는 좌표 C(250) 및 D(252)의 세트와 같은 회전된 좌표 데이터를 포함하며, 이는 제 2 제어 값(226)에 의해 표시된 제 2 양만큼 회전된 제 2 데이터(216)에 대응한다.
특정 실시예에서, 프로세서(202)는 회전 명령(206)의 실행시 제 1 데이터(210) 및 제 2 데이터(216)를 동시에 판독하도록 구성된다. 프로세서(202)는 또한 제 1 및 제 2 데이터(210, 216)와 각각 동시에 제 1 제어 값(224) 및 제 2 제어 값(226)을 모두 판독하도록 구성될 수 있다. 프로세서(202)는 회전된 데이터(242)를 생성하기 위해 제 1 제어 값(224)에 따라 제 1 데이터(210)에 대한 제 1 회전 연산을 수행하는 것은 물론, 제 2 회전된 데이터(248)를 생성하기 위해 제 2 제어 값(226)에 따라 제 2 데이터(216)에 대한 제 2 회전을 수행하도록 구성될 수 있다. 회전된 데이터(242) 및 제 2 회전된 데이터(248)는 회전 명령(206)의 리턴 어드레스(266)로 표시된 어드레스를 갖는 제 3 레지스터(240)에서 레지스터 파일(204)에 동시에 기록될 수 있다.
제 1 데이터(210), 제 2 데이터(216), 제 1 제어 값(224) 및 제 2 제어 값(226)의 판독뿐 아니라, 회전된 데이터(242) 및 제 2 회전된 데이터(244)의 생성 및 저장은 단일 실행 유닛(270 또는 272)을 이용하여 단일 프로세서 실행 사이클에서 수행될 수 있다. 따라서 시스템(200)은 프로세서(202)가 프로세서(202)의 실행 사이클마다 다수의 벡터 회전을 수행할 수 있게 한다. 예를 들어, 제 1 데이터(210) 및 제 2 데이터(216)는 한정적이지 않은 실례로서, 무선 수신기의 직교(quadrature) 디코딩 사이클과 관련하는 등, 트랜시버로부터 모뎀에 수신된 순차적 심벌 값들과 관련된 벡터들에 대응할 수 있다.
특정 실시예에서, 회전 명령의 실행은 하기에 나타낸 바와 같이 의사 코드 명령(vcrotate)에 대해 설명되는 회전 로직에 따라 수행될 수 있다:
Figure 112011006367042-pct00001
Figure 112011006367042-pct00002
상기 의사 코드에서, Rss.h[n]는 소스 레지스터(Rss)의 n번째 하프워드(halfword)를 지시한다. 예를 들어, Rss는 16 비트 하프워드를 갖는 64 비트 값, 제 1 및 제 2 하프워드(Rss.h[0] 및 Rss.h[1])에서 각각 첫 번째 x 및 y 데이터에 대응하는 64 비트 값, 제 3 및 제 4 하프워드(Rss.h[2] 및 Rss.h[3])에서 각각 두 번째 x 및 y 데이터를 포함할 수 있다. Rt는 제어 값들을 저장하는 레지스터를 지시하며, 이는 비트 [1:0]에 제 1 회전 표시자를 그리고 비트 [3:2]에 제 2 회전 표시자를 포함한다. 각각의 회전 표시자는 한 세트의 4개의 값 중 하나를 나타내는 2 비트로 표현된다. 제어 값 "0"은 0도 회전을 나타낸다. 제어 값 "1"은 음의 90도 또는 270도 회전을 나타낸다. 제어 값 "2"는 90도 회전을 나타낸다. 제어 값 "3"은 180도 회전을 나타낸다. sat_16 함수는 0 값의 부정으로부터 발생하는 포화 상태를 조정하고, Rdd는 6개의 16 비트 하프워드를 포함하는 목적지 레지스터를 나타낸다.
도 3을 참조하면, 좌표 회전을 수행하기 위한 시스템의 제 1 예시적인 실시예가 도시되며 일반적으로 300으로 표시된다. 시스템(300)은 제어 값(C1)(324)에 응답하여 제 1 좌표 데이터(X1)(320) 및 제 2 좌표 데이터(Y1)(322)를 선택적으로 교환하기 위한 수단을 포함하며, 이는 교환 회로(302)로 도시된다. 시스템(300)은 또한 제 1 부정 좌표 데이터를 생성하도록 제 1 좌표 데이터(320)를 부정하고 제 2 부정 좌표 데이터를 생성하도록 제 2 좌표 데이터(322)를 부정하기 위한 수단을 포함하며, 이는 도 3에서 부정 회로(304)로 도시된다. 시스템(300)은 또한 제어 값(C1)(348)에 응답하여 제 1 좌표 데이터 또는 제 1 부정 좌표 데이터를 선택적으로 출력하고 제 2 좌표 데이터 또는 제 2 부정 좌표 데이터를 선택적으로 출력하기 위한 수단을 포함하며, 이는 선택 회로(308)로 표기된다. 포화 로직 회로(306)는 부정 회로(304)에 연결된다.
특정 실시예에서, 시스템(300)은 제 1 좌표 데이터(320) 및 제 2 좌표 데이터(322)를 수신하고, 제 1 좌표 데이터(320) 및 제 2 좌표 데이터(322)로 표현되는 벡터의 회전을 수행하도록 구성된다. 예를 들어, 제 1 좌표 데이터(320)는 벡터의 X 좌표를 나타낼 수 있고, 제 2 좌표 데이터(322)는 벡터의 Y 좌표를 나타낼 수 있다. 제어 값(C1)(324)은 벡터에 적용될 회전도를 나타낼 수 있다. 특정 실시예에서, 제어 값(C1)은 90도 회전의 배수를 나타낸다. 예를 들어, C1는 0도 회전을 나타내기 위한 제 1 값, 90도 회전을 나타내기 위한 제 2 값, 180도 회전을 나타내기 위한 제 3 값, 및 270도 회전을 나타내기 위한 제 4 값으로 설정될 수 있는 2 비트 데이터 항목일 수 있다. 회전의 대칭성으로 인해, 270도보다 큰 90도의 배수들과 0도보다 작은 90도의 배수가 여기서 설명하는 배수들 중 하나와 동등한 것으로 인식될 것이다.
특정 실시예에서, 교환 회로(302)는 제어 값(324)과 제 1 좌표 데이터(320) 및 제 2 좌표 데이터(322)를 수신하여 제 1 교환된 출력(326) 및 제 2 교환된 출력(328)을 출력하도록 구성된다. 제 1 교환된 출력(326)은 제어 값(324)에 응답하여 제 1 좌표 데이터(320) 또는 제 2 좌표 데이터(322)에 대응할 수 있다. 마찬가지로, 제 2 교환된 출력(328)은 제어 값(324)에 따라 제 1 좌표 데이터(320) 또는 제 2 좌표 데이터(322)에 대응할 수 있다. 제 1 및 제 2 교환된 좌표 데이터 출력(326, 328)은 각각 선택 회로(308)에 대한 입력(340, 342)으로서 제공된다. 제 1 및 제 2 교환된 좌표 데이터 출력(326, 328)은 또한 각각 부정 회로(304)에 대한 입력(330, 332)으로서 제공된다.
특정 실시예에서, 부정 회로(304)는 제 1 입력(330)에서 제 1 교환된 데이터(326)를 수신하고 선택 회로(308)의 제 1 부정 입력(344)에 제 1 교환된 데이터(326)의 부정 값을 제공하도록 구성된다. 부정 회로(304)는 또한 제 2 입력(332)에서 제 2 교환된 데이터(328)를 수신하고 선택 회로(308)의 제 2 부정 입력(346)에 제 2 교환된 데이터(328)의 부정 값을 제공하도록 구성된다. 특정 실시예에서, 포화 로직 회로(306)는 부정 회로(304)의 연산으로부터 발생하는 오버플로우 상태를 조정하도록 구성된다. 예를 들어, 어떤 2진수 표현에서 "0" 값이 부정되면, 결과적인 부정 "0" 값은 부정확한 결과로 해석될 수 있다. 따라서 포화 로직 회로(306)는 이러한 부정 포화 상태를 검출하여 조정하도록 구성된다.
특정 실시예에서, 선택 회로(308)는 제어 입력(348)에서 제어 값(C1)을 수신하고 제어 값(C1)으로 표시된 양만큼 회전된 제 1 좌표 데이터(320) 및 제 2 좌표 데이터(322)에 대응하는 값들을 제 1 좌표 출력(Xout)(350) 및 제 2 좌표 출력(Yout)(352)에서 선택적으로 출력하도록 구성된다. 따라서 선택 회로(308)는 제 1 교환 좌표 입력(340)에서 제 1 교환된 출력(326)을 그리고 제 1 부정 입력(344)에서 제 1 교환된 출력(326)의 부정 값을 수신할 수 있다. 선택 회로(308)는 제 1 교환 좌표 입력(340)과 제 1 부정 입력(344) 중 하나에서 수신된 값을 제 1 좌표 출력(Xout)(350)에 선택적으로 제공할 수 있다. 또한, 선택 회로(308)는 제 2 교환 좌표 입력(342) 및 제 2 부정 입력(346)을 수신할 수 있고, 제 2 교환 좌표 입력(342)과 제 2 부정 입력(346) 중 하나에서 수신된 값을 제 2 좌표 출력(Yout)(352)에 선택적으로 출력할 수 있다.
제 1 좌표 출력(Xout)(350) 및 제 2 좌표 출력(Yout)(352)은 입력 벡터가 제어 값(C1)으로 표현된 90도의 배수만큼 회전된 후, 제 1 좌표 데이터(320) 및 제 2 좌표 데이터(322)로 표시된 입력 벡터의 회전 결과를 나타내는 것으로 인식될 것이다. 선택 회로(308)로부터의 출력은 테이블 룩업을 수행하지 않고, 그리고 또한 곱셈 연산을 수행하지 않고 생성된다. 대신, 교환, 부정 및 선택 회로를 이용하여 90도 배수의 회전을 발생시키도록 2차원 벡터 회전들에 고유한 대칭성이 활용된다. 이와 같이 시스템(300)은 도 1에 나타낸 모뎀(140), 도 2에 나타낸 프로세서(202)의 실행 유닛들(270, 272) 중 하나 이상, 다른 모뎀들이나 프로세서들, 또는 이들의 임의의 조합에서 사용될 수 있는 것과 같은 고속 벡터 회전의 하드웨어 구현을 제공한다. 예를 들어, 시스템(300)은 그래픽 처리 유닛에 포함될 수 있다. 다른 예로, 시스템(300)은 모뎀 애플리케이션들 및 그래픽 애플리케이션들을 처리하기에 적합한 파이프라인형 프로세서의 실행 유닛에 포함될 수 있다.
일례로, 시스템(300)은 멀티스레드 프로세서의 실행 유닛에 구현될 수도 있다. 또한, 시스템(300)은 파이프라인 프로세서의 파이프라인 실행 프로세스의 일부로서 구현될 수도 있다. 예를 들어, 교환 회로(302)는 프로세서의 멀티플렉서들, 크로스바 디바이스들, 다른 스위칭 디바이스들이나 회로들, 또는 이들의 임의의 조합 중 하나 이상을 포함할 수 있다. 부정 회로(304)는 산술 논리 연산 장치(ALU: arithmetic logic unit), 덧셈기, 입력 값들을 부정하기에 적합한 프로세서의 다른 회로들이나 디바이스들, 또는 이들의 임의의 조합을 포함할 수 있다. 선택 회로(308)는 프로세서의 멀티플렉서들, 스위치들, 또는 하나 이상의 입력에서 수신되는 값을 선택적으로 출력하기에 적합한 다른 회로들이나 디바이스들, 또는 이들의 임의의 조합을 포함할 수 있다.
도 4를 참조하면, 고속 벡터 회전 연산들을 발생시키기 위한 시스템이 도시되며 일반적으로 400으로 지시된다. 시스템(400)은 크로스바(408)에 연결되는 레지스터 파일(402)을 포함한다. 크로스바(408)는 벡터 덧셈기(410)와 멀티플렉서(412)에 모두 출력들을 제공하도록 연결된다. 벡터 덧셈기(410)는 멀티플렉서(412)에 출력들을 제공한다. 멀티플렉서(412)는 출력 레지스터(414)에 출력 값들을 제공하도록 연결된다.
특정 실시예에서, 레지스터 파일(402)은 제 1 레지스터(404) 및 제 2 레지스터(406)를 포함한다. 제 1 레지스터(404)는 제 1 좌표(x1)(422) 및 제 2 좌표(y1)(424)에 대응하는 제 1 데이터를 포함할 수 있다. 제 1 레지스터 파일(404)은 또한 제 3 좌표(x2)(426) 및 제 4 좌표(y2)(428)에 대응하는 제 2 데이터를 포함할 수 있다. 제 2 레지스터(406)는 제 1 제어 값(C1)(430) 및 제 2 제어 값(C2)(432)을 저장할 수 있다. 특정 실시예에서, 제 1 레지스터(404)의 좌표 데이터(422-428)뿐만 아니라 제 2 레지스터(406)의 제어 값들(430, 432) 또한 무선 송신과 관련된 심벌 데이터 또는 모뎀, 프로세서, 또는 이들의 임의의 조합에서 수신되는 데이터에 대응한다.
크로스바(408)는 제 1 입력(434)에 수신된 데이터를 멀티플렉서(412)의 제 1 입력(446)과 제 2 입력(448) 중 하나에 선택적으로 제공하도록 구성된다. 크로스바(408)는 또한 제 2 입력(436)에 수신된 데이터를 멀티플렉서(412)의 제 1 입력(446)과 제 2 입력(448) 중 다른 하나에 선택적으로 제공하도록 구성된다. 마찬가지로, 크로스바(408)는 제 3 입력(438)에 수신된 데이터를 멀티플렉서(412)의 제 3 입력(450)과 제 4 입력(452) 중 하나에 선택적으로 제공하도록 구성된다. 크로스바(408)는 또한 제 4 입력(440)에 수신된 데이터를 멀티플렉서(412)의 제 3 입력(450)과 제 4 입력(452) 중 다른 하나에 선택적으로 제공하도록 구성된다. 특정 실시예에서, 크로스바(408)는 제 1 좌표 데이터(x1)(422) 및 제 2 좌표 데이터(y1)(424)에 대응하는 제 1 입력(434) 및 제 2 입력(436)에 수신되는 데이터 값들을 교환할지 여부를 선택적으로 결정한다. 크로스바(408)는 제 1 제어 입력(442)에서 수신되는 제 1 제어 값(C1)(430)을 기초로 x1와 y1을 선택적으로 교환한다. 크로스바(408)는 또한 제 2 제어 입력(444)에서 수신되는 제 2 제어 값(C2)(432)의 값을 기초로 제 3 입력(438) 및 제 4 입력(440)에 수신되는 데이터 값들을 선택적으로 교환하도록 구성된다. 특정 실시예에서, 크로스바(408)는 도 3에 나타낸 교환 회로(302)와 실질적으로 비슷한 방식으로 동작한다.
특정 실시예에서, 벡터 덧셈기(410)는 멀티플렉서(412)의 제 1 입력(446) 및 제 2 입력(448)에 제공되는 데이터에 대응하는, 제 1 입력(454) 및 제 2 입력(456)에서의 데이터를 수신한다. 또한, 벡터 덧셈기(410)는 멀티플렉서(412)의 제 3 입력(450) 및 제 4 입력(452)에서 각각 수신되는 데이터에 대응하는, 제 3 입력(458) 및 제 4 입력(460)에서의 데이터를 수신한다. 벡터 덧셈기(410)는 입력들(454, 456, 458, 460) 각각에 수신되는 데이터를 부정하도록 구성된다. 부정된 데이터는 제 1 부정 입력(462), 제 2 부정 입력(464), 제 3 부정 입력(466) 및 제 4 부정 입력(468)을 통해 멀티플렉서(412)에 제공된다.
멀티플렉서(412)는 크로스바(408)에 의해 제 1 입력(446) 및 제 2 입력(448) 각각에 제공되는 데이터(x1s, y1s)를 수신하고, 제 3 입력(450) 및 제 4 입력(452)에서 각각 데이터(x2s, y2s)를 수신하도록 연결된다. 멀티플렉서(412)는 또한 벡터 덧셈기(410)로부터 제 1 부정 입력(462) 및 제 2 부정 입력(464)에 각각 부정 데이터(-x1s, -y1s)를 수신하고, 제 3 부정 입력(466) 및 제 4 부정 입력(468)에 각각 부정 데이터(-x2s, -y2s)를 수신하도록 연결된다. 멀티플렉서(412)는 제 1 제어 입력(470)에서 제 1 제어 값(C1)(430)을 수신하고 제 2 제어 입력(472)에서 제 2 제어 값(C2)(432)을 수신한다.
멀티플렉서(412)는 제 1 제어 입력(470)을 기초로 제 1 입력(446) 또는 제 1 부정 입력(462)으로부터의 제 1 출력(474) 및 제 2 입력(448) 또는 제 2 부정 입력(464)으로부터의 제 2 출력(476)을 선택적으로 제공하도록 구성된다. 제 1 출력(474) 및 제 2 출력(476)은 출력 레지스터(414)에 각각 제 1 및 제 2 회전된 좌표(X1out(490), Y1out(492))를 제공하도록 연결된다. 예를 들어, 제어 값(C1)(430)이 부정 값들을 필요로 하지 않는 0도 회전을 지시하는 경우, 멀티플렉서(412)는 제 1 출력(474) 및 제 2 출력(476)에 각각 제공할 비-부정 입력(446, 448)을 선택한다. 제어 값(C1)(430)이 두 좌표 모두의 부정을 필요로 하는 180도 회전을 지시하는 경우, 멀티플렉서(412)는 벡터 덧셈기(410)로부터의 부정 입력(462, 464)을 선택한다. 제어 값이 90도 회전 또는 270도 회전을 지시하는 경우, 멀티플렉서는 하나의 비-부정 입력(446 또는 448)과 하나의 부정 입력(462 또는 464)을 선택할 수 있다.
멀티플렉서(412)는 또한 제 2 제어 입력(472)을 기초로 제 3 좌표 입력(450) 및 제 3 부정 입력(466) 중 하나를 제 3 출력(478)에 선택적으로 제공하도록 구성된다. 멀티플렉서(412)는 또한 제 2 제어 입력(472)을 기초로 제 4 출력(480)에 대해 제 4 좌표 입력(452) 또는 제 4 부정 입력(468)을 선택하도록 구성된다. 제 3 및 제 4 출력(478, 480)은 각각 제 2 벡터 회전된 출력 데이터(X2out(494), Y2out(496))를 제공하도록 출력 레지스터(414)에 연결된다.
특정 실시예에서, 시스템(400)은 벡터 덧셈기(410)에 연결되는 포화 로직 회로(411)를 더 포함한다. 포화 로직 회로(411)는 2의 보수(complement) 2진 표현으로 "0" 값의 부정에 의해 발생할 수 있는 것과 같이, 벡터 덧셈기(410)의 출력에서 포화 상태를 검출하고, 벡터 덧셈기(410)에서 출력하기 위한 조정된 값을 제공하도록 구성될 수 있다. 특정 실시예에서, 포화 로직 회로(411)는 하나 이상의 배타적-OR 게이트를 포함할 수 있으며, 교환될 하나 이상의 배선에 의한(hardwired) 값들을 벡터 덧셈기(410)에 제공할 수 있다.
특정 실시예에서, 시스템(400)은 인터리빙된 멀티스레드 프로세서의 실행 유닛에서와 같이 프로세서 파이프라인의 일부에 구현될 수 있다. 예를 들어, 크로스바(408)는 프로세서의 실행 유닛에서 데이터를 정렬하기 위한 라우팅 유닛의 일부일 수 있으며, 벡터 덧셈기(410)와 멀티플렉서(412) 또한 실행 유닛 내의 엘리먼트들일 수 있다. 다른 특정 실시예에서, 시스템(400)은 도 1의 모뎀(140)과 같은 무선 디바이스의 모뎀으로 구현될 수 있다. 특정 구현에서, 시스템(400)은 파이프라인형 인터리빙된 멀티스레드 프로세서의 하나 이상의 실행 유닛에서 모뎀 동작들을 수행하도록 구현될 수 있다. 더욱이, 예시적인 실시예에서 크로스바(408)는 교환 회로(302)의 특정 구현에 대응할 수 있고, 벡터 덧셈기(410)는 부정 회로(304)의 특정 구현에 대응할 수 있으며, 멀티플렉서(412)는 도 3에 나타낸 것과 같이 선택 회로(308)의 특정 구현으로서의 기능을 할 수 있고, 또한 제 1 데이터(422, 424)에 대응하는 좌표들을 갖는 제 1 벡터 및 제 2 데이터(426, 428)에 대응하는 좌표들을 갖는 제 2 벡터로 나타낸 것과 같이, 다수의 벡터의 동시 회전들을 수행하기에 적합할 수 있다.
도 5를 참조하면, 좌표 회전들을 수행하기 위한 제 2 예시적인 실시예가 도시되며 일반적으로 500으로 지시된다. 시스템(500)은 제어 값(C1)(524)에 응답하여 제 1 좌표 데이터(X1)(520) 및 제 2 좌표 데이터(Y1)(522)를 선택적으로 교환하기 위한 수단을 포함하며, 이는 교환 회로(502)로서 예시된다. 시스템(500)은 또한 제 1 부정 좌표 데이터를 생성하도록 제 1 좌표 데이터(520)를 부정하고 제 2 부정 좌표 데이터를 생성하도록 제 2 좌표 데이터(522)를 부정하기 위한 수단을 포함하며, 이는 도 5에서 벡터 곱셈기(504)로서 예시된다. 시스템(500)은 또한 제어 값(C1)(548)에 응답하여 제 1 좌표 데이터 또는 제 1 부정 좌표 데이터를 선택적으로 출력하고 제 2 좌표 데이터 또는 제 2 부정 좌표 데이터를 선택적으로 출력하기 위한 수단을 포함하며, 이는 선택 회로(508)로서 도시된다. 시스템(500)은 일반적으로 부정 회로(304) 대신 벡터 곱셈기(504)를 사용하는 도 3의 시스템(300)에 대응하며 이에 따라 동작한다.
특정 실시예에서, 시스템(500)은 제 1 좌표 데이터(520) 및 제 2 좌표 데이터(522)를 수신하고, 제 1 좌표 데이터(520) 및 제 2 좌표 데이터(522)로 표현되는 벡터의 회전을 수행하도록 구성된다. 예를 들어, 제 1 좌표 데이터(520)는 벡터의 X 좌표를 나타낼 수 있고, 제 2 좌표 데이터(522)는 벡터의 Y 좌표를 나타낼 수 있다. 제어 값(C1)(524)은 벡터에 적용될 회전도를 나타낼 수 있다.
특정 실시예에서, 교환 회로(502)는 제 1 좌표 데이터(520) 및 제 2 좌표 데이터(522)와 제어 값(524)을 수신하고, 제 1 교환된 출력(526) 및 제 2 교환된 출력(528)을 출력하도록 구성된다. 제 1 및 제 2 교환된 좌표 데이터 출력(526, 528)은 각각 선택 회로(508)에 입력(540, 542)으로서 제공된다. 제 1 및 제 2 교환된 좌표 데이터 출력(526, 528)은 또한 각각 벡터 곱셈기(504)에 입력(530, 532)으로서 제공된다.
특정 실시예에서, 벡터 곱셈기(504)는 제 1 입력(530)에서 제 1 교환된 데이터(526)를 수신하고 선택 회로(508)의 제 1 부정 입력(544)에 제 1 교환된 데이터(526)의 부정 값을 제공하도록 구성된다. 벡터 곱셈기(504)는 제 2 입력(532)에서 제 2 교환된 데이터(528)를 수신하고 선택 회로(508)의 제 2 부정 입력(546)에 제 2 교환된 데이터(528)의 부정 값을 제공하도록 구성된다. 특정 실시예에서, 벡터 곱셈기(504)는 제 1 입력(530), 제 2 입력(532) 또는 둘 다에서 수신되는 데이터를 선택적으로 -1과 곱하기 위한 제어 로직을 포함한다.
특정 실시예에서, 선택 회로(508)는 제어 입력(548)에서 제어 값(C1)을 수신하고 제어 값(C1)으로 표시된 양만큼 회전된 제 1 좌표 데이터(520) 및 제 2 좌표 데이터(522)에 대응하는 값들을 제 1 좌표 출력(Xout)(550) 및 제 2 좌표 출력(Yout)(552)에 선택적으로 출력하도록 구성된다. 따라서 선택 회로(508)는 제 1 교환된 좌표 입력(540)에서 제 1 교환된 출력(526)을 그리고 제 1 부정 입력(544)에서 제 1 교환된 출력(526)의 부정 값을 수신할 수 있다. 선택 회로(508)는 제 1 교환된 좌표 입력(540) 및 제 1 부정 입력(544) 중 하나에 수신된 값을 제 1 좌표 출력(Xout)(550)에 선택적으로 제공할 수 있다. 또한, 선택 회로(508)는 제 2 교환된 좌표 입력(542) 및 제 2 부정 입력(546)을 수신할 수 있고, 제 2 교환된 좌표 입력(542) 및 제 2 부정 입력(546) 중 하나에 수신된 값을 제 2 좌표 출력(Yout)(552)에 선택적으로 출력할 수 있다.
도 6을 참조하면, 벡터 좌표 회전 시스템의 제 1 예시적인 실시예의 흐름도가 도시되며 일반적으로 600으로 표시된다. 교환 회로(602)는 입력 벡터(x1, y1)(601)를 수신하고 부정 회로(604)에 출력을 제공하도록 연결된다. 교환 회로(602)는 출력 벡터 (x1, y1) 또는 (y1, x1)을 생성하도록 제어 값(C1)(624)에 응답하여 입력 벡터(601)의 좌표들을 선택적으로 교환할 수 있다.
부정 회로(604)는 제어 값(C1)(624)에 응답하여 교환 회로(602)로부터 수신되는 데이터를 선택적으로 부정하고 출력 벡터(xout, yout)(610)를 생성한다. 예를 들어, 부정 회로(604)는 제 1 벡터 좌표 및 제 2 벡터 좌표를 수신할 수 있고, 제어 값(C1)(624)을 기초로 제 1 좌표만, 제 2 좌표만, 또는 두 좌표 모두를 선택적으로 부정할 수도 있고, 또는 어느 좌표도 부정하지 않을 수도 있다. 출력 벡터(610)는 제어 값(C1)(624)으로 지시된 90도의 배수만큼 좌표 원점을 중심으로 회전된 후의 입력 벡터(601)에 대응한다. 부정 회로(604)는 제어 값(C1)(624)에 응답하여 수신 데이터를 선택적으로 부정하기 때문에, 시스템(600)은 도 3의 선택 회로(308)와 같은 출력 선택 회로 없이 벡터 좌표 회전 연산들을 수행하도록 동작한다.
특정 실시예에서, 시스템(600)은 회전량이 90도 또는 270도일 때 제 1 좌표와 제 2 좌표를 선택적으로 교환하고, 이어서 회전량이 90도일 때 제 1 좌표를 선택적으로 부정하고, 회전량이 270도일 때 제 2 좌표를 선택적으로 부정하고, 회전량이 180도일 때 두 좌표를 모두 선택적으로 부정하는 것을 포함하는 고속 벡터 회전 알고리즘을 구현하도록 프로그램된 프로세서를 나타낸다. 교환 회로(602)는 크로스바 디바이스, 멀티플렉서 디바이스, 2개 이상의 입력 값을 선택적으로 교환하도록 구성된 다른 디바이스, 프로세서 실행 유닛, 펌웨어, 하드웨어, 또는 이들의 임의의 조합에서 실행되는 교환 연산을 이용하여 구현될 수 있다. 부정 회로(604)는 벡터 덧셈기, 벡터 곱셈기, 2개 이상의 입력 값을 선택적으로 부정하도록 구성되는 다른 디바이스, 프로세서 실행 유닛, 펌웨어, 하드웨어, 또는 이들의 임의의 조합에서 실행되는 부정 연산을 이용하여 구현될 수 있다.
도 7을 참조하면, 벡터 좌표 회전 시스템의 제 2 예시적인 실시예의 흐름도가 도시되며 일반적으로 700으로 표시된다. 부정 회로(704)는 입력 벡터(x1, y1)(701)를 수신하고 교환 회로(702)에 출력을 제공하도록 연결된다. 부정 회로(704)는 출력 벡터 (x1, y1), (x1, -y1), (-x1, y1) 또는 (-x1, -y1)을 생성하도록 제어 값(C1)(724)에 응답하여 입력 벡터(701)의 좌표들을 선택적으로 부정할 수 있다.
교환 회로(702)는 제어 값(C1)(724)에 응답하여 부정 회로(704)로부터 수신되는 데이터를 선택적으로 교환하고 출력 벡터(xout, yout)(710)를 생성한다. 출력 벡터(710)는 제어 값(C1)(724)으로 지시된 것과 같은 90도의 배수만큼 좌표 원점을 중심으로 회전된 후의 입력 벡터(701)에 대응한다.
특정 실시예에서, 시스템(700)은 제 1 좌표 및 제 2 좌표를 수신하고, 회전량이 90도일 때 제 2 좌표를 선택적으로 부정하고, 회전량이 180도일 때 제 1 좌표 및 제 2 좌표를 선택적으로 부정하고, 회전량이 270도일 때 제 1 좌표를 선택적으로 부정한 다음, 회전량이 90도 270도일 때 두 좌표를 모두 선택적으로 교환하는 것을 포함하는 고속 벡터 회전 알고리즘을 구현하도록 프로그램된 프로세서를 나타낸다. 교환 회로(702)는 크로스바 디바이스, 멀티플렉서 디바이스, 2개 이상의 입력 값을 선택적으로 교환하도록 구성된 다른 디바이스, 프로세서 실행 유닛, 펌웨어, 하드웨어, 또는 이들의 임의의 조합에서 실행되는 교환 연산을 이용하여 구현될 수 있다. 부정 회로(704)는 벡터 덧셈기, 벡터 곱셈기, 2개 이상의 입력 값을 선택적으로 부정하도록 구성되는 다른 디바이스, 프로세서 실행 유닛, 펌웨어, 하드웨어, 또는 이들의 임의의 조합에서 실행되는 부정 연산을 이용하여 구현될 수 있다.
도 8을 참조하면, 고속 회전 연산을 수행하기 위한 방법의 제 1 예시적인 실시예가 도시되며 일반적으로 800으로 표시된다. 방법(800)은 프로세서에서의 단일 명령 실행을 포함한다. 특정 실시예에서, 이 방법은 도 1 - 도 7에 나타낸 시스템들 중 하나 이상에서 수행될 수 있다.
단일 명령의 실행은 802에서 제 1 좌표 및 제 2 좌표를 나타내는 제 1 데이터를 수신하는 것을 포함한다. 특정 실시예에서, 제 1 좌표 및 제 2 좌표는 벡터의 X 성분과 Y 성분을 식별한다. 804로 이동하면, 한 세트의 90도 배수들로부터 선택된 제 1 회전 값을 나타내는 제 1 제어 값이 수신된다. 특정 실시예에서, 한 세트의 90도 배수들은 0도, 90도, 180도 및 270도를 포함한다.
806에서 계속하면, 특정 실시예에서 단일 명령의 실행은 제 1 회전 값이 90도 또는 270도에 대응할 때 제 1 좌표와 제 2 좌표를 교환하는 것을 포함한다. 808로 진행하면, 제 1 회전 값이 90도, 180도 또는 270도에 대응할 때 제 1 좌표와 제 2 좌표 중 적어도 하나가 부정된다.
810으로 진행하면, 특정 실시예에서 제 1 좌표 또는 제 2 좌표를 부정할 때 오버플로우 상태를 막도록 포화 로직이 적용된다. 812로 이동하면, 출력 데이터가 데이터 저장 엘리먼트에 기록된다. 예를 들어, 데이터 저장 엘리먼트는 하나 이상의 래치(latch), 플립-플랍(flip-flop) 디바이스, 레지스터, 캐시, 메모리, 또는 데이터를 저장하기 위한 임의의 다른 디바이스나 시스템을 포함할 수 있다. 출력 데이터는 제 1 회전 값에 의해 회전된 제 1 데이터에 대응한다. 예를 들어, 제 1 데이터는 좌표 원점에서부터 제 1 및 제 2 좌표의 엔드포인트로 연장하는 벡터를 식별할 수 있고, 출력 데이터는 제 1 회전 값으로 나타낸 양만큼 좌표 원점을 중심으로 회전한 후 벡터의 엔드포인트를 식별할 수 있다. 특정 실시예에서, 곱셈 연산 또는 테이블 룩업을 수행하지 않고 출력 데이터가 결정되어, 곱셈 연산 또는 테이블 룩업을 이용하는 것보다 더 낮은 전력 및 더 높은 속도의 연산을 가능하게 할 수 있다.
단일 회전 명령은 프로세서의 단일 실행 사이클에서 실행될 수 있다. 예를 들어, 단일 회전 명령은 단일 실행 사이클에서 벡터 회전 연산들을 수행하도록 도 4의 시스템(400)을 구현하는 실행 유닛을 포함하는 프로세서에서 실행될 수 있다.
특정 실시예에서, 제 1 제어 값은 수신된 무선 신호의 심벌 값에 대응할 수 있다. 예를 들어, 무선 신호의 각각의 심벌 값은 누적된 위상으로부터의 각(angular) 오프셋을 나타낼 수 있고, 제 1 제어 값은 누적된 위상을 기초로 벡터를 조정하여 심벌과 관련된 각 오프셋을 결정하는데 필요한 회전도를 나타낼 수 있다. 특정 실시예에서, 무선 수신기의 직교 디코딩 사이클과 관련하여 단일 회전 명령의 실행이 수행될 수 있다. 예를 들어, 수신된 무선 데이터는 동상 성분(I) 및 동상 성분과 위상 차가 90도인 직교 성분(Q)을 갖고, 직교 성분은 동상 성분과 디코딩을 위해 90도의 배수만큼 회전될 수 있다.
특정 실시예에서, 단일 명령은 마이크로명령이다. 예를 들어, 수신된 명령을 하나 이상의 실행 가능 마이크로명령으로 변환하기에 적합한 마이크로코드 프로세서에서, 단일 명령은 마이크로명령, 즉 직접 실행 가능하며 다수의 다른 실행 가능 명령으로 변환되지 않는 명령일 수 있다. 다른 실시예에서, 단일 명령은 비-마이크로코드 프로세서에서, 즉 수신된 명령들을 먼저 다수의 실행 가능 마이크로명령으로 변환하지 않고 명령들을 실행하는 프로세서에서 실행될 수 있다. 실시예에서, 단일 명령은 마이크로코드를 지원하지 않는 파이프라인에서 실행될 수 있는데, 여기서 파이프라인은 마이크로명령들에 대응하는 서브-연산들의 시퀀스를 수행하지 않고 단일 파이프라인 연산으로서 벡터 회전 출력을 결정한다.
도 9를 참조하면, 고속 회전 연산을 수행하기 위한 방법의 제 2 예시적인 실시예가 도시되며 일반적으로 900으로 표시된다. 방법(900)은 도 1 - 도 7에 나타낸 시스템들 중 하나 이상에서 또는 도 8에 나타낸 방법(800)에 따라, 또는 이들의 임의의 조합으로 수행될 수 있다.
방법(900)은 902에서 제 1 좌표 및 제 2 좌표를 나타내는 제 1 데이터를 수신하는 것을 포함하는 단일 명령의 실행을 포함한다. 904로 이동하면, 한 세트의 90도 배수들로부터 선택된 제 1 회전 값을 나타내는 제 1 제어 값이 수신된다. 특정 실시예에서, 한 세트의 90도 배수들은 0도, 90도, 180도 및 270도를 포함한다.
특정 실시예에서, 단일 명령의 실행은 또한 906에서 제 3 좌표 및 제 4 좌표를 나타내는 제 2 데이터를 수신하는 것을 포함한다. 908에서, 한 세트의 90도 배수로부터 선택되는 제 2 회전 값을 나타내는 제 2 제어 값이 수신될 수 있다. 제 1 회전 값만큼 회전된 제 1 데이터에 대응하는 출력 데이터가 제 2 회전 값만큼 회전된 제 2 데이터에 대응하는 제 2 출력 데이터의 결정과 동시에 결정될 수 있다. 912에서, 출력 데이터 및 제 2 출력 데이터가 데이터 저장 엘리먼트에 기록될 수 있다.
특정 실시예에서, 출력 데이터 및 제 2 출력 데이터는 출력 데이터 또는 제 2 출력 데이터가 레지스터 파일에 기록되기 전에 프로세서의 단일 실행 유닛에서 결정될 수 있다. 예를 들어, 제 2 출력 데이터는 도 2의 시스템(200)에 관해 설명한 것과 같이, 출력 데이터의 결정과 동시에 결정될 수 있다. 예시적인 실시예에서, 프로세서의 실행 유닛은 도 4의 시스템(400)을 포함하고, 크로스바(408), 벡터 덧셈기(410) 및 멀티플렉서(412)는 제 1 입력 데이터와 제 2 입력 데이터에 대해 병렬로 동작할 수 있으며, 출력 데이터 및 제 2 출력 데이터는 출력 레지스터(414)에 실질적으로 동시에 기록될 수 있다.
당업자들은 또한 본원에 개시된 실시예들과 관련하여 설명한 다양한 예시적인 논리 블록, 구성, 모듈, 회로 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이 둘의 조합으로 구현될 수 있는 것으로 인식한다. 이러한 하드웨어와 소프트웨어의 호환성을 명확히 설명하기 위해, 각종 예시적인 컴포넌트, 블록, 구성, 모듈, 회로 및 단계들은 일반적으로 그 기능과 관련하여 상술하였다. 이러한 기능이 하드웨어로 구현되는지 소프트웨어로 구현되는지는 전체 시스템에 부과된 특정 애플리케이션 및 설계 제약에 좌우된다. 당업자들은 설명한 기능을 특정 애플리케이션마다 다른 방식으로 구현할 수도 있지만, 이러한 구현 결정은 본 개시의 범위를 벗어나는 것으로 해석되지 않아야 한다.
본원에 개시된 실시예들과 관련하여 설명한 방법 또는 알고리즘의 단계들은 하드웨어에 직접, 프로세서에 의해 실행되는 소프트웨어 모듈에, 또는 이 둘의 조합으로 구현될 수 있다. 소프트웨어 모듈은 랜덤 액세스 메모리(RAM: random access memory), 플래시 메모리, 판독 전용 메모리(ROM: read-only memory), 프로그램 가능 판독 전용 메모리(PROM: programmable read-only memory), 소거 가능한 프로그램 가능 판독 전용 메모리(EPROM: erasable programmable read-only memory), 전기적으로 소거 가능한 프로그램 가능 판독 전용 메모리(EEPROM: electrically erasable programmable read-only memory), 레지스터, 하드디스크, 착탈식 디스크, 콤팩트 디스크 판독 전용 메모리(CD-ROM: compact disc read-only memory), 또는 공지된 임의의 다른 형태의 저장 매체에 상주할 수 있다. 예시적인 저장 매체는 프로세서가 저장 매체로부터 정보를 읽고 저장 매체에 정보를 기록할 수 있도록 프로세서에 연결된다. 대안으로, 저장 매체는 프로세서에 통합될 수도 있다. 프로세서 및 저장 매체는 주문형 집적 회로(ASIC: application specific integrated circuit)에 상주할 수 있다. ASIC는 연산 디바이스 또는 사용자 단말에 상주할 수 있다. 대안으로, 프로세서 및 저장 매체는 연산 디바이스나 사용자 단말에 개별 컴포넌트로서 상주할 수도 있다.
개시된 실시예들의 상기 설명은 어떠한 당업자라도 개시된 실시예들을 제작 또는 사용할 수 있도록 제공된다. 이들 실시예에 대한 다양한 변형이 당업자들에게 쉽게 명백할 것이며, 본원에 정의된 일반 원리들은 개시의 범위를 벗어나지 않으면서 다른 실시예들에 적용될 수 있다. 따라서 본 개시는 본원에 나타낸 실시예들로 한정되는 것이 아니라 다음 청구범위에 의해 정의된 바와 같은 원리들 및 신규한 특징들에 부합하는 가능한 가장 넓은 범위에 따르는 것이다.

Claims (38)

  1. 프로세서에서 단일 명령을 실행하는 단계를 포함하며, 상기 단일 명령을 실행하는 단계는,
    제 1 데이터 및 제 2 데이터를 수신하는 단계 ― 상기 제 1 데이터는 제 1 좌표 및 제 2 좌표를 포함하고, 상기 제 2 데이터는 제 3 좌표 및 제 4 좌표를 포함함 ―;
    제 1 제어 값 및 제 2 제어 값을 수신하는 단계 ― 상기 제 1 제어 값은 90도 배수들의 세트로부터 선택된 제 1 회전 값을 표시하고, 상기 제 2 제어 값은 90도의 배수들의 세트로부터 선택된 제 2 회전 값을 표시함 ―; 및
    상기 프로세서의 단일 실행 유닛에서 단일 실행 사이클 동안 제 1 출력 데이터 및 제 2 출력 데이터를 결정하는 단계 ―상기 단일 실행 유닛은 가산(add) 동작을 수행하도록 구성가능한 벡터 가산 회로를 포함하고, 상기 제 1 출력 데이터 및 상기 제 2 출력 데이터를 결정하는 단계는 부정(negate) 연산을 수행하는 상기 벡터 가산 회로를 포함하고, 상기 제 1 출력 데이터는 상기 제 1 제어 값에 의해 회전된 상기 제 1 데이터에 대응하고, 상기 제 2 출력 데이터는 상기 제 2 제어 값에 의해 회전된 상기 제 2 데이터에 대응함 ― 를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 제 1 출력 데이터 및 상기 제 2 출력 데이터를 결정하는 단계는 곱셈 연산없이 그리고 테이블 룩업(table lookup) 없이 수행되는, 방법.
  3. 삭제
  4. 제 1 항에 있어서,
    상기 한 세트의 90도 배수들은 0도, 90도, 180도 및 270도를 포함하고, 상기 단일 명령을 실행하는 단계는,
    상기 제 1 제어 값이 90도 또는 270도에 대응할 때 상기 제 1 좌표와 상기 제 2 좌표를 교환하는 단계; 및
    상기 제 1 제어 값이 90도, 180도 또는 270도에 대응할 때 상기 제 1 좌표와 상기 제 2 좌표 중 적어도 하나를 부정(negate)하는 단계를 더 포함하는, 방법.
  5. 삭제
  6. 삭제
  7. 제 4 항에 있어서,
    상기 단일 명령을 실행하는 단계는 상기 제 1 좌표와 상기 제 2 좌표 중 적어도 하나를 부정할 때 오버플로우(overflow) 상태를 막도록 포화(saturation) 로직을 적용하는 단계를 더 포함하는, 방법.
  8. 제 1 항에 있어서,
    상기 제 1 제어 값은 수신된 무선 신호의 심벌 값에 대응하는, 방법.
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 제 1 항에 있어서,
    상기 단일 명령은 마이크로코드를 지원하지 않는 파이프라인에서 실행되는, 방법.
  14. 프로세서-실행가능한 명령들을 저장하기 위한 컴퓨터-판독가능 매체로서, 상기 프로세서-실행가능한 명령들은,
    제 1 데이터 및 제 2 데이터를 수신하고 ― 상기 제 1 데이터는 제 1 좌표 및 제 2 좌표를 포함하고, 상기 제 2 데이터는 제 3 좌표 및 제 4 좌표를 포함함 ―;
    제 1 제어 값 및 제 2 제어 값을 수신하고 ― 상기 제 1 제어 값은 상기 제 1 데이터를 회전할 제 1 회전량(amount to rotate)을 표시하고, 상기 제 2 제어 값은 상기 제 2 데이터를 회전할 제 2 회전량을 표시함 ―; 그리고
    프로세서의 단일 실행 유닛에서 단일 실행 사이클 동안 제 1 출력 데이터 및 제 2 출력 데이터를 결정하는 ― 상기 제 1 출력 데이터 및 상기 제 2 출력 데이터는 상기 단일 실행 유닛의 벡터 가산 회로에 의해 생성되는 하나 이상의 부정된 입력 값들 및 하나 이상의 입력값들의 선택을 제어하기 위해 상기 단일 실행 유닛의 멀티플렉서의 제어 입력들에서 상기 제 1 제어 값 및 상기 제 2 제어 값의 수신을 통해 결정되고,
    하나 이상의 입력 값들 및 상기 하나 이상의 부정된 입력 값들은 상기 제 1 출력 데이터 및 상기 제 2 출력 데이터를 결정하기 위해 사용되며,
    상기 제 1 출력 데이터는 상기 제 1 제어 값에 의해 회전되는 상기 제 1 데이터에 대응하고, 상기 제 2 출력 데이터는 상기 제 2 제어 값에 의해 회전되는 상기 제 2 데이터에 대응함 ― 컴퓨터-판독가능 매체.
  15. 삭제
  16. 삭제
  17. 삭제
  18. 프로세서로서,
    제 1 데이터 및 제 2 데이터를 수신하기 위한 수단 ― 상기 제 1 데이터는 제 1 좌표 및 제 2 좌표를 포함하고, 상기 제 2 데이터는 제 3 좌표 및 제 4 좌표를 포함함 ―;
    제 1 제어 값 및 제 2 제어 값을 수신하기 위한 수단 ― 상기 제 1 제어 값은 90도 배수들의 세트로부터 선택된 제 1 회전 값을 표시하고, 상기 제 2 제어 값은 90도의 배수들의 세트로부터 선택된 제 2 회전 값을 표시함 ―; 및
    상기 프로세서의 단일 실행 유닛에서 단일 실행 사이클 동안 제 1 출력 데이터 및 제 2 출력 데이터를 결정하기 위한 수단 ― 상기 결정하기 위한 수단은 상기 단일 실행 유닛에 집적되고, 상기 단일 실행 유닛의 멀티플렉서 내로 입력되는 값들에 대해 하나 이상의 연산들을 수행하도록 구성가능한 벡터 가산기를 포함하고, 상기 값들은 상기 제 1 출력 데이터 및 상기 제 2 출력 데이터를 결정하기 위해 사용되고, 상기 제 1 출력 데이터는 상기 제 1 제어 값에 의해 회전된 상기 제 1 데이터에 대응하고, 상기 제 2 출력 데이터는 상기 제 2 제어 값에 의해 회전된 상기 제 2 데이터에 대응함 ― 을 포함하는, 프로세서.
  19. 제 18 항에 있어서,
    상기 제 1 출력 데이터를 결정하기 위한 수단은
    상기 제 1 좌표 및 상기 제 2 좌표를 선택적으로 스위칭하도록 구성되는 크로스바(cross bar) 디바이스를 포함하는, 프로세서.
  20. 제 18 항에 있어서,
    벡터 가산기는 상기 제 1 좌표 및 제 2 좌표 중 적어도 하나를 부정(negate)하도록 구성되는, 프로세서.
  21. 제 20 항에 있어서,
    상기 벡터 가산기에서 음의 오버플로우 상태를 조정하기 위한 포화 로직 회로를 더 포함하는, 프로세서.
  22. 제 18 항에 있어서,
    메모리에 상기 제 1 출력 데이터 및 상기 제 2 출력 데이터를 출력하기 위한 수단을 더 포함하는, 프로세서.
  23. 삭제
  24. 시스템으로서,
    안테나에 연결되도록 구성된 트랜시버; 및
    상기 트랜시버로부터 무선 신호 데이터를 수신하고,
    프로세서의 단일 실행 유닛에서 단일 실행 사이클 동안 제 1 출력 데이터 및 제 2 출력 데이터를 결정하는 모뎀을 포함하고,
    상기 무선 신호 데이터는:
    제 1 데이터 및 제 2 데이터 ― 상기 제 1 데이터는 제 1 좌표 및 제 2 좌표를 포함하고, 상기 제 2 데이터는 제 3 좌표 및 제 4 좌표를 포함함 ―; 및
    제 1 제어 값 및 제 2 제어 값 ― 상기 제 1 제어 값은 90도 배수들의 세트로부터 선택된 제 1 회전 값을 표시하고, 상기 제 2 제어 값은 90도의 배수들의 세트로부터 선택된 제 2 회전 값을 표시함 ― 을 포함하고,
    상기 단일 실행 유닛은 부정 연산을 수행하도록 구성되는 벡터 가산기를 포함하고, 상기 제 1 출력 데이터는 상기 제 1 제어 값에 의해 회전된 상기 제 1 데이터에 대응하고, 상기 제 2 출력 데이터는 상기 제 2 제어 값에 의해 회전된 상기 제 2 데이터에 대응는, 시스템.
  25. 삭제
  26. 제 1 항에 있어서, 상기 단일 명령을 실행하는 단계는 데이터 저장 엘리먼트에 상기 제 1 출력 데이터 및 제 2 출력 데이터를 기록(write)하는 단계를 포함하는, 방법.
  27. 제 1 항에 있어서, 상기 제 1 데이터 및 제 2 데이터는 안테나로부터 수신되는 무선 신호와 연관되는 심벌 위상 데이터에 대응하고, 상기 제 1 좌표 및 제 2 좌표는 제 1 좌표 쌍과 대응되고, 상기 제 3 좌표 및 제 4 좌표는 제 2 좌표 쌍과 대응하는, 방법.
  28. 제 14 항에 있어서,
    상기 제 1 데이터를 회전시키기 위한 상기 제 1 회전량 및 상기 제 2 데이터를 회전시키기 위한 상기 제 2 회전량은 각각 90도의 배수의 세트로부터 선택되는, 컴퓨터-판독가능 매체.
  29. 제 14 항에 있어서, 상기 프로세서로 하여금 상기 제 1 출력 데이터 및 상기 제 2 출력 데이터를 메모리에 저장하게 하도록 실행가능한 프로세서-실행가능한 명령들을 더 포함하는, 컴퓨터-판독가능 매체.
  30. 제 14 항에 있어서, 상기 제 1 좌표, 상기 제 2 좌표, 상기 제 3 좌표 및 상기 제 4 좌표는 각각 무선 신호에 대응하는 심벌 위상 데이터와 연관되는, 컴퓨터-판독가능 매체.
  31. 제 22 항에 있어서, 상기 제 1 출력 데이터 및 상기 제 2 출력 데이터를 메모리에 출력하기 위한 수단은 멀티플렉서를 포함하는, 프로세서.
  32. 제 24 항에 있어서, 상기 실행 유닛은 상기 제 1 제어 값에 응답하여 상기 제 1 좌표 및 상기 제 2 좌표를 선택적으로 스왑(swap)하도록 구성되는 크로스바 디바이스를 포함하는, 시스템.
  33. 제 32 항에 있어서, 상기 벡터 가산기는 상기 제 1 제어 값에 응답하여 상기 크로스바 디바이스의 출력을 감산하도록 구성되는, 시스템.
  34. 제 33 항에 있어서, 상기 실행 유닛은 상기 제 1 제어 값에 응답하여 상기 벡터 가산기의 출력 또는 상기 크로스바 디바이스의 출력을 선택적으로 출력하도록 연결되는 멀티플렉서를 더 포함하는, 시스템.
  35. 제 1 항에 있어서,
    상기 제 1 출력 데이터 및 상기 제 2 출력 데이터를 결정하는 단계는 동시에 수행되는, 방법.
  36. 제 1 항에 있어서, 상기 단일 실행 유닛은 상기 제 1 좌표, 상기 제 2 좌표, 상기 제 3 좌표, 및 상기 제 4 좌표를 상기 단일 실행 사이클 동안 상기 단일 실행 유닛의 적어도 하나의 멀티플렉서로 제공하도록 구성되는 단일 크로스바를 포함하는, 방법.
  37. 제 36 항에 있어서, 상기 단일 크로스바는 단일 레지스터 파일로부터 상기 제 1 좌표, 상기 제 2 좌표, 상기 제 3 좌표 및 상기 제 4 좌표를 수신하는, 방법.
  38. 제 1 항에 있어서, 상기 프로세서는 디지털 신호 프로세서인, 방법.
KR1020117002010A 2008-06-26 2009-06-17 고속 회전 연산들을 수행하기 위한 시스템 및 방법 KR101334860B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/146,825 2008-06-26
US12/146,825 US8243100B2 (en) 2008-06-26 2008-06-26 System and method to perform fast rotation operations
PCT/US2009/047671 WO2009158254A1 (en) 2008-06-26 2009-06-17 System and method to perform fast rotation operations

Publications (2)

Publication Number Publication Date
KR20110025222A KR20110025222A (ko) 2011-03-09
KR101334860B1 true KR101334860B1 (ko) 2013-12-02

Family

ID=41058690

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117002010A KR101334860B1 (ko) 2008-06-26 2009-06-17 고속 회전 연산들을 수행하기 위한 시스템 및 방법

Country Status (7)

Country Link
US (1) US8243100B2 (ko)
EP (1) EP2310939B1 (ko)
JP (2) JP5607040B2 (ko)
KR (1) KR101334860B1 (ko)
CN (1) CN102067082B (ko)
TW (1) TW201013522A (ko)
WO (1) WO2009158254A1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9335997B2 (en) 2008-08-15 2016-05-10 Apple Inc. Processing vectors using a wrapping rotate previous instruction in the macroscalar architecture
US8539205B2 (en) 2008-08-15 2013-09-17 Apple Inc. Processing vectors using wrapping multiply and divide instructions in the macroscalar architecture
US8583904B2 (en) 2008-08-15 2013-11-12 Apple Inc. Processing vectors using wrapping negation instructions in the macroscalar architecture
US8549265B2 (en) 2008-08-15 2013-10-01 Apple Inc. Processing vectors using wrapping shift instructions in the macroscalar architecture
US9335980B2 (en) 2008-08-15 2016-05-10 Apple Inc. Processing vectors using wrapping propagate instructions in the macroscalar architecture
US8527742B2 (en) 2008-08-15 2013-09-03 Apple Inc. Processing vectors using wrapping add and subtract instructions in the macroscalar architecture
US8560815B2 (en) 2008-08-15 2013-10-15 Apple Inc. Processing vectors using wrapping boolean instructions in the macroscalar architecture
US9342304B2 (en) 2008-08-15 2016-05-17 Apple Inc. Processing vectors using wrapping increment and decrement instructions in the macroscalar architecture
US8555037B2 (en) 2008-08-15 2013-10-08 Apple Inc. Processing vectors using wrapping minima and maxima instructions in the macroscalar architecture
US20120278591A1 (en) * 2011-04-27 2012-11-01 Advanced Micro Devices, Inc. Crossbar switch module having data movement instruction processor module and methods for implementing the same
CN102555550B (zh) * 2011-12-30 2014-04-16 浙江大学 一种基于多核处理器的高速印花机图像数据旋转处理系统及方法
US9389860B2 (en) 2012-04-02 2016-07-12 Apple Inc. Prediction optimizations for Macroscalar vector partitioning loops
JP6049358B2 (ja) * 2012-08-31 2016-12-21 キヤノン株式会社 画像処理装置、画像処理方法、およびプログラム
US9817663B2 (en) 2013-03-19 2017-11-14 Apple Inc. Enhanced Macroscalar predicate operations
US9348589B2 (en) 2013-03-19 2016-05-24 Apple Inc. Enhanced predicate registers having predicates corresponding to element widths
CN105210037B (zh) * 2013-05-10 2019-05-21 英派尔科技开发有限公司 存储器访问的加快
US9691181B2 (en) * 2014-02-24 2017-06-27 Sony Interactive Entertainment Inc. Methods and systems for social sharing head mounted display (HMD) content with a second screen

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010112690A (ko) * 2000-06-12 2001-12-21 이형원 컴퓨터 프로그램 개발 자원을 네트워크 상에서 연동하는방법
EP1394673A1 (en) * 2002-08-30 2004-03-03 STMicroelectronics S.r.l. Method and circuit for incrementing, decrementing or two complementing a bit string

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5019968A (en) * 1988-03-29 1991-05-28 Yulan Wang Three-dimensional vector processor
EP0453641B1 (de) * 1990-04-20 1997-03-12 Siemens Aktiengesellschaft CORDIC-Prozessor für Vektordrehungen in Carry-Save-Architektur
US5202847A (en) * 1990-07-31 1993-04-13 Inmos Limited Digital signal processing
US5737253A (en) * 1995-08-30 1998-04-07 Pentomics, Inc. Method and apparatus for direct digital frequency synthesizer
US6034987A (en) * 1996-12-17 2000-03-07 Ericsson Inc. System for improving the quality of a received radio signal
US5973664A (en) * 1998-03-19 1999-10-26 Portrait Displays, Inc. Parameterized image orientation for computer displays
JP2001202242A (ja) * 2000-01-24 2001-07-27 Canon Inc マイクロプロセッサ
JP3466173B2 (ja) * 2000-07-24 2003-11-10 株式会社ソニー・コンピュータエンタテインメント 画像処理システム、デバイス、方法及びコンピュータプログラム
AU2001289045A1 (en) * 2000-09-08 2002-03-22 Avaz Networks Hardware function generator support in a dsp
US20060154625A1 (en) * 2003-03-31 2006-07-13 Quorum Systems, Inc. Direct conversion transmitter system and method with quadrature balancing and low lo feed through
US20060200510A1 (en) * 2005-01-31 2006-09-07 Wang Cindy C Precision cordic processor
DE102005045519A1 (de) * 2005-09-23 2007-03-29 Newlogic Technologies Ag Verfahren und Vorrichtung zur FFT Berechnung
US7818357B2 (en) * 2005-11-23 2010-10-19 Rambus Inc. Systems and methods for implementing CORDIC rotations for projectors and related operators
US7889820B2 (en) * 2006-01-05 2011-02-15 Qualcomm Incorporated Phase compensation for analog gain switching in OFDM modulated physical channel
US20070266070A1 (en) * 2006-05-12 2007-11-15 Chung Hua University Split-radix FFT/IFFT processor
US7870179B2 (en) * 2006-09-21 2011-01-11 Samsung Electronics Co., Ltd. Apparatus and method for optimal implementation of the CORDIC algorithm for wireless RFIC digital down-conversion
WO2008070250A2 (en) * 2006-09-26 2008-06-12 Sandbridge Technologies Inc. Software implementation of matrix inversion in a wireless communication system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010112690A (ko) * 2000-06-12 2001-12-21 이형원 컴퓨터 프로그램 개발 자원을 네트워크 상에서 연동하는방법
EP1394673A1 (en) * 2002-08-30 2004-03-03 STMicroelectronics S.r.l. Method and circuit for incrementing, decrementing or two complementing a bit string

Also Published As

Publication number Publication date
EP2310939B1 (en) 2017-07-19
WO2009158254A1 (en) 2009-12-30
US20090327667A1 (en) 2009-12-31
JP2011526041A (ja) 2011-09-29
JP5607040B2 (ja) 2014-10-15
KR20110025222A (ko) 2011-03-09
CN102067082A (zh) 2011-05-18
CN102067082B (zh) 2014-07-09
TW201013522A (en) 2010-04-01
EP2310939A1 (en) 2011-04-20
JP2014238847A (ja) 2014-12-18
US8243100B2 (en) 2012-08-14

Similar Documents

Publication Publication Date Title
KR101334860B1 (ko) 고속 회전 연산들을 수행하기 위한 시스템 및 방법
RU2009114818A (ru) Инструкция и логическая схема для выполнения операции скалярного произведения
TWI697228B (zh) 用於密碼雜湊運算之硬體加速器
KR20080094813A (ko) 부스 곱셈 방법들 및 시스템들을 위한 전력-효율적인 부호 확장
RU2395835C2 (ru) Способ и система вычисления указателя для масштабируемого программируемого кольцевого буфера
US9490971B2 (en) Instruction for fast ZUC algorithm processing
CN105608051B (zh) 在64位数据路径上实现128位simd操作
EP3343359A1 (en) Apparatus and method for processing sparse data
WO2014004394A1 (en) Vector multiplication with operand base system conversion and re-conversion
JP2010501938A (ja) マルチステージ浮動小数点アキュームレータ
CN112650471A (zh) 用于处理掩蔽数据的处理器和方法
US20190102198A1 (en) Systems, apparatuses, and methods for multiplication and accumulation of vector packed signed values
JP2017503232A (ja) Rsaアルゴリズム加速プロセッサ、方法、システム、及び命令
CN111459546B (zh) 一种实现操作数位宽可变的装置及方法
CN117555600A (zh) 用于数据通路的操作方法、计算装置及存储介质
EP2009555B1 (en) Method and device for transform computation
WO2013095558A1 (en) Method, apparatus and system for execution of a vector calculation instruction
US9274752B2 (en) Leading change anticipator logic
JP5798650B2 (ja) 短整数の乗算の数を減らすためのシステム、装置、および方法
EP1984810B1 (en) A booth multiplier with enhanced reduction tree circuitry
US9411724B2 (en) Method and apparatus for a partial-address select-signal generator with address shift
EP2542963B1 (en) System and method of processing hierarchical very long instruction packets
CN117390705A (zh) 数据处理方法、处理器和电子装置
Yile et al. An area efficient modular arithmetic processor
JP2013186547A (ja) 演算処理装置、携帯端末および演算処理方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20161028

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170929

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180928

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190924

Year of fee payment: 7