KR20140078717A - 디지털 신호 프로세서 및 기저 대역 통신장치 - Google Patents

디지털 신호 프로세서 및 기저 대역 통신장치 Download PDF

Info

Publication number
KR20140078717A
KR20140078717A KR1020147011833A KR20147011833A KR20140078717A KR 20140078717 A KR20140078717 A KR 20140078717A KR 1020147011833 A KR1020147011833 A KR 1020147011833A KR 20147011833 A KR20147011833 A KR 20147011833A KR 20140078717 A KR20140078717 A KR 20140078717A
Authority
KR
South Korea
Prior art keywords
vector
instruction
instructions
queue
execution unit
Prior art date
Application number
KR1020147011833A
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 KR20140078717A publication Critical patent/KR20140078717A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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
    • 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/3802Instruction prefetching
    • 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
    • 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/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

증가된 효율을 위해서, 디지털 신호 프로세서(200)는 벡터 형태인 다수의 데이터상에서 실행되어야 할 명령들을 실행하도록 구성된 벡터 실행 유닛(203,205)을 포함하고, 명령이 벡터 명령인지를 결정하도록 구성되며, 그리고 만일 그렇다면, 벡터 길이를 홀드하도록 구성된 상기 계수 레지스터(732)에 알리도록 된 백터 제어기(720)를 포함하며, 상기 벡터 제어기는 추가적으로 발행 신호를 수신하고, 이러한 발행 신호에 기초하여 명령들의 실행을 제어하도록 구성되며, 상기 벡터 실행 유닛은, 그것이
- 로컬 큐(730)를 포함하여 프로그램 메모리로부터 명령들을 수신하고, 미리 정의된 조건이 충족될 때까지, 상기 로컬 큐 내에 그것들을 홀드시키도록 구성되며, 그리고
- 상기 벡터 제어기는 상기 로컬 큐를 제어하도록 구성된 큐 제어 수단(732,721)들을 포함한다.

Description

