KR20090078790A - 무선 통신 시스템에서 매트릭스 변환 소프트웨어 구현을 위한 장치 및 방법 - Google Patents

무선 통신 시스템에서 매트릭스 변환 소프트웨어 구현을 위한 장치 및 방법 Download PDF

Info

Publication number
KR20090078790A
KR20090078790A KR1020097007268A KR20097007268A KR20090078790A KR 20090078790 A KR20090078790 A KR 20090078790A KR 1020097007268 A KR1020097007268 A KR 1020097007268A KR 20097007268 A KR20097007268 A KR 20097007268A KR 20090078790 A KR20090078790 A KR 20090078790A
Authority
KR
South Korea
Prior art keywords
register
registers
instruction
instructions
cordic
Prior art date
Application number
KR1020097007268A
Other languages
English (en)
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 KR20090078790A publication Critical patent/KR20090078790A/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/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/30101Special purpose registers
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros

Landscapes

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

Abstract

무선 통신 장치 내 디지털 시그널 프로세서가 제공된다. 이 디지털 시그널 프로세서는 벡터 유닛, 상기 벡터 유닛에 연결되며 접속가능한 제 1 레지스터 및 제 2 레지스터, 그리고 상기 벡터 유닛과 상기 제 1 및 제 2 레지스터를 사용하여, 좌표 회전 디지털 컴퓨터 명령에 의해 채널 값 행렬의 역행렬 연산을 수행하도록 구성된 명령 세트를 포함한다.

Description

