KR20080042837A - 복소 벡터 명령을 실행하도록 구성된 클러스터된 simd마이크로아키텍쳐를 포함하는 프로그램 가능한 디지털 신호프로세서 - Google Patents

복소 벡터 명령을 실행하도록 구성된 클러스터된 simd마이크로아키텍쳐를 포함하는 프로그램 가능한 디지털 신호프로세서 Download PDF

Info

Publication number
KR20080042837A
KR20080042837A KR1020087004042A KR20087004042A KR20080042837A KR 20080042837 A KR20080042837 A KR 20080042837A KR 1020087004042 A KR1020087004042 A KR 1020087004042A KR 20087004042 A KR20087004042 A KR 20087004042A KR 20080042837 A KR20080042837 A KR 20080042837A
Authority
KR
South Korea
Prior art keywords
complex
unit
vector
units
execute
Prior art date
Application number
KR1020087004042A
Other languages
English (en)
Other versions
KR101394573B1 (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 KR20080042837A publication Critical patent/KR20080042837A/ko
Application granted granted Critical
Publication of KR101394573B1 publication Critical patent/KR101394573B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8092Array of vector 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/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/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/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/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Multimedia (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

클러스터된 SIMD 마이크로아키텍쳐를 포함하는 프로그램 가능한 디지털 신호 프로세서는 복수의 액셀러레이터 유닛, 프로세서 코어 및 복소 계산유닛을 포함한다. 각각의 액셀러레이터 유닛은 하나 이상의 전용 기능을 실행하도록 구성될 수 있다. 프로세서 코어는 정수 명령들을 실행하도록 구성될 수 있는 정수 실행유닛을 포함한다. 복소 계산유닛은 복소 벡터 명령을 실행하도록 구성될 수 있다. 복소 계산유닛은 제 1 및 제 2의 클러스터된 실행 파이프라인을 포함할 수 있다. 제 1의 클러스터된 실행 파이프라인은 제 1 복소 벡터 명령을 실행하도록 구성된 하나 이상의 복소 산술 논리유닛 데이터경로를 포함할 수 있다. 제 2의 클러스터된 실행 파이프라인은 제 2 복소 벡터 명령을 실행하도록 구성된 하나 이상의 복소 승산기 누산기 데이터경로를 포함할 수 있다.

Description

복소 벡터 명령을 실행하도록 구성된 클러스터된 SIMD 마이크로아키텍쳐를 포함하는 프로그램 가능한 디지털 신호 프로세서{PROGRAMMABLE DIGITAL SIGNAL PROCESSOR INCLUDING A CLUSTERED SIMD MICROARCHITECTURE CONFIGURED TO EXECUTE COMPLEX VECTOR INSTRUCTIONS}
본 발명은 디지털 신호 프로세서에 관한 것으로, 더욱 상세하게는 프로그램 가능한 디지털 신호 프로세서 마이크로아키텍쳐에 관한 것이다.
비교적 짧은 기간에, 무선 장치 특히, 이동 전화의 사용이 급격히 증가해왔다. 이러한 무선 장치의 전 세계적인 확산은 다수의 최신 라디오 표준과 무선 제품의 집중을 유발해 왔다. 이것은 차례로 소프트웨어 정의 라디오(SDR)에 대한 관심의 증가를 유발해 왔다.
SDR 포럼(forum)에 의해 기술된 바와 같은, SDR은 "무선 네트워크와 사용자 단말의 재구성 가능한 시스템 아키텍쳐를 가능하게 하는 하드웨어와 소프트웨어 기술의 집합이다. SDR은 소프트웨어 업그레이드를 사용하여 향상될 수 있는 다중 모드, 다중 대역, 다기능 무선 장치를 제작하는 문제점에 대한 효율적이고 비교적 고가의 해법을 제공한다. 상기한 바와 같이, SDR은 무선 산업 내에서의 광범위한 범위에 걸쳐 적용 가능한 인에이블링 기술로 고려될 수 있다."
다수의 무선통신 장치는 하나 이상의 디지털 신호 프로세서(DSP)를 포함하는 무선 트랜스시버(radio transceiver)를 사용한다. 무선 트랜스시버에 사용되는 DSP의 한 형태는, 수신된 무선 신호의 처리 및 송신용 신호의 준비와 관련된 다수의 신호 처리 기능을 다룰 수 있는 기저대역 프로세서(BBP)이다. 예컨대, BBP는 채널 부호화 및 동기화 기능뿐만 아니라, 변조 및 복조를 제공할 수 있다.
다수의 종래의 BBP는 단일의 무선 표준을 지지할 수 있는 주문형 반도체(ASIC) 장치로서 수행된다. 여러 경우에, ASIC BBP는 뛰어난 성능을 제공할 수 있다. 그러나, ASIC 해법은 온-칩 하드웨어가 설계되었던 무선 표준 내에서만 작용하도록 제한될 수 있다.
SDR 해법을 제공하기 위해, 무선 기저대역 프로세서에는 시판할 시간, 가격 및 제품 수명에 대한 요건을 충족하도록 증가된 신축성이 필요할 수 있다. 무선 근거리 통신망(LAN), 3/4세대 이동 전화기 및 디지털 비디오 방송과 같은 애플리케이션을 요구하는 요건을 다루기 위해, 기저대역 프로세서에 고도의 병렬 계산이 요구될 수 있다.
그 목적을 위해, 일반적으로 매우 복잡하고 훨씬 긴 명령어(VLIW) 및/또는 복수의 프로세서 코어 머신을 기초로 하는 다양한 프로그램 가능한 BBP(PBBP) 해법이 제안되어 왔다. 이들 종래의 PBBP 해법은 종종, 증가된 다이 면적(dia area)과 그들의 ASIC 대응측과 비교될 때 어떻게 해서든 제한된 성능과 같은 결점을 갖는다. 따라서, 다수의 상이한 변조 기술, 대역폭 및 이동성 요건을 지원할 수 있고, 수용 가능한 영역 및 전력 소비를 갖는 프로그램 가능한 DSP 아키텍쳐를 갖는 것이 바람직하다.
클러스터된 SIMD 마이크로아키텍쳐를 포함하는 프로그램 가능한 디지털 신호 프로세서의 다양한 실시예가 개시된다. 일 실시예에서, 디지털 신호 프로세서는 복수의 액셀러레이터 유닛, 프로세서 코어 및 복소 계산유닛을 포함한다. 각각의 액셀러레이터 유닛은 하나 이상의 전용 기능을 실행하도록 구성될 수 있다. 프로세서 코어는 정수 명령들을 실행하도록 구성될 수 있는 정수 실행유닛을 포함한다. 복소 계산유닛은 복소 벡터 명령을 실행하도록 구성될 수 있다. 복소 계산유닛은 제 1 및 제 2의 클러스터된 실행 파이프라인을 포함할 수 있다. 제 1의 클러스터된 실행 파이프라인은 제 1 복소 벡터 명령을 실행하도록 구성된 하나 이상의 복소 산술 논리유닛 데이터경로를 포함할 수 있다. 제 2의 클러스터된 실행 파이프라인은 제 2 복소 벡터 명령을 실행하도록 구성된 하나 이상의 복소 승산기 누산기 데이터경로를 포함할 수 있다.
하나의 특정 실시에서, 크러스터된 실행 파이프라인 내의 각각의 데이터경로는 모든 데이터를 복소값 데이터로서 고유적으로 해석하도록 구성될 수 있다.
다른 특정 실시에서, 할당된 클러스터된 실행 파이프라인 내의 각각의 데이터경로는 벡터 명령의 일부인 하나의 복소 연산을 매 클록 사이클마다 실행할 수 있다. 또한, 정수 실행유닛은 제 1 및 제 2의 클러스터된 실행 파이프라인 내의 데이터경로 중의 하나에 의해 실행된 복소 벡터 명령의 실행과 함께 클록 사이클당 하나의 명령을 실행할 수 있다.
또 다른 특정 실시에서, 복소 계산유닛은 단일 명령 복수 데이터(SIMD) 명령들을 실행할 수 있다.
도 1은 프로그램 가능한 기저대역 프로세서를 포함하는 다중모드 무선통신 장치의 일 실시예의 블록도이다.
도 2는 도 1의 프로그램 가능한 기저대역 프로세서의 일 실시예의 블록도이다.
도 3은 도 2의 프로그램 가능한 기저대역 프로세서의 일 실시예의 명령 발행 파이프라인을 예시하는 도면이다.
도 4는 도 2의 프로그램 가능한 기저대역 프로세서의 일 실시예의 더 상세한 양태를 예시하는 도면이다.
도 5는 도 2의 프로세서 코어의 클러스터된 SIMD 제어 경로의 일 실시예의 더 상세한 양태를 예시하는 도면이다.
도 6은 도 4에 도시된 복소 ALU의 복소 쇼트 MAC 데이터경로의 일 실시예의 도면이다.
도 7은 도 4에 도시된 복소 MAC 유닛의 예시적인 데이터경로의 일 실시예의 도면이다.
본 발명은 여러 가지 변형 및 치환 형태가 가능하지만, 그 특정 실시예가 도면에 예로서 도시되고 여기에 상세히 설명된다. 그러나, 도면 및 그 상세한 설명은 발명을 개시된 특정 형태로 제한하고자 하는 것이 아니라, 반대로 첨부되는 청구 범위에 의해 한정되는 바와 같은 본 발명의 사상 및 범위 내에 있는 모든 변형, 등가 및 치환을 본 발명이 모두 커버하기 위한 것임을 이해해야 한다. 서두는 단지 유기적 구성을 위한 것일 뿐, 설명이나 청구범위를 제한하거나 해석하기 위해 사용되는 것을 의미하지는 않는다. 또한, 본 출원의 전체에 걸쳐 사용되는 단어 "할 수 있다(may)"는 허가의 의미(즉, 잠재적으로는 가능)이지 필수의 의미(즉, 해야 한다(must)는 아니다. 용어 "포함한다"와 그 파생어는 "제한하지 않고 포함하는" 것을 의미한다. 용어 "접속"은 "직접적 또는 간접적 접속"을 의미하고, 용어 "연결"은 "직접적 또는 간접적 연결"을 의미한다.
이제 도 1을 참조하면, 프로그램 가능한 기저대역 프로세서를 포함하는 다중모드 무선통신 장치의 일 실시예의 블록도가 도시되어 있다. 예시된 실시예에서, 기능적 및 하드웨어의 양 관점에서 무선통신 시스템의 기본적인 분할의 일부가 도시되어 있다. 더욱 상세하게, 다중모드 무선통신 장치(100)는 수신 서브시스템(110) 및 송신 서브시스템(120)을 포함하고, 상기 수신 및 송신 서브시스템 각각은 하나 이상의 안테나(125)에 연결되어 있다. 다양한 실시예에서, 다중모드 무선통신 장치는 휴대용 이동 전화기 장치 등일 수 있다. 또한, 숫자와 문자의 양자를 포함하는 참조 표시기를 갖는 구성요소는 적절한 숫자만으로 나타낼 수도 있다.
수신 서브시스템(110)은 안테나(125)와 아날로그-디지털 컨버터(ADC, 140) 사이에 연결되는 RF 프론트 엔드(130)의 일부를 포함한다. ADC(140)는 프로그램 가능한 기저대역 프로세서(PBBP, 145A)에 연결되고, 이것은 차례로 애플리케이션 프 로세서(들)(150)에 연결된다. 송신 서브시스템(120)은 프로그램 가능한 기저대역 프로세서(PBBP, 145B)에 연결된 애플리케이션 프로세서(들)(160)을 포함하고, 이 프로그램 가능한 기저대역 프로세서는 디지털-아날로그 컨버터(DAC, 170)에 연결되어 있다. DAC(170)는 또한 RF 프론트 엔드(130)의 일부에 연결된다. PBBP(145A 및 145B)는 하나의 프로그램 가능한 프로세서로서 수행될 수 있고, 어떤 실시예들에서, 상기 PBBP들은 하나의 집적회로 상에 제조될 수 있다. 또한, 어떤 실시예들에서, ADC(140) 및 DAC(170)는 PBBP(145A)의 부분으로서 수행될 수 있다. 또 다른 실시예들에서, 다중모드 무선통신 장치(100)는 하나의 집적회로 상에 실시될 수 있다.
PBBP(145)는 송신 서브시스템(120)과 수신 서브시스템(110)의 양자에서 많은 기능들을 실행한다. 송신 서브시스템(120) 내에서, PBBP(145B)는 애플리케이션 소스로부터의 데이터를 무선 채널에 적합한 포맷으로 변환할 수 있다. 예를 들면, 송신 서브시스템(120)은 채널 부호화, 디지털 변조 및 심벌 세이핑(symbol shaping)과 같은 기능들을 실행할 수 있다. 채널 부호화는 에러 정정(예컨대, 컨벌루션 부호화) 및 에러 검출(예컨대, 순환 여유 부호(CRC)를 사용)을 위한 상이한 방법들을 사용하는 것을 칭한다. 디지털 변조는 비트 스트림을 복잡한 샘플들의 스트림으로 매핑하는 프로세스를 칭한다. 디지털 변조의 제 1(및 종종 하나의) 단계는 2진 위상 편이 변조(BPSK), 직교 위상 편이 변조(QPSK), 또는 직교 진폭 변조(QAM)와 같이, 비트의 그룹을 특정 신호 배열로 매핑하는 것이다. 비트의 그룹을 무선 신호의 진폭 및 위상으로 매핑하는 여러 가지 방식이 있다. 어떤 경우에는, 제 2 단계, 즉 도메인 번역이 적용될 수 있다. 직교 주파수 분할 다중화(OFDM) 시스템(즉, 정보가 다수의 인접한 주파수를 통해 동시에 전송되는 변조 방법)에서는, 이 단계에 역 고속 푸리에 변환(IFFT)이 사용될 수 있다. 예를 들면, 부호 분할 다중화 액세스(CDMA)와 같은 확산 스펙트럼 시스템(각 활성 사용자에게 개별 "부호"를 할당함으로써 복수의 사용자들이 RF 스펙트럼을 공유할 수 있게 하는 "확산 스펙트럼" 방법)에서는, 각 심벌이 {0, +/- 1} + {0, +/- i}를 포함하는 확산 시퀀스와 승산된다. 최종 단계는 디지털 대역 통과필터를 사용하여 구형파를 대역 제한 신호로 변환하는 심벌 세이핑이다. 채널 부호화 및 매핑 기능은 일반적으로 (워드 레벨로가 아니라) 비트 레벨로 동작하기 때문에, 그 기능들은 일반적으로 프로그램 가능한 프로세서에서 수행하기에는 적합하지 않다. 그러나, 이하에 더욱 상세히 설명되는 바와 같이, PBBP(145)의 다양한 실시예에서는, 이들 기능 등은 하나 이상의 전용 하드웨어 액셀러레이터를 사용하여 수행될 수 있다.
PBBP(145)는 동기화, 채널 등화, 복조 및 순방향 에러 정정과 같은 기능들을 실행할 수 있다. 예를 들어, 수신 서브시스템(110)은 왜곡된 아날로그 기저대역 신호로부터 심벌들을 복구하여, 그들을 애플리케이션 프로세서(들)(150)에서 실행하는 애플리케이션에 대해 수용가능한 비트 에러 레이트(BER)를 갖는 비트 스트림으로 해석할 수 있다.
동기화는 여러 단계로 분리될 수 있다. 제 1 단계는 종종 "에너지 검출"이라고 하는 인입 신호 또는 프레임을 검출하는 단계를 포함할 수 이따. 이와 관련하여, 안테나 선택 및 이득 제어와 같은 동작이 실행될 수도 있다. 후속 단계는 인입 심벌의 정확한 타이밍을 찾기 위한 심벌 동기화이다. 이상의 모든 동작들은 일반적으로 복소 자기 또는 교차 상관을 기초로 한다.
많은 경우에, 수신 서브시스템(110)은 무선 채널에서의 결함에 대한 어떤 종류의 보상을 실행하는 것이 필요하다. 이 보상은 채널 등화라고 알려져 있다. OFDM 시스템에서, 채널 등화는 고속 푸리에 변환(FFT)을 실행한 후 각 서브-케리어(sub-carrier)의 간단한 스케일링 및 회전을 수반할 수 있다. CDMA 시스템에서, "레이크(rake)" 수신기는 종종 복수의 신호 경로로부터의 인입 신호를 상이한 경로 지연과 조합하는데 사용된다. 어떤 시스템에서는, 최소 평균 제곱(LMS) 적응형 필터가 사용될 수도 있다. 동기화와 유사하게, 채널 추정 및 등화에 수반되는 대부분의 동작은 컨벌루션 기반 알고리즘을 채용할 수 있다. 이들 알고리즘은 일반적으로 동일한 고정 하드웨어를 공유하기에 충분히 유사하지 않다. 그러나, 이들 알고리즘은 PBBP(145)와 같은 프로그램 가능한 DSP 프로세서에서 효율적으로 수행될 수 있다.
복조는 변조의 반대 동작으로 생각될 수 있다. 복조는 일반적으로 OFDM 시스템에서는 FFT의 실행을, 그리고 DSSS/CDMA 시스템에서는 확산 시퀀스의 상관 또는 "역확산(de-spread)"의 실행을 수반한다. 복조의 최종 단계는 신호 배열에 따라 복소 심벌을 비트로 변환하는 것일 수 있다. 채널 부호화와 유사하게, 디인터리빙(de-interleaving) 및 채널 복호화는 펌웨어 수행에 적합하지 않을 수 있다. 그러나, 이하에 더욱 상세히 설명되는 바와 같이, 컨벌루션 부호에 사용될 수 있는 비터비 또는 터보 복호화는 하나 이상의 하드웨어 액셀러레이터로서 수행될 수 있는 매우 요구되는 기능들이다.
프로그램 가능한 기저대역 프로세서 아키텍쳐
도 2는 도 1의 프로그램 가능한 기저대역 프로세서의 일 실시예의 블록도를 도시한다. PBBP(145)는 동적인 재구성 능력을 제공함으로써 복수의 동작 모드(즉, 프리앰블 수신, 페이로드 수신 및 송신)와 상이한 데이터 레이트를 갖는 상이한 무선 표준을 지원할 수 있다. 원하는 재구성능력을 얻기 위해, PBBP(145)의 여러 가지 실시예들은 내부 네트워크를 사용하여 프로세서 코어, 복수의 메모리유닛 및 다양한 하드웨어 액셀러레이터 사이의 상호 접속을 제어함으로써 DSP 흐름을 관리하는 중앙 프로세서 코어를 포함할 수 있다.
도 2를 참조하면, PBBP(145)는 프로세서 코어(146) 및 복소 계산유닛(290)을 포함한다. PBBP(145)는 또한 0 내지 n이 표시된 복수의 데이터 메모리유닛을 포함하며, 여기에서 n은 임의의 수일 수 있다. PBBP(145)는 또한 0 내지 m이 표시된 복수의 하드웨어 액셀러레이터를 포함하며, 여기에서 m은 임의의 수일 수 있다. 또한, PBBP(145)는 프로세서 코어(146) 및 복소 계산유닛(290)과, 각각의 데이터 메모리 및 액셀러레이터의 사이에 연결되어 있는 네트워크 상호 접속부(250)를 포함한다. 또, PBBP(145)는 각각 220 및 215로 표시된 정수 및 계수 메모리유닛을 포함하고, 그 각각은 네트워크 상호 접속부(250)를 통해 프로세서 코어(146) 및 복소 계산유닛(290)에 연결되어 있다. 마지막으로, PBBP(145)는 예컨대 애플리케이션 프로세서(150 및 160)와 같은 호스트/MAC 프로세서와 네트워크 상호 접속부(250) 사이에 연결되어 있는 매체 액세스 계층(MAC) 인터페이스 유닛(225)을 포함한다.
예시된 실시예에서, 프로세서 코어(146)는 제어 레지스터(CR, 265)에, 그리고 네트워크 상호 접속부(250)에 연결되어 있는 정수 실행유닛(260)을 포함한다. 정수 실행유닛(260)은 산술 논리 유닛(ALU, 261), 승산기 누산기 유닛(MAC, 262) 및 한 세트의 레지스터 파일(RF, 263)을 포함한다. 일 실시예에서, 정수 실행유닛(260)은 예컨대 16 비트 정수 명령을 실행하도록 구성된 축소 명령 세트 제어기(RISC)로서 기능할 수 있다. 다른 실시예에서, 정수 실행유닛(260)은 예컨대 8 비트 또는 32 비트 명령과 같은 상이한 크기의 정수 명령을 실행하도록 구성될 수 있다.
다양한 실시예에서, 복소 계산유닛(290)은 복수의 클러스터된 단일 명령 복수 데이터(SIMD) 실행 파이프라인을 포함할 수 있다. 따라서, 도 2에 예시된 실시예에서, 복소 계산유닛(290)은 SIMD 클러스터 파이프라인(295A) 및 SIMD 클러스터 파이프라인(295B)을 포함한다. SIMD 클러스터 파이프라인(295A)은 복소 승산기 누산기(CMAC) 유닛(270) 및 상기 복소 승산 누산기 유닛(270)에 연결된 벡터 제어기(275A)를 포함한다. 또한, SIMD 클러스터 파이프라인(295A)은 CMAC(270)에 각각 연결된 벡터 로드유닛(VLU, 284A)과 벡터 저장유닛(VSU, 283A)을 포함한다. SIMD 클러스터 파이프라인(295B)은 벡터 제어기(275B)에 연결된 복소 산술 논리유닛(CALU, 280)을 포함한다. SIMD 클러스터 파이프라인(295B)은 CALU(280)에 각각 연결된 VSU(283B)와 VLU(284B)를 더 포함한다.
예시된 실시예에서, CALU(280)는 복소 쇼트 승산기 누산기(CSMAC)(도 4에 도시됨)를 각각 갖는 4개의 독립된 데이터경로를 포함할 수 있는 4개의 복소 ALU로 도시되어 있다. 이하에 더욱 상세히 설명되는 바와 같이, CALU(280)는 벡터 명령을 실행할 수 있다. 일 실시예에서, CALU(280)는 복소 벡터 명령을 실행하도록 특히 적합화될 수 있다. 또한, CALU(280)의 각각의 독립된 데이터경로는 복소 벡터 명령을 동시에 실행할 수 있다.
CMAC(270)는 복소수의 벡터에 대한 연산에 최적화될 수 있다. 즉, 일 실시예에서, CMAC(270)는 모든 데이터를 복소 데이터로 해석하도록 구성될 수 있다. 또한, CMAC(270)는 함께 또는 별개로 실행될 수 있는 복수의 데이터경로를 포함할 수 있다. 일 실시예에서, CMAC(270)는 승산기, 가산기 및 누산기 레지스터(도 2에는 모두 도시 생략)를 포함하는 4개의 복소 데이터경로를 포함할 수 있다. 따라서, CMAC(270)는 4방향 CMAC 데이터경로라고 칭해질 수 있다. 승산기 및 가산기에 덧붙여, CMAC(270)는 라운딩 및 스케일링 연산을 실행하고 포화를 지원할 수도 있다. 일 실시예에서, CMAC(270) 연산은 복수의 파이프라인 단계로 분리될 수 있다. 또한, 4개의 복소 데이터경로의 각각은 1 클록 사이클에서 복소 승산 및 누산을 계산할 수 있다. CMAC(270)는 N/4 클록 사이클에서 N 요소의 벡터에 대한 연산(즉, 4개의 데이터 경로가 함께)을 실행하여, 복소 벡터 계산(예컨대, 복소 컨벌루션, 복소 공액 컨벌루션 및 복소 벡터 내적(dot product))을 지원할 수 있다. 또, CMAC(270)는 누산기 레지스터에 저장된 복소값에 대한 연산(예컨대, 복소 가산, 감산, 공액 등)을 지원할 수 있다. 예를 들면, CMAC(270)는 1 클록 사이클에서 (AR+jAI)*(BR+jBI)와 같은 복소 승산과 1 클록 사이클에서 복소 누산을 계산하고, 복소 벡터 계산(예컨대, 복소 컨벌루션, 복소 공액 컨벌루션 및 복소 벡터 내 적(dot product))을 지원할 수 있다.
일 실시예에서, 상술한 바와 같이, PBBP(145)는 복수의 클러스터된 SIMD 실행 파이프라인을 포함할 수 있다. 더욱 상세하게, 상술한 데이터경로들은 SIMD 클러스터로 함께 그룹화될 수 있는데, 각각의 클러스터는 상이한 태스크를 실행할 수도 있지만, 클러스터 내의 매 데이터경로가 매 클록 사이클마다 복수의 데이터에 대해 단일 명령을 실행할 수도 있다. 특히, 4방향 CALU(280) 및 4방향 CMAC(270)는 CALU(280)가 예를 들면, 4개의 상관이나 병렬로의 4개의 상이한 부호의 역확산과 같은 4개의 병렬 연산을 실행할 수 있는 한편, CMAC(270)가 예를 들면, 2개의 병렬 기수(Radix)-2 FFT 버터플라이 또는 하나의 기수-4 FFT 버터플라이를 실행할 수 있는 별개의 SIMD 클러스터로서 기능할 수 있다. 비록 CALU(280) 및 CMAC(270)가 4방향 유닛으로서 도시되어 있지만, 다른 실시예에서는, CALU(280) 및 CMAC(270)가 임의의 수의 유닛을 각각 포함할 수 있는 것으로 예상된다. 따라서, 위와 같은 실시예에서, PBBP(145)는 원하는 바에 따라 임의의 수의 SIMD 클러스터를 포함할 수 있다. 클러스터된 SIMD 연산을 위한 제어 경로는 도 5의 설명과 함께 이하에 상세히 설명된다.
명령 세트 아키텍쳐
일 실시예에서, 프로세서 코어(146)에 대한 명령 세트 아키텍쳐는 세분류의 합성 명령을 포함할 수 있다. 제 1 분류의 명령은 16비트 정수 오퍼랜드에 대해 연산하는 RISC 명령이다. RISC 명령 분류는 대부분의 제어 지향 명령을 포함하고, 프 로세서 코어(146)의 정수 실행유닛(260) 내에서 실행될 수 있다. 제 2 분류의 명령은 실수부와 허수부를 갖는 복소값 데이터에 대해 연산하는 DSP 명령이다. DSP 명령은 하나 이상의 SIMD 클러스터에 대해 실행될 수 있다. 제 3 분류의 명령은 벡터 명령이다. 벡터 명령은, 그들이 큰 데이터 세트에 대해 연산하기 때문에, DSP 명령의 확장으로 간주될 수 있고, 진보된 어드레싱 모드와 벡터 지원을 이용할 수 있다. 벡터 명령의 예시적인 리스트는 이하의 표 1에 예시되어 있다. 몇몇 예외를 두고, 벡터 명령은 복소 데이터 타입에 대해 연산한다.
표 1. 30개의 복소 벡터 명령의 예시적인 리스트
연상기호 연산
--------------- CMAC 벡터 명령
MUL 원소 연산 벡터 승산 또는 스칼라에 의한 벡터 승산
ACC 벡터 요소들의 총합
NACC 벡터 요소들의 음수 총합
VADD 벡터 가산
VSUB 벡터 감산
FFT 한 계층의 기수-2 FFT 버터플라이
FFT2 두 개의 병렬 기수-2 FFT 버터플라이
FFTL 주파수 도메인 필터링을 실행하기 위해 마지막 계층의 FFT에 사용된 마지막 계층의 기수-4 FFT
FFT2L 두개의 병렬 기수-2 마지막 계층 FFT 버터플라이
R4T 일반적인 기수-4 버터플라이(DCT, FFT, NTT)
ADDSUB2 두개의 병렬 "가산 및 감산"
VMULC 상수 및 벡터의 원소 승산
MAC 승산-누산(스칼라 곱)
NMAC 음수 승산 누산
WBF 월시 변환 버터플라이
SQRABS 원소 연산 복소 제곱 절대값
SQRABSACC 제곱 절대값의 총합(벡터 에너지)
SQRABSMAX 최후의 제곱 절대값과 그 인덱스를 찾음
--------------- 벡터 이동 명령
VMOVE 벡터 이동
DUP 스칼라 값을 실행 유닛 내의 모든 레인에 복사
--------------- 벡터 ALU 명령
SMUL 원소 연산 쇼트 승산
SMUL4 4개의 병렬 원소 연산 쇼트 승산
SMAC 쇼트 승산 및 누산(역확산)
SMAC4 4개의 병렬 쇼트 승산 및 누산(역확산)
OVSF OVSF 부호를 갖는 N-병렬 SMAC(CDMA 에서 다중 부호화 역확산)
VADDC 원소 연산이 상수를 벡터에 가산
VSUBC 원소 연산이 상수를 벡터로부터 감산
도 5의 설명과 함께 이하에 더욱 상세히 설명되는 바와 같이, 명령 포맷은 명령의 분류에 따라 여러 가지 필드를 포함한다. 예를 들면, 하나의 실시예에서, RISC 명령은 단위 필드, 조작코드(OPcode) 필드 및 인수 필드를 포함할 수 있고, 벡터 명령은 벡터 크기 필드를 추가적으로 포함할 수 있다.
다수의 기저대역 수신 알고리즘은 태스크들 간에 약간의 역방향 의존성을 갖는 태스크 체인으로 분해될 수 있다. 이러한 성질은 상이한 태스크가 SIMD 실행유닛에 대해 병렬로 실행될 수 있게 할 뿐만 아니라, 상기 명령 세트 아키텍쳐를 사용하여 활용될 수도 있다. 벡터 연산은 큰 벡터에 대해 연산할 수 있으므로, 하나의 명령이 매 클록 사이클마다 발행될 수 있어, 제어 경로의 복잡성을 감소시킨다. 또한, 벡터 SIMD 명령이 긴 벡터에 대해 실행하므로, 다수의 RISC 명령이 벡터 연산 중에 실행될 수 있다. 일 실시예에서, 프로세서 코어(146)는 클록 사이클당 하나의 명령 발행 머신(SIMT)일 수 있고, SIMD 클러스터 및 정수 실행유닛의 각각은 파이프라인 방식으로 매 클록 사이클마다 하나의 명령을 실행할 수도 있다. 따라서, PBBP(145)는 2개의 스레드를 병렬로 실행하는 것으로 생각될 수 있다. 제 1 스레드는 정수 실행유닛(260)을 사용하여 프로그램 흐름 및 갖가지 처리를 포함한다. 제 2 스레드는 SIMD 클러스터에 대해 실행된 복소 벡터 명령을 포함한다. 도 3은 도 2의 프로그램 가능한 기저대역 프로세서의 일 실시예의 명령 실행 파이프라인을 도시한다.
도 2와 도 3을 총괄적으로 참조하면, 도 3의 좌측 칼럼은 (클록 사이클 실 행) 시간을 나타낸다. 나머지 칼럼은 복소 SIMD 클러스터(예를 들면, CMAC(270) 및 CALU(280)의 하나의 데이터경로)의 실행 파이프라인과, 정수 실행유닛(260) 및 거기로의 명령의 발행을 나타낸다. 더욱 상세하게, 제 1 클록 사이클에서, 복소 벡터 명령(예를 들면, CVL. 256)이 CMAC(270)에 발행된다. 도시된 바와 같이, 벡터 명령은 완료하기까지 많은 사이클을 행한다. 후속하는 클록 사이클에서, 벡터 명령이 CALU(280)에 발행된다. 그 다음 클록 사이클에서, 정수 명령이 정수 실행유닛(260)에 발행된다. 후속하는 여러 사이클에서, 벡터 명령이 실행되는 동안, 임의의 수의 정수 명령이 정수 실행유닛(260)에 발행될 수 있다. 비록 도시되지는 않았지만, 나머지 SIMD 클러스터는 유사한 방식으로 명령들을 동시에 실행하게 될 수도 있다.
일 실시예에서, 제어 흐름 동기화를 제공하고 데이터 흐름을 제어하기 위해, 할당된 벡터 연산이 완료될 때까지 제어 흐름을 정지시키도록 "유휴" 명령이 사용될 수도 있다. 예를 들면, 대응하는 SIMD 실행 유닛에 의한 일정 벡터 명령의 실행은 "유휴" 명령이 정수 실행유닛(260)에 의해 실행되게 할 수도 있다. "유휴" 명령은, 플래그와 같은 표시가 예를 들면, 정수 실행유닛(260)에 의해 대응하는 SIMD 실행 유닛으로부터 수신될 때까지 정수 실행유닛(260)을 정지시킬 수 있다.
하드웨어 액셀러레이터
상술한 바와 같이, 광범위한 무선 표준에 걸쳐 다중모드 지원을 제공하기 위해, 다수의 기저대역 기능들이 프로그램 가능한 코어와 조합하여 사용되는 전용 하드웨어 액셀러레이터에 의해 제공될 수 있다. 예를 들면, 일 실시예에서는, 하나 이상의 아래의 기능들: 즉, 데시메이터(decimator)/필터, CDMA 및 DSSS 변조 방식에 사용하는 레이크 기능(예컨대 4개의 "핑거"레이크), OFDM 변조 방식 및 IEEE 802.11b에 사용하는 기수-4 FFT/변형 월시 변환, 디매퍼(demapper), 컨벌루션/터보 인코더-비터비/터보 디코더, 구성가능한 블록 인터리버, 구성가능한 스크램블러, 및 CRC 액셀러레이터의 각각이 도 2의 액셀러레이터 0 내지 m을 사용하여 수행될 수 있다. 다른 실시예들에서는, 다른 수 및 타입의 기능들이 액셀러레이터 0 내지 m을 사용하여 수행될 수도 있다.
일 실시예에서, 데시메이터/필터 액셀러레이터는 IEEE 802.11a 등과 같은 표준에 사용될 수 있는 유한 임펄스 응답(FIR) 필터와 같은 구성가능한 필터를 포함할 수 있다. 레이크 액셀러레이터는 다중 경로 탐색 및 채널 추정 기능을 실행할 수 있는 정합 필터, 역확산 부호 생성기 및 지연 경로 저장용 로컬 복소 메모리(모두 도시 생략)를 포함할 수 있다. 기수-4 FFT/변형 월시 변환(FFT/MWT) 액셀러레이터는 기수-4 버터플라이(도시 생략) 및 가요성 어드레스 생성기(도시 생략)를 포함할 수 있다. 일 실시예에서, FFT/MWT 액셀러레이터는 54 클록 사이클에서 64 포인트 FFT를 실행할 수 있고, 18 클록 사이클에서 IEEE 802.11b 표준을 지원하는 변형 월시 변환을 실행할 수 있다. 컨벌루션/터보 인코더-비터비 디코더 액셀러레이터는 컨벌루션 및 터보 에러 정정 부호에 대한 지원을 제공하기 위해 재구성가능한 비터비 디코더와 터보 인코더/디코더를 포함할 수 있다. 일 실시예에서, 컨벌루션 부호의 디코딩이 비터비 알고리즘에 의해 실행될 수 있는 한편, 터보 부호는 소프트 출력 비터비 알고리즘을 이용하여 디코딩될 수 있다. 구성가능한 블록 인터리버 액셀 러레이터는 인접하는 데이터 비트를 제시간에, 그리고 OFDM 경우에는, 상이한 주파수 간에 확산시키도록 데이터를 재정렬하는데 사용될 수 있다. 또한, 스크램블러 액셀러레이터는 송신된 데이터 스트림 내에 1과 0의 균일한 분포를 보증하기 위해 의사 랜덤 데이터로 데이터를 스크램블하는데 사용될 수 있다. CRC 액셀러레이터는 CRC를 생성하기 위한 선형 피드백 시프트 레지스터(도시 생략)나 다른 알고리즘을 포함할 수 있다.
메모리유닛
프로세서 코어(146)의 SIMD 아키텍쳐를 효율적으로 이용하기 위해, 메모리 관리 및 할당은 중요한 고려사항일 수 있다. 데이터 메모리 시스템 아키텍쳐는 여러 개의 비교적 작은 데이터 메모리유닛(예컨대, DM0-DMn)을 포함한다. 일 실시예에서, 데이터 메모리 DM0∼DMn은 처리 중에 복소 데이터를 저장하는데 사용될 수 있다. 이들 메모리의 각각은 임의의 수(예컨대, 4개)의 연속적인 어드레스(벡터 요소)가 병렬로 액세스되게 할 수 있는 임의의 수(예컨대, 4개)의 인터리브된 메모리 뱅크를 갖도록 수행될 수 있다. 또한, 데이터 메모리 DM0~DMn의 각각은 모듈로(modulo) 어드레싱 뿐만 아니라 FFT 어드레싱을 실행하도록 구성될 수 있는 어드레스 생성 유닛(예컨대, DM0의 어드레스 생성유닛(201))을 포함할 수 있다. 또, DM0-DMn의 각각은 네트워크 상호 접속부(250)를 통해 액셀러레이터 중 어느 하나와 프로세서 코어(146)에 접속될 수 있다. 계수 메모리(215)는 FFT와 필터 계수, 룩업 테이블, 및 액셀러레이터에 의해 처리되지 않는 다른 데이터를 저장하는데 사용될 수 있다. 정수 메모리(220)는 MAC 인터페이스(225)에 대한 비트스트림을 저장하기 위한 패킷 버퍼로서 사용될 수 있다. 계수 메모리(215) 및 정수 메모리(220) 양자는 네트워크 상호 접속부(250)를 통해 프로세서 코어(146)에 연결된다.
네트워크
네트워크 상호 접속부(250)는 데이터경로, 메모리, 액셀러레이터 및 외부 인터페이스를 상호 접속하도록 구성된다. 따라서, 일 실시예에서, 네트워크 상호 접속부(150)는, 내부에 하나의 입력(기입) 포트로부터 하나의 출력(판독) 포트로의 접속이 설정될 수 있고, 임의의 입력 포트가 M×M 구조로 임의의 출력 포트에 접속될 수 있는, 크로스바와 유사하게 동작할 수 있다. 비록 일부 실시예에서이지만, 일부 메모리와 일부 계산유닛 간의 접속이 불필요하게 될 수도 있다. 네트워크 상호 접속부(250)는 특정한 구성만을 허용하도록 최적화될 수 있으므로, 네트워크 상호 접속부(250)를 간략화할 수 있다. 네트워크 상호 접속부(250)와 같은 상호 접속을 가지면, 아비터(arbiter) 및 어드레싱 로직의 필요성을 없앨 수 있으므로, 여전히 다수의 동시 통신을 가능하게 하면서 네트워크와 액셀러레이터 인터페이스의 복잡성을 감소시킬 수 있다. 일 실시예에서, 네트워크 상호 접속부(250)는 멀티플렉서 또는 예컨대, 앤드-오어(And-Or) 구조와 같은 조합 논리 구조를 사용하여 수행될 수도 있다. 그러나, 다른 실시예에서, 네트워크 상호 접속부(250)는 원하여지는 바에 따라 임의의 타입의 물리적인 구조를 사용하여 수행될 수도 있다는 것이 예견된다.
일 실시예에서, 네트워크 상호 접속부(250)는 2개의 서브네트워크로 수행될 수도 있다. 제 1 서브 네트워크는 샘플 기반 전송용으로 사용될 수 있고, 제 2 서브 네트워크는 비트 기반 전송용으로 사용되는 시리얼 네트워크일 수 있다. 2개의 네트워크의 분리는, 비트 기반 전송이 네트워크의 데이터 폭과 동일하지 않은 데이터 청크(chunk)의 지루한 프레이밍(framing) 및 역프레이밍(deframing)을 필요로 하기 때문에, 네트워크의 처리량을 향상시킬 수 있다. 그러한 실시예에서, 각 서브 네트워크는 프로세서 코어(146)로 구성되는 별개의 크로스바 스위치로 수행될 수 있다. 네트워크 상호 접속부(250)는 또한 기능성에 관하여는 액셀러레이터가 데이터 메모리를 갖고 체인으로 서로 직접적으로 접속될 수 있도록 구성될 수도 있다. 일 실시예에서, 네트워크 상호 접속부(250)는 프로세서 코어(146)의 개재없이 액셀러레이터 유닛들 간에 데이터가 이음매 없이 흐르도록 인에이블할 수 있어, 네트워크 접속의 생성 및 파기 동안에만 프로세서 코어(146)가 네트워크와 관련되도록 인에이블한다.
상술한 바와 같이, 모든 유닛(예컨대, 메모리, 액셀러레이터 등)을 모든 다른 유닛에 접속하는 것이 불필요할 수 있고, 네트워크 상호 접속부(250)는 임의의 구성만을 허용하도록 최적화될 수 있다. 그들 실시예에서, 네트워크 상호 접속부(250)는 "부분 네트워크"라고 칭해질 수도 있다. 이들 부분 네트워크들 간에 데이터를 전송하기 위해, 하나 이상의 데이터 메모리유닛(예컨대, DM0) 내의 여러 개의 메모리 블록이 양 서브 네트워크에 할당될 수도 있다. 이들 메모리 블록은 태스크들 간의 핑퐁(ping-pong) 버퍼로서 사용될 수 있다. 비용이 많이 드는 메모리 이 동은 계산 소자들 간에 메모리 블록들을 "교환"함으로써 회피될 수 있다. 이 방법은 비용이 많이 드는 메모리 이동 동작 없이 효율적이고 예측가능한 데이터 흐름을 제공할 수 있다.
도 4는 도 2의 프로그램 가능한 기저대역 프로세서의 실시예의 또 다른 양태를 도시한다. 도 2의 구성요소에 대응하는 구성요소는 명확성 및 간략성을 위해 동일한 부호를 부여한다. 도 4의 실시예에서, 프로세서 코어(146)는 정수 실행유닛(260)에 연결되어 있는 프로그램 제어유닛(310)을 포함한다. 상술한 바와 같이, 정수 실행유닛(260)은 산술 논리유닛(ALU, 261), 별개의 승산기 누산기 유닛(MAC, 262) 및 한 세트의 레지스터 파일(RF, 263)을 포함한다. 복소 계산유닛(290)은 CMAC 실행유닛(291) 및 CALU 실행유닛(292)을 포함한다. CMAC 실행유닛(291)은 벡터 로드유닛(VLU, 284A)에 연결되어 있는 벡터 제어기(275A)를 포함하는데, 벡터 로드유닛(284A) 및 벡터 제어기(275A)는 CMAC 유닛(270)에 차례로 연결되어 있다. CMAC 유닛(270)은 또한 벡터 저장유닛(VSU, 283A)에도 연결된다. CALU 실행유닛(292)은 벡터 로드유닛(VLU, 284B)에 연결되어 있는 벡터 제어기(275B)를 포함하는데, 벡터 로드유닛(284B) 및 벡터 제어기(275B)는 CALU 유닛(280)에 차례로 연결되어 있다. CALU 유닛(280)은 또한 벡터 저장유닛(VSU, 283B)에도 연결된다. 일 실시예에서, CMAC 실행유닛(291) 및 CALU 실행유닛(292)은 각각 클러스터 파이프라인(295A 및 295B)에 대응할 수 있다.
예시된 실시예에서, CALU(280)는 4개의 데이터경로를 포함한다. 유사하게, CMAC(270)도 또한 CMAC 276A 내지 276D로 표시된 4개의 CMAC 유닛을 포함하는 4개 의 데이터경로를 포함한다. CMAC 데이터경로의 일 실시예는 도 7의 설명과 함께 이하에 추가로 설명된다.
어드레스 및 부호 생성기와 함께 CALU(280)는 레이크 핑거 처리와 같은 기능을 위해 사용되는 주요 구성요소가 될 수 있으므로, 누산기를 갖는 4개의 CALU를 실행시킴으로써, 4개의 병렬 상관이나 4개의 상이한 부호의 역확산 모두가 동시에 실행될 수 있다. 이들 동작은 {0, +/-1} + {0, +/-i}에 의해 승산만 할 수 있는 간단한 "쇼트" 복소 승산기를 누산기 유닛에 추가함으로써 인에이블될 수 있다. 따라서, 일 실시예에서, CALU(280)는 285A 내지 285D로 표시된 4개의 상이한 CSMAC 데이터경로를 포함한다. 예시적인 CSMAC 데이터경로(예컨대, CSMAC 285A)가 도 6에 도시되어 있다. 비록 4개의 데이터경로가 CALU(280) 및 CMAC(270) 내부에 도시되어 있지만, 다른 실시예에서 임의의 수의 데이터경로가 사용될 수도 있다는 것이 예견된다.
일 실시예에서, CSMAC(285)는 디스크램블 부호 생성기 또는 OVSF 부호 생성기로부터의 명령어 중의 어느 하나로부터 제어될 수 있다. 모든 서브유닛은 로드 및 저장 순서, 부호 생성 및 하드웨어 루프 카운팅을 조종하도록 구성될 수 있는 벡터 제어기(275A 및 275B)에 의해 제어될 수 있다.
메모리 인터페이스의 부담을 줄이기 위해, 벡터 로드유닛(284) 및 벡터 저장유닛(283)이 사용될 수 있다. 이에 따라, 예시된 실시예에서, VLU(284)는 메모리 인터페이스의 부담을 줄이면서 네트워크(250)를 통하는 메모리 데이터 페치의 수를 감소하도록 기억장치(281)를 포함한다. 예컨대, 4개의 연속적인 데이터 항목이 메 모리로부터 판독되었다면, VLU(284)는 일부의 경우에 단 하나의 페치 동작만을 실행함으로써 3/4 만큼 메모리 페치의 수를 감소할 수 있다.
CMAC 실행유닛(291)은 복수의 CMAC 유닛을 포함하고 있으므로, 여러 가지 동시의 CMAC 동작이 실행될 수 있다. 각각의 CMAC 유닛은 각각의 동작 동안 하나의 계수와 하나의 입력 데이터 항목을 사용할 수 있다. 따라서, 이러한 타입의 태스크에 대한 메모리 대역폭이 커질 수 있다. 그러나, 명령 세트는 이전의 데이터 항목의 수를 벡터 로드유닛(284) 내에 로컬적으로 저장함으로써 기억장치(281)의 장점을 가질 수 있다. 데이터 액세스 패턴을 재정리함으로써, 메모리 액세스 속도가 단축될 수 있다.
일 실시예에서, VLU(284)는 메모리(예를 들면, DM0-n), 네트워크 상호 접속부(250) 및 실행유닛들 간의 인터페이스로서 기능할 수 있다(예를 들면, VLU(284A)는 CMAC 실행유닛과 연결되고, VLU(284B)는 CALU 실행유닛과 연결된다). 일 실시예에서, VLU(284)는 2개의 상이한 모드를 사용하여 데이터를 로드할 수 있다. 제 1 모드에서는, 복수의 데이터 항목이 메모리 뱅크로부터 로드될 수 있다. 제 2 모드에서, 데이터는 한번에 하나의 데이터 항목이 로드된 후 제공된 클러스터로 SIMD 데이터경로에 분배될 수 있다. 후자의 제 2 모드는 연속적인 데이터가 SIMD 클러스터에 의해 처리될 때 메모리 액세스의 수를 감소하도록 사용될 수 있다.
도 5는 도 2와 도 4의 PBBP(145)와 같은 클러스터된 SIMD 프로세서의 하나의 예시적인 제어 경로를 도시하는 블록도이다. PBBP(145)는 RISC 데이터경로(510)로 표시된 RISC-형 실행유닛과, SIMD 데이터경로 #0 525 및 SIMD 데이터경로 #n 535로 표시된 다수의 SIMD 데이터경로를 구비하는 프로세서 코어(146)를 포함한다. 다수의 데이터경로를 통해 제어를 제공하기 위해, 제어 경로 하드웨어(500)는 프로그램 카운터(PC, 502)에 연결된 프로그램 플로우 제어부(501)를 포함하는데, 프로그램 카운터(502) 및 프로그램 플로우 제어부(501)는 프로그램 메모리(PM, 503)에 차례로 연결되어 있다. PM(503)은 멀티플렉서(504), 단위 필드 추출부(508), SIMD 제어부(520) 및 SIMD 제어부(530)에 연결된다. 멀티플렉서(504)는 명령 레지스터(505)에 연결되고, 명령 레지스터(505)는 명령 디코더(506)에 연결된다. 명령 디코더(506)는 또한 제어 신호 레지스터(CSR, 507)에도 연결되고, 제어 신호 레지스터(CSR, 507)는 RISC 데이터경로(510)의 나머지 경로에 연결된다. 유사하게, 각각의 SIMD 제어 유닛(520 및 530)은 각각 명령 레지스터(예를 들면, 522, 532), 명령 디코더(예를 들면, 523, 533) 및 CSR(예를 들면, 524, 534)를 포함하며, 이들 각각은 그들 각각의 SIMD 클러스터(예를 들면, 525, 535)에 연결되어 있다. 도 5에 도시된 회로의 일부는 도 4의 프로그램 제어유닛(310)의 부분일 수 있다. 예를 들면, 일 실시예에서, 프로그램 플로우 제어부(501), 명령 레지스터(505), 디코더(506), 제어유닛(507), 단위 필드 추출부(508) 및 발행 제어부(509)는 도 4의 프로그램 제어유닛(310)의 부분일 수 있다.
상술한 바와 같이, 명령 포맷은 단위 필드를 포함할 수 있다. 일 실시예에서, 명령어 내의 단위 필드는 유닛(예를 들면, 정수 실행유닛 또는 SIMD 경로 #1-4)을 나타내는 3개의 비트를 포함하여 명령이 발행되게 할 수 있다. 더욱 상세하게, 단위 필드는 발행 제어유닛(509)을 인에이블시키는 정보를 제공하여 명령이 명 령 디코더/실행유닛에 발행되도록 결정할 수 있다. 실행유닛 내의 모든 명령 디코더는 유닛에 의해 특정된 남아 있는 필드를 디코딩할 수 있다. 이는 원하는 바에 따라 실행유닛들 간에 남아 있는 필드에 대하여 상이한 구성 및 크기를 가질 수 있다는 것을 의미한다. 일 실시예에서, 단위 필드 추출유닛(508)은 명령어에 대하여 남아 있는 비트가 명령 레지스터/디코더에 각각 전송되기 전에 단위 필드를 이동 또는 제거할 수 있다.
일 실시예에서, 각 클록 사이클 동안, 하나의 명령이 PM(503)으로부터 페치될 수 있다. 명령어 내의 단위 필드는 명령어로부터 추출되어서 명령이 제어유닛에 발송되도록 제어하는데 사용될 수 있다. 예를 들어, 단위 필드가 "000"이면, 명령은 RISC 데이터경로에 발송될 수 있다. 발행 제어유닛(509)은, 명령어가 멀티플렉서(504)를 통해 RISC 데이터경로를 향하여 "명령 레지스터(505)"로 통과하게 함과 동시에, 이 사이클 동안 새로운 명령이 SIMD 제어유닛으로 로드되지 않게 한다. 하지만, 단위 필드가 어떤 다른 값을 갖는다면, 발행 제어유닛(509)은 명령어가 대응하는 SIMD 제어유닛을 향하여 "명령 레지스터(522, 532)"에 통과할 수 있게 하여, NOP 명령이 RISC 데이터경로 명령 레지스터에 전송되게 한다.
일 실시예에서, 명령이 SIMD 실행유닛에 발송될 때, 명령어로부터의 벡터 길이 필드는 대응하는 SIMD 제어유닛(예를 들면, 520, 530)의 계수 레지스터(예를 들면, 521, 531)에 추출되어 저장될 수 있다. 이러한 계수 레지스터는 벡터 길이의 트랙을 대응하는 벡터 명령 내에 보존하는데 사용될 수 있다. 대응하는 SIMD 실행유닛이 벡터 연산을 종료했을 때, 벡터 제어기(275)는 유닛이 새로운 명령을 받아 들이기 위한 준비가 되었음을 나타내도록 신호(플래그)를 프로그램 플로우 제어부(501)에 전송될 수 있게 한다. 각 SIMD 제어유닛(520, 530)에 대응하는 벡터 제어기는 실행유닛 내에 프롤로그 및 에필로그 상태의 제어 신호를 추가적으로 생성할 수 있다. 이러한 제어 신호는 CSMAC 동작용 VLU(284)를 제어하여, 예를 들면 기수 벡터 길이를 관리할 수도 있다.
상술한 바와 같이, 예를 들면, CDMA 시스템에서와 같은 다수의 기저대역 처리 알고리즘에서, 안테나로부터 수신된 복소 데이터 시퀀스는 "(역)확산 부호"와 승산된다. 따라서, 원소 연산(element-wise)은 복소 벡터를 역확산 부호로 승산(및 누산)할 필요성이 있을 수 있는데, 이는 이하의 세트, 즉 {0, +/-1} + {0, +/-i}로부터의 숫자만 포함하는 복소 벡터일 수 있다. 이후 복소 승산의 결과는 저장된다. 일부 종래의 프로그램 가능한 프로세서에서, 이러한 기능성은 몇 번의 산술 명령을 실행하거나 완전히 이행된 CMAC 유닛에 의해 수행될 수 있다. 그러나, 프로그램 가능한 프로세서 내에 엔웨이(Nway)식 CSMAC 유닛(예를 들면, CSMAC 285A-D)을 사용하면, 하드웨어 비용이 저렴해질 수 있다.
도 6은 도 4에 도시된 복소 ALU의 4방향 CSMAC 유닛의 예시적인 데이터경로의 블록도이다. 도 6의 CSMAC(285)는 도 4의 CSMAC 285A 내지 285D중 하나의 예시일 수 있다. CSMAC(285)는 인버터(601A 및 601B), 603A 내지 603D로 표시된 4개의 멀티플렉서를 포함한다. 게다가, CSMAC(285)는 602, 604A, 604B, 606A 및 606B로 표시된 몇 개의 가산기를 포함한다. 또한, CSMAC(285)는 2개의 가드 유닛(606A 및 606B), 2개의 누산기 레지스터(607A 및 607B) 및 2개의 라운드/포화 유닛(608A 및 608B)을 포함한다.
일 실시예에서, CSMAC(285)는 VLU(284)를 통해 벡터 데이터를 수신한다. 실수부 및 허수부는 예시된 바와 같이 별개의 경로를 따른다. 인입하는 벡터 데이터에 의해 승산되어야 하는 역확산 부호에 따라, 멀티플렉서(603A 내지 603D)는 실수부 및 허수부와, 그들의 보수인 음의 버전(negated version)이 가산기(604A 및 604B)에 통과되어, 그것들이 때때로 캐리(한 자리 올림 수)로 가산되게 할 수 있다. 따라서, 위의 연산에 따라, CSMAC(285)는 2의 보수 연산을 사용하는 {0, +/-1} + {0, +/-1}에 의해 각각의 실수부 및 허수부를 효율적으로 승산할 수 있다. 가드 유닛(605A 및 605B)은 가산기(604A 및 604B)로부터의 결과로 구성될 수 있다. 예를 들면, 오버플로우와 같은 조건이 존재할 때, 최대값 또는 최소값(즉, 포화)을 제공하는 결과의 조건이 붙을 수 있다. 누산기 레지스터(607A 및 607B)와 함께 가산기(606A 및 607B)는 각각의 결과를 저장하고, 그 저장된 결과는 라운드/포화 유닛과 VSU(283B)에 통과되어 데이터 메모리에 전송될 수 있다.
상술한 설명에서, 종래의 승산기는 사용되지 않는다. 대신에, 2의 보수 가산이 실행되어 다이 면적(die area) 및 파워를 저장한다. 따라서, CSMAC 285A-D와 같은 4방향 CSMAC는 유효한 에어리어, 즉 프로그램 가능한 환경에서 4개의 병렬 CSMAC 동작을 실행할 수 있는 4방향 CSMAC 유닛으로서 실행된다. 향상된 4방향 CSMAC 유닛은 하나의 유닛보다 4배 빠른 벡터 승산을 실행하거나 4개의 상이한 계수 벡터와 동일한 벡터를 승산할 수 있다. 후자의 연산, 즉 4개의 상이한 계수 벡터와 동일한 벡터를 승산하는 연산은 CDMA 시스템에서 "다중 부호 역확산"을 가능 하도록 사용될 수 있다. 상술한 바와 같이, VLU(284)는 CSMAC(285)의 필요한 모든 데이터경로 중 하나의 데이터 항목 또는 계수 항목을 복사할 수 있다. 복사 모드는 내부에 생성된 상이한 계수와 동일한 데이터 항목(예를 들면, OVSF 부호를 이용)을 승산할 때 특히 유용하게 사용될 수 있다.
도 7은 도 4에 도시된 복소 MAC 유닛 데이터경로의 일 실시예의 블록도이다. 도 7의 CMAC(276)는 도 4의 CMAC(276A 내지 276D)중 하나의 예시일 것이다. CMAC(276)는 4개의 결과 레지스터(702A 내지 702D)에 각각 연결되어 있는 701A 내지 701D로 표시된 4개의 다중 비트 승산기를 포함한다. 또한, CMAC(276)는 703, 704, 709A, 709B, 710A 및 710B로 표시된 6개의 전가산기(full adder)를 포함한다. 또, CMAC(276)는 멀티플렉서(705, 706, 707 및 708) 및 누산기 레지스터(ACRR(711A) 및 ACIR(711B))를 포함한다.
예시된 실시예에서, 승산기(701A)는 오퍼랜드 A의 실수부와 오퍼랜드 C의 실수부를 승산할 수 있는 한편, 승산기(701B)는 오퍼랜드 A의 허수부와 오퍼랜드 C의 허수부를 승산할 수 있다. 또한, 승산기(701C)는 오퍼랜드 A의 실수부와 오퍼랜드 C의 허수부를 승산할 수 있고, 승산기(701D)는 오퍼랜드 A의 허수부와 오퍼랜드 C의 실수부를 승산할 수 있다. 승산된 결과값은 결과 레지스터(702A 내지 702D)에 각각 저장될 수 있다.
가산기(703)는 승산기(702A 및 702B)로부터의 결과에 대하여 가산 및 감산을 실행할 수 있는 한편, 가산기(704)는 승산기(702C 및 702D)로부터의 결과에 대하여 가산 및 감산을 실행할 수 있다. 멀티플렉서(705 및 707)는 오퍼랜드의 값에 따라 승산기/가산기의 바이패스를 허용할 수 있다. 실행되는 기능에 따라, 멀티플렉서(706 및 708)는 누산기 부분에 선택적으로 값을 제공할 수 있는데, 누산기 부분은 가산기(709A, 709B, 710A, 710B)와, 누산기 레지스터 ACRR(711A) 및 ACIR(711B)를 포함한다. ACRR(711A)는 실수 데이터용 누산기 레지스터이고, ACIR(711B)은 허수 데이터용 누산기 레지스터이다.
일 실시예에서, CMAC(276)는 매 클록 사이클마다 하나의 복소값을 위한 승산-누산 연산(예를 들면, 기수(Radix)-2 FFT 버터플라이)을 수행할 수 있다. 특히, 상호작용, FFT, 또는 복소수(예를 들면, 복소값 동상(I) 및 직교(Q)쌍)의 벡터에 대하여 실행될 수 있는 절대 최대값 서치와 같은 동작에 최적화될 수 있다. 상술한 바와 같이, 프로세서 코어(146)는 CALU 및 RISC/정수 명령과 병렬로 수행할 수 있는 다중 사이클 벡터 개시 명령의 분류를 갖는다. 일 실시예에서, 복소 벡터 명령은 프로그램 메모리의 유효한 사용을 제공할 수 있는 16비트 이상일 수 있다. 그러나, 다른 실시예에서, 명령 길이는 임의의 수의 비트일 수 있다는 것이 예견된다.
일 실시예에서, 복소 승산 또는 컨벌루션을 실행할 때, 정상적인 복소 계산은 가산기(703)가 감산을 실행하고 가산기(704)가 가산을 실행할 때 수행될 수 있다. 복소 공액 계산은 가산기(703)가 가산을 실행하고, 가산기(704)가 감산을 실행할 때 수행될 수 있다. 또한, 내적 승산 및 벡터 회전을 위한 복소 공액 승산 또는 정상적인 복소 계산을 실행할 때, ACRR(711A) 및 ACIR(711B)의 반복 루프는 차단되고, 가산기(710A) 및 가산기(710B)가 고유 길이를 갖는 벡터 메모리에 결과물을 전송하기 전에 회전을 위해 사용될 수 있다. 마찬가지로, 복소 필터, 복소 자동 상관 및 복소 교차 상관에 대한 복소 컨벌루션을 실행할 때, 가산기(710A) 및 가산기(710B)는 실수부 및 허수부 각각의 플러스 또는 마이너스 누산을 제공할 수 있다.
일 실시예에서, FFT 또는 IFFT 계산을 실행할 때, CMAC(276) 데이터경로는 클록 사이클당 계산하는 하나의 버터플라이(즉, 클록 사이클당 계산하는 FFT의 두 점)를 제공할 수 있다. FFT를 수행하기 위해, 가산기(709A) 및 가산기(709B)는 감산을 실행하고 가산기(710A) 및 가산기(710B)의 ACRR 및 ACTR의 반복 루프는 차단된다. 또한, 가산기(710A) 및 가산기(710B)는 가산 연산을 실행한다.
일 실시예에서, 상술한 기저대역 동기화 및 데이터 수신과 관련된 여러 가지 동작을 실행하기 위해, 이하의 명령들이 CMAC(276)에 대하여 수행될 수 있다. 즉, 명령들은 다음과 같다.
CMUL.n : 결과에 따라 회전하면서 비중복된 루프로서 n 단계를 실행하는 정상적인 복소 승산. 오퍼랜드는 OPA 및 OPB 포트로부터 공급될 수 있다. 그 결과는 고유 길이 복소 데이터 포맷을 갖는 포트 C에 제공될 것이다.
CCMUL.n : 결과에 따라 회전하면서 비중복된 루프로서 n 단계를 실행하는 복소 공액 승산. 오퍼랜드는 OPA 및 OPB 포트로부터 공급될 수 있다. 그 결과는 고유 길이 복소 데이터 포맷을 갖는 포트 C에 제공될 것이다.
CMAC.n : n 단계를 실행하는 비중복된 루프로서의 정상적인 복소 승산 및 누산. 오퍼랜드는 OPA 및 OPB 포트로부터 공급될 수 있다. 그 결과의 실수부는 ACRR(711A)에 저장되고, 허수부는 ACIR(711B)에 저장될 것이다.
CCMAC.n : n 단계를 실행하는 비중복된 루프로서의 복소 공액 승산 및 누산. 오퍼랜드는 OPA 및 OPB 포트로부터 공급될 것이다. 그 결과의 실수부는 ACRR(711A)에 저장되고, 허수부는 ACIR(711B)에 저장될 것이다.
FFT.m.n : 사이즈 n FFT의 m 번째 단계 : 복소 데이터는 포트 A로부터 페치되고, 포트 B 및 복수 계수는 정상적인 어드레싱 순서를 기초로 한 포트 C로부터 페치되며, 복소 데이터 결과는 비트 역전 어드레싱을 사용하는 포트 D에 전송될 것이다.
상술한 PBBP(145)의 아키텍쳐 및 마이크로 아키텍쳐의 가요성 특징은 다수의 무선 표준과 이들 표준 내의 다수의 동작 모드에 대한 지원을 제공할 것이다.
상기 실시예들은 상당히 상세히 설명되어 있지만, 상기 개시내용이 완전히 이해되기만 하면 당업자에게는 다수의 변경 및 변형이 명백해진다. 아래의 청구의 범위는 그러한 모든 변경 및 변형을 포함하는 것으로 해석되어야 한다.

Claims (36)

  1. 하나 이상의 전용 기능을 각각 실행하도록 구성된 복수의 액셀러레이터 유닛;
    정수 명령을 실행하도록 구성된 정수 실행유닛을 구비하여, 상기 복수의 액셀러레이터 유닛에 연결된 것에 연결된 프로세서 코어; 및
    상기 복수의 액셀러레이터 유닛에 연결되어, 복소 벡터 명령을 실행하도록 구성된 복소 계산유닛을 포함하되,
    상기 복소 계산유닛은 제 1 복소 벡터 명령을 실행하도록 구성된 하나 이상의 복소 산술 논리유닛 데이터경로를 포함하는 제 1의 클러스터된 실행 파이프라인과, 제 2 복소 벡터 명령을 실행하도록 구성된 하나 이상의 복소 승산기 누산기 데이터경로를 포함하는 제 2의 클러스터된 실행 파이프라인을 포함하는 것을 특징으로 하는 디지털 신호 프로세서.
  2. 제 1항에 있어서,
    상기 제 1 및 제 2의 클러스터된 실행 파이프라인 내의 각각의 데이터경로는 벡터 명령의 일부인 하나의 복소 연산을 클록 사이클당 실행하도록 구성된 것을 특징으로 하는 디지털 신호 프로세서.
  3. 제 2항에 있어서,
    상기 정수 실행유닛은 제 1 및 제 2의 클러스터된 실행 파이프라인 내의 데이터경로 중의 하나에 의해 실행된 복소 벡터 명령의 실행과 함께 클록 사이클당 하나의 명령을 실행하도록 구성된 것을 특징으로 하는 디지털 신호 프로세서.
  4. 제 1항에 있어서,
    상기 복소 승산기 누산기 데이터경로의 각각은 모든 데이터를 복소값 데이터로서 고유적으로 해석하도록 구성된 것을 특징으로 하는 디지털 신호 프로세서.
  5. 제 1항에 있어서,
    상기 제 1 및 제 2 복소 벡터 명령들 각각은 실수부와 허수부를 갖는 복소값 데이터에 대하여 동작하는 것을 특징으로 하는 디지털 신호 프로세서.
  6. 제 1항에 있어서,
    상기 복소 계산유닛은 단일 명령 복수 데이터(SIMD) 명령들을 실행하도록 구성된 것을 특징으로 하는 디지털 신호 프로세서.
  7. 제 1항에 있어서,
    상기 복소 산술 논리유닛 실행 파이프라인 각각은 {0, +/-1} + {0, +/-i}를 포함하는 숫자 세트 내의 값에 의해 복소 데이터 값을 승산하도록 구성된 복소 쇼트 승산기 누산기 데이터경로를 더 포함하는 것을 특징으로 하는 디지털 신호 프로 세서.
  8. 제 1항에 있어서,
    상기 제 1 및 제 2의 먼저 클러스터된 실행 파이프라인의 각각은, 각각의 클러스터된 실행 파이프라인 내의 데이터경로에 의해 사용하기 위해 데이터 항목을 매 클록 사이클마다 페치시키도록 구성된 각각의 벡터 로드유닛을 더 포함하는 것을 특징으로 하는 디지털 신호 프로세서.
  9. 제 8항에 있어서,
    상기 벡터 로드유닛 각각은 후속하는 클록 사이클 동안 각각 클러스터된 실행 파이프라인 내의 데이터경로에 의해서도 사용하기 위해, 이전의 클록 사이클 동안 실행된 페치 동작으로부터 데이터를 국부적으로 저장하도록 구성된 기억장치를 포함하는 것을 특징으로 하는 디지털 신호 프로세서.
  10. 제 9항에 있어서,
    상기 제 1 및 제 2의 먼저 클러스터된 실행 파이프라인의 각각은, 각각의 벡터 로드유닛에 연결된 각각의 벡터 제어기 유닛을 더 포함하여, 상기 제 1 및 제 2의 먼저 클러스터된 실행 파이프라인의 데이터경로 중의 하나에 의해서도 벡터 연산의 저장 순서 및 로드를 관리하도록 구성된 것을 특징으로 하는 디지털 신호 프로세서.
  11. 제 1항에 있어서,
    하나 이상의 전용 기능들 중의 할당된 각각의 기능은 상이한 무선통신 표준에 대응하는 기저대역 신호 처리와 관련된 것을 특징으로 하는 디지털 신호 프로세서.
  12. 제 1항에 있어서,
    복수의 메모리유닛을 더 포함하되, 각각의 메모리유닛은 판독 또는 기입 트랜젝션의 수신에 응답하여 로컬 메모리 로케이션에 대응하는 어드레스를 생성하도록 구성된 어드레스 생성유닛을 포함하는 것을 특징으로 하는 디지털 신호 프로세서.
  13. 제 12항에 있어서,
    상기 각각의 복수의 메모리유닛, 복수의 액셀러레이터 유닛, 프로세서 코어 및 복소 계산유닛은 하나의 집적회로 상에 제조되는 것을 특징으로 하는 디지털 신호 프로세서.
  14. 제 12항에 있어서,
    상기 복수의 메모리유닛, 복수의 액셀러레이터유닛, 프로세서 코어 및 복소 계산유닛 사이의 접속성을 제공하도록 구성된 네트워크를 더 포함하는 것을 특징으 로 하는 디지털 신호 프로세서.
  15. 제 14항에 있어서,
    상기 네트워크는 정수 명령들의 실행에 따라, 상기 복수의 메모리유닛들 중 할당된 메모리유닛을 하나 이상의 복수의 액셀러레이터 유닛에 연결하도록 구성된 것을 특징으로 하는 디지털 신호 프로세서.
  16. 제 14항에 있어서,
    상기 네트워크는 정수 명령들이 실행에 따라, 상기 복수의 메모리유닛들 중 할당된 메모리유닛을 상기 복소 계산유닛에 연결하도록 구성된 것을 특징으로 하는 디지털 신호 프로세서.
  17. 제 14항에 있어서,
    상기 네트워크는 정수 명령의 실행에 따라, 상기 복수의 액셀러레이터 유닛들 중 두개 이상의 액셀러레이터 유닛을 하나의 체인 내에서 함께 연결하여, 상기 체인의 제 1 액셀러레이터 유닛을 상기 복수의 메모리유닛들 중 할당된 메모리유닛과 상기 복소 계산유닛 중의 하나에 더 연결하도록 구성된 것을 특징으로 하는 디지털 신호 프로세서.
  18. 제 1항에 있어서,
    상기 복수의 액셀러레이터 유닛들 중 적어도 일부의 액셀러레이터 유닛은 기저대역 신호 처리와 관련된 전용 기능에 대하여 구성가능한 하드웨어 실행인 것을 특징으로 하는 디지털 신호 프로세서.
  19. 무선 주파수 신호를 송신 및 수신하도록 구성된 무선 주파수 프론트-엔드 유닛;
    상기 무선 주파수 프론트-엔드 유닛에 연결된 프로그램 가능한 디지털 신호 프로세서를 포함하는 다중모드 무선통신 장치로서,
    상기 프로그램 가능한 디지털 신호 프로세서는,
    하나 이상의 전용 기능을 각각 실행하도록 구성된 복수의 액셀러레이터 유닛;
    정수 명령을 실행하도록 구성된 정수 실행유닛을 포함하여, 상기 복수의 액셀러레이터 유닛에 연결된 프로세서 코어; 및
    상기 복수의 액셀러레이터 유닛에 연결되어 복소 벡터 명령을 실행하도록 구성된 복소 계산유닛을 포함하며,
    상기 복소 계산유닛은 제 1 복소 벡터 명령을 실행하도록 구성된 하나 이상의 복소 산술 논리유닛 데이터경로를 포함하는 제 1의 클러스터된 실행 파이프라인과, 제 2 복소 벡터 명령을 실행하도록 구성된 하나 이상의 복소 복소 승산기 누산기 데이터경로를 포함하는 제 2의 클러스터된 실행 파이프라인을 포함하는 것을 특징으로 하는 다중모드 무선통신 장치.
  20. 제 19항에 있어서,
    상기 제 1 및 제 2의 클러스터된 실행 파이프라인 내의 각각의 데이터경로는 벡터 명령의 일부인 하나의 복소 연산을 클록 사이클당 실행하도록 구성된 것을 특징으로 하는 다중모드 무선통신 장치.
  21. 제 20항에 있어서,
    상기 정수 실행유닛은 제 1 및 제 2의 클러스터된 실행 파이프라인 내의 데이터경로 중의 하나에 의해 실행된 복소 벡터 명령의 실행과 함께 클록 사이클당 하나의 명령을 실행하도록 구성된 것을 특징으로 하는 다중모드 무선통신 장치.
  22. 제 19항에 있어서,
    상기 복소 승산기 누산기 데이터경로의 각각은 모든 데이터를 복소값 데이터로서 고유적으로 해석하도록 구성된 것을 특징으로 하는 다중모드 무선통신 장치.
  23. 제 19항에 있어서,
    상기 제 1 및 제 2 복소 벡터 명령들 각각은 실수부와 허수부를 갖는 복소값 데이터에 대하여 동작하는 것을 특징으로 하는 다중모드 무선통신 장치.
  24. 제 19항에 있어서,
    상기 복소 계산유닛은 단일 명령 복수 데이터(SIMD) 명령들을 실행하도록 구성된 것을 특징으로 하는 다중모드 무선통신 장치.
  25. 제 19항에 있어서,
    상기 복소 산술 논리유닛 실행 파이프라인 각각은 {0, +/-1} + {0, +/-i}를 포함하는 숫자 세트 내의 값에 의해 복소 데이터 값을 승산하도록 구성된 복소 쇼트 승산기 누산기 데이터경로를 더 포함하는 것을 특징으로 하는 다중모드 무선통신 장치.
  26. 제 19항에 있어서,
    상기 제 1 및 제 2의 먼저 클러스터된 실행 파이프라인의 각각은, 각각의 클러스터된 실행 파이프라인 내의 데이터경로에 의해 사용하기 위해 데이터 항목을 매 클록 사이클마다 페치시키도록 구성된 각각의 벡터 로드유닛을 더 포함하는 것을 특징으로 하는 다중모드 무선통신 장치.
  27. 제 26항에 있어서,
    상기 벡터 로드유닛 각각은 후속하는 클록 사이클 동안 각각 클러스터된 실행 파이프라인 내의 데이터경로에 의해서도 사용하기 위해, 이전의 클록 사이클 동안 실행된 페치 동작으로부터 데이터를 국부적으로 저장하도록 구성된 기억장치를 포함하는 것을 특징으로 하는 다중모드 무선통신 장치.
  28. 제 27항에 있어서,
    상기 제 1 및 제 2의 먼저 클러스터된 실행 파이프라인의 각각은, 각각의 벡터 로드유닛에 연결된 각각의 벡터 제어기 유닛을 더 포함하여, 상기 제 1 및 제 2의 먼저 클러스터된 실행 파이프라인의 데이터경로 중의 하나에 의해서도 벡터 연산의 저장 순서 및 로드를 관리하도록 구성된 것을 특징으로 하는 다중모드 무선통신 장치.
  29. 제 19항에 있어서,
    하나 이상의 전용 기능들 중의 할당된 각각의 기능은 상이한 무선통신 표준에 대응하는 기저대역 신호 처리와 관련된 것을 특징으로 하는 다중모드 무선통신 장치.
  30. 제 19항에 있어서,
    복수의 메모리유닛을 더 포함하되, 각각의 메모리유닛은 판독 또는 기입 트랜젝션의 수신에 응답하여 로컬 메모리 로케이션에 대응하는 어드레스를 생성하도록 구성된 어드레스 생성유닛을 포함하는 것을 특징으로 하는 다중모드 무선통신 장치.
  31. 제 30항에 있어서,
    상기 각각의 복수의 메모리유닛, 복수의 액셀러레이터 유닛, 프로세서 코어 및 복소 계산유닛은 하나의 집적회로 상에 제조되는 것을 특징으로 하는 다중모드 무선통신 장치.
  32. 제 31항에 있어서,
    상기 복수의 메모리유닛, 복수의 액셀러레이터유닛, 프로세서 코어 및 복소 계산유닛 사이의 접속성을 제공하도록 구성된 네트워크를 더 포함하는 것을 특징으로 하는 다중모드 무선통신 장치.
  33. 제 32항에 있어서,
    상기 네트워크는 정수 명령들의 실행에 따라, 상기 복수의 메모리유닛들 중 할당된 메모리유닛을 하나 이상의 복수의 액셀러레이터 유닛에 연결하도록 구성된 것을 특징으로 하는 다중모드 무선통신 장치.
  34. 제 32항에 있어서,
    상기 네트워크는 정수 명령들이 실행에 따라, 상기 복수의 메모리유닛들 중 할당된 메모리유닛을 상기 복소 계산유닛에 연결하도록 구성된 것을 특징으로 하는 다중모드 무선통신 장치.
  35. 제 32항에 있어서,
    상기 네트워크는 정수 명령의 실행에 따라, 상기 복수의 액셀러레이터 유닛들 중 두개 이상의 액셀러레이터 유닛을 하나의 체인 내에서 함께 연결하여, 상기 체인의 제 1 액셀러레이터 유닛을 상기 복수의 메모리유닛들 중 할당된 메모리유닛과 상기 복소 계산유닛 중의 하나에 더 연결하도록 구성된 것을 특징으로 하는 다중모드 무선통신 장치.
  36. 제 19항에 있어서,
    상기 복수의 액셀러레이터 유닛들 중 적어도 일부의 액셀러레이터 유닛은 기저대역 신호 처리와 관련된 전용 기능에 대하여 구성가능한 하드웨어 실행인 것을 특징으로 하는 다중모드 무선통신 장치.
KR1020087004042A 2005-08-11 2006-08-09 복소 벡터 명령을 실행하도록 구성된 클러스터된 simd마이크로아키텍쳐를 포함하는 프로그램 가능한 디지털 신호프로세서 KR101394573B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/201,842 2005-08-11
US11/201,842 US7299342B2 (en) 2005-05-24 2005-08-11 Complex vector executing clustered SIMD micro-architecture DSP with accelerator coupled complex ALU paths each further including short multiplier/accumulator using two's complement
PCT/SE2006/000938 WO2007018468A1 (en) 2005-08-11 2006-08-09 Programmable digital signal processor including a clustered simd microarchitecture configured to execute complex vector instructions

Publications (2)

Publication Number Publication Date
KR20080042837A true KR20080042837A (ko) 2008-05-15
KR101394573B1 KR101394573B1 (ko) 2014-05-12

Family

ID=37727577

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087004042A KR101394573B1 (ko) 2005-08-11 2006-08-09 복소 벡터 명령을 실행하도록 구성된 클러스터된 simd마이크로아키텍쳐를 포함하는 프로그램 가능한 디지털 신호프로세서

Country Status (6)

Country Link
US (1) US7299342B2 (ko)
EP (1) EP1913488A1 (ko)
JP (1) JP5080469B2 (ko)
KR (1) KR101394573B1 (ko)
CN (1) CN101238455A (ko)
WO (1) WO2007018468A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9104584B2 (en) 2010-12-30 2015-08-11 Samsung Electronics Co., Ltd. Apparatus and method for performing a complex number operation using a single instruction multiple data (SIMD) architecture
KR20190026830A (ko) * 2016-07-08 2019-03-13 에이알엠 리미티드 벡터 레지스터 액세스

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7669042B2 (en) * 2005-02-17 2010-02-23 Samsung Electronics Co., Ltd. Pipeline controller for context-based operation reconfigurable instruction set processor
US7904695B2 (en) 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous power saving computer
US20070198815A1 (en) * 2005-08-11 2007-08-23 Coresonic Ab Programmable digital signal processor having a clustered SIMD microarchitecture including a complex short multiplier and an independent vector load unit
US20070168646A1 (en) * 2006-01-17 2007-07-19 Jean-Francois Collard Data exchange between cooperating processors
US7904615B2 (en) 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous computer communication
US7966481B2 (en) 2006-02-16 2011-06-21 Vns Portfolio Llc Computer system and method for executing port communications without interrupting the receiving computer
US20080046689A1 (en) * 2006-08-21 2008-02-21 Tien-Fu Chen Method and apparatus for cooperative multithreading
KR101445794B1 (ko) * 2007-06-18 2014-11-03 삼성전자주식회사 소프트웨어 기반 무선통신 터미널을 위한 프로그래밍 가능한 장치
JP2009075676A (ja) * 2007-09-18 2009-04-09 Nec Electronics Corp マイクロプロセッサ
US7996454B2 (en) * 2007-11-16 2011-08-09 Vns Portfolio Llc Method and apparatus for performing complex calculations in a multiprocessor array
EP2232378A1 (en) * 2007-12-10 2010-09-29 Sandbridge Technologies, Inc. Accelerating traceback on a signal processor
US8185721B2 (en) * 2008-03-04 2012-05-22 Qualcomm Incorporated Dual function adder for computing a hardware prefetch address and an arithmetic operation value
US20090323784A1 (en) * 2008-06-27 2009-12-31 Microsoft Corporation Software-Defined Radio Platform Based Upon Graphics Processing Unit
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
US8520719B2 (en) * 2009-05-29 2013-08-27 Qualcomm Incorporated Multiple-mode correlator
US9285793B2 (en) * 2010-10-21 2016-03-15 Bluewireless Technology Limited Data processing unit including a scalar processing unit and a heterogeneous processor unit
WO2012052773A1 (en) * 2010-10-21 2012-04-26 Bluwireless Technology Limited Data processing systems
SE1150967A1 (sv) * 2011-10-18 2013-01-15 Mediatek Sweden Ab Digital signalprocessor och basbandskommunikationsanordning
SE536462C2 (sv) * 2011-10-18 2013-11-26 Mediatek Sweden Ab Digital signalprocessor och basbandskommunikationsanordning
CN102375805B (zh) * 2011-10-31 2014-04-02 中国人民解放军国防科学技术大学 面向向量处理器的基于simd的fft并行计算方法
SE536099C2 (sv) * 2011-12-20 2013-05-07 Mediatek Sweden Ab Digital signalprocessor och basbandskommunikationsanordning
US9411583B2 (en) 2011-12-22 2016-08-09 Intel Corporation Vector instruction for presenting complex conjugates of respective complex numbers
JP5884578B2 (ja) 2012-03-16 2016-03-15 富士通株式会社 アクセラレータ管理装置、アクセラレータ管理方法および入出力装置
CN103543984B (zh) * 2012-07-11 2016-08-10 世意法(北京)半导体研发有限责任公司 用于特殊相关应用的修改型平衡吞吐量数据路径架构
CN103543983B (zh) * 2012-07-11 2016-08-24 世意法(北京)半导体研发有限责任公司 用于提高平衡吞吐量数据路径架构上的fir操作性能的新颖数据访问方法
US9229717B2 (en) * 2012-12-11 2016-01-05 Nvidia Corporation Register allocation for clustered multi-level register files
US10969805B2 (en) 2013-02-11 2021-04-06 Graco Minnesota Inc. Paint sprayer distributed control and output volume monitoring architectures
WO2014124416A1 (en) 2013-02-11 2014-08-14 Graco Minnesota Inc. Remote monitoring for fluid applicator system
US9495154B2 (en) * 2013-03-13 2016-11-15 Qualcomm Incorporated Vector processing engines having programmable data path configurations for providing multi-mode vector processing, and related vector processors, systems, and methods
US9275014B2 (en) * 2013-03-13 2016-03-01 Qualcomm Incorporated Vector processing engines having programmable data path configurations for providing multi-mode radix-2x butterfly vector processing circuits, and related vector processors, systems, and methods
CN105378651B (zh) * 2013-05-24 2018-09-18 相干逻辑公司 具有可编程优化的存储器-网络处理器
JP6102528B2 (ja) * 2013-06-03 2017-03-29 富士通株式会社 信号処理装置及び信号処理方法
US9489197B2 (en) * 2013-07-09 2016-11-08 Texas Instruments Incorporated Highly efficient different precision complex multiply accumulate to enhance chip rate functionality in DSSS cellular systems
US20150143076A1 (en) * 2013-11-15 2015-05-21 Qualcomm Incorporated VECTOR PROCESSING ENGINES (VPEs) EMPLOYING DESPREADING CIRCUITRY IN DATA FLOW PATHS BETWEEN EXECUTION UNITS AND VECTOR DATA MEMORY TO PROVIDE IN-FLIGHT DESPREADING OF SPREAD-SPECTRUM SEQUENCES, AND RELATED VECTOR PROCESSING INSTRUCTIONS, SYSTEMS, AND METHODS
US9684509B2 (en) 2013-11-15 2017-06-20 Qualcomm Incorporated Vector processing engines (VPEs) employing merging circuitry in data flow paths between execution units and vector data memory to provide in-flight merging of output vector data stored to vector data memory, and related vector processing instructions, systems, and methods
CN105892995B (zh) * 2016-03-28 2018-06-12 龙芯中科技术有限公司 查找负数的方法、装置及处理器
CN105844040B (zh) * 2016-03-31 2019-01-25 同济大学 一种支持多模式乘加器的数据运算方法
CN107315717B (zh) * 2016-04-26 2020-11-03 中科寒武纪科技股份有限公司 一种用于执行向量四则运算的装置和方法
CN108268941B (zh) * 2017-01-04 2022-05-31 意法半导体股份有限公司 深度卷积网络异构架构
US11132599B2 (en) * 2017-02-28 2021-09-28 Microsoft Technology Licensing, Llc Multi-function unit for programmable hardware nodes for neural network processing
CN108564169B (zh) * 2017-04-11 2020-07-14 上海兆芯集成电路有限公司 硬件处理单元、神经网络单元和计算机可用介质
CN108933841A (zh) * 2017-05-27 2018-12-04 嘉兴鹏武电子科技有限公司 一种射频前端设备的控制方法及装置
US10733141B2 (en) * 2018-03-27 2020-08-04 Analog Devices, Inc. Distributed processor system
CN112602054B (zh) 2018-08-31 2024-06-25 弗莱克斯-罗技克斯技术公司 乘法器累加器电路、用于乘法累加的逻辑瓦片架构和包括逻辑瓦片阵列的ic
US11194585B2 (en) 2019-03-25 2021-12-07 Flex Logix Technologies, Inc. Multiplier-accumulator circuitry having processing pipelines and methods of operating same
US11314504B2 (en) 2019-04-09 2022-04-26 Flex Logix Technologies, Inc. Multiplier-accumulator processing pipelines and processing component, and methods of operating same
US11288076B2 (en) 2019-09-13 2022-03-29 Flex Logix Technologies, Inc. IC including logic tile, having reconfigurable MAC pipeline, and reconfigurable memory
US11455368B2 (en) 2019-10-02 2022-09-27 Flex Logix Technologies, Inc. MAC processing pipeline having conversion circuitry, and methods of operating same
US12015428B2 (en) 2019-11-05 2024-06-18 Flex Logix Technologies, Inc. MAC processing pipeline using filter weights having enhanced dynamic range, and methods of operating same
US11693625B2 (en) 2019-12-04 2023-07-04 Flex Logix Technologies, Inc. Logarithmic addition-accumulator circuitry, processing pipeline including same, and methods of operation
US11960856B1 (en) 2020-01-15 2024-04-16 Flex Logix Technologies, Inc. Multiplier-accumulator processing pipeline using filter weights having gaussian floating point data format
US11442881B2 (en) * 2020-04-18 2022-09-13 Flex Logix Technologies, Inc. MAC processing pipelines, circuitry to control and configure same, and methods of operating same
US11604645B2 (en) 2020-07-22 2023-03-14 Flex Logix Technologies, Inc. MAC processing pipelines having programmable granularity, and methods of operating same
CN112052042B (zh) * 2020-09-15 2023-08-15 厦门壹普智慧科技有限公司 一种数据流水线处理器系统
US20220207107A1 (en) * 2020-12-23 2022-06-30 Intel Corporation Apparatus and method for complex matrix multiplication
US20230004390A1 (en) * 2021-06-26 2023-01-05 Intel Corporation Apparatus and method for vector packed dual complex-by-complex and dual complex-by-complex conjugate multiplication

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4760525A (en) * 1986-06-10 1988-07-26 The United States Of America As Represented By The Secretary Of The Air Force Complex arithmetic vector processor for performing control function, scalar operation, and set-up of vector signal processing instruction
US5361367A (en) * 1991-06-10 1994-11-01 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Highly parallel reconfigurable computer architecture for robotic computation having plural processor cells each having right and left ensembles of plural processors
DE69228980T2 (de) * 1991-12-06 1999-12-02 Nat Semiconductor Corp Integriertes Datenverarbeitungssystem mit CPU-Kern und unabhängigem parallelen, digitalen Signalprozessormodul
US5805875A (en) * 1996-09-13 1998-09-08 International Computer Science Institute Vector processing system with multi-operation, run-time configurable pipelines
JPH10340128A (ja) * 1997-06-10 1998-12-22 Hitachi Ltd データ処理装置及び移動体通信端末装置
JP2000284970A (ja) * 1999-03-29 2000-10-13 Matsushita Electric Ind Co Ltd プログラム変換装置及びプロセッサ
US6477555B1 (en) * 1999-07-07 2002-11-05 Lucent Technologies Inc. Method and apparatus for performing rapid convolution
US6557096B1 (en) * 1999-10-25 2003-04-29 Intel Corporation Processors with data typer and aligner selectively coupling data bits of data buses to adder and multiplier functional blocks to execute instructions with flexible data types
US6667636B2 (en) * 2001-06-11 2003-12-23 Lsi Logic Corporation DSP integrated with programmable logic based accelerators
US20030005261A1 (en) * 2001-06-29 2003-01-02 Gad Sheaffer Method and apparatus for attaching accelerator hardware containing internal state to a processing core
US20030212728A1 (en) * 2002-05-10 2003-11-13 Amit Dagan Method and system to perform complex number multiplications and calculations
US7430652B2 (en) * 2003-03-28 2008-09-30 Tarari, Inc. Devices for performing multiple independent hardware acceleration operations and methods for performing same
CN1777076A (zh) * 2004-11-16 2006-05-24 深圳安凯微电子技术有限公司 一种时分-同步码分多址接入的基带芯片

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9104584B2 (en) 2010-12-30 2015-08-11 Samsung Electronics Co., Ltd. Apparatus and method for performing a complex number operation using a single instruction multiple data (SIMD) architecture
KR20190026830A (ko) * 2016-07-08 2019-03-13 에이알엠 리미티드 벡터 레지스터 액세스

Also Published As

Publication number Publication date
US7299342B2 (en) 2007-11-20
CN101238455A (zh) 2008-08-06
JP2009505215A (ja) 2009-02-05
JP5080469B2 (ja) 2012-11-21
US20060271764A1 (en) 2006-11-30
EP1913488A1 (en) 2008-04-23
WO2007018468A1 (en) 2007-02-15
WO2007018468A8 (en) 2008-01-17
KR101394573B1 (ko) 2014-05-12

Similar Documents

Publication Publication Date Title
KR101394573B1 (ko) 복소 벡터 명령을 실행하도록 구성된 클러스터된 simd마이크로아키텍쳐를 포함하는 프로그램 가능한 디지털 신호프로세서
KR101330059B1 (ko) 복소 쇼트 승산기 및 독립된 벡터 로드유닛을 포함하는클러스터된 simd 마이크로아키텍쳐를 갖는 프로그램가능한 디지털 신호 프로세서
US7415595B2 (en) Data processing without processor core intervention by chain of accelerators selectively coupled by programmable interconnect network and to memory
KR101162649B1 (ko) 가변적 크기의 고속 직교 변환을 구현하기 위한 방법 및장치
US7483933B2 (en) Correlation architecture for use in software-defined radio systems
Woh et al. The next generation challenge for software defined radio
Ziyuan et al. A 100 GOPS ASP based baseband processor for wireless communication
Rowen et al. A DSP architecture optimized for wireless baseband
Huang et al. A 1.1 G MAC/s sub-word-parallel digital signal processor for wireless communication applications
Zhang et al. Domain specific architecture for next generation wireless communication
Tell et al. A programmable dsp core for baseband processing
Woh et al. Analyzing the scalability of SIMD for the next generation software defined radio
US20240220249A1 (en) Flexible vectorized processing architecture
Woh Architecture and analysis for next generation mobile signal processing
Nilsson et al. A fully programmable Rake-receiver architecture for multi-standard baseband processors
Benhaoues et al. Versatile digital architecture for mobile terminal
Iacono et al. ASIP architecture for multi-standard wireless terminals
versus Cache 21.1 Introd
Lin et al. Baseband processing architectures for SDR
Niktash et al. A Study of Implementation of IEEE 802.11 a Physical Layer on a Heterogeneous Reconf1gurable Platform
Cupaiuolo et al. Software implementation of the IEEE 802.11 a/p physical layer
Tell et al. Implementation of a Programmable Baseband Processor

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: 20170406

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180413

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190501

Year of fee payment: 6