디지털 신호 프로세서 및 기저 대역 통신장치{DIGITAL SIGNAL PROCESSOR AND BASEBAND COMMUNICATION DEVICE}
본 발명은 SIMT-기반의 디지털 신호 프로세서에 관한 것이다.
많은 이동 통신 장치는 하나 이상의 디지털 신호 프로세서(DSP)를 포함하는 무선 송수신기를 사용한다.
증가된 성능과 안정성을 위해, 많은 이동 단말기는 현재 수신된 무선 신호를 처리하고, 그리고 송신을 위한 신호를 준비하는 것에 연관된 많은 신호 처리 기능을 처리하기 위해, 기저 대역 프로세서(BBP)라고 알려진 DSP의 타입을 사용한다. 메인 프로세서로부터 그러한 기능을 분리하는 것이 유리한데, 그것은 그것들이 매우 타이밍 의존적이고, 실시간 운영 시스템을 필요로 할 수 있기 때문이다. 그러한 기저 대역 프로세서들은 개발중인 표준에 적응하고, 하드웨어를 재사용할 수 있도록하기 위해 가능한 한 유연해야 하는 요구가 있다. 따라서, 프로그램가능한 기저 대역 프로세서, 즉 PBBP가 개발되어 있다.
종종, 그러한 프로세서에서 실행되는 기능의 대부분은, 많은 수의 데이터 샘플들에 대해 실행된다. 따라서 단일 명령 다중 데이터(SIMD) 프로세서라고 알려진 타입의 프로세서가 유용한데, 그 이유는 그것이 하나의 단일 명령이 한번에 하나의 데이터 항목에서 작동되도록 하기 보다는, 다수의 데이터 항목에서 작동하도록 할 수 있기 때문이다.
추가적인 SIMD 아키텍처의 개발로서, 단일 명령 스트림 다중 작업(SIMT) 아키텍처가 개발되어 있다. 전통적으로, SIMT 아키텍처에서는, 1 또는 2개의 SIMD 타입의 벡터 실행 유닛들이 코어 프로세서의 일부일 수 있는 정수 실행 유닛에 연관되어 제공되어 있다.
국제 특허 출원 WO2007/018467호는 SIMT 아키텍처에 따른 DSP를 개시하고 있으며, 이는 정수 프로세서 및 프로그램 메모리를 포함하는 프로세서 코어와, 상기 코어에 연결된, 그러나 통합되어 있지는 않는 2개의 벡터 실행 유닛들을 포함한다. 상기 벡터 실행 유닛은 컴플렉스 산술 논리 유닛(CALU), 또는 컴플렉스 다중누적 유닛(CMAC)일 수 있다. 이러한 코어는 실행 유닛에 명령을 배포하는 프로그램 메모리를 포함한다. WO2007/018467호에는, 각각의 벡터 실행 유닛들이 별개의 명령 디코더를 갖는다. 이것은 효율적인 방식으로, 그리고 서로에 대해 독립적으로 벡터 실행 유닛들과, 상기 프로세서의 다른 부분들의 사용을 가능하게 한다.
전형적으로, SIMT 프로세서를 위한 명령 세트 아키텍처는 복합 명령의 세 가지 클래스를 포함할 수 있다.
- 16-비트 정수 피연산자에 대해 작동하는 RISC 명령. 상기 RISC 명령 클래스는 제어-지향 명령들의 대부분을 포함하고, 상기 프로세서 코어의 정수 실행 유닛 내에서 실행될 수 있다.
- 실제 부분과 가상 부분을 갖는 컴플렉스-값의 데이터에 대해 작동하는 DSP 명령. 상기 DSP 명령은 SIMD 클러스터 중 하나 이상에서 실행될 수 있다.
- 벡터 명령들. 상기 벡터 명령들은, 그것들이 큰 데이터 세트에 대해 작동하고, 그리고 고급 어드레싱 모드와 벡터 지원을 활용할 수 있기 때문에, DSP 명령의 확장으로 간주될 수 있다.
따라서, 상기 SIMT 아키텍처는 작업 수준의 성능, SIMD 벡터 연산 및, 동시에 충분한 RISC 제어의 유연성을 모두 제공한다.
따라서, 상기 SIMT 아키텍처에는, 여러 개의 실행 유닛이 있다. 일반적으로, 하나의 명령은 프로그램 메모리로부터 실행 유닛들 중 하나에 매 클록 사이클마다 발행될 수 있다. 벡터 연산은 전형적으로 큰 벡터들상에서 작동하기 때문에, 하나의 클록 사이클 동안에 하나의 벡터 실행 유닛에서 수신된 명령은, 처리될 클록 사이클의 수를 가질 것이다. 따라서, 다음의 클록 사이클에서는, 명령들이 프로세서의 다른 연산 유닛으로 발행될 수 있다. 벡터 명령들이 긴 벡터들상에서 실행되기 때문에, 많은 RISC 명령은 벡터 연산과 동시에 실행될 수 있다.
많은 기저 대역 알고리즘은, 작업들 사이에서 이전과는 종속성이 없는, 보다 작은 기저 대역 작업의 체인으로 분해될 수 있다. 이러한 속성은 다른 작업들이 벡터 실행 유닛상에서 병렬로 실행될 수 있도록 할 뿐만 아니라, 상기 명령 세트 아키텍처를 사용하여 이용될 수 있다.
종종, 제어 흐름 동기화를 제공하고 데이터 흐름을 제어하기 위해, "아이들(idle)" 명령이 지정된 벡터 연산이 완료될 때까지, 제어 흐름을 중단시키도록 사용될 수 있다. 상기 "idle" 명령은 특정 조건이 충족될 때까지, 추가적인 명령 호출을 중단할 것이다. 그러한 조건은 벡터 실행 유닛 내에서 벡터 명령의 종료일 수 있다.
전형적으로, 이후에 보다 상세히 논의될 바와 같이, DSP 작업은 1 내지 10 명령들의 시?스를 포함할 것이다. 이것은 상기 벡터 실행 유닛이 벡터 명령을 수신하고, 즉 계산을 실행하고, 그것이 전체 벡터와는 끝날 때까지, 제공되어진 데이터 벡터상에서 그것을 실행하는 것을 의미한다. 다음 명령은, 상기 계산이 전체 벡터에 대해 실행된 이후에, 그 결과를 처리하고 그것을 메모리에 저장하는 것이며, 그것은 이론적으로는 즉시 일어날 수 있다. 그러나, 종종, 벡터 실행 유닛은 프로그램 메모리로부터 그것의 다음 명령에 대해 몇 클록 사이클을 기다려야 하며, 그것은 상기 프로세서 코어가 다른 벡터 유닛들이 종료하기를 기다리면서 바쁘기 때문이고, 그것은 벡터 실행 유닛의 비효율적인 활용을 초래한다. 벡터 실행 유닛이 비활성 상태로 유지되는 이러한 확률은, 시스템내에서 벡터 실행 유닛들의 수가 증가됨에 따라서 함께 증가한다.
본 발명의 목적은, SIMT 아키텍처 내에서 벡터 명령들의 처리를 보다 효율적으로 실행하기 위함이다.
이러한 목적은, 본 발명에 따라서, 디지털 신호 프로세서 내에서 사용하기 위한 벡터 실행 유닛에 의해서 달성되며, 상기 벡터 실행 유닛은 벡터의 형태로 다수의 데이터에 대해서 실행되어야 하는 벡터 명령들을 포함하는 명령들을 실행하도록 구성되며, 명령이 벡터 명령인지를 결정하고, 만약 그렇다면, 벡터 길이를 홀드하도록 구성된 계수 레지스터에게 알리도록 구성된 벡터 제어기를 포함하며, 상기 벡터 제어기는 상기 명령들의 실행을 제어하도록 추가적으로 구성되고, 상기 벡터 실행 유닛은 로컬 큐(queue)를 포함하며, 그것은 프로그램 메모리로부터 적어도 제1 및 제2 명령을 수신하고, 미리 정의된 조건이 충족될 때까지 그 내부에 제2 명령을 홀드하도록 구성되며, 그리고 상기 벡터 제어기가 상기 로컬 큐를 제어하도록 구성된 큐 제어 수단을 포함하는 것을 특징으로 한다.
바람직하게는, 상기 벡터 제어기는 상기 코어로부터 수신된 발행 신호에 기초하여 명령들의 실행을 제어한다. 다르게는, 상기 발행 신호는 벡터 실행 유닛 자체에 의해서 국소적으로 처리될 수 있다.
각각의 벡터 실행 유닛에 제공된 로컬 큐 때문에, 하나의 벡터 유닛에 대한 여러 명령들을 포함하는 명령 번들이, 한번에 상기 벡터 유닛으로 제공될 수 있다. 벡터 명령의 실행에 대하여 상기 로컬 큐내 명령들의 동기화를 가능하게 하기 위해, SYNC 명령으로 불리는 명령이 제공되며, 이는 조건이 충족될 때까지, 전형적으로는 상기 데이터 경로가 또 다른 명령을 받고 실행할 준비가 된 상태일 때 까지, 상기 로컬 큐로부터 명령의 판독을 일시 중단할 것이다. 이러한 두 가지 기능들은 함께, 명령 시?스가 한번에 상기 벡터 실행 유닛에 전송되도록 하고, 로컬 큐에 저장되도록 하며, 상기 벡터 실행 유닛내에서 연속적으로 처리되도록 하여, 상기 벡터 실행 유닛이 하나의 명령을 처리하면 즉시, 다음 것에 대해 시작할 수 있도록 하여 준다. 이러한 방식으로, 각각의 벡터 실행 유닛은, 최소한의 비활성 시간으로 작동할 수 있다.
따라서, 본 발명에 따른 처리는, 벡터 실행 유닛들이 보다 서로에 대해 독립적으로 작동할 수 있기 때문에, 상기 프로세서에서 병렬성을 증가시킴으로써 보다 효율적으로 이루어진다. 본 발명은, 종래 기술에서, 모두 벡터 실행 유닛들이 동일한 큐로부터, 즉 프로세서 코어내의 프로그램 메모리로부터, 그들의 명령을 받기 때문에, 벡터 명령을 완료한 벡터 실행 유닛이, 종종 즉시 다음 명령을 수신할 수 없다는 통찰에 기초한 것이다. 이는 상기 프로그램 메모리내의 첫 번째 명령이 바쁜 상태의 다른 벡터 실행 유닛에 대해 의도되어 있는 동안, 벡터 실행 유닛이 새로운 명령을 수신할 준비가 되었을 때에 발생할 것이다. 이러한 경우, 다른 벡터 실행 유닛이 그것의 다음 명령을 수신할 준비가 될 때까지, 어떠한 벡터 실행 유닛도 새로운 명령을 수신할 수는 없다.
바람직한 실시 예에서, 상기 벡터 실행 유닛은 추가적으로,
- 명령들을 수신하고 저장하도록 구성된 명령 레지스터,
- 상기 명령 레지스터에 저장된 명령들을 디코딩하도록 구성된 명령 디코더,
- 상기 명령 디코더에 의해서 제어되는 다수의 데이터 경로들을 포함한다.
바람직하게는, 상기 로컬 큐는, 상기 데이터 경로가 다른 명령을 수신 및 실행할 준비가 될 때까지 명령들의 판독을 일시 정지하도록 구성된다. 이것은 상기 벡터 명령내의 큐 처리 및 상기 벡터 실행 유닛이 속하는 프로세서내에서 명령들의 전체적인 처리를 최적화할 것이다.
바람직하게는, 상기 큐 제어 수단은 상기 큐와 관련된 상태 정보, 예를 들면 그러한 큐가 얼마나 가득차 있는 지와 같은 것을 홀드하고, 실행을 위해서 상기 로컬 큐로부터 벡터 실행 유닛으로 명령들의 전송을 제어하기 위해 구성된 큐 제어기를 포함한다. 상기 큐 제어기는 또한, 만일 새로운 명령이 상기 큐로 전송되고, 그리고 상기 큐가 가득차 있다면, 에러 메시지를 생성하도록 구성될 수 있다.
상기 큐 제어 수단은 특정 조건이 충족될 때까지, 예를 들면 상기 데이터 경로가 새로운 명령을 수용할 준비가 된 때까지, 상기 로컬 큐로부터 명령들의 판독을 일시 중지하도록 상기 로컬 큐에 명령하는 특정 신호를 발행하도록 구성될 수 있다.
바람직하게는, 상기 벡터 제어기는 디지털 신호 프로세서의 프로그램 흐름 제어 유닛에 신호가 전송되도록 하여, 상기 유닛이 새로운 명령을 받아 들일 준비가 되었음을 나타내도록 구성된다. 이러한 신호의 전송은, 임의의 주어진 시간에 실행되는 명령에 대하여, 상기 명령 디코더로부터 벡터 제어기에 전송된 정보에 기초할 수 있다. 상기 신호는 상기 큐내의 현재의 명령 수, 예를 들면, 상기 큐내에 추가적인 명령들을 위한 공간이 존재하는 지의 여부 등에 기초할 수 있다.
본 발명은 또한, 디지털 신호 프로세서에 관한 것이며, 아래의 것들을 포함한다:
- 정수 명령들을 실행하도록 구성된 정수 실행 유닛을 포함하는 프로세서 코어;
- 서로 분리되고, 상기 프로세서 코어에 결합된 적어도 제1 및 제2 벡터 실행 유닛, 여기서 각각의 벡터 실행 유닛은 상기에 따른 벡터 실행 유닛임;
- 상기 디지털 신호 프로세서는 상기 제1 및 제2 벡터 실행 유닛을 위한 명령들을 홀드하도록 구성된 프로그램 메모리와, 상기 제1 및 제2 벡터 실행 유닛으로 향하여 벡터 명령들을 포함하는 명령들을 발행하기 위한 발행 로직을 포함함.
그러한 디지털 프로세서는, 상술한 바와 같이, 그것의 벡터 실행 유닛의 보다 많은 동시적인 사용을 가능하게 할 것이다.
전형적으로, 상기 프로그램 메모리는 프로세서 코어 내에 구성되고, 또한 정수 실행 유닛에 대한 명령들을 홀드하도록 구성된다.
본 발명은 또한, 멀티 모드 유선 및 무선 통신에 적합한 기저 대역 통신 장치에 관한 것이며, 아래의 것들을 포함한다:
- 통신 신호들을 송신 및/또는 수신하도록 구성된 전방-엔드 유닛;
- 상기 아날로그 전방-엔드 유닛에 결합된 프로그램 가능한 디지털 신호 프로세서, 여기서 상기 프로그램 가능한 디지털 신호 프로세서는 상기에 따른 디지털 신호 프로세서임.
바람직한 실시 예에서, 본 문서를 통해서 언급된 상기 벡터 실행 유닛은, 데이터의 벡터에 대해 작동하도록 구성된 SIMD 형 벡터 실행 유닛, 또는 프로그램 가능한 코-프로세서들이다.
상기 로컬 큐는, 예를 들면 4-8 명령들과 같은, 원하는 길이의 선입 선출(FIFO) 큐가 될 수 있다. 또한 임의의 다른 타입의 적합한 큐가 될 수 있다.
본 발명의 실시 예에 따른 프로세서는, 디지털 신호 프로세서들, 특히 기저 대역 프로세서들에 특별히 유용하다. 상기 전방-엔드 유닛은, 무선 주파수 또는 기저 대역 신호들을 송신 및/또는 수신하도록 구성된 아날로그 전방-엔드 유닛일 수 있다.
그러한 프로세서들은, 널리 휴대 전화, TV 수신기 및 케이블 모뎀과 같은 통신 장치의 다른 타입들에서 이용된다. 따라서, 상기 기저 대역 통신 장치는 무선 전화 통신 네트워크내의 통신 기능을 위해, 예를 들면 휴대 전화나 이동 데이터 통신 장치로서 구성될 수 있다. 상기 기저 대역 통신 장치는, 블루투스나 무선 랜과 같은 다른 무선 표준에 따른 통신을 위해서 구성될 수도 있다. 또한, 그것은 텔레비전 수신기, 케이블 모뎀, 무선 모뎀이나, 또는 그 프로세서에 기저 대역 신호를 제공할 수 있는 임의의 다른 타입의 통신 장치일 수 있다. 상기 용어 "기저 대역(baseband)"은 단지 프로세서내에서 내부적으로 처리된 신호만을 의미하는 것이 이해되어야 한다. 실제로 수신 및/또는 송신된 통신 신호들은, 유선 또는 무선 연결에서 수신된 통신 신호의 임의의 적절한 타입일 수 있다. 상기 통신 신호들은 적절한 방법으로, 상기 장치의 전방-엔드 유닛에 의해서 기저 대역 신호로 변환된다.
본 발명에 의하면, SIMT 아키텍처 내에서 벡터 명령들의 처리를 보다 효율적으로 실행할 수 있다.
이하에서는, 본 발명이 첨부된 도면을 참조하여 예를 들어서, 보다 상세히 설명될 것이다.
도 1은 기저 대역 프로세서를 포함하는 전형적인 휴대용 단말기의 시스템 개요도이다.
도 2는 SIMT 아키텍처의 예를 나타낸다.
도 3은 본 발명의 실시 예에 따른 기저 대역 프로세서의 블록 다이어그램이다.
도 4는 도 2의 프로세서 코어의 일 실시 예의 명령 발행 파이프 라인을 도시하는 블록 다이어그램이다.
도 5는 SIMT 프로세서내에서의 명령 발행 로직을 도시한다.
도 6은 종래 기술에 따른 SIMT 유닛을 도시한다.
도 7은 본 발명의 일반적인 실시 예의 추가적인 특성을 갖는 SIMT 유닛을 도시한다.
도 8은 본 발명의 바람직한 실시 예에 따른 SIMT 유닛을 도시한다.
도 9는 본 발명의 실시 예에 따른 로컬 큐의 작동 원리를 도시한다.
도 1은 본 출원의 주요 주제이며, 기저 대역 프로세서(3)를 포함하는, 예를 들면 휴대용 단말기(1)를 도시한다. 당업계에서 일반적인 바와 같이, 단말기(1)는 통신 신호를 수신하고 송신하기 위한 수단을 포함한다. 본 예에서, 이것은 수신 방향을 위한 아날로그 디지털 컨버터(ADC)와, 송신 방향을 위한 디지탈 아날로그 컨버터(DAC)를 포함하는, 아날로그 전방-엔드 유닛(7)에 연결된 안테나(5)를 포함한다. 상기 아날로그 전방-엔드 유닛(7)는 기저 대역 프로세서(3)에 연결된다. 상기 기저 대역 프로세서(3)는 통상적으로, 그렇지만 필수적이 아닌, 포워드 에러 정정(FEC) 프로세서(9)를 포함하며, 이것은 인터리빙하는 것과 같은 에러 정정 기능, 당업계에서는 일반적인 것과 같은 비터비(Viterbi) 디코딩등을 위한 것이다. 전형적으로, 상기 기저 대역 프로세서(3)는, 응용 프로세서(13)에 차례로 연결된 MAC 유닛(11)에 차례로 연결되어 있다.
전형적으로, 그러나 필수적인 것은 아니지만, 상기 단말기(1)는 기저 대역 프로세서, MAC 유닛(11)과, 응용 프로세서(13)를 상호 연결시키는 버스 및 메모리 서브 시스템(15)을 갖는다. 상기 단말기는 또한, 사용자의 입력/출력을 위한 주변기기 인터페이스(17)를 포함하며, 이는 전형적으로, 키패드, 카메라 인터페이스와, 다른 유닛으로의 연결을 위한 인터페이스, 예를 들면 USB 인터페이스 등을 포함한다.
당업자들은 알 수 있는 바와 같이, 상기 아날로그 전방-엔드는 무선 주파수 신호, 기저 대역 신호 및 기타 신호 등을 포함하는 임의 타입의 송수신 신호를 처리하고, 상기 기저 대역 프로세서(3)에 기저 대역 신호를 제공하도록 구성될 수 있다.
도 2는 SIMT 아키텍처에 따른 기저 대역 프로세서(200)의 예를 나타낸다. 프로세서(200)는 제어기 코어(201) 및 제1 및 제2 벡터 실행 유닛(203,205)을 포함하며, 이들에 대해서는 이하에서 보다 상세히 설명하기로 한다. 도 1에서 설명된 바와 같은 FEC 유닛(206)은, 온-칩 네트워크에 연결된다. 구체적인 실시 예에서, 물론, 상기 FEC 유닛(206)은 여러 다른 유닛들을 포함할 수 있다.
호스트 인터페이스 유닛(207)은, 도 1에 도시된 호스트 프로세서에 연결을 제공한다(도 2에는 미도시). 만일 MAC 프로세서가 존재하는 경우, 도 1에 도시된 바와 같이, 상기 MAC 프로세서는 상기 호스트 인터페이스 유닛(207)과 호스트 프로세서 사이에 연결된다. 디지털 전방-엔드 유닛(209)은 당업계에서 잘 알려진 방식으로, 도 1에 도시된 바와 같이, 상기 ADC/DAC 유닛에 연결을 제공한다.
당업계에서 잘 알려진 바와 같이, 제어기(201)는 프로그램 메모리(21) 뿐만 아니라, 다중 컨텍스트 지원을 위한 명령 발행 로직 및 기능들을 포함한다. 지원된 각각의 실행 컨텍스트, 또는 스레드에 대해, 이것은 프로그램 계수기, 스택 포인터 및 레지스터 파일을 포함한다(도 2에 명시적으로 표시되어 있지는 않음). 전형적으로, 2-3 개의 스레드들이 지원된다.
상기 제어기 코어(201)는 또한, 레지스터 파일(RF)을 포함하는 정수 실행 유닛(212), 코어 정수 메모리(ICM), 승산 유닛(MUL) 및 산술 및 논리/시프트 유닛(ALSU)들을 포함한다. 상기 ALSU은 2개의 유닛, 연산 유닛 및 논리 시프트 유닛으로 구현될 수 있다. 이러한 유닛들은 당업계에 공지되어 있으며, 도 2에는 도시되어 있지 않다.
이 예에서 제1 벡터 실행 유닛(203)은, 벡터 제어기(213), 벡터 적재/저장 유닛(215) 및 다수의 데이터 경로(217)들을 포함하는 CMAC 벡터 실행 유닛이다. 이러한 제1 벡터 실행 유닛의 벡터 제어기는 발행 로직을 통해 제어기 코어(201)의 프로그램 메모리(211)에 연결되어 프로그램 메모리로부터 명령에 관련된 발행 신호들을 수신한다. 상기의 설명에서, 상기 발행 로직은 발행 신호를 획득하라는 명령어를 디코딩하고, 별도의 신호로서 상기 벡터 실행 유닛에 이러한 발행 신호를 보낸다. 또한, 이것은 상기 벡터 실행 유닛의 벡터 제어기로 하여금, 상기 발행 신호를 국소적으로 발생시키는 것도 가능하다. 이와 같은 경우, 상기 발행 신호들은 발행 로직내에서와 같은 동일한 방식으로 명령어에 기초한 벡터 제어기에 의해서 생성된다.
제2 벡터 실행 유닛(205)은 벡터 제어기(223), 벡터 적재/저장 유닛(225) 및 다수의 데이터 경로(227)들을 포함하는 CALU 벡터 실행 유닛이다. 이러한 제2 벡터 실행 유닛의 벡터 제어기(223)는 발행 로직을 통해서 상기 제어기 코어(201)의 프로그램 메모리(211)에 연결되어 상기 프로그램 메모리로부터 명령들에 관련된 발행 신호들을 수신한다.
상기 데이터 경로(217,227) 및 상기 벡터 적재/저장 유닛(215,225) 들의 기능은 이하에서 보다 상세히 설명될 것이다.
단지 CMAC 유닛들만, 단지 CALU 유닛들만, 또는 적절한 수의 각각의 타입들만을 포함하는 임의 개수의 벡터 실행 유닛들이 있을 수 있다. 또한 CMAC 및 CALU 과는 다른 타입의 벡터 실행 유닛이 있을 수 있다. 상기에서 설명된 바와 같이, 벡터 실행 유닛은 벡터 명령들을 처리할 수 있는 프로세서이고, 이는 단일 명령이 다수의 데이터 유닛들에 동일한 기능을 실행한다는 것을 의미한다. 데이터는 복잡하거나 또는 실제적일 수 있으며, 바이트 또는 워드 등으로 그룹화되고, 그리고 벡터 실행 유닛에 의해서 제어될 수 있는 벡터내로 포장된다. 본 문서에서, CALU 및 CMAC 유닛들은 예로서 사용된 것이지만, 벡터 실행 유닛들은 데이터 벡터들에 임의의 적절한 기능을 실행하도록 사용될 수 있다는 것을 주목해야 한다.
몇가지 동시적인 벡터 연산을 가능하게 하기 위하여, 상기 프로세서는 바람직하게는, 분산 메모리 시스템을 가지고 있으며, 여기서는 상기 메모리가 도 2에서 메모리 뱅크 0(230) 내지 메모리 뱅크 N(231)에 의해서 표시된 바와 같은, 여러 메모리 뱅크들로 분할된다. 각각의 메모리 뱅크(230,231)는 그 자신의 컴플렉스 메모리(232,233)와, 어드레스 생성 유닛(AGU)(234,235)을 각각 갖는다. 상기 온-칩 네트워크와 함께 이러한 구성은, 메모리 시스템의 전력 효율과 상기 프로세서의 처리량을 개선시키는데, 그 이유는 다중 어드레스 계산이 병렬로 실행될 수 있기 때문이다. 또한, 도 2의 PBBP는 메모리(239) 및 어드레스 생성 유닛(240)을 포함하는 하나 이상의 정수 메모리 뱅크(238)들을 포함한다.
당해 분야에서 공지된 바와 같이, 다수의 가속기(242)들이 전형적으로 연결되며, 그 이유는 그것들이 채널 코딩 및 인터리빙과 같은 특정 기저 밴드 기능의 효율적인 구현을 가능하게 하기 때문이다. 이러한 가속기들은 당업계에 공지되어 있으며, 여기에서는 보다 상세히 논의되지는 않을 것이다. 상기 가속기들은 여러가지 다양한 기준에 의해서 재사용하도록 구성될 수 있다.
온-칩 네트워크(244)는 제어기 코어(201), 디지털 전방-엔드 유닛(209), 호스트 인터페이스 유닛(207), 벡터 실행 유닛(203,205), 메모리 뱅크(230,232), 정수 뱅크(238)와 가속기(242)들을 연결한다.
각각의 벡터 실행 유닛(203,205)들은 벡터 적재/저장 유닛(215,225)를 포함하며, 이것은 벡터 실행 유닛 내에서 네트워크 포트와 데이터 경로 사이의 인터페이스로서 기능하도록 구성되어 있다. 전형적으로, 상기 실행 유닛(203,205)들은 네트워크(244)를 통해 메모리 뱅크(230,231)들에 연결되어 있지만, 가속기(242)와 같은 다른 유닛들과 다른 벡터 실행 유닛들과의 연결이 또한 지원될 수 있다. 상기 적재 기능은 상기 네트워크(244)에 연결된 다른 유닛들(예를 들면, 메모리 뱅크)로부터 데이터를 호출하는 데 사용되고, 그리고 상기 저장 기능은 실행 유닛(203,205)으로부터, 예를 들면 메모리 유닛(230,231)에 상기 네트워크(244)를 통하여 데이터를 저장하는 데 사용된다. 데이터는 또한, 다른 벡터 실행 유닛들로부터 획득될 수 있고, 및/또는 연산 결과는 추가적인 처리를 위해 다른 벡터 실행 유닛들로 전달될 수 있다. 각각의 벡터 실행 유닛은 또한, 프로그램 메모리 PM(211)로부터의 명령들을 수용하도록 구성된 벡터 제어기(213,223)를 포함한다. 상기 벡터 적재 유닛(215,225)은 2개의 상이한 모드를 사용하여 데이터를 적재할 수 있다. 제1 모드에서, 다수의 데이터 항목들은 메모리 뱅크(230,232) 또는 상기에서 설명한 한 바와 같은 다른 소스들로부터 적재될 수 있다. 다른 모드에서, 데이터는 한번에 하나의 데이터 항목이 적재될 수 있고, 그 후에 주어진 실행 유닛내에서 SIMD 데이터 경로로 분배된다. 후자의 모드는, 연속된 데이터가 실행 유닛에 의해서 처리될 때, 메모리 액세스의 개수를 감소시키기 위해서 사용될 수 있다.
도시된 실시 예에서, 제2 벡터 실행 유닛(205)은 당해 기술 분야에서 알려진 바와 같이, 컴플렉스 쇼트 승산 누산기(CSMAC)를 각각 갖는 4개의 독립적인 데이터 경로(227)들을 포함하는 4방향 컴플렉스 ALU로서 도시되어 있다. 이하에서 보다 상세히 설명되는 바와 같이, CALU(205)는 벡터 명령들을 실행할 수 있다. 일 실시 예에서, CALU(205)는 특히 컴플렉스 벡터 명령들을 실행하도록 적응될 수 있다. 또한, CALU(205)의 각각의 독립적인 데이터 경로(227)들은 동시에 컴플렉스 벡터 명령들을 실행할 수 있다.
제1 벡터 실행 유닛(203)은, 동시에 또는 개별적으로 실행될 수 있는 4개의 컴플렉스 데이터 경로를 갖는 4방향 CMAC으로서 표시되어 있다. 4개의 컴플렉스 데이터 경로들은, 승산기, 가산기, 및 누산기 레지스터(도 2에는 모두 미도시)들을 포함한다. 따라서, 본 실시 예에서, CMAC(203)는 4방향 CMAC 데이터 경로로서 지칭될 수 있다. 승산 및 가산에 더하여, CMAC(203)는 또한, 라운딩 및 스케일링 연산을 실행하고, 그리고 당해 분야에 공지된 바와 같이 지지 포화를 실행할 수 있다.
일 실시 예에서, CMAC(203) 작업은 다수의 파이프 라인 단계들로 나뉘어질 수 있다. 또한, 4개의 컴플렉스 데이터 경로(217)들 각각은, 하나의 클록 사이클내에서, 컴플렉스 승산과 누적을 계산할 수 있다. 상기 CMAC(203)(즉, 4개의 데이터 경로들 모두)는 N/4 클록 사이클내에서 N-요소 벡터상에 작업을 실행하여 컴플렉스 벡터 연산(예를 들면, 컴플렉스 컨볼루션, 공액 컴플렉스 컨볼루션 및 컴플렉스 벡터 내적)을 지원할 수 있다. 또한, CMAC(203)는 누적기 레지스터에 저장된 컴플렉스 값에 대한 작업(예를 들면, 컴플렉스 가산, 빼기, 공액 작업 등)을 지원할 수 있다. 예를 들면, CMAC(203)는, 하나의 클록 사이클내에서 (AR + JAI)*(BR + JBI)과 같은 컴플렉스 승산, 및 하나의 클록 사이클내에서 컴플렉스 누적을 계산하고, 그리고 컴플렉스 벡터 연산(예를 들면, 컴플렉스 컨볼루션, 공액 컴플렉스 컨볼루션 및 컴플렉스 벡터의 내적)을 지원할 수도 있다.
일 실시 예에서, 프로세서 코어(201)에 대한 명령 세트 구조는 복합 명령들의 세 가지 클래스를 포함할 수 있다. 첫 번째의 명령 클래스는 RISC 명령으로서, 이는 16-비트 정수 피연산자상에 작동한다. 상기 RISC 명령 클래스는 제어-지향 명령들의 대부분을 포함하고, 프로세서 코어(201)의 정수 실행 유닛(212) 내에서 실행될 수 있다. 다음 명령 클래스는 DSP 명령들이며, 이는 실제 부분과 가상 부분을 갖는 컴플렉스 값 데이터상에 작동한다. 상기 DSP 명령은 벡터 실행 유닛(203,205) 중 하나 이상에서 실행될 수 있다. 세번째 명령 클래스는 벡터 명령들이다. 벡터 명령들은 DSP 명령의 확장으로서 간주될 수 있는데, 그것들은 큰 데이터 세트에 대해 작동하고, 그리고 고급 어드레싱 모드와 벡터 지원을 활용할 수 있기 때문이다. 상기 벡터 명령은 컴플렉스 또는 실제 데이터 형식상에 작동할 수 있다.
도 3은 본 발명의 실시 예에 따른, 기저 대역 프로세서(PBBP)(200)의 블록도이다. PBBP(200)는 RISC 타입의 실행 유닛을 포함하고, 그리고 RISC 데이터 경로(510)로 표시되어지는 프로세서 코어를 포함한다. PBBP는 추가적으로 많은 수의 벡터 실행 유닛(520, 530)들을 포함하고, 그 각각은 벡터 제어 유닛(275) 및 SIMD 데이터 경로(525,535)를 포함한다. 당업계에서 일반적인 바와 같이, 각각의 데이터 경로(525,535)는 몇몇의 데이터 경로들을 포함할 수 있다. 전형적으로, 예를 들면, 데이터 경로(525)는 함께 데이터 경로(525)를 구성하는 4개의 병렬 CMAC 데이터 경로들을 갖는다.
다수의 벡터 실행 유닛들에 대한 제어를 제공하기 위해서, 상기 코어 하드웨어(500)는, 프로그램 메모리(PM)(503)에 차례로 결합된 프로그램 계수기(502)와 결속된 프로그램 흐름 제어 유닛(501)을 포함한다. PM(503)은 멀티플렉서(504)에 결합되고, 유닛-필드 추출(508)에 결합된다. 멀티플렉서(504)는 명령 디코더(506)에 결합되는 명령 레지스터(505)에 결속된다. 명령 디코더(506)는 추가적으로, 상기 RISC 데이터 경로(510)의 나머지 부분에 차례로 결합되는 제어 신호 레지스터(CSR)(507)에 결합된다.
이와 유사하게, 벡터 실행 유닛(520,530) 각각은, 코어 내에 위치된 프로그램 메모리(503)로부터 명령을 수신하도록 구성된다. 상기 벡터 실행 유닛들은 각각의 벡터 길이 레지스터(521,531), 명령 레지스터(522,532), 명령 디코더(523,533), 및 CSR(524,534)들을 포함하고, 이들은 각각의 데이터 경로(525,535)들에 결합된다. 이러한 유닛들과 그 기능들은, 그것들이 본 발명과 관련된 것이면, 도 5에 관련하여 이후에 보다 상세히 설명될 것이다.
도 4는 프로그램 메모리로부터 다양한 실행 유닛들로 향한 명령들의 종래 기술에 따른 처리의 일례를 도시하며, 이는 본 발명에서 해결하고자 하는 근본적인 문제점을 예시하기 위해 의도된 것이다. 도 4의 왼쪽 열은 시간(실행 클록 사이클에서)을 나타낸다. 나머지 열들은 왼쪽으로부터 오른쪽으로 향해서, 제1 및 제2 벡터 실행 유닛의 실행 파이프선(보다 구체적으로는, CMAC(203) 및 CALU(205)의 데이터 경로) 및 정수 실행 유닛 및 그것으로의 명령의 발행을 나타낸다. 보다 구체적으로, 제1 클록 사이클에서, 컴플렉스 벡터 명령(예를 들면, CMAC(256))이 CMAC(203)로 발행된다. 도시된 바와 같이, 상기 벡터 명령은 종료하는 데 많은 사이클들을 겪는다. 다음 클록 사이클에서, 벡터 명령들이 CALU(205)로 발행된다. 다음 클록 사이클에서, 정수 명령이 정수 실행 유닛(510)으로 발행된다. 다음의 여러 사이클에서, 벡터 명령들이 실행되는 동안, 임의 수의 정수 명령들은 정수 실행 유닛(510)으로 발행될 수 있다. 비록 도시되어 있지는 않지만, 나머지 벡터 실행 유닛들도 또한, 비슷한 방식으로 명령들을 동시적으로 실행할 수 있다는 것을 유의하여야 한다.
일부의 경우에, "idle" 명령은 명령들의 시?스내에 포함되어 코어 프로그램 흐름 제어기가 프로그램 메모리로부터 명령들을 호출하는 것을 중지시킬 수 있다. 예를 들면, 벡터 명령의 종료에 프로그램 흐름을 동기화시키기 위해서, 상기 "idle" 명령은 특정 조건이 충족될 때까지, 명령 호출을 중단하기 위해 사용될 수 있다. 전형적으로, 이러한 조건은 관련 벡터 실행 유닛이 그 이전 벡터 명령은 종료하고, 새로운 명령을 수신할 수 있는 상태일 것이다. 이러한 경우, 관련 벡터 실행 유닛(520,530)의 벡터 제어기(275)는, 상기 벡터 실행 유닛이 다른 명령을 수신할 준비가 되어 있음을 나타내는 표시를, 예를 들면 플래그를, 프로그램 흐름 제어기(501)에 보낼 것이다.
아이들 명령들은, 동시에 하나 이상의 벡터 실행 유닛에 대해 사용될 수 있다. 이러한 경우, 각각의 관련 벡터 실행 유닛(520,530)들이 새로운 명령을 수신할 준비가 되어 있음을 나타내는 플래그를 송신할 때까지, 더 이상의 명령들이 프로그램 메모리(503)로부터 전송될 수는 없을 것이다.
도 4의 예에서, 상기 "idle" 명령은 상기에서 언급된 상기 정수 명령 이후에 발행된다. 본 예에서, 상기 아이들 명령들은, CMAC(203)에 의해서 실행된 벡터 연산이 완료될 때까지, 제어 흐름을 중단시키기 위해서 사용된다.
다음 예는, 임의 개수의 실행 유닛들을 갖는 SIMT DSP에 기초하여 설명될 것이다. 단순화를 위해서, 본 예에서 모든 유닛들은 CMAC 벡터 실행 유닛으로서 가정하지만, 실제로는 다른 타입의 유닛들이 혼합되어 함께 사용될 수 있다.
많은 기저 대역 처리 알고리즘 및 프로그램에서, 상기 알고리즘은 다수의 DSP 작업으로 분해될 수 있으며, 그 각각은 "프롤로그", 벡터 연산과 "에필로그"를 포함하여 이루어진다. 상기 프롤로그는 주로, 벡터 연산이 실행되기 이전에, 누적기를 소거하고, 어드레싱 모드와 포인터 및 그와 유사한 것들을 셋업하도록 되어 있다. 상기 벡터 연산이 완료되면, 벡터 연산의 결과는 추가적으로 상기 작업의 "에필로그" 부분에서 코드에 의해서 처리될 수 있다. SIMT 프로세서에서는, 전형적으로 단지 하나의 벡터 명령이 벡터 연산을 실행하기 위해서 필요하다.
하나의 DSP 작업의 전형적인 레이아웃은, 종래 기술에 따른 이하의 작업 예에 의해서 예시된다:
예제에서, 코드 정보는 512의 컴플렉스 값에 걸쳐서 컴플렉스 내적 계산을 실행하고, 그 다음 메모리에 결과를 다시 저장한다. 상기 루틴은 프로세서 코어에 의해서 호출되는 다음과 같은 명령을 필요로 한다.
. cmac0 ; cmacO 가 선택된 것으로 가정
prolog : ;어드레스 설정
ldi #0, r0
out r0 , cdm0 _ addr
out r0 , cdm1 _ addr
out r0 , cdm2 _ addr
setcmvl .512 ; 벡터 길이를 512로 설
vectorop : cmac [0],[1],[2] ; <벡터 길이>에 걸쳐서 cmac 작업을 실행 ; 샘플
idle # cmac0 ; cmacO 가 준비될 때까지, 프로그램의 호출을 중지
epilog : star [3] ; 누적기에 저장
상기의 예에서, setcmvl , cmacCstar 명령들이 발행되고, CMAC 벡터 실행 유닛 상에서 실행되며, 반면에 ldi , outidle 명령들은 정수 코어("core")상에서 실행된다.
상기 벡터 명령들의 벡터 길이는 상기 벡터 실행 유닛이 작동해야만 하는 얼마나 많은 데이터 워드(샘플)들이 있는지를 나타낸다. 상기 벡터 길이는, 다음 중 한 예를 들어서, 임의의 적절한 방법으로 설정될 수 있다:
1) 전용 명령에 의해서, 상기 예에서 예를 들면, setcmvl .123
2) 예를 들면, 포맷에 따라서 명령 자체내에서 실행됨:
도 4에 도시된 바와 같이, cmac .123.
3) 제어 레지스터에 의해서 설정, 예를 들면 포멧에 따라서 out rO , cmac _ vector _ length
상기 명령 idle # cmac0는 상기 CMACO 유닛이 그 벡터 작업을 완료할 때까지, 새로운 명령들을 가져오는 것을 중지하도록 상기 코어 프로그램 흐름 제어기에 지시한다. 상기 아이들 기능이 해제된 후, 그리고 새로운 명령이 호출되는 것을 허용한 후, 상기 "스타(star)" 명령이 호출되고, CMACO 벡터 실행 유닛으로 보내진다. 상기 스타 명령은 CMAC 벡터 실행 유닛으로 하여금 누적기를 메모리로 저장하도록 지시한다.
다음 예에서, 또한 선행 기술을 설명하는 바와 같이, 2개의 벡터 실행 유닛들이 사용된다. 제1 벡터 실행 유닛과 관련된 명령 시?스는 상기와 동일하다:
. cmac0 ; cmacO 이 선택되어 있다고 가정
prolog : ;어드레스 설정
ldi #0, r0
out r0 , cdm0 _ addr
out r0 , cdm1 _ addr
out r0 , cdm2 _ addr
setcmvl .512 ; 512로 벡터 길이 설정
vectorop : cmac [0],[1],[2] ; <벡터 길이>에 걸쳐서 cmac 작업을 실행 ; 샘플
idle # cmac0 ; cmacO 가 준비될 때까지, 프로그램의 호출
epilog : star [3] ; 누적기 저장
제2 벡터 실행 유닛과 관련된 명령 시?스는 다음과 같다:
. cmac1 ; cmac1 이 선택되어 있다고 가정
prolog : ;어드레스 설정
ldi #0, r0
out r0 , cdm3 _ addr
out r0 , cdm4 _ addr
out r0 , cdm5 _ addr
setcmvl .2048 ; 2048로 벡터 길이의 설정
vectorop : cmac [0],[1],[2] ; <벡터 길이>에 걸쳐서 cmac 작업을 실행 ; 샘플
idle # cmac1 ; cmacO 가 준비될 때까지, 프로그램의 호출을 중
epilog : star [3] ; 누적기 저장
이러한 경우, 제2 벡터 실행 유닛은 길이 2048의 벡터 연산을 실행하도록 지시되며, 이는 제1 벡터 실행 유닛에서 길이 512의 4배에 해당하는 긴 작동을 실행할 것이다. 따라서, 제1 벡터 실행 유닛은 제2 벡터 실행 유닛 이전에 완료할 것이다. 상기 프로그램 메모리가 명령되기 때문에, 제2 벡터 실행 유닛이 종료될 때 까지 다음 명령을 억제하라는 idle # cmac1 명령에 의해서, 상기 제2 벡터 실행 유닛이 종료될 때 까지, 상기 제1 벡터 실행 유닛에 새로운 명령을 보낼 수도 없을 것이다. 따라서, 제1 벡터 실행 유닛은 1000 이상의 클록 사이클 동안 비활성화 상태일 것이며, 그 이유는 제2 벡터 실행 유닛과 관련된 idle 명령 때문이다.
상기 예는 2개의 벡터 실행 유닛들을 사용한다. 상기에서 알 수 있는 바와 같이, 하나의 특정 벡터 실행 유닛과 관련된 대기(idle) 명령은 잠재적으로 보다 많은 수의 다른 벡터 실행 유닛에 영향을 주기 때문에, 벡터 실행 유닛의 수가 더 높을수록 더 큰 문제점이 일어날 것이다. 본 발명에 따르면, 이러한 문제점은 각각의 벡터 실행 유닛에 대해 로컬 큐를 제공함으로써 감소된다. 상기 로컬 큐는, 프로세서 코어내의 프로그램 메모리로부터 연속적으로 실행되어야 할 그 벡터 실행 유닛에 대한 하나 이상의 명령들을 수신하고, 벡터 실행으로 한 번에 하나의 명령을 전달하도록 구성된다.
동시에, 명령이 도입되며, 이는 특정 조건이 충족될 때까지, 다음 명령을 홀드하도록 상기 로컬 큐를 지시한다. 상기 조건은, 예를 들면 상기 벡터 실행 유닛은 이전 명령이 종료되고, 또는 데이터 경로가 새로운 명령을 수신할 준비가 되었는지와 같은 것일 수 있다. 간략화를 위해서, 본 문서에서는, 이 새로운 명령을 SYNC 이라고 한다. 상기 조건은 명령어내에서 SYNC 명령으로 명시되거나, 또는 제어 레지스터 파일로부터 또는 어떤 다른 소스로부터 판독될 수 있다.
새로운 SYNC 지령을 사용하는 명령들의 시?스 예가 아래에 제시되어 있다:
. cmac0 ; cmac 관련 명령들에 대해 정착지로서 cmacO 을 선택
;어드레스 설정
ldi #0, r0
out r0 , cdm0 _ addr
out r0 , cdm1 _ addr
out r0 , cdm2 _ addr
setcmvl .512 ; 512로 벡터 길이 설정
cmac [0],[1],[2] ; 512 샘플들에 걸쳐서 cmac 작업을 실행
sync ; cmac 가 준비될 때 까지 프로그램 큐 정지
star [3] ; 누적기 저장
. cmac1 ; cmac 관련 명령들에 대해 정착지로서 cmac1 을 선택
;어드레스 설정
ldi #0, r0
out r0 , cdm3 _ addr
out r0 , cdm4 _ addr
out r0 , cdm5 _ addr
setcmvl .2048 ; 2048로 벡터 길이 설정
cmac [0],[1],[2] ; 2048 샘플들에 걸쳐서 cmac 작업을 실행
sync ; cmac 가 준비될 때 까지 프로그램 큐 정지
star [3] ; 누적기 저장
종래 기술과는 대조적으로, 이러한 2개의 각각의 명령 시?스들은, 관련 벡터 실행 유닛의 로컬 큐로 한번에 전송되고 그곳에 저장되며, 벡터 실행 유닛내에서 명령 디코더로 한 번에 하나의 명령이 전송되도록 대기한다. 상기에서 설명한 바와 같이, 상기 명령 sync는 상기 벡터 실행 유닛이, 벡터 명령인 명령 cmac로서 종료될 때까지, 상기 로컬 큐를 정지시키도록 제공되며, 따라서 실행하는 데에 몇 클록 사이클이 소요된다.
도 5는 종래 기술의 기저 대역 프로세서(700)에서 명령 발행 로직을 도시하며, 이는 본 발명을 위한 출발점으로서 사용될 수 있다. 상기 기저 대역 프로세서는 프로세서의 다양한 실행 유닛들에 대한 명령들을 보유하는 프로그램 메모리 PM(702)을 갖는 RISC 코어(701), 및 RISC 프로그램 흐름 제어 유닛(703)을 포함한다. 상기 프로그램 메모리(702)로부터, 명령들이 발행 로직 유닛(705)으로 호출되고, 이것은 모든 실행 유닛들에 공통적이며, 각각의 특정 명령이 어디로 전송되어야 하는 지를 제어하도록 구성된다. 상기 발행 로직(705)은 도 3의 유닛-필드 추출(508) 및 발행 제어(509)의 유닛들에 대응한다. 상기 발행 로직은, 이와 같은 경우, 여러 개의 벡터 실행 유닛(710,712,714)들에 연결되고, 그리고 멀티플렉서(715)를 통해 RISC 코어 + 데이터 경로 유닛(716)에 연결되며, 상기에서 후자 부분은 RISC 코어의 일부이며, 도 3의 유닛(505,506,507,510)들에 대응된다. 상기에서 설명된 바와 같이, 일 실시 예에서, 실제 명령들을 포함하는 명령어들은 모든 실행 유닛들로 전송되는 반면, 특정 명령에 해당하는 발행 신호는 이러한 명령을 실행하여야만 하는 실행 유닛으로만 전송된다. 다른 실시 예에서, 상기 발행 신호는 각각의 벡터 실행 유닛에 의해서 국소적으로 처리된다.
도 6은 벡터 실행 유닛(710)을 도시하며, 이는 종래 기술에 따른 도 5의 벡터 실행 유닛(710,712,714) 중의 어느 하나일 수 있다. 상기 벡터 실행 유닛(710)은 벡터 제어기(720), 벡터 길이 계수기(721), 명령 레지스터(722) 및 명령 디코딩 유닛(723)을 갖는다. 도 5에 도시된 바와 같이, 도 6의 벡터 실행 유닛(710)은 프로그램 메모리(702)로부터 명령을 수신하며, 도 6에서는 간략하게 도시되어 있다. 상기 명령어는 실제 명령이며, 명령 레지스터(722) 내에서 수신되고, 그리고 명령 디코더(723) 측으로 전달된다. 상기 발행 신호는 발행 로직 유닛(705)을 통해서 벡터 제어기내에 수신되고, 그리고 명령어의 실행을 제어하기 위해서 사용된다. 만일 상기 발행 신호가 활성화되면, 상기 명령은 명령 레지스터내로 적재되고, 디코딩되며, 실행되며, 그렇지 않으면 폐기된다. 또한 상기 벡터 제어기(720)는 후술되는 바와 같이, 벡터 길이 계수기(721) 및 시스템에서 사용되는 다른 제어 신호들을 처리한다.
전통적으로, 각각의 클록 사이클 동안, 실행 유닛들 중 하나를 대상으로 의도된 하나의 명령은, 프로그램 메모리(702)로부터 호출될 수 있다. 상기 명령어 내의 유닛 필드는, 상기 명령어로부터 추출될 수 있고, 상기 명령이 전달되어지는 제어 유닛을 제어하는 데에 사용될 수 있다. 예를 들면, 만일 상기 유닛 필드가 "000"인 경우, 명령은 RISC 데이터 경로로 전달될 수 있다. 이것은 발행 로직(705)으로 하여금, 명령어가 RISC 코어(716)(도 6에는 도시되지 않음) 내로 멀티플렉서(715)를 통과하여 유입되도록 허용할 수 있지만, 새로운 명령들이 이 싸이클에서, 벡터 실행 유닛들 내로 적재되도록 하지는 않는다. 그러나, 만일 유닛 필드가 다른 값을 유지한다면, 발행 로직(705)은 그것이 의도된 벡터 실행 유닛으로, 해당 명령 발행 신호를 가능하게 할 수 있다. 다음, 상기 선택된 벡터 실행 유닛 내의 벡터 제어기(720)는, 명령어가 상기 벡터 실행 유닛의 명령 레지스터(722) 내로 통과하도록 한다. 그러한 경우, NOP 명령이 RISC 코어(716) 내의 RISC 데이터 경로 명령 레지스터로 보내질 것이다.
벡터 명령들을 처리하기 위하여, 하나의 명령이 벡터 실행 유닛으로 전달되면, 명령어로부터의 벡터 길이 필드는 추출되고, 계수 레지스터(721) 내에 저장될 수 있다. 이러한 계수 레지스터는 해당 벡터 명령내의 벡터 길이를 지속적으로 추적하기 위해 사용될 수 있으며, 상기 벡터 실행 유닛이 다른 명령을 수신할 준비가 되어 있음을 나타내는 플래그를 전송하도록 사용될 수 있다. 해당 벡터 실행 유닛이 벡터 연산을 완료한 때, 벡터 제어기(720)는 신호(플래그)가 프로그램 흐름 제어(703)(도 6에 도시되지 않음)에 전송되도록 하여 상기 유닛이 새로운 명령을 수용할 준비가 되어 있음을 나타내게 된다. 각각의 벡터 실행 유닛(520,530)(도 3 참조)의 벡터 제어기(720)는, 부가적으로 실행 유닛 내에서 프롤로그 및 에필로그 상태에 대한 제어 신호들을 생성할 수 있다. 그러한 제어 신호들은 벡터 연산을 위한 VLU 및 VSU를 제어하며, 예를 들면 홀수 벡터 길이들을 관리할 수도 있다.
상기 발행 로직(705)이, 유닛 필드를 디코딩하여, 특정 명령이 특정 벡터 실행 유닛으로 전송되어야만 한다는 것을 판정한 경우, 상기 명령어는 프로그램 메모리(702)로부터 명령 레지스터(722)내로 적재된다. 또한, 만일 상기 명령이 벡터 길이 필드를 운반하도록 결정되면(벡터 제어기에 의함), 계수 레지스터(721)는 이 값으로서 벡터 길이 값이 적재된다. 상기 벡터 제어기(720)는, 상기 명령이 벡터 명령이며 벡터 길이 정보를 운반하는 지를 결정하기 위해서, 상기 명령어의 일부분을 디코딩한다. 만일 그렇다면, 벡터 제어기(720)는 계수 레지스터(721)에 대한 신호를 활성화하여 상기 벡터 길이를 나타내는 값을 계수 레지스터(721)내에 적재한다. 또한, 벡터 제어기(720)는 명령 디코드 유닛(723)에 명령하여 상기 명령의 디코딩을 개시하고, 그리고 제어 신호들을 데이터 경로(724)로 보내는 것을 개시한다. 명령 레지스터(722) 내의 명령은, 그 다음 명령 디코더(723)에 의해서 디코딩되며, 그것의 제어 신호들은 데이터 경로로 보내지기 이전에, 제어 신호 레지스터(724) 내에 유지된다. 계수 레지스터(721)는 상기 명령이 반복되어야 하는 횟수, 즉 벡터 길이를, 종래의 방식으로 지속적으로 추적한다.
도 7은 본 발명에 따른 벡터 실행 유닛(810)을 도시한다. 상기 벡터 실행 유닛은, 도 6에 도시된 종래 기술의 벡터 실행 유닛의 모든 요소들을 포함하며, 여기에는 동일한 부호들이 부여되어 있다. 또한, 본 발명에 따른 벡터 실행 유닛은, 프로그램 메모리로부터 수신된 다수의 명령들을 홀드하도록 구성된 로컬 큐(730)를 갖는다. 상기 로컬 큐(730)를 제어하도록 구성된 큐 제어기(732)는, 벡터 제어 유닛(720) 내에 구성된다. 큐(730) 및 큐 제어기(732)는 정보 및 명령들을 교환하기 위해 서로 연결되어 있다. 예를 들면, 큐 제어기(732)는 큐(730) 내의 명령들의 수를 추적하도록 구성된 계수기를 포함할 수 있다. 다르게는, 상기 큐는 자체적으로, 그 상태를 계속 추적하고, 그것이 가득 차 있거나 또는 비어 있거나 또는 거의 가득차거나 비어 있는 것을 나타내는 정보를 큐 제어기(732)에 전송할 수 있다. 따라서, 큐 제어기(732)는 로컬 큐(730)에 대한 상태 정보를 보유하고, 시작, 정지 또는 로컬 큐(730)를 비우도록 하는 제어 신호들을 전송할 수 있다. 명령 디코더(723)는 어느 명령이 현재 실행되고 있는 지에 대하여 벡터 베어기(730)로 알리도록 구성되어 있다.
상술한 바와 같이, 많은 DSP 작업들은 명령 시?스로서, 예를 들면 프롤로그, 벡터 명령과 에필로그들로서 구현된다. 상기 벡터 명령들은 많은 클록 사이클 동안 실행될 것이며, 그 시간 도중에는 새로운 명령이 호출될 수는 없다. 이러한 경우, 상기에서 설명한 한 바와 같이, 새로운 SYNC 명령이, 특정 조건이 충족될 때까지 로컬 큐가 다음 명령을 홀드하도록 사용된다. 큐 제어기(732)는 명령 디코더(723)가 "sync" 명령을 디코딩하였다고 통보받을 때, 상기 조건이 충족될 때까지, 로컬 큐(730)를 정지시키는 모드를 큐 제어기(732) 내에 설정할 것이다. 이것은 일반적으로, 잔여 벡터의 길이 정보와, 명령 디코더로부터의 현재 명령에 대한 정보를 활용하여 구현된다. 데이터 경로(724)로부터 큐 제어기(732)로 전송되는 플래그들이 또한, 사용될 수 있다. 전형적으로, 상기 조건은 벡터 명령의 처리가 종료되어 벡터 실행 유닛내의 명령 디코더(723)가 다음 명령을 처리할 준비가 되었을 경우일 것이다.
로컬 큐(730)는 원하는 명령의 수를 유지하기에 적절한 모든 종류의 큐일 수 있다. 하나는, 적절한 수, 예를 들면 8 명령들을 유지할 수 있는 FIFO 큐이다.
도 8은 본 발명의 바람직한 실시 예에 따른 벡터 실행 유닛(910)을 도시한다. 도 8에 도시된 벡터 실행 유닛은, 도 7에서와 같은 동일한 유닛들을 포함하며, 동일한 방식으로 상호 연결되어 있다. 그러나, 본 실시 예에 있어서, 로컬 큐(740)는 특정 수의 명령들을 반복하기에 적합한 순환 큐이다. 이것은 동일한 시?스의 명령들이 다수회 실행되어야 할 구현에서 특히 유리할 것이다. 이러한 횟수는 때때로 1,000을 초과할 수 있다. 이러한 경우, 상당한 양의 대역 폭이 제어 경로내에 저장될 수 있으며, 이는 코어 유닛으로부터 벡터 실행 유닛으로, 그것들이 실행될 때마다 동일한 명령들을 재차 보낼 필요가 없게 되어 가능하게 된다.
도 7에 도시된 바와 같이, 벡터 제어기(720') 내에 구성된 큐 제어기(732)가 있다. 도 8의 실시 예에서, 반복되어야 하는 명령들을 추적하고, 명령이 반복되어야 하는 횟수를 추적하도록 구성된 버퍼 관리기(744)도 있다. 이러한 목적을 위하여, 2개의 레지스터가 있으며, 이들도 벡터 제어기(720)에 의해서 제어된다: 명령의 반복 횟수를 저장하기 위한 반복 레지스터(746)와, 반복되어야 할 명령의 수를 홀드하도록 구성된 명령 계수 레지스터(748)이다.
벡터 실행 유닛으로 발행된 모든 명령들은 큐(740), 즉, 순환 버퍼를 통과하기 때문에, 상기 버퍼는 마지막 N(전형적으로, 8-16) 명령을 기억할 것이다. 반복 레지스터(746)는 실행되어야 할 반복 횟수를 홀드하도록 구성된다. 반복 레지스터(746)는 제어 레지스터 파일에 의해서 적재될 수 있거나, 벡터 실행 유닛으로 발행된 명령어로부터, 또는 임의의 다른 방법에 의해서 판독될 수 있다.
명령 계수 레지스터(748)는 반복 루프에 포함되어야만 하는 얼마나 많은 명령들이 순환 버퍼(740)내에 있는 지를 나타내는 횟수를 홀드하도록 구성된다. 명령 계수 레지스터는 제어 레지스터 파일에 의해서 적재될 수 있거나, 또는 벡터 실행 유닛으로 발행된 명령어로부터, 또는 임의의 다른 방법에 의해서 판독될 수 있다.
"반복" 명령이나, 또는 "반복 플래그" 세트를 갖는 명령이 벡터 실행 유닛으로 발행되는 때에, 상기 벡터 제어기(720)와 명령 디코더(723)는 함께 큐 제어기(732)에 명령하여 순환 버퍼(740)로부터 명령 레지스터(722)로 명령들을 전달하게 된다.
도 7에서와 같이, "sync" 명령이 명령 디코더(723)에 의해서 입력되면, 상기 명령 디코더는 큐 제어기(732)에 지시하여 미리 정의된 조건이 발생될 때까지, 상기 로컬, 순환, 큐로부터 명령들을 가져오는 것을 중지한다. 이 조건은 전형적으로, 상기 큐로부터 호출된 이전의 명령이 종료되어 디코더가 새로운 명령을 수신할 준비가 되었다는 것을 나타내는 것이다.
비록, 로컬 큐(730,740) 및 명령 레지스터(722)가 본 문서에서는 별도의 개체로서 도시되어 있지만, 그것들을 하나의 유닛으로 결합하는 것이 가능할 것이다. 예를 들면, 명령 레지스터(722)는 로컬 큐의 마지막 요소로서 통합될 수 있다.
버퍼 관리기(744)는, 로컬 버퍼(740)의 작동을 감독하고, 현재 순환 버퍼내에 저장되어 있는 명령들의 반복을 관리하지만, 큐 제어기(732)는 순환 버퍼/큐(740)로부터의 명령 전달의 개시/정지를 관리한다.
버퍼 관리기(744)는 반복 레지스터(746)를 추가적으로 관리하고, 얼마나 많은 반복이 실행되었는 지를 추적한다. 반복 레지스터(746) 내에 특정된 반복 횟수가 실행된 때, 신호가 벡터 제어기(720')로 전송되고, 그 다음, 프로그램 흐름 제어(703)(도 8에는 미도시)에 전송되어 작업이 완료되었음을 나타낼 수 있다.
요구된 반복 회수가 실행된 경우, 상기 순환 버퍼(740)의 동작은 큐 기능으로 디폴트 복귀되어 새로운 반복 명령들이 시작될 수 있도록 마지막으로 발행된 명령들을 저장한다.
도 9는 본 발명의 실시 예에 따른 로컬 큐의 작동 원리를 도시한다. 상기 큐는 그 자체가, 수평선(901)에 의해서 표현되어 있다. 제1 수직 화살표는 새로운 명령이 현재 기록되어 있는 큐의 위치를 나타내는 기입 포인터(903)를 상징한다. 해당 수평 화살표(905)는 기입 포인터가 도면에서 오른쪽을 향해 이동되는 방향을 나타낸다.
제2 수직 화살표는 실행되어야 할 명령이 현재 판독되어지는 큐의 위치를 나타내는 판독 포인터(907)를 상징한다. 해당 수평 화살표(909)는 판독 포인터가 기입 포인터(903)와 동일한 방향으로 이동하는 방향을 나타낸다. 기입 포인터(903) 와 판독 포인터(907) 사이의 거리는 상기 큐의 현재 길이, 즉, 큐내의 현재 명령들의 수이다.
도 9의 예에는, 여러번 반복되어야 하는 명령들의 시?스가 상기 큐에 기록되어 있다. 상기 시?스의 시작 및 시?스의 끝은 수평선(901)을 가로지르는 제1 및 제2 수직선(911,913)으로 표시되어 있다. 후방향 화살표(915)는 상기 판독 포인터(907)가 제2 수직선(913)에 의해서 표시된 명령 시?스의 끝에 도달한 때, 상기 판독 포인터는 제1 수직선(911)에 의해서 표시된 명령 시?스의 시작으로 순환 복귀될 것임을 나타낸다. 이것은 명령들의 시?스가 특정 횟수만큼 실행되었을 때까지 반복될 것이다.
제어 로직(미도시)은 반복되어야 할 시?스내에서 명령들의 수, 및 큐에서의 그것들의 위치를 추적하도록 구성되어 있다. 이것은 예를 들면, 아래의 것들 포함한다:
·반복되어야 할 명령 시?스의 시작 위치(911)
·반복되어야 할 명령 시?스의 종료 위치(913)
·반복되어야 할 명령 시?스의 횟수
상기 시?스의 시작과 끝 대신에, 상기 시?스의 시작 또는 끝 각각의 위치가 시?스의 길이, 즉, 상기 시?스 내에 포함된 명령들의 수와 함께 저장될 수 있다.

Claims (18)

  1. 디지털 신호 프로세서(200)에서 사용하기 위한 벡터 실행 유닛(203,205,520,530)으로서, 상기 벡터 실행 유닛은 벡터 형태인 다수의 데이터상에서 실행되어야 할 벡터 명령들을 포함하는 명령들을 실행하도록 구성되며, 상기 벡터 제어기(720,720')와 계수 레지스터(721)를 포함하고, 상기 벡터 제어기는 명령이 벡터 명령인지를 결정하도록 구성되며, 그리고 만일 그렇다면, 벡터 길이를 홀드하도록 구성된 상기 계수 레지스터(721)에 알리고, 상기 벡터 제어기(720,720')는 추가적으로 명령들의 실행을 제어하도록 구성되며, 상기 벡터 실행 유닛은,
    - 그것이 로컬 큐(730)를 포함하여 상기 프로그램 메모리로부터 적어도 제1 및 제2 명령을 수신하고, 미리 정의된 조건이 충족될 때까지, 상기 로컬 큐(730) 내에 제2 명령을 홀드시키도록 구성되고, 그리고
    - 상기 벡터 제어기(720,720')는 상기 로컬 큐를 제어하도록 구성된 큐 제어 수단(732,721)들을 포함하는 것임을 특징으로 하는 벡터 실행 유닛.
  2. 제1항에 있어서, 추가적으로 발행 신호를 수신하고, 이러한 발행 신호에 기초하여 명령들의 실행을 제어하도록 구성된 것임을 특징으로 하는 벡터 실행 유닛.
  3. 제1항 또는 제2항에 있어서,
    -명령을 수신 및 저장하도록 구성된 명령 레지스터(722),
    -상기 명령 레지스터에 저장된 명령을 디코딩하도록 구성된 명령 디코더(723),
    -상기 명령 디코더에 의해서 제어되는 다수의 데이터 경로들을 더 포함하는 것임을 특징으로 하는 벡터 실행 유닛.
  4. 선행항 중의 어느 한 항에 있어서, 상기 로컬 큐(730)는 상기 데이터 경로가 다른 명령을 수신하고, 실행할 준비가 될 때까지, 명령들의 판독을 일시 정지하도록 구성된 것임을 특징으로 하는 벡터 실행 유닛.
  5. 선행항 중의 어느 한 항에 있어서, 상기 큐 제어 수단(732)은, 상기 큐에 관한 상태 정보, 예를 들면 상기 로컬 큐(730)가 얼마나 충만되어 있는지와 같은 것을 홀드하고, 실행을 위해 상기 로컬 큐(730)로부터 상기 벡터 실행 유닛(203,205,520,530)으로 명령들의 전송을 제어하도록 구성된 큐 제어기를 포함하는 것임을 특징으로 하는 벡터 실행 유닛.
  6. 제5항에 있어서, 상기 큐 제어기는, 만일 새로운 명령이 상기 큐로 전송되고, 상기 큐가 충만되어 있다면, 에러 메시지를 생성하도록 구성된 것임을 특징으로 하는 벡터 실행 유닛.
  7. 제6항에 있어서, 상기 큐 제어 수단(732)은 상기 조건이 충족될때 까지, 상기 로컬 큐로부터 명령들의 판독을 일시 중지하도록 상기 로컬 큐에 명령하는 특정 신호를 발행하도록 구성된 것임을 특징으로 하는 벡터 실행 유닛.
  8. 선행항 중의 어느 한 항에 있어서, 상기 벡터 제어기(720,720')는 상기 디지털 신호 프로세서의 프로그램 흐름 제어(703)로 신호가 전송되도록 하여 상기 유닛 이 새로운 명령을 받아 들일 준비가 되어 있음을 나타내도록 구성된 것임을 특징으로 하는 벡터 실행 유닛.
  9. 선행항 중의 어느 한 항에 있어서, 상기 명령 디코더(723)는, 임의의 주어진 시간에 실행되는 명령에 대하여 상기 벡터 제어기(720,720')에 알리도록 구성된 것임을 특징으로 하는 벡터 실행 유닛.
  10. 선행항 중의 어느 한 항에 있어서, 상기 로컬 큐(730)는 선입-선출 큐인 것임을 특징으로 하는 벡터 실행 유닛.
  11. - 정수 명령들을 실행하도록 구성된 정수 실행 유닛(212)을 포함하는 프로세서 코어(201);
    - 서로 별개로, 그리고 상기 프로세서 코어(201)에 결합된 적어도 제1 및 제2 벡터 실행 유닛(203,205,520,530), 여기서 각각의 벡터 실행 유닛(203,205)은 선행항 중의 어느 한 항에 따른 벡터 실행 유닛임;
    - 상기 제1 및 제2 벡터 실행 유닛(203,205) 들에 대한 명령들을 홀드하도록 구성된 프로그램 메모리(211)와, 상기 제1 및 제2 벡터 실행 유닛으로 벡터 명령들을 포함하는 명령들을 발행하기 위한 발행 로직을 포함하는 것임을 특징으로 하는 디지털 신호 프로세서(200).
  12. 제11항에 있어서, 상기 프로그램 메모리(211)는 또한, 상기 정수 실행 유닛(212)에 대한 명령들을 홀드하도록 구성된 것임을 특징으로 하는 디지털 신호 프로세서.
  13. 제11항 내지 제12항 중 어느 한 항에 있어서, 상기 프로그램 메모리(211)는 상기 프로세서 코어(201)내에 구성된 것임을 특징으로 하는 디지털 신호 프로세서.
  14. 다중 모드 유선 및 무선 통신에 적합한 기저 대역 통신 장치로서,
    - 통신 신호들을 송신 및/또는 수신하도록 구성된 전방-엔드 유닛(7);
    - 상기 아날로그 전방-엔드 유닛에 연결된 프로그램 가능한 디지털 신호 프로세서(3)를 포함하고, 여기서 상기 프로그램 가능한 디지털 신호 프로세서는 제9항 내지 제12항 중 어느 한 항에 따른 디지털 신호 프로세서인 것임을 특징으로 하는 기저 대역 통신 장치.
  15. 제14항에 있어서, 상기 전방-엔드 유닛(7)은 무선 주파수 또는 기저 대역 신호들을 송신 및/또는 수신하도록 구성된 아날로그 전방-엔드 유닛인 것임을 특징으로 하는 기저 대역 통신 장치.
  16. 제14항 또는 제15항에 있어서, 상기 기저 대역 통신 장치는, 예를 들면 무선 전화 통신 네트워크와 같은 무선 통신 네트워크에서 통신을 위한 것임을 특징으로 하는 기저 대역 통신 장치.
  17. 제14항에 있어서, 상기 기저 대역 통신 장치는 텔레비전 수신기인 것임을 특징으로 하는 기저 대역 통신 장치.
  18. 제14항에 있어서, 상기 기저 대역 통신 장치는 케이블 모뎀인 것임을 특징으로 하는 기저 대역 통신 장치.
KR1020147011833A 2011-10-18 2012-09-17 디지털 신호 프로세서 및 기저 대역 통신장치 KR20140078717A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
SE1150966A SE536462C2 (sv) 2011-10-18 2011-10-18 Digital signalprocessor och basbandskommunikationsanordning
SE1150966-8 2011-10-18
PCT/SE2012/050979 WO2013058695A1 (en) 2011-10-18 2012-09-17 Digital signal processor and baseband communication device

Publications (1)

Publication Number Publication Date
KR20140078717A true KR20140078717A (ko) 2014-06-25

Family

ID=47148883

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147011833A KR20140078717A (ko) 2011-10-18 2012-09-17 디지털 신호 프로세서 및 기저 대역 통신장치

Country Status (7)

Country Link
US (1) US20140244970A1 (ko)
EP (1) EP2751668B1 (ko)
KR (1) KR20140078717A (ko)
CN (1) CN103890718B (ko)
ES (1) ES2688603T3 (ko)
SE (1) SE536462C2 (ko)
WO (1) WO2013058695A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200020813A (ko) * 2017-06-21 2020-02-26 가부시키가이샤 한도오따이 에네루기 켄큐쇼 뉴럴 네트워크를 가지는 반도체 장치

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160226544A1 (en) * 2015-02-04 2016-08-04 GM Global Technology Operations LLC Adaptive wireless baseband interface
EP3125108A1 (en) * 2015-07-31 2017-02-01 ARM Limited Vector processing using loops of dynamic vector length
CN107315568B (zh) * 2016-04-26 2020-08-07 中科寒武纪科技股份有限公司 一种用于执行向量逻辑运算的装置
CN207440765U (zh) * 2017-01-04 2018-06-01 意法半导体股份有限公司 片上系统和移动计算设备
US10713045B2 (en) * 2018-01-08 2020-07-14 Atlazo, Inc. Compact arithmetic accelerator for data processing devices, systems and methods
CN110806986B (zh) * 2019-11-04 2022-02-15 苏州盛科通信股份有限公司 提高网络芯片报文存储效率的方法、设备及存储介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6043535B2 (ja) * 1979-12-29 1985-09-28 富士通株式会社 情報処理装置
JP2810068B2 (ja) * 1988-11-11 1998-10-15 株式会社日立製作所 プロセッサシステム、コンピュータシステム及び命令処理方法
US5179530A (en) * 1989-11-03 1993-01-12 Zoran Corporation Architecture for integrated concurrent vector signal processor
US6658556B1 (en) * 1999-07-30 2003-12-02 International Business Machines Corporation Hashing a target address for a memory access instruction in order to determine prior to execution which particular load/store unit processes the instruction
US7231193B2 (en) * 2004-04-13 2007-06-12 Skyworks Solutions, Inc. Direct current offset correction systems and methods
US7990949B2 (en) * 2004-11-09 2011-08-02 Broadcom Corporation Enhanced wide area network support via a broadband access gateway
US7543119B2 (en) * 2005-02-10 2009-06-02 Richard Edward Hessel Vector processor
US7415595B2 (en) * 2005-05-24 2008-08-19 Coresonic Ab Data processing without processor core intervention by chain of accelerators selectively coupled by programmable interconnect network and to memory
US7299342B2 (en) * 2005-05-24 2007-11-20 Coresonic Ab Complex vector executing clustered SIMD micro-architecture DSP with accelerator coupled complex ALU paths each further including short multiplier/accumulator using two's complement
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
US20130185538A1 (en) * 2011-07-14 2013-07-18 Texas Instruments Incorporated Processor with inter-processing path communication

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200020813A (ko) * 2017-06-21 2020-02-26 가부시키가이샤 한도오따이 에네루기 켄큐쇼 뉴럴 네트워크를 가지는 반도체 장치

Also Published As

Publication number Publication date
SE1150966A1 (sv) 2013-04-19
ES2688603T3 (es) 2018-11-05
EP2751668A1 (en) 2014-07-09
CN103890718B (zh) 2016-08-24
WO2013058695A1 (en) 2013-04-25
EP2751668B1 (en) 2018-08-01
US20140244970A1 (en) 2014-08-28
CN103890718A (zh) 2014-06-25
SE536462C2 (sv) 2013-11-26

Similar Documents

Publication Publication Date Title
KR20140078717A (ko) 디지털 신호 프로세서 및 기저 대역 통신장치
KR20140078718A (ko) 디지털 신호 프로세서 및 기저 대역 통신장치
US7159099B2 (en) Streaming vector processor with reconfigurable interconnection switch
US7136989B2 (en) Parallel computation processor, parallel computation control method and program thereof
US20070250681A1 (en) Independent programmable operation sequence processor for vector processing
US9471305B2 (en) Micro-coded transcendental instruction execution
CN116662255A (zh) 结合超越函数硬件加速器的risc-v处理器实现方法及系统
EP2577464B1 (en) System and method to evaluate a data value as an instruction
JP2008181535A (ja) ディジタル信号処理装置
CN108628639B (zh) 处理器和指令调度方法
EP2751671B1 (en) Digital signal processor and baseband communication device
CN116635829A (zh) 用于高吞吐量和低开销内核启动的压缩命令分组
CN107077381B (zh) 异步指令执行装置和方法
US20140351555A1 (en) Digital signal processor and method for addressing a memory in a digital signal processor
CN117348933B (zh) 一种处理器及计算机系统
JP2002182902A (ja) メモリデータアクセス構造およびその方法
CN115454506A (zh) 指令调度装置、方法、芯片和计算机可读存储介质
Blossom GCELL–AN SPE SCHEDULER AND ASYNCHRONOUS RPC MECHANISM FOR THE CELL BROADBAND ENGINE
JPH06250854A (ja) 命令プリフェッチ装置
GB2484901A (en) Data processing unit with scalar processor, vector processor array, parity and FFT accelerator units
GB2484900A (en) Data processing unit with scalar processor, vector processor array, parity and FFT accelerator units

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application