무선 통신 시스템에서 매트릭스 변환 소프트웨어 구현을 위한 장치 및 방법{Software Implementation of Matrix Inversion In a Wireless Communication System}
본 발명은 무선 통신 시스템에 관한 것으로 더 상세히는 무선 통신 시스템에서 역행렬 연산(matrix invserion) 소프트웨어 구현에 관한 것이다.
미래 기술에 활용될 수 있는 통신 주파수 스펙트럼이 매우 부족해지고 있다. 대부분의 국제적인 가용 주파수 밴드(대역)가 특정한 서비스에 이미 할당되어 있으며, 남아있는 것은 정부 기관에 의해 수십억 달러에 경매에 부쳐진다.
모바일 오퍼레이터의 관점에서, 고객에게 효과적으로 서비스를 전달할 수 있느냐는 네트워크 용량 및 보급 범위 모두를 최대화하는 것에 달려 있다. 베이스 스테이션(기지국) 셀 내에 비-간섭 사용자를 더 많이 활성화하거나 기지국의 범위 내에서 사용자에게 고 대역폭을 제공함으로써 네트워크 용량이 개선될 수 있다. 따라서, 새로운 세대의 통신 시스템 디자인의 목적은 각각 해당 분야에서의 기술적 진보에 기반하여 추가 용량을 제공하는 것이다.
그럼에도, 많은 애플리케이션은 고속 데이터 무선 접속을 요한다. 전통적으로, 데이터 전송률이 커질수록 더 넓은 대역폭이 필요하다. 그러나, 스펙트럼의 제 한 때문에, 대역폭을 늘리는 것은 때로는 비현실적이고 때로는 매우 높은 비용을 요한다. 이러한 경우에, 다중 송수신 안테나를 이용하는 MIMO(Multiple-Input Multiple Output) 시스템이 대안적인 해결책을 제시한다(참조: David Gesbert, Mansoor Shan, Da shan Shiu, Peter J. Smith, Ayman Naguib의 "From Theoryto Practice: an Overview of MIMO Space-Time Coded Wireless System", IEEE Journal on Selected Areas in Communicaions, vol. 21, no. 3, pp.281-302, 2003.04.). 특히, 직교 주파수 분할 다중화(OFDM:Orthogonal Frequency Division Multiplexing)방법이 MIMO와 함께 사용될 수 있다(참조: Richard D.J. van Nee 및 Ramjee Prasad, Eds., OFDM for Wireless Multimedia Communications, Artech House Publishers. Norwood, MA 02062, U.S.A, 2000). MIMO-OFDM 시스템은 링크 신뢰성 및 무선 통신 시스템의 처리량을 현저히 향상시킬 수 있다(참조: Helmut Bolcskei, Principles of MIMO-OFDM Wireless Systems, 2004. David Perels, Simon Haene, Peter Luethi, Andreas Burg, Norbert Felber, Wolfgang Fichtner, 및 Helmut Bolcskei, "ASIC Implementation of a MIMO-OFDM Tranceiver for 192 Mbps WLANs", European Soild-State Circuits Conference (ESSCIRC 05), pp. 215-218, 2005. 09.). 이러한 이득으로 인해 추가 전송 전력이나 대역폭 비용이 추가로 필요하지 않게 된다.
그러나, MIMO-OFDM을 구현하는 데 주요 장애물 중 하나는 매우 높은 수준의 계산이 요구된다는 것이다. 이러한 이유로, 터미널 스테이션 내 소프트웨어 구현이 어렵고, 관행적인 하드웨어 솔루션 만이 통상적으로 이용된다(참조: John C. Glossner, Erdem Hokenek, Mayan Moudgil, "Multithreaded Processor for Software Defined Radio," Proceedings of the 2002 Software Defined Radio Technical C" San Diego California, November 2002, vol. 1, pp. 195-199).
현재, 채널이 대칭적인 시-분할 듀플렉스(TDD:Time-Division Duplex) 동작 모드를 위해, 중앙 접속 포인트(예, 베이스 스테이션)는 복합 DSP 알고리즘을 가동한다. 주파수-분할 듀플렉스(FDD:Frequency-Division Duplex) 모드에서, 채널은 비 대칭적이고, 결과적으로 터미널 스테이션이 이 작업의 일부 이상의 부분을 수행해야할 필요가 있다.
따라서, 본 발명의 일 실시예에 따르면, 디지털 시그널 프로세서가 무선 통신 장치에 제공되고, 여기서 프로세서는 벡터 유닛을 포함하며, 벡터 유닛에 연결되고 이에 의해 접속가능한 제 1 및 제 2 레지스터, 그리고 명령 세트를 포함한다. 명령 세트는 벡터 유닛과 제 1 및 제 2 레지스터를 이용하여, 좌표 회전 디지털 컴퓨터 명령으로 채널 값 매트릭스(행렬)의 역행렬 연산(matrix inversion, 역행렬)을 수행하도록 구성된다.
나아가, 본 발명의 일 실시예에 따르면, 중앙 및 터미널 스테이션(즉, 기지국과 단말기) 모두가 무선 통신 시스템에서의 역행렬 연산(Matrix Inversion)에 대해 동일한 의무를 가진다. 또한, 본 발명의 일 실시예에 따르면, MIMO-OFDM에 특정된 복합 행렬 연산이 소프트웨어에서 수행된다. CORDIC(COordinate Rotation DIgital Computer)-기반 접근법은 QR 분해, 고유값(eigen value) 분해 및 특이-값 분해과 같은 복합 행렬 연산이 멀티스레드 SIMD(Single Instruction Multiple-Data) 프로세서상의 소프트웨어에서 효과적으로 수행되도록 한다. 또한, 삼각화(triangularization)가 다중-스레드 프로세서에서 SIMD 스타일로 수행될 수 있으며, 소프트웨어 구현을 통해 QR 분해가 기븐스 회전법(givens rotation method)을 이용하여 수행될 수 있다.
본 발명이 온전히 이해되고 실질적인 효과를 내기 위해, 본 발명의 바람직한 실시예(이에 제한되는 것은 아님)를 첨부된 도면을 참조하여, 이하에서 설명한다.
도 1은 본 발명의 일 실시예에 따라, 동일한 스레드로부터 생성된 두 개의 연속적인 벡터 곱 명령을 나타내는 도면이다.
도 2는 본 발명의 일 실시예에 따라 제공된 기능을 포함하거나 함께 사용되는 프로세서의 파이프라이닝(pipelining)을 나타내는 도면이다.
도 3은 본 발명의 일 실시예에 따라 제공된 기능을 포함하거나 함께 이용되는 프로세서 구조를 나타내는 기능 블록도이다.
도 4는 본 발명의 일 실시예에 따라 제공된 기능을 포함하거나 함께 이용되는 프로세서 구조의 벡터 처리 유닛(VPU:Vector Processing Unit)의 일 예를 나타내는 도면이다.
도 5-7은 FULL-CORDIC 접근법에 대한 명령의 세 가지 예(구성 명령(CFG_CORDIC, 도 5), 회전 명령(ROT_CORDIC, 도 6) 및 벡터 명령(VEC_CORDIC, 도 7))를 나타내는 도면이다.
도 8-11은 SEMI-CORDIC 접근법에 대한 명령의 네 가지 예(XY 회전 명령(XY_ROT_CORDIC, 도 8), ZJ 회전 명령(ZJ_ROT_CORDIC, 도 9), XY 벡터 명령(XY_VEC_CORDIC, 도 10) 및 ZJ 벡터 명령(ZJ_VEC_CORDIC, 도 11)를 나타내는 도면이다.
도 12는 본 발명의 일 실시예에 따라 제공된 회전 모드에 대한 XY_ROT_CORDIC 명령에서 동작하는 CORDIC 유닛을 나타내는 도면이다.
도 13은 본 발명의 일 실시예에 따라 제공된 회전 모드에 대한 ZJ_ROT_CORDIC 명령에서 동작하는 CORDIC 유닛을 나타내는 도면이다.
도 14는 본 발명의 일 실시예에 따라 제공된 회전 모드에 대한 XY_VEC_CORDIC 명령에서 동작하는 CORDIC 유닛을 나타내는 도면이다.
도 15는 본 발명의 일 실시예에 따라 제공된 회전 모드에 대한 ZJ_VEC_CORDIC 명령에서 동작하는 CORDIC 유닛을 나타내는 도면이다.
도 16은 본 발명의 일 실시예에 따라 수신기 측에서 수행되는 계산 시나리오 동작의 일 예를 나타내는 도면이다.
이하에서, 첨부된 도면 및 실시예와 함께 본 발명을 상세히 설명한다.
MIMO 통신 시스템은 M개의 송신 안테나와 N개의 수신 안테나를 포함하는 범용 다중 안테나 통신 시스템을 포함한다. 각 수신 안테나는 각각의 전송 안테나로부터 정보를 수신할 수 있다. 따라서, 송신기로부터 수신기까지 M x N 개의 신호 경로가 존재한다. 각 송신 안테나는 동일한 정보를 전송하거나 전송하지 않을 수 있다.
H는 채널 매트릭스(행렬)를 나타내는 것으로 가정한다. 그리고, 성분(hij)은 i번째 전송 안테나와 j번째 수신 안테나 사이의 감소 이득을 모델화하는 복소수이다. 결과적으로, 채널 매트릭스는 트레이닝 프로세스를 통해 산정될 수 있다. 의사난수(pseudorandom) 시퀀스가 각 송신 안테나에 할당된다. 이어서, 각각의 수신 안테나가 상관 분석(correlative analysis)을 통해 입력 신호를 분리할 수 있다. 송신 신호가 OFDM인 것으로 가정하면, 소정 개수의 반송파가 파일럿(pilot)일 수 있다. 각 파일럿은 특정된 배열(constellation) 내의 알려진 복합 정보를 포함할 수 있다. 전파 중에, 채널이 반송파에 작용하여 에러를 삽입할 수 있다. 반송파 사이에 일정한 간격을 두는 주파수가, 할당된 대역폭을 가지는 각 반송파에 대해 균일한 주파수 감소를 보장할 만큼 작은 것으로 가정하며, 특정 안테나로부터의 파일럿 중 하나에 특화된 통신 채널 파라미터가 복합 분할(complex division)을 통해 산정될 수 있다(참조, van Nee 등의 상기 문헌).
나아가, 전송 신호 벡터가 X이고, 노이즈 벡터가 N이라 하면, 수신 신호 벡터 Y는 다음과 같다.
Y=HX+N (1)
고유값(eigen value) 및 특이-값(singular-value) 분해를 통해, MIMO 채널이 여러 개의 독립 SISO 채널로 변환된다. 채널 행렬(H)은 단일 값 분해(H=U∧VH)를 포함하고, 여기서 ∧는 H의 특이 값에 대한 상삼각 행렬이고, U 및 VH는 특이 벡 터(singular vector)의 단위 행렬이다. 따라서, 송신 신호가 V와 곱해지고, 수신 신호가 UH와 곱해지면, 다음과 같다.
Figure 112009021312934-PCT00001
(2)
여기서,
Figure 112009021312934-PCT00002
이다.
식 (2)는 다수의 독립적인 SISO 채널에 대한 등가 모델을 설명한다. 채널 행렬(H)이 산정될 수 있으면, 대응하는 특이-값 분석도 계산될 수 있다. 이후에, 행렬(V)이 송신기로 다시 전송되고, 송신 전에 차례로 신호가 사전-왜곡(pre-distort) 된다. 결과적으로, 수신된 OFDM 신호가 독립적이며, 멀티프로세서 시스템에서 병렬로 디코딩된다(참조: Michael J. Schulte, John C. Glossner, Suman Mamidi, Mayan Moudgill, Stamatis Vssiliadis, "A Low-Power Multithereaded Processor for Baseband Communication Systems," in Proceeding of the Third and Fourth International Annual Workshops on Systems, Architectures, Modeling and Simulation(SAMOS): Andy D. Pimentel and Stamatis Vassiliadis, Eds., Samos, Greece, 2004. 07. vol. 3133 of Lecture Notes in Computer Science, pp. 393-402, Springer; John C. Glossner, Michael J. Schulte, Mayan Moudgill, Daniel lancu. Sanjay Jinturkar, Tanuj Raja, Gary Nacer, Stamtis Vassiliadis, "Sandblaster Low-Power Multithreaded SDR Baseband Processor," Proceedings of the 3rd Workshop on Applications Specific Processors (WASP'04), Stockholm, Sweden, 2004. 09, pp. 53-58; 및 Roger A. Horn, Charles R. Johnson, Matrixd Analysis, Cambridge University Press, 40 West 20th Street, New York, NY 10011-4211, U.S.A., 1985).
멀티프로세서 시스템에서의 병렬 디코딩을 수행 능력에 따라, 복합 행렬의 고유값(eigenjvalue) 분해 및/또는 특이-값 분해 수행의 중요성이 증가한다. 나아가, QR 분해는, 많은 다른 선형 대수 문제와 함께 이러한 분해(decompositions)를 실시간으로 해결하는 데 중요한 단계가 된다. 따라서, QR 분해가 이하에서 설명될 것이다. 행렬
Figure 112009021312934-PCT00003
의 QR 분해는 다음과 같다.
Figure 112009021312934-PCT00004
(3)
여기서, 행렬
Figure 112009021312934-PCT00005
은 단위 행렬이고, 행렬
Figure 112009021312934-PCT00006
은 상삼각 행렬이며, 0는 (m-n)-바이-n의 올-제로 행렬이다. 행렬 A가 비-특이 행렬(즉, 정방 행렬이며, 전-계수(full-rank) 행렬임)이면, R의 대각선 요소(또는 원소)가 실수이며 양의 값으로 선택될 수 있고, 이러한 경우에, 팩터(Q 및 R)는 모두 유일하다(참조, Lloyd N. Trefethen, David Bau, III, Numerical Linear Algebra, Society for Industrial and Applied Mathematics (SIAM), Philadelphia, Pennsylvania, 1997; Vera N. Kublanovskya, "On some algorithms for the solution of the complete eigenvalue problem," USSR Comput, Math. and Math. Physics, vol. 3, pp. 637-657, March, 1961). 행렬 A가 특이 행렬이거나 정방 행렬이 아닌 경우에(예, m>n), 인수분해(factorization)가 유일하지 않다(가령, Q의 정규 직교 칼럼의 일부가 임 의로 삽입됨).
선형 대수의 많은 이론이 QR 분해에 의존한다. 예를 들어, QR 인수분해는 대각 행렬화가 가능한 비-선형 행렬의 고유값(eigenvalue)의 근사치를 구하는 반복적인 절차를 제공한다 (참조: J.G.F. Francis, "The QR decomposition transformation - Part 1, "The Computer Journal, vol.4, no. 3, pp. 265-272, October 1961; J.G.F. Francis, "The QR transformation - Part 2," The Computer Journal, vol. 4, no. 4, pp. 332-345, January 1962; J.P. Charlier, M. Vanbegin, P. Van Dooren, "On Efficient Implementations on Kogbeliantz's Algorithm for Computing the Singular Value Decomposition," Numerische Mathemtik, vol. 52, no. 3, pp. 279-300, May 1988). 동일하게 중요하게, 삼각 형식의 R이 얻어지면, 대각선 요소가 실(real) 대각선 요소에 의해 선택된다(참조: Trefethen 등, 상기 문헌 and Kublanovskaya, 상기 문헌). 이후에, 삼각-각 분해는 실(real) 대각선 요소를 포함하는 이러한 삼각 행렬로부터 시작하여 훨씬 더 쉽게 수행될 수 있다(참조: Carl D. Meyer, Matrix Analysis and Applied Linear Algebra, Society for Industrial and Applied Mathematics(SIAM), Philadelphia, Pennsylvania, 2000).
그러나, 일반적으로 이해되고 있는 바와 같이, QR 분해는 계산상 비경제적이다. QR 분해를 수행하기 위한 알고리즘은 전형적으로 n x n 행렬에 대한 0(n3) 연산을 요한다(참조: Kublanovskaya, 상기 문헌; Morven W. Gentleman and Heiang -Tsung Kung, "Matrix Triangularization By Systolic Arrays," in Proceedings of the International Society for Optical Engineering (SPIE), Real-Time Signal Processing IV, 1000 20th Street, Bellingham, WA 98225-6705, U.S.A, January 1981, vol. 298, pp. 19-26, SPIE Press). 시간 대비 효과적인 방법으로 삼각화(triangularization)를 수행하기 위해, 시스토릭 어레이(systolic array)가 제안되었다(참조: 예를 들면, Thomas F. Coleman, Charles F. van Loan, Handbook for Matrix Computations, Society for Industrial and Applied Mathmatics(SIAM), Philadelphia, Pennsylvania, 1998).
위에 설명한 바와 같이, 본 발명의 일 실시예에 따르면, 중앙 및 터미널 스테이션이 MIMO-OFDM 구현시 동일한 작업 부담을 가진다. 나아가, 본 발명의 일 실시예에 따르면, MIMO-OFDM에 특정된 복합 행렬 연산이 소프트웨어에서 수행될 수 있다.
QR 분해(또는 QR 인수분해라고도 불림)가 고유값 및 특이-값 분해를 위한 준비 작업(task)이다. 기븐스 회전법(Givens rotation method)은 다양한 통신 구조에서 QR 인수분해를 수행하는데 가장 적합한 방법이다 (참조: 예를 들면, Schulte 등의 상기 문헌; Pimentel 등의 상기 문헌; Glossner 등의 상기 문헌; 그리고 Stamtis Vassiliadis, "Sandblaster Low-Power Multithreaded SDR Specific Processors (WASP' 04), Stockholm, Sweden, September 2004, pp. 53-58; Horn 등의 상기 문헌).
그러나, 기븐스 회전은 계산상 필요 사항이 많고, 많은 복합 행렬 연산에 집 중적으로 사용된다. 따라서, 본 발명의 일 실시예에서, 기븐스 회전은 CORDIC 기능 유닛 및 관련 명령에 의해 구조적으로 뒷받침된다.
CORDIC 유닛은 쌍곡선 함수 및 삼각 함수를 계산하기 위한 간단하고 효과적인 알고리즘을 이용한다. CORDIC 접근법은 일반적으로 하드웨어 곱셈기를 이용할 수 있는 경우에 사용된다 (예, 간단한 마이크로컨트롤러 및 플립 칩 핀 그라인드 어레이(FCPGAs:Flip Chip Pin Grind Arrays)). 왜냐하면, 필요한 연산은 덧셈, 뺄셈, 비트시프트(bitshift) 및 테이블 검색이기 때문이다. 하드웨어 곱셈기를 이용할 수 없을 경우에(예, 마이크로컨트롤러에서) 또는 구현하는 데 필요한 게이트의 수를 최소화할 필요가 있을 때(예, FPGA 에서), CORDIC이 일반적으로 다른 접근법보다 빠르다. 따라서, CORDIC-증강 프로세서가 표준 프로세서보다 속도를 더 빠르게 할 수 있다. 통상적인 프로세서가 강력한 DSP 명령 세트를 이용하여 SIMD-VLIW(single instruction multiple data-very long instruction word) 프로세서로 구현된 것으로 간주하면, 타겟 프로세싱 도메인 내의 이와 같은 성능 향상은 CORDIC-증강 프로세서가 좋은 접근법이라는 것을 나타낸다.
그러나, MIMO_OFDM을 효과적으로 구현하기 위한, 통상적으로 알려진 퓨어-소프트웨어 솔루션이 존재한다. 따라서, 본 발명의 일 실시예에 따르면, 새로운 CORDIC-기반 접근법이 제공되고, 이는 QR 분해, 고유값 분해 및 특이-값 분해와 같은 복합 행렬 연산이 멀티스레드 SIMD(Single Instruction Multiple-Data) 프로세서상의 소프트웨어에서 효과적으로 수행되도록 한다.
결과적으로, 본 발명의 일 실시예에 따르면, 기븐스 회전법이 QR 분해, 고유 값 분해 및 특이-값 분해를 멀티스레드 프로세서상의 소프트웨어에서 수행되도록 하는 데 사용될 수 있다.
나아가, 본 발명의 일 실시예에서, CORDIC 기능 유닛이 일반적으로 알려진 프로세서 구조에 포함되어, QR 분해, 고유값 분해, 및 특이-값 분해를 포함하는 FULL-CORDIC 및/또는 SEMI-CORDIC 연산을 제공한다.
따라서, 본 발명의 일 실시예에 따르면, SIMD 프로세서가 벡터 유닛, 제 1 및 제 2 레지스터 및 명령 세트를 포함하는 무선 통신 장치에 제공될 수 있다. 여기서, 명령 세트는 벡터 유닛과 제 1 및 제 2 레지스터를 이용하여 좌표 회전 디지털 컴퓨터 명령에 의한 채널 값 행렬의 역행렬 연산을 수행한다.
명령은 제 1 및 제 2 레지스터로부터 x 및 y 좌표, z 각 및 반복 카운트 n 값을 판독한다. 나아가, 명령은 네 번의 실행 중에 네 개의 덧셈 및 네 개의 시프트 연산을 수행하며, x 및 y 좌표, z 각 및 반복 카운트 n의 결괏값을 제 1 및 제 2 레지스터에 기입한다. 추가로, 명령은 회전 모드를 가질 수 있으며, 제 1 레지스터는 x 및 y 좌표를 포함하고, 제 1 레지스터는 z 각과 반복 카운트 n 값을 포함할 수 있다. 나아가 명령은 벡터 모드를 가질 수 있으며, 제 1 레지스터는 x 좌표 및 z 각 값을 포함하고, 제 2 레지스터는 y 좌표 및 반복 카운트 n 값을 포함할 수 있다.
명령은 행렬의 기븐스 회전을 수행할 수 있다. 시그널 프로세서는 다중-스레드의, VLIW (Very Long Instruction Word) 프로세서일 수 있다. 따라서 명령이 멀티-스레드를 이용한다.
행렬 채널 값은 명령에 의한 추가 처리를 위해 SISO 값으로 변환될 MIMO 수신 값일 수 있다.
본 발명의 일 실시예에 따르면, 제 1 및 제 2 레지스터가 레지스터 파일에 구현될 수 있다.
이러한 실시 예에서, 단일 연산에 대한 명령은 일련의 단계를 포함하며, 제 1 및 제 2 레지스터가 판독되고, 좌표 회전 디지털 컴퓨터 프로세스가 수행되며, 결괏값이 제 1 레지스터에 기입된다. 선택적으로, 단일 연산을 위한 명령은 일련의 단계를 포함할 수 있으며, 제 1 및 제 2 레지스터가 판독되고, 좌표 회전 디지털 컴퓨터 프로세스가 수행되며, 결과값이 제 2 레지스터에 기입된다. 나아가, 회전 모드에 대해, 명령은 먼저 제 1 및 제 2 레지스터를 판독하고, 좌표 회전 디지털 컴퓨터 프로세스를 수행하며, 결과를 제 1 레지스터에 기입한다. 선택적으로, 좌표 회전 디지털 컴퓨터 프로세스의 벡터 모드에 대해, 명령은 먼저 제 1 및 제 2 레지스터를 판독하고, 좌표 회전 디지털 컴퓨터 프로세스를 수행하며, 제 2 레지스터에 결과값을 기입한다.
본 발명의 일 실시예에 따르면, 제 2 레지스터가 레지스터 파일에 구현되고, 제 2 레지스터는 벡터 유닛에 구현될 수 있다. 이러한 구현 예에서, 명령은 제 1 및 제 2 레지스터를 판독하고, 좌표 회전 디지털 컴퓨터 프로세스를 수행하며, 결괏값을 제 1 및 제 2 레지스터에 기입한다.
본 발명의 일 실시예에 따르면, 삼각화(triangularization)가 멀티-스레드 프로세서에서 SIMD 형으로 수행될 수 있다. 따라서 병렬 알고리즘이 본 발명과 함 께 사용될 수 있다. 본 발명의 일 실시예에 따르면, 소프트웨어 구현을 통한 QR 분해가 기븐스 회전법을 이용하여 수행될 수 있다.
복합적인 기븐스 회전이 두 개의 회전 각의 측면에서 설명될 수 있다( 참조: Jack E. Voider, "The CORDIC trigonometric computing technique," IRE Transactions on Electronic Computer, vol. EC-8, no.3, pp. 330-334, September 1959).
Figure 112009021312934-PCT00007
여기서, 회전 행렬는 다음과 같이 분해될 수 있다.
Figure 112009021312934-PCT00008
여기서, 복소수 a 및 b는 평행좌표 또는 극좌표 시스템 중 어느 하나로 다음과 같이 표현될 수 있다.
Figure 112009021312934-PCT00009
이때,
Figure 112009021312934-PCT00010
이다.
Figure 112009021312934-PCT00011
에 의해 최종 회전이 사실은 회전이 아닌 것에 주의해야 한다. 왜냐하면,
Figure 112009021312934-PCT00012
이 제로(0)와 곱해지기 때문이다. 결과적으로, 복소수 기븐스 회전을 기술하는 데에는 네 개의 회전 각(
Figure 112009021312934-PCT00013
Figure 112009021312934-PCT00014
)만 필요하다.
Figure 112009021312934-PCT00015
이면, 변환식은 실(real) 기븐스 회전을 표현한다.
Figure 112009021312934-PCT00016
위에 설명한 바와 같이, 기븐스 변환은 계산상 까다로울 수 있다. 예를 들어, 실(real) 회전의 직접적인 연산에만 네 개의 곱셈, 두 개의 덧셈, 그리고 코사인 및 사인 테이블을 저장하는 큰 용량의 메모리가 필요하다. 또한, 예를 들어 테일러 급수 전개를 사용하는 경우에, 각
Figure 112009021312934-PCT00017
을 찾는 것은 일련의 곱셈, 덧셈 연산 및 메모리 검색 동작으로 변환된다. 따라서, 데스크톱 컴퓨터는 이러한 연산 및 동작을 지원하기에 충분한 하드웨어 자원을 가져야 하며, 무선 애플리케이션에 대한 내장형 플랫폼에서 기븐스 회전을 구현하는 것이 문제가 된다. 결과적으로, 본 발명의 일 실시예에 따르면, CORDIC은 시프트 및 덧셈 연산만을 이용하여 임의의 각만큼 벡터 회전을 수행하는 반복적인 방법을 제공하는 데 사용될 것이다. 이는 이하에 기술된 식 7 및 8에서 분명히 알 수 있다.
CORDIC 이론은 잘 알려져 있으므로, 자세한 사항은 설명하지 않도록 한다 (그러나, 다음을 참조: J.S. Walther, "A unified algorithm for elementary functions," in Proceedings of Spring Joint Computer Conference of the American Federation of Information Processing Societies (AFIPS), Arlington, Virginia, 1971, vol. 38, pp. 379-385, AFIPS Press; Julien Sebot and Nathalie Drach, "SIMD ISA Extensions: Reducing Power Consumption on a Superscalar Processor for Multimedia Applications," in IEEE Symposium on Low-Power and High-Speed Chips (Cool Chips) IV, Tokyo, Japan, April 2001).
CORDIC 회전기(rotator)는 회전 및 벡터(vectoring)의 두 가지 모드 중 하나에서 동작할 수 있다. 회전 모드에서 각 어큐멀레이터(angle accumulator)가 바람직한 회전 각으로 초기화될 수 있다. 매번 반복시, 다음과 같이 각 어큐멀레이터에서 나머지 각의 크기를 감소시키도록 회전이 결정된다.
Figure 112009021312934-PCT00018
여기서,
Figure 112009021312934-PCT00019
벡터 모드에서, CORDIC 유닛은 x-축으로 결과 벡터를 정렬하는데 필요한 다양한 각도로 입력 벡터를 회전시킬 수 있다. 벡터 연산(vetoring operation)의 결과는 회전 각 및 원 벡터의 크기일 수 있다(예, 결괏값의 x-성분).
Figure 112009021312934-PCT00020
여기서,
Figure 112009021312934-PCT00021
CORDIC을 이용하여, 난해한 함수가 일련의 곱셈의 레이턴시(latency)를 이용 하여 계산될 수 있다. 추가 파라미터를 제공함으로써, 선형 또는 쌍곡선 좌표계(Id.)에서 회전을 수행하도록 CORDIC 방법이 일반화된다. 이는 함수 평가에 매우 강력한 도구이다. 추가로, CORDIC 알고리즘은 반복시마다 1 비트의 정확도를 생성한다. 따라서 정확도(accuracy)는 동작시에 조절될 수 있다. 이러한 동작은 곱셈/누적(MAC:Multiply/ACcumulate) 유닛과 대조적이다. 이 유닛에서는 워드 길이 및 이에 따른 정확도가 제작시에 결정되어야 한다.
16-비트 정확성(precision)이 필요한 것으로 가정하면(이는 보통 OFDM 복조의 경우임), CORDIC 알고리즘이 두 개의 16-비트 독립변수(arguments)를 읽고 두 개의 16-비트 결괏값을 생성한다.
멀티스레드 프로세서는 디지털-신호 처리 또는 SIMD 벡터 처리, 확장형 컨트롤, 및 핸드셋 라디오 애플리케이션용으로 최적화된 단일 컴파운드 명령 셋 내의 자바 코드를 수행할 수 있다(참조: Schulte 등의 상기 문헌; Pimentel 등의 상기 문헌; Clossner 등의 상기 문헌; 및 Horn 등의 상기 문헌)
따라서, 8개까지의 동시 발생 스레드가 하드웨어에서 지원된다. 나아가, 메모리의 다중 카피(multiple copies, 예, 뱅크 및/또는 모듈)를 각 스레드가 접속하는 데 이용할 수 있다. 도 1 에 도시된 바와 같이, 각 스레드(V-Mul, 110)는 명령(120)(예, VRF Read, Mpy1, Mpy2, 등)을 동시에 수행하도록 한다. 그러나, 도 1에 나타낸 바와 같이, 단 하나의 스레드만이 사이클 바운더리(boundary)에서 명령을 생성할 수 있다. 이러한 방식으로 모든 동작(또는 연산)이 동일한 레이턴시(latency)를 가진다. 따라서, 긴-레이턴시 동작과 관련하여 일반적으로 발생하는 참 종속성(true dependencies)이 효과적으로 감춰질 수 있다.
도 2에 도시된 바와 같이, 도 2에 도시된 바와 같은 다양한 동작에 대해 파이프라인(20)이 달라진다. 예를 들어, 로드/저장(Ld/St) 파이프라인(210)은 예를 들면 9 개의 단계(220)를 가진다. 정수 및 로드/저장 유닛은 산술 및 로직 유닛(ALU) 파이프라인(210)에 대한 명령을 위한 두 개의 실행 단계와, 정수 곱(I_MUL:Integer MULtiplication) 파이프라인(210)에 대한 명령을 위한 세 개의 실행 단계를 포함할 수 있다. ALU 및I_MUL 파이프라인 명령에 대한 대기 단계(Wait stage)는 이러한 명령이 일반적인-목적의 레지스터 파일로부터 Ld/St 파이프라인 명령보다 한 사이클 늦게 판독되도록 할 수 있으며, 이는 레지스터 파일 판독 포트의 수를 감소시키는 데 도움을 준다. 벡터 곱(V_MUL) 파이프라인(210)은 곱셈에 대해 2개 덧셈에 대해 2개의 네 개의 실행 단계(220)를 포함할 수 있다. 일단 특정한 스레드로부터의 명령이 파이프라인으로 입력되면, 이 명령이 완료된다. 또한 동일한 스레드로부터의 다음 명령이 결과를 판독하기 전에 스레드의 결과가 후기입(wirte back)되도록 할 수 있다.
도 3에 도시한 바와 같이, 본 발명의 실시예와 함께 사용된 프로세서 구조(300)가 세 개의 유닛(명령 페치 및 브랜치 유닛(310), 정소 및 로드/저장 유닛(320), 그리고 SIMD 스타일 벡터 프로세싱 유닛(330, VPU))으로 나뉠 수 있다. CORDIC 연산의 속도를 높이기 위한 명령이 SIMD-스타일 벡터 유닛(330)에 수행될 수 있다.
도 4에 도시한 바와 같이, VPU(330)는 예를 들면 네 개의 벡터 처리 구성요 소(VPE:Vector Processing Elements, 410, VP0-VP4)를 포함하며, 이는 16-비트, 32-비트 및 40 비트 고정-포인트 데이터 타입에 대한 SIMD 형식으로 산술 및 로직 연산을 수행하도록 구성된다. 고속 64-비트 데이터 버스(420)는 각 PE가 SIMD 형식으로 각 사이클에서 16비트 데이터를 로드 또는 저장하도록 한다. SIMD(Single Instruction Multiple-Data)) 실행에 대한 지원은 전력 소모와 함께 코드 사이즈를 현저히 감소시킨다. 왜냐하면 여러 세트의 데이터 구성요소가 단일 명령을 이용하여 처리될 수 있기 때문이다(참조, Mihai Sima, John Glossner, Daniel Iancu, Hua Ye, Andrei Iancu, 및 Jr. A. Joseph Doane, "CORDIC-Augmented Sandbridge Processor for Channel Equalization," in Proceedings of the 5th Workshop on Embeddded Computer Systems-Architectures, MOdeling, and Simulation (SAMOS 2005); Timo D, Hamfildinen, Andy D Pimentel, Jarmo Takala, Stamatis Vassiliadis, Eds., Samos, Greece, July 2005, vol. 3553 of Lecture Notes in Computer Science(LNCS), pp. 152-161, Springer-Verlag).
대부분의 SIMD 백터 명령은 8 개의 파이프라인 단계를 거친다. 예를 들어, 벡터 MAC(V_MAC) 명령은 다음의 단계를 거친다. 즉, 명령 디코드, 벡터 레지스터 파일(VRF:Vector Register File), Mpy1, Mpy2, Add1, Add2, 전송 및 후기입(write back) 단계이다. 전송 단계는 VPU의 하부 및 VRF 사이의 긴 쓰기(기입) 지연(delay) 때문에 필요하다. 동일한 스레드로부터의 연속적인 명령이 발행되는 사이에 8 사이클이 존재기 때문에, 스레드 내 하나의 명령의 결과가, 동일한 스레드의 다음 명령이 이들을 판독할 준비가 되는 시간(시점)까지 VRF에 반드시 후 기 입(write-back)되도록 한다. 따라서, VPE의 긴 파이프라인 레이턴시가 효과적으로 감춰질 수 있고, 데이터 레이턴시 확인 또는 바이패스 하드웨어가 필요하지 않다. 이는 도 1에 도시되며, 여기서 두 개의 연속적인 벡터 곱 명령(120)이 동일한 스레드로부터 발생된다. 두 명령(120) 사이에 데이터 의존성이 존재하는 경우에도, 제 2 명령(120)을 지연시킬(stall) 필요가 없다. 왜냐하면, 제 2 명령(120)이 VRF 기입 단계에 진입하기 전에 제 1 명령(120)이 후기입(Write Back) 단계를 완료하기 때문이다.
하드웨어가 표준 산술 연산만을 지원하는 통상적인 일반적-목적의 머신(machine)에서, 예를 들면 그램 슈미트 직교화(Gram-Schmidt orthogonalization) 방법 또는 하우스홀더 리플렉션(householder reflection) 방법 중 하나보다 기븐스 회전법(Givens rotation method)의 계산이 더 집중적이다(참조: Morven 등의 상기 문헌). 그러나, 임의의 계산 원식(primitives)이 소프트웨어에서보다는 하드웨어서 구현될 때, 서로 다른 분해 방법의 계산 복잡성이 변경될 수 있다. 예를 들어, CORDIC 알고리즘이 하드웨어 보조장치에서 구현될 때, 평면 회전은 비트 직렬 곱과 마찬가지로 제시간에 수행될 수 없다. 따라서, 기초 연산이 계산될 때(기초 연산은 곱셈-및 덧셈, CORDIC 또는 하드웨어에서 지원되는 다른 연산), 기븐스-회전이 더 좋은 선택이 될 것이다.
기븐스 회전과 같이, 하우스홀더 리플렉션도 QR 분해를 계산하는 데 수적으로 안정적인 알고리즘이다. 두 기술은 기븐스 회전 및 하우스홀더 리플렉션이라 불리는 단일 행렬들을 쉽게 연산하는 방법을 제공하며, 이는 곱셈 될 벡터에 0(zero) 을 삽입할 수 있다. 기븐스 회전은 행렬을 삼각 형태로 감소시키는데 사용될 수 있다(참조: U.S. Pat. 6,076,154, Jos T.J. van Eijndhoven, Gerrit A. Slavenburg, 및 Selliah Rathnam, 제목 "VLIW Processor has Differnet Functional Units Operating On Commands of Differnt Widths"). 회전 각이 오프-대각선 성분을 하나씩 소거하도록 선택될 수 있다. 회전은 특정한 순서로 선택되며, 이러한 시퀀스는 회전에 의해 0(제로)가 된 성분이 이후 변환에서 제로가 아닌 성분이 되지 않도록 한다.
회전의 정확한 순서에 대한 하나의 예는 다음과 같다. 제 1 칼럼에서 시작되어, (2,1) 내지 (n,1) 위치의 성분이 소거된다. 이어서, 제 2 칼럼이 처리되고 (3,2) 내지 (n,2) 위치의 성분이 소거되고, 마찬가지로 계속된다. 결과적으로, 한 번의 변환에 의해 삽입된 제로는 후속 변환에 영향을 받지 않는다는 것을 확인할 수 있다.
반면에, 하우스홀더 리플렉션에 따르면, 기초 단위 행렬(
Figure 112009021312934-PCT00022
)이 A의 왼쪽이 적용되어 결과 행렬(H)은 다음과 같이 상-삼각 행렬이다.
Figure 112009021312934-PCT00023
프로덕트(product)
Figure 112009021312934-PCT00024
도 마찬가지로 단위 행렬이다. 따라서, 프로덕트 QR은 행렬(A)의 QR 분해이다. 하우스홀더는 단위 행렬(
Figure 112009021312934-PCT00025
)을 기획하는 방법을 제공하여, 각 단계(k)에서, k-번째 칼럼의 모든 원소, x(주 대각선 이하 에 존재)가 행렬(
Figure 112009021312934-PCT00026
)에 의해 좌측에서 곱셈되어 제로가 되도록 한다(참조: U.S. Pat. 6,076,154 및 Kublanovskaya의 상기 문헌). 이는 식 (10)에 표현된다.
Figure 112009021312934-PCT00027
여기서,
Figure 112009021312934-PCT00028
은 표준 단위 벡터(canonical unit vector)이다. 리플렉터
Figure 112009021312934-PCT00029
(이는 전-계수(full-rank) 행렬 및 단위 행렬임)는 다음 식으로 주어진다.
Figure 112009021312934-PCT00030
여기서,
Figure 112009021312934-PCT00031
(참조: Kublanovskaya의 상기 문헌)
통상적인 문헌에는 하우스홀더 방법의 계산 효과가 기븐스 방법보다 조금 더 작다고 보고되고 있으나, 두 방법 모두 계산상으로 안정적이다. 하우스홀더 방법을 구현하는 것은 일반적인-목적의 계산 플랫폼상에 구현시 활용도가 증가한다. 그러나, 하우스홀더 방법에서, 리플렉터(
Figure 112009021312934-PCT00032
)의 크기가 매 반복시마다 감소하는 것을 쉽게 알 수 있다. 일부 구현 예에서, 이러한 동적 변화가 이용된 하드웨어에서 수용되지 못할 수 있다.
반면에, 구현 구조가 SIMD, VLIW 및 다중-스레드 성능을 포함하는 경우에, 기븐스 회전법의 활용도를 늘릴 수 있는 다양한 이슈가 존재한다. 일반적으로, 계산의 고 레벨의 병렬성 및 대칭성을 나타내는 프로그램이 이와 같이 특화된 구조에 의해 가장 효과적이 될 수 있다. 예를 들어, 하우스홀더 방법과 비교할 때, 기븐스 방법은 행렬 곱셈 당 하나의 제로만을 삽입한다. 계산 패턴 문제와 더불어, 기븐스 회전은 CORDIC-확장 프로세서 구현시 쉽게 지원될 수 있다.
그러나, 기븐스 회전을 구현하는 것은 하우스홀더 방법을 구현하는 것보다 연산의 측면에서 더 비용이 많이 든다는 것을 이해하여야 한다. 따라서, 본 발명의 실시예에서, 하우스홀더 방법은 QR 분해, 고유값 분해 및 특이-값 분해를 멀티스레드 프로세서상의 소프트웨어에서 구현하는 데 사용될 수 있으며, 이 프로세서는 일반적인-목적의 컴퓨터 플랫폼이나 CORDIC-확장 프로세서 구현시에 어느 경우에나 이용된다.
나아가, 기븐스 회전 및 하우스홀더 리플렉션(reflection) 모두가 피봇(pivot) 이하의 행렬 원소를 소거하는데 사용될 수 있다. 어느 방법에서든, 결과적으로 남겨진 행렬은 단위 행렬이며, 두 알고리즘 모두 계산상으로 안정적이다. 이러한 이유로, 기븐스 회전 및 하우스홀더 리플렉션은 동등하게 적합한 알고리즘이다. 그러나, 기븐스 회전을 구현하는 것이 CORDIC-증강 프로세서 구조에서 삼각화(triangularization)를 구현하는 대표적인 알고리즘으로 제공된다. 왜냐하면, 기븐스 회전은 CORDIC 원식(primitives)으로 전개될 수 있기 때문이다.
따라서, 식 7 및 8에 나타낸 바와 같이, CORDIC은 4-원소 벡터-값 함수이다. 이 값 중 둘(좌표 y 또는 각 z, 그리고 반복 카운터 n)이 직관적으로 정확하게 제로가 된다. 결과적으로, 모든 CORDIC 반복(iteration)이 단일 명령에 의해 수행될 수 없는 경우에, 좌표 y 또는 각(angle) z, 그리고 반복 카운터 n이 연속적인 CORDIC 명령 호출 사이에 저장될 필요가 없다.
명령은 두 개의 입력 독립 변수(argument)와, 현재의 RISC, RISC-like, DSP 및 DSP-like 구조(architecture)로 연결되는 하나의 출력을 가지는 스칼라 함수이기 때문에, CORDIC 명령을 결정하는 것은 간단한 업무가 아니다. 네 개의 값, x, y, z, i, (n)을 와이드 레지스터에 압축 저장하는(이에 따라 '단일' 값이 리턴되도록) 시도조차 실패할 수 있다. 61 비트는 CORDIC을 이용하여 16-비트 회전을 구현하는 데 필요하나, 가용 멀티스레드 프로세서는 예를 들면 40-비트 와이드 레지스터만을 포함한다.
따라서, 벡터-중심 연산(vector-valued operation)을 멀티스레드 프로세서 구조로 편입시키는 하나의 해결책은, CORDIC 명령이 발행된 때, 무조건 호출되는 보조 레지스터를 이용하여 레지스터 파일을 증가시키는 것이다. 구체적으로, CORDIC 명령인 CORDIC Rs1, Rs2, Rt가 보조 레지스터(Raux)를 독립변수 레지스터 및 결괏값 레지스터 모두로 사용할 수 있다. 이러한 구현 예에서, 독립변수는 레지스터(Rs1, Raux)로부터 판독되고 (추가 구성 정보가 필요한 경우에는 Rs2로부터 판독되는 것도 가능), Rt 및 Raux에 후기입(write back)될 수 있다.
현재 레지스터 파일에 대한 함수 유닛의 현재 접속성(connectivity)을 보존하기 위해, 보조 레지스터가 레지스터 파일 보다는 CORDIC 기능성 유닛의 일부일 수 있다. 이는 보조 레지스터가 MOVE 명령에서 독립변수로 사용되지 않을 수 있다.
보조 레지스터에 데이터를 업로드하기 위해, 추가 명령이 필요하다. 이러한 명령은 예를 들면, CORDIC, 또는 CFG_CORDIC을 구성할 수 있다. CORDIC 알고리즘의 입력 값 중 하나가 직관적으로 제로가 될 것을 알고 있기 때문에, 보조 레지스터로부터 다시 레지스터 파일로 정보를 옮길 필요가 없다. 결과적으로, CODIC 연산이 분리된 경우에, 이러한 접근법은 대안적인 방법과 구별되도록 "FULL-CORDIC" 접근법이라 칭할 수 있다.
구체적으로, 보조 레지스터를 이용하기 위한 하드웨어 경비 지출이 예를 들면 비용적인 이유로 바람직하지 않은 경우에, CORDIC 연산(또는 동작)이 두 개의 부분 연산(또는 동작)으로 분할될 수 있다. 제 1 부분-연산은 한 쌍의 값(x, y)을 업데이트하고, 제 2 부분-연산은 한 쌍의 값(z, in)을 업데이트 할 수 있다. 이러한 방법은 "SEMI-CORDIC" 접근법으로 불린다. SEMI-CORDIC 접근법의 한가지 단점은 두 개의 동작이 FULL-CORDIC을 구현하기 위해 잇따라 호출될 필요가 없다는 것이다. 그러한 까닭에, CORDIC 명령 카운트가 두 배가 된다. 그러나, 부분-연산으로, CORDIC 연산이 현재 명령 포맷에 딱 맞게 되고, 현재 연결 구조를 레지스터 파일에 맞게한다. 이로써 작은 하드웨어 비용만 필요하게 된다.
또한 FULL-CORDIC 소위 "슈퍼-연산(super-operation)"을 정의함으로써 구현될 수 있다. 이러한 방법에서, 4-웨이 SIMD 벡터 내의 두 개의 인접한 슬롯이 단일 CORDIC 연산을 구현할 수 있다. 즉, CORDIC 연산이 두 배-크기의 독립변수를 이용하여 2-웨이 SIMD 방식으로 수행될 수 있다. 이러한 구현 예에서, FULL-CORDIC 연산을 수행하도록 슈퍼-연산을 정의하는 것은 SEMI-CORDIC보다 빠르지는 않다; 반대로 데이터의 절반만이 처리된다. 슈퍼-연산 접근법은 SEMI-CORDIC 접근법만큼 빠르 나, 컴파일러의 변경을 요한다. 결과적으로 이러한 구현 예는 컴파일러 제약에 따라 일부 문제점을 가질 수 있다.
보조 레지스터를 이용한 FULL-CORDIC 접근법에 대응하는, 그리고 부분-CORDIC 접근법에 대응하는 명령이 이제부터 제공된다.
도 5-7은 FULL-CORDIC 접근법을 위한 명령에 대한 세 가지 예를 도시한다. 세 가지 예는 구성 명령(CFG_CORDIC, 도 5), 회전 명령(ROT_CORDIC, 도 6) 및 벡터 명령(VEC_CORDIC, 도 7)을 포함한다.
도 5에 도시된 바와 같이,
Figure 112009021312934-PCT00033
인 CFG_CORDIC 명령이 단계(500)에서 시작되고 단계(510)로 제어가 진행된다. 여기서, 40-비트 벡터 레지스터(WA(i))가 판독된다. 레지스터는 다음과 같이 32비트의 유효 비트만을 가진다. 즉, x에 대해 16 비트, 회전 모드에서 y에 대해 16비트, 또는 벡터 모드에서 z에 대해 16비트를 포함한다. 이후에 제어는 단계(520)로 진행되고, 여기서 40-비트 벡터 레지스터(WB(i))가 판독된다. 이 레지스터는 다음과 같이 21 비트의 유효 비트만을 가진다. 즉, 회전 모드에서 z에 대해 16비트 또는 벡터 모드에서 y에 대해 16비트를 포함하고, 그리고 x와 y 또는 z에 대한 추가 내부 정밀도(internal precision)를 구성하는 나머지 8 비트는 제로(0)로 설정될 수 있다. 이후에 제어가 단계(540)로 진행되고, 여기서, 16-비트의 z 또는 y 및 반복 카운터 n을 포함하는 40-비트 벡터 레지스터(WAUX(i))가 후기입(write back) 된다. 이어서 제어는 단계(550)로 진행되고, 연산이 종료한다.
FULL-CORDIC 접근법에서
Figure 112009021312934-PCT00034
에 대해 회전 명령(ROT_CORDIC)에 연관되어 수행되는 명령을 다시 참조하면, 연산(또는 동작)이 도 6에 도시된다. 도면에서 알 수 있는 바와 같이, 단계(600)에서 제어가 시작되고 단계(610)로 진행된다. 단계(610)에서, 40-비트 벡터 레지스터(WA(i))가 판독된다. 이러한 레지스터는 20-비트 x와 20-비트 y를 포함한다. 이후에 제어는 단계(620)로 진행되고, 이 단계에서 40-비트 벡터 레지스터(WAUX(i))가 판독된다. 이 레지스터는 16-비트 각(z)과 5-비트 반복 카운터(n)를 포함한다. 이어서 제어가 단계(630)로 진행된다. 이 단계에서, M회 CORDIC 반복이 회전 모드(예, 네 번의 덧셈 및 네 번의 시프트)에서, 네 개의 실행 파이프라인 단계(stage) 중에 수행될 수 있다. 이후에 제어가 단계(640)로 진행되고, 여기서 업데이트 된 20-비트의 x와 20-비트의 y가 40-비트 벡터 레지스터(WA(i))에 후기입된다. 이어서 제어가 단계(650)로 진행되고, 이 단계에서, 갱신된 16-비트 각 z 및 5-비트의 반복 카운터, n이 40비트 보조 레지스터(WAUX(i))에 후기입된다. 제어는 단계(660)로 진행하고, 연산(또는 동작)이 종료된다.
FULL-CODRDIC 접근법에서
Figure 112009021312934-PCT00035
에 대한 벡터 명령(VEC_CORDIC)과 관련하여 수행된 명령을 다시 참조하면, 연산이 도 7에 도시된다. 이 도면에서 알 수 있는 바와 같이, 제어가 단계(700)에서 시작하여 단계(710)로 진행된다. 단계(710)에서, 40-비트 벡터 레지스터(WA(i))가 판독된다. 이 레지스터는 20-비트의 x와 16-비트의 각, z를 포함한다. 제어가 단계(720)로 진행하고, 여기서 40-비트 벡터 레지스터(WAUX(i))가 판독된다. 이 레지스터는 20-비트 y와, 5-비트 반복 카 운터(n)를 포함한다. 이어서 제어가 단계(730)로 진행하고, M회 CORDIC 반복이 벡터 모드(예, 네 번의 덧셈 및 네 번의 시프트)에서 네 개의 실행 파이프라인 단계(stage) 중에 수행된다. 이후에 제어가 단계(740)로 진행하고, 이 단계에서 업데이트 된 20-비트의 x와 16-비트의 각, z,가 40-비트 벡터 레지스터(WA(i))에 후기입된다. 이후에 제어가 단계(750)로 진행되고, 이 단계에서 갱신된 20-비트의 y와, 5-비트의 반복 카운터인 n이 40-비트 보조 레지스터(WAUX(i))에 후기입된다. 이어서, 제어가 단계(760)로 진행하고, 연산이 종료된다.
도 8-11은 SEMI-CORDIC 접근법에 대한 명령의 네 가지 실시예를 도시한다. 즉, XY 회전 명령(XY_ROT_CORDIC, 도 8), ZJ 회전 명령(ZJ_ROT_CORDIC, 도 9), XY 벡터 명령(XY_VEC_CORDIC, 도 10), 그리고 ZJ 벡터 명령(ZJ_VEC_CORDIC, 도 11)을 도시한다.
도 8에 도시된 바와 같이, SEMI-CORDIC 접근법에서
Figure 112009021312934-PCT00036
에 대한 XY 회전 명령 세트(XY_ROT_CORDIC)가 표현된다. 이 명령 세트는 단계(800)에서 시작되며, 제어가 단계(810)로 진행한다. 이 단계에서 40-비트 벡터 레지스터(WA(i))가 판독된다. 이 레지스터는 20-비트의 x와 20-비트의 y를 포함할 수 있다. 이어서, 단계(820)로 진행되고 이 단계에서 40-비트 벡터 레지스터(WB(i))가 판독된다. 이 레지스터는 16-비트의 각(z)과 5-비트의 반복 카운터(n)를 포함한다. 이어서 제어는 단계(830)로 진행되고, 여기서 M회 CORDIC 반복이 회전 모드(네 번의 덧셈 및 네 번의 시프트)에서 네 개의 실행 파이프라인 단계(stage) 중에 수행된다. 이후에 제어가 단계(840)로 진행하고, 이 단계에서, 업데이트 된 20-비트의 x와 20-비트의 y가 40-비트 벡터 레지스터(WA(i))에 후기입된다. 이어서 제어가 단계(850)로 진행되고 연산이 종료된다.
SEMI-CORDIC 접근법에서
Figure 112009021312934-PCT00037
에 대해 회전 명령(ZJ_VEC_CORDIC)에 연관되어 수행되는 연산(또는 동작)을 다시 참조하면, 연산(또는 동작)이 도 9에 도시된다. 도면에서 알 수 있는 바와 같이, 단계(900)에서 제어가 시작되고 단계(910)로 진행된다. 단계(910)에서, 40-비트 벡터 레지스터(WA(i))가 판독된다. 이러한 레지스터는 20-비트 x와 20-비트 y를 포함한다. 이후에 제어는 단계(920)로 진행되고, 이 단계에서 40-비트 벡터 레지스터(WB(i))가 판독된다. 이 레지스터는 16-비트 각(z)과 5-비트 반복 카운터(n)를 포함한다. 이어서 제어가 단계(930)로 진행된다. 이 단계에서, M회 CORDIC 반복이 회전 모드(예, 네 번의 덧셈 및 네 번의 시프트)에서, 네 개의 실행 파이프라인 단계(stage) 중에 수행될 수 있다. 이후에 제어가 단계(940)로 진행되고, 여기서 업데이트 된 16-비트의 z와 5-비트의 반복 카운터, ndl 40-비트 벡터 레지스터(WB(i))에 후기입된다. 이어서 제어는 단계(950)로 진행하고, 연산(또는 동작)이 종료된다.
SEMI-CODRDIC 접근법에서
Figure 112009021312934-PCT00038
에 대한 벡터 명령(XY_VEC_CORDIC)과 관련하여 수행된 명령을 다시 참조하면, 연산이 도 10에 도시된다. 이 도면에서 알 수 있는 바와 같이, 제어가 단계(1000)에서 시작하여 단계(1010)로 진행된다. 단계(1010)에서, 40-비트 벡터 레지스터(WA(i))가 판독된다. 이 레지스터는 20-비트의 x와 16-비트의 각, z를 포함한다. 제어가 단계(1020)로 진행하고, 여기서 40- 비트 벡터 레지스터(WB(i))가 판독된다. 이 레지스터는 20-비트 y와, 5-비트 반복 카운터(n)를 포함한다. 이어서 제어가 단계(14030)로 진행하고, M회 CORDIC 반복이 벡터 모드(예, 네 번의 덧셈 및 네 번의 시프트)에서 네 개의 실행 파이프라인 단계(stage) 중에 수행된다. 이후에 제어가 단계(1040)로 진행하고, 이 단계에서 업데이트 된 20-비트의 x와 16-비트의 각, z가 40-비트 벡터 레지스터(WA(i))에 후기입된다. 이후에 제어가 단계(750)로 진행되고, 연산이 종료된다.
SEMI-CORDIC 접근법에서
Figure 112009021312934-PCT00039
에 대한 벡터 명령 (ZJ_VEC_CORDIC)에 관련되어 수행된 연산을 다시 참조하면, 이 연산이 도 11에 도시된다. 도면에서 알 수 있는 바와 같이, 제어가 단계(1100)에서 시작되며, 제어가 단계(1110)로 진행한다. 이 단계에서 40-비트 벡터 레지스터(WA(i))가 판독된다. 이 레지스터는 20-비트의 x와 20-비트의 y를 포함할 수 있다. 이어서, 단계(1120)로 진행되고 이 단계에서 40-비트 벡터 레지스터(WB(i))가 판독된다. 이 레지스터는 20-비트의 y와 5-비트의 반복 카운터(n)를 포함한다. 이어서 제어는 단계(1130)로 진행되고, 여기서 M회 CORDIC 반복이 벡터 모드(네 번의 덧셈 및 네 번의 시프트)에서 네 개의 실행 파이프라인 단계(stage) 중에 수행된다. 이어서 제어가 단계(1140)로 진행하고, 이 단계에서, 업데이트 된 20-비트의 y와 5-비트의 반복 카운터(n)가 40-비트 벡터 레지스터(WB(i))에 후기입된다. 이어서 제어가 단계(1150)로 진행되고 연산이 종료된다.
회전 모드에 대해, 부분-연산이 XY_ROT_CORDIC, ZJ_ROT_CORDIC의 순으로 실행된다. 벡터 모드에서, 부분-연산이 ZJ_VEC_CORDIC, XY_VEC_CORDIC의 순으로 실행 된다.
멀티스레드 프로세서 구조에서, 각 명령은 하나의 스레드 사이클(8 클록 사이클)의 레이턴시를 가진다. 레이턴시는 하나의 스레드 사이클이 상한이기 때문에, 가능한 많은 CORDIC 반복을 하면서 네 개의 실행 단계(stage)에 맞도록 구현하는 것을 목적으로 한다.
순환 회전 모드에서 동작하는 기능성 유닛이 도 12 및 13에 소개된다. 이 도면에는, 단일 CORDIC 동작에 대응하는 하드웨어만이 도시된다. 그러나, 그러한 회로의 여러 예가 이용될 수 있으며, 다중 CORDIC 반복이 명령 호출(instruction call) 당 수행될 수 있다.
CORDIC 명령은 예를 들면 제 1 XY-SCORDIC 및 ZJ-SCORDIC을 차례로 호출할 수 있다. 쉽게 알 수 있는 바와 같이, 양쪽의 부분-회로(semi-circuit)가 병렬로 동작하고, 이에 따라 호출될 특정한 부분-명령(semi-instruction)에 대응하여 한 쌍의 X-Y 또는 Z-J만이 갱신(업데이트)될 수 있다.
순환 벡터 모드에서 동작하는 기능성 유닛이 도 14 및 15에 도시된다. 이러한 도면에는, 단일 CORDIC 연산에 대응하는 하드웨어만이 도시된다. 그러나, 이 회로의 여러 예가 사용될 수 있다. 따라서, 다중 CORDIC 반복이 명령 호출 당 수행될 수 있다.
CORDIC 명령은 예를 들면 ZJ-SCORDIC 및 XY-SCORDIC을 차례로 호출할 수 있다. 쉽게 관찰할 수 있는 바와 같이, 양쪽의 부분-회로가 병렬로 동작할 수 있으며, 따라서 한 쌍의 X-Y 또는 Z-J가 호출될 특정한 부분-명령에 대응하여 갱신될 수 있다.
ROT_CORDIC 및 VEC_CORDIC 명령이 8개의 파이프 라인 단계를 거치는 벡터 명령일 수 있다. 즉, 실행은 그 자체로 네 개의 클록 사이클의 레이턴시를 가진다. CORDIC 기능성 유닛은 네 개의 파이프라인 단계(stage)에서 네 개의 CORDIC 반복(네 개의 덧셈 및 네 개의 시프트 포함)을 수행할 수 있다. 결과적으로, ROT_CORDIC이나 VEC_CORDIC 명령 중 하나가 네 번 실행될 수 있으며, 예를 들면 4 명령 사이클이 16-비트 정확성(precision)을 위해 필요하며, (다른 유닛이 각 SIMD 슬롯마다 사용되는 경우에) SIMD 형식으로 네 번의 변환 동작을 수행한다.
소프트웨어에서 다중 SISO-OFDM으로의 MIMO-OFDM 변환이 네 개의 송신 안테나와 수신 안테나에 대해 이루어지는 것으로 가정한다. 이러한 구성은 통상적인 통신 시스템과 일치한다. 따라서, 수신기 측에서의 계산 시나리오가 도 16에 도시된 바와 같다.
도 16에 도시된 바와 같이, 연산이 단계(1600)에서 시작되고 제어가 단계(1610)로 진행된다. 이 단계에서, 사전 QR 분해가 수행되어 채널 행렬(H)의 대각선 아래(sub-diagonal)의 원소를 소거한다. 예를 들어, 복합 기븐스 회전이 채널 행렬(H)의 각 대각선 아래 원소에 대해 수행될 수 있다. 상삼각 행렬(R)의 대각선 원소는 반드시 실수여야 하므로, 복합 회전의 네 번째 실 회전이 수행될 필요가 없다. 이어서 제어가 단계(1620)로 진행되고, 여기서 특이-값 분해가 반복(interation)에 의해 수행된다(예, 다음의 Charlier 등의 접근법). 이후에 제어가 단계(1630)로 진행되고, 이 단계에서 특이-값 분해의 좌우 단위 행렬(U, V)이 재구성되며, 제어는 단계(1640)로 진행된다. 복조된(decoded) 신호가 VH와 곱해지고, 각 입력이 대응하는 특이-값으로 나뉜다. 이러한 나눗셈은 선형 모드에서 동작하는 CORDIC에 의해 구현될 수 있다. 이어서 제어가 단계(1650)로 진행되고, 수신기 측의 계산 시나리오가 종료된다.
본 발명이 위에 설명된 구체적인 실시예와 함께 기술되었으나, 본 발명이 속하는 분야의 당업자는 많은 대안적인 예, 변형예를 생각할 수 있음이 분명하다. 따라서, 본 발명의 다양한 실시예는 위에 설명한 바와 같이, 예시를 위한 것이며, 본 발명의 범위를 제한하고자 하는 것이 아니다. 본 발명의 사상 및 범위를 벗어나지 않는 한 다양한 변경이 가능하다.
예를 들어, 이전에 설명한 바와 같이 본 발명의 하나 이상의 실시예에 따르면, QR 분해가 그램-슈미트 직교화, 기븐스 분해 및/또는 하우스홀더 리플렉션을 이용하여 수행될 수 있다. 기븐스 회전 및 하우스홀더 리플렉션 구현 방식이 위에 설명되었으나, 그램-슈미트 직교화를 사용하는 대안이 본 발명의 실시예에 따라 구현될 수도 있다.
통상적인 그램-슈미트 직교화는 단위 행렬(Q)의 칼럼(q1, q2, ... qm)을 구성하고, 칼럼(a1, a2, ..., an)의 연속적인 직교화에 의해 삼각 행렬(R)의 입력 rij를 구성한다. 이는 반복적인 프로세스로, 각 연산에서 q1, q2, ... qj-1에 직교하는 벡터
Figure 112009021312934-PCT00040
가 얻어진다.
그러나, 그램-슈미트 알고리즘은 일부의 경우에, 행렬(A)가 계수 부 족(rank0deficient)에 가까울 때, 직교와 거리가 먼 벡터(즉, 행렬(Q)의 칼럼)를 생성한다(참조, Kublanovskaya의 상기 문헌). 또한, 그램-슈미트 알고리즘이 나누기(division)에 의존하는 반면, 멀티스레스 프로세서는 표준 명령 세트 내에서 나눗셈을 지원하지 않는다. 따라서, 나눗셈이 선형 모드(참조: Sebot 등의 상기 문헌)에서 동작하는 CORDIC을 에뮬레이션할 수 있으나, 그램-슈미트 구현을 통해 제공된 정확성이 CORDIC 에뮬레이션(emulation)에 의해 나눗셈에 대해 16 비트로 제한된다(참조, Gene H. Goub 및 Charles F. van Loan, Matrix Computation, The Johns Hopkins University Press, 2715 North Charles Street, Baltimore, Maryland 21218-4363, 3rd edition, 1996). 이러한 제한은 행렬 삼각화(triangularization)와 같은 작업에 대해 심각한 결여를 유발할 수 있다. 그러나, 일부의 경우에, 그램-슈미트 분해만으로 충분하다.
추가로, 용어 "멀티-스레드 프로세서"는 SIMD, VLIW 및 멀티-스레딩 성능의 디지털 시그널 프로세서는 어느 것이든 포함할 수 있다.
나아가, 본 발명의 다양한 실시예에 따라 다양하게 설명된 컴포넌트와 함께 설명된 기능성은 본 발명의 구조가 이 명세서에 포함된 것과 다소 다른 방식으로 결합되거나 서로 분리될 수 있음은 자명하다. 그리고, 다르게 특정되지 않았다면, 방법론적 동작(또는 연산)이 표현된 순서로 수행되는 것은 핵심적인 조건이 아니며, 따라서 본 발명이 속하는 분야의 당업자는 일부 동작이 하나 이상의 대안적인 순서로 또는 동시에 수행될 수 있다는 것을 알 수 있다.
또한, 하나 이상의 실시예가 CORDIC 접근법을 사용하는 것을 설명되었으나, 하드웨어 곱셈기(multiplier)가 사용될 경우(예, 디지털 시그널 프로세싱 마이크로프로세서에서), 테이블-검색 방법 및 파워 시리즈가 CORDIC보다 더 빠르다. 따라서, 다양한 다른 접근법이 CORDIC 접근법을 대신하여 본 발명의 실시예에 따라 사용될 수 있다.
다양한 실시예의 용법이 개선 사항과 연관하여 설명되었으나, 각 정보가 개선 사항에만 한정되는 것이 아니라 개선 사항이 아닌 것을 더 포함하거나, 개선 사항이 아닌 것으로 대체될 수 있다.
결과적으로, 설명된 실시예는 단지 예시일 뿐이며 이하에 첨부된 청구항에 정의된 바와 같이 본 발명의 범위 내에서 다양한 변경이 이루어질 수 있음이 명확하다.

Claims (24)

  1. 무선 통신 장치 내 디지털 시그널 프로세서에 있어서, 상기 디지털 시그널 프로세서는:
    벡터 유닛;
    상기 벡터 유닛에 연결되며 접속가능한 제 1 레지스터 및 제 2 레지스터; 그리고
    상기 벡터 유닛과 상기 제 1 및 제 2 레지스터를 사용하여, 좌표 회전 디지털 컴퓨터 명령에 의해 채널 값 행렬의 역행렬 연산을 수행하도록 구성된 명령 세트
    를 포함하는 것을 특징으로 하는 디지털 시그널 프로세서.
  2. 제 1 항에 있어서,
    상기 디지털 시그널 프로세서는 단일 명령 다중 데이터 프로세서인 것을 특징으로 하는 디지털 시그널 프로세서.
  3. 제 1 항에 있어서,
    상기 명령 세트는 x 및 y 좌표와 각(angle) z의 데이터 및 반복 카운터 n을 상기 제 1 및 제 2 레지스터로부터 판독하는 명령을 포함하는 것을 특징으로 하는 디지털 시그널 프로세서.
  4. 제 1 항에 있어서,
    상기 명령 세트는 네 개의 실행 중에 네 개의 덧셈 및 네 개의 시프트를 수행하고, x 및 y 좌표와 각 z의 데이터 및 반복 카운터 n의 결과값을 상기 제 1 및 제 2 레지스터 기입하는 명령을 포함하는 것을 특징으로 하는 디지털 시그널 프로세서.
  5. 제 1 항에 있어서,
    상기 명령 세트는 회전 모드를 가지는 명령을 포함하고, 상기 제 1 레지스터는 x 및 y 좌표를 포함하며, 상기 제 2 레지스터는 각 z의 데이터 및 반복 카운터 n을 포함하는 것을 특징으로 하는 디지털 시그널 프로세서.
  6. 제 1 항에 있어서,
    상기 명령 세트는 벡터 모드를 가지는 명령을 포함하고, 상기 제 1 레지스터는 x 좌표 및 각 z의 데이터를 포함하며, 상기 제 2 레지스터는 y 좌표 및 반복 카운터 n을 포함하는 것을 특징으로 하는 디지털 시그널 프로세서.
  7. 제 1 항에 있어서,
    상기 명령 세트는 행렬의 기븐스 회전(Givens rotaion)을 수행하는 명령을 포함하는 것을 특징으로 하는 디지털 시그널 프로세서.
  8. 제 1 항에 있어서,
    상기 프로세서는 멀티-스레드, VLIW (Very Long Instruction Word) 프로세서이며, 명령은 멀티-스레딩(multi-threading)을 사용하는 것을 특징으로 하는 디지털 시그널 프로세서.
  9. 제 1 항에 있어서, 상기 제 1 및 제 2 레지스터가 레지스터 파일 내에 존재하는 것을 특징으로 하는 디지털 시그널 프로세서.
  10. 제 1 항에 있어서,
    상기 명령 세트는 상기 제 1 및 제 2 레지스터를 판독하고 좌표 회전 디지털 컴퓨터 프로세스를 수행하며, 상기 제 2 레지스터에 프로세스 결과를 기입하는 일련의 동작을 포함하는 단일 연산을 위한 명령을 포함하는 것을 특징으로 하는 디지털 시그널 프로세서.
  11. 제 10 항에 있어서,
    상기 명령 세트는 상기 좌표 회전 디지털 컴퓨터 프로세스의 회전 모드에 대한 연산을 먼저 수행하고 벡터 모드에 대한 연산을 다음으로 수행하는 명령을 포함하는 것을 특징으로 하는 디지털 시그널 프로세서.
  12. 제 1 항에 있어서,
    상기 명령 세트는 상기 제 1 및 제 2 레지스터를 판독하고, 상기 좌표 회전 디지털 컴퓨터 프로세스를 수행하며, 상기 제 1 레지스터에 결과를 기입하는 일련의 동작을 포함하는 단일 연산을 위한 명령을 포함하는 것을 특징으로 하는 디지털 시그널 프로세서.
  13. 제 12 항에 있어서,
    상기 명령 세트는 상기 좌표 회전 디지털 컴퓨터 프로세스의 회전 모드에 대한 연산을 먼저 수행하고, 벡터 모드에 대한 연산을 다음으로 수행하는 명령을 포함하는 것을 특징으로 하는 디지털 시그널 프로세서.
  14. 제 1 항에 있어서,
    상기 제 1 레지스터는 레지스터 파일에 존재하고 상기 젠 2 레지스터는 상기 벡터 유닛에 존재하는 것을 특징으로 하는 디지털 시그널 프로세서.
  15. 제 14 항에 있어서,
    상기 명령 세트는 상기 제 1 및 제 2 레지스터를 판독하고, 상기 좌표 회전 디지털 컴퓨터 프로세스를 수행하며, 상기 제 1 및 제 2 레지스터에 결과를 기입하는 일련의 동작을 포함하는 명령을 포함하는 것을 특징으로 하는 디지털 시그널 프로세서.
  16. 제 1 항에 있어서,
    상기 행렬 채널 값은 상기 명령에 의한 추가 처리를 위해 단일-입력 단일-출력 값으로 변환되기 위해 수신된 다중-입력 다중-출력 값인 것을 특징으로 하는 디지털 시그널 프로세서.
  17. 무선 통신 장치 내 채널 값 행렬의 역행렬 연산을 수행하기 위한 프로세스에 있어서, 상기 프로세스는:
    벡터 유닛을 포함하는 프로세서를 제공하는 단계; 그리고
    상기 벡터 유닛은 프로세서에 포함된 제 1 레지스터와 제 2 레지스터를 판독하고 상기 제 1 및 제 2 레지스터에 기입하는 단계 포함하되,
    상기 채널 값 행렬의 역행렬 연산은 상기 벡터 유닛과 상기 제 1 및 제 2 레지스터를 사용하는 좌표 회전 디지털 컴퓨터 명령에 의해, 그리고 상기 제 1 및 제 2 레지스터를 판독하고, 좌표 회전 디지털 컴퓨터 프로세스를 수행하며, 상기 제 1 및 제 2 레지스터로 상기 프로세스의 결괏값을 기입하는 명령에 의해 수행되는 것을 특징으로 하는 프로세스.
  18. 제 17 항에 있어서,
    상기 좌표 회전 디지털 컴퓨터 명령은 x 및 y 좌표, 각 z의 데이터, 그리고 반복 카운터 n을 상기 제 1 및 제 2 레지스터로부터 판독하는 명령을 포함하는 것 을 특징으로 하는 프로세스.
  19. 상기 제 17 항에 있어서,
    상기 좌표 회전 디지털 컴퓨터 명령은 네 개의 실행 중에 네 개의 덧셈 및 네 개의 시프트를 수행하고, x 및 y 좌표와 각 z의 데이터 및 반복 카운터 n의 결괏값을 상기 제 1 및 제 2 레지스터 기입하는 명령을 포함하는 것을 특징으로 하는 프로세스.
  20. 제 17 항에 있어서,
    상기 좌표 회전 디지털 컴퓨터 명령은 회전 모드를 가지는 명령을 포함하고, 상기 제 1 레지스터는 x 및 y 좌표를 포함하며, 상기 제 2 레지스터는 각 z의 데이터 및 반복 카운터 n을 포함하는 것을 특징으로 하는 프로세스.
  21. 제 17 항에 있어서,
    상기 좌표 회전 디지털 컴퓨터 명령은 벡터 모드를 가지는 명령을 포함하고, 상기 제 1 레지스터는 x 좌표 및 각 z의 데이터를 포함하며, 상기 제 2 레지스터는 y 좌표 및 반복 카운터 n을 포함하는 것을 특징으로 하는 프로세스.
  22. 제 17 항에 있어서,
    상기 좌표 회전 디지털 컴퓨터 명령은 상기 행렬의 기븐스 회전을 수행하는 명령을 포함하는 것을 특징으로 하는 프로세스.
  23. 제 17 항에 있어서,
    상기 좌표 회전 디지털 컴퓨터 명령은, 상기 제 1 및 제 2 레지스터를 판독하고, 좌표 회전 디지털 컴퓨터 프로세스를 수행하며, 상기 2 레지스터에 프로세스 결과를 기입하거나 또는, 상기 제 1 및 제 2 레지스터를 판독하고, 상기 좌표 회전 디지털 컴퓨터 프로세스를 수행하며, 상기 제 1 레지스터에 프로세스 결과를 기입하는 일련의 동작을 포함하는 단일 연산을 위한 명령을 포함하는 것을 특징으로 하는 프로세스.
  24. 제 23 항에 있어서,
    상기 명령 세트는 상기 좌표 회전 디지털 컴퓨터 프로세스의 회전 모드에 대한 연산을 먼저 수행하고, 벡터 모드에 대한 연산을 그 다음에 수행하는 것을 특징으로 하는 프로세스.
KR1020097007268A 2006-09-26 2007-09-24 무선 통신 시스템에서 매트릭스 변환 소프트웨어 구현을 위한 장치 및 방법 KR20090078790A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US82700206P 2006-09-26 2006-09-26
US60/827,002 2006-09-26

Publications (1)

Publication Number Publication Date
KR20090078790A true KR20090078790A (ko) 2009-07-20

Family

ID=39492902

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097007268A KR20090078790A (ko) 2006-09-26 2007-09-24 무선 통신 시스템에서 매트릭스 변환 소프트웨어 구현을 위한 장치 및 방법

Country Status (4)

Country Link
US (1) US8819099B2 (ko)
EP (1) EP2069947A4 (ko)
KR (1) KR20090078790A (ko)
WO (1) WO2008070250A2 (ko)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008060948A2 (en) * 2006-11-10 2008-05-22 Sandbridge Technologies, Inc. Method and system for parallelization of pipelined computations
US8572150B1 (en) * 2007-10-05 2013-10-29 Xilinx, Inc. Parameterization of a CORDIC algorithm for providing a CORDIC engine
EP2602710A1 (en) * 2007-11-05 2013-06-12 Aspen Acquisition Corporation Method of encoding register instruction fields
EP2250539A1 (en) 2008-01-30 2010-11-17 Sandbridge Technologies, Inc. Method for enabling multi-processor synchronization
EP2245529A1 (en) * 2008-02-18 2010-11-03 Sandbridge Technologies, Inc. Method to accelerate null-terminated string operations
KR20100133964A (ko) * 2008-03-13 2010-12-22 아스펜 액퀴지션 코포레이션 유효 어레이를 비활성화함으로써 전력을 절약하기 위한 방법
US8243100B2 (en) * 2008-06-26 2012-08-14 Qualcomm Incorporated System and method to perform fast rotation operations
JP2011530744A (ja) 2008-08-06 2011-12-22 アスペン・アクイジション・コーポレーション 停止可能および再始動可能dmaエンジン
US8447799B2 (en) * 2008-12-02 2013-05-21 Redpine Signals, Inc. Process for QR transformation using a CORDIC processor
US8452830B2 (en) * 2008-12-03 2013-05-28 Redpine Signals, Inc. Programmable CORDIC processor with stage re-use
TWI376633B (en) * 2008-12-19 2012-11-11 Ind Tech Res Inst Method of cordic computing vector angle and electronic apparatus using the same
US9318813B2 (en) * 2009-05-22 2016-04-19 Maxlinear, Inc. Signal processing block for a receiver in wireless communication
US8670508B2 (en) 2010-05-28 2014-03-11 Maxlinear, Inc. Method and system for a low-complexity soft-output MIMO detection
CN102880594B (zh) * 2012-10-17 2015-11-18 电子科技大学 基于多核dsp的并行矩阵全选主元高斯约旦求逆方法
US9001924B1 (en) * 2013-02-01 2015-04-07 Xilinx, Inc. Matrix inversion
US8711921B1 (en) * 2013-11-27 2014-04-29 Redline Communications, Inc. System and method for multi-threaded MIMO OFDM channel equalizer
US8750365B1 (en) 2013-11-27 2014-06-10 Redline Communications, Inc. System and method for multi-threaded OFDM channel equalizer with coprocessor
US8711920B1 (en) * 2013-11-27 2014-04-29 Redline Communications, Inc. System and method for multi-threaded OFDM channel equalizer
EP3195604B1 (en) * 2014-08-22 2023-07-26 Nova Southeastern University Data adaptive compression and data encryption using kronecker products
US9231674B1 (en) * 2015-02-19 2016-01-05 Winbond Electronics Corp. Method and system for constrained power allocation in the multi-input multi-output systems
US9929884B2 (en) 2015-10-21 2018-03-27 Marvell World Trade Ltd. Systems and methods for detecting data in a received multiple-input-multiple-output (MIMO) signal
CN107315564B (zh) * 2016-04-26 2020-07-17 中科寒武纪科技股份有限公司 一种用于执行向量超越函数运算的装置和方法
US10168992B1 (en) * 2017-08-08 2019-01-01 Texas Instruments Incorporated Interruptible trigonometric operations
TWI641243B (zh) 2017-10-02 2018-11-11 明泰科技股份有限公司 多天線網路系統及其基地台、伺服器及信號處理方法
CN107861757B (zh) * 2017-11-30 2020-08-25 上海寒武纪信息科技有限公司 运算装置以及相关产品
US10963256B2 (en) * 2018-09-28 2021-03-30 Intel Corporation Systems and methods for performing instructions to transform matrices into row-interleaved format
CN115278746B (zh) * 2022-07-28 2023-03-28 北京邮电大学 面向5g宽带功放的自适应快速误差修正数字预失真方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4950042A (en) 1987-05-12 1990-08-21 Georgia Tech Research Corporation Integrated optical givens rotation device
US5737277A (en) * 1996-08-01 1998-04-07 Western Atlas International, Inc. Method for computing borehole geometry from ultrasonic pulse echo data
US6076154A (en) * 1998-01-16 2000-06-13 U.S. Philips Corporation VLIW processor has different functional units operating on commands of different widths
US7376175B2 (en) 2001-03-14 2008-05-20 Mercury Computer Systems, Inc. Wireless communications systems and methods for cache enabled multiple processor based multiple user detection
US6968445B2 (en) 2001-12-20 2005-11-22 Sandbridge Technologies, Inc. Multithreaded processor with efficient processing for convergence device applications
US6990557B2 (en) 2002-06-04 2006-01-24 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with cache eviction based on thread identifier
US6912623B2 (en) 2002-06-04 2005-06-28 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy
US6992503B2 (en) * 2002-07-08 2006-01-31 Viciciv Technology Programmable devices with convertibility to customizable devices
US6842848B2 (en) 2002-10-11 2005-01-11 Sandbridge Technologies, Inc. Method and apparatus for token triggered multithreading
US6904511B2 (en) 2002-10-11 2005-06-07 Sandbridge Technologies, Inc. Method and apparatus for register file port reduction in a multithreaded processor
US6925643B2 (en) 2002-10-11 2005-08-02 Sandbridge Technologies, Inc. Method and apparatus for thread-based memory access in a multithreaded processor
US6971103B2 (en) 2002-10-15 2005-11-29 Sandbridge Technologies, Inc. Inter-thread communications using shared interrupt register
KR101005718B1 (ko) 2003-05-09 2011-01-10 샌드브리지 테크놀로지스, 인코포레이티드 포화와 함께 또는 포화 없이 다중 오퍼랜드들의 누산을 위한 프로세서 감소 유닛
US7428567B2 (en) 2003-07-23 2008-09-23 Sandbridge Technologies, Inc. Arithmetic unit for addition or subtraction with preliminary saturation detection
US7251737B2 (en) 2003-10-31 2007-07-31 Sandbridge Technologies, Inc. Convergence device with dynamic program throttling that replaces noncritical programs with alternate capacity programs based on power indicator
US8169889B2 (en) * 2004-02-18 2012-05-01 Qualcomm Incorporated Transmit diversity and spatial spreading for an OFDM-based multi-antenna communication system
US8074051B2 (en) 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
US7797363B2 (en) 2004-04-07 2010-09-14 Sandbridge Technologies, Inc. Processor having parallel vector multiply and reduce operations with sequential semantics
US7475222B2 (en) 2004-04-07 2009-01-06 Sandbridge Technologies, Inc. Multi-threaded processor having compound instruction and operation formats
TW200625097A (en) 2004-11-17 2006-07-16 Sandbridge Technologies Inc Data file storing multiple date types with controlled data access
US7685219B2 (en) * 2006-03-31 2010-03-23 Intel Corporation Parallel systolic CORDIC algorithm with reduced latency for unitary transform of complex matrices and application to MIMO detection

Also Published As

Publication number Publication date
WO2008070250A3 (en) 2008-07-31
US8819099B2 (en) 2014-08-26
WO2008070250A2 (en) 2008-06-12
US20100293210A1 (en) 2010-11-18
EP2069947A2 (en) 2009-06-17
WO2008070250A9 (en) 2008-09-12
EP2069947A4 (en) 2013-10-09

Similar Documents

Publication Publication Date Title
US8819099B2 (en) Software implementation of matrix inversion in a wireless communication system
US9647731B2 (en) Reconfigurable network on a chip (NoC) radio through reduced instruction set computer (RISC) agents by overwriting program store for different phases of demodulation
Chen et al. FLEXDET: flexible, efficient multi-mode MIMO detection using reconfigurable ASIP
Chen et al. Flexible, efficient multimode MIMO detection by using reconfigurable ASIP
Guenther et al. A scalable, multimode SVD precoding ASIC based on the cyclic Jacobi method
Singh et al. Fftw and complex ambiguity function performance on the maestro processor
Edman Digital hardware aspects of multiantenna algorithms
Chen et al. The VLSI architecture and implementation of a low complexity and highly efficient configurable SVD processor for MIMO communication systems
Sima et al. Software solutions for converting a MIMO-OFDM channel into multiple SISO-OFDM channels
WO2022061788A1 (en) Versatile systolic array for maximum likelihood mimo detectors
Chen et al. Design space exploration of SDR vector processor for 5G micro base stations
Schulte et al. A low-power multithreaded processor for baseband communication systems
Mohammed et al. A MIMO decoder accelerator for next generation wireless communications
Senthilvelan et al. Instruction set extensions for matrix decompositions on software defined radio architectures
Sarrigeorgidis et al. Ultra low power cordic processor for wireless communication algorithms
Novo et al. Energy-performance exploration of a CGA-based SDR processor
Gilani et al. Virtual floating-point units for low-power embedded processors
Wang et al. SAM: A Scalable Accelerator for Number Theoretic Transform Using Multi-Dimensional Decomposition
Rajeshwari et al. MIMO receiver and decoder using vector processor
Vocke An evaluation of the Adapteva Epiphany Many-core architecture
Jiang et al. An FFT Accelerator Using Deeply-coupled RISC-V Instruction Set Extension for Arbitrary Number of Points
Digeser et al. Instruction set extension in the NIOS II: A floating point divider for complex numbers
Sima et al. Embedded reconfigurable solution for OFDM detection over fast fading radio channels
Venkataramani et al. The DASH SoC: Enabling the Next Generation of Multi-Function RF Systems
US20230297538A1 (en) Programmable Spatial Array for Matrix Decomposition

Legal Events

Date Code Title Description
N234 Change of applicant [patent]: notification of change of applicant and registration of full transfer of right
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E902 Notification of reason for refusal