KR20140105805A - 디지털 신호 프로세서 및 베이스밴드 통신 디바이스 - Google Patents

디지털 신호 프로세서 및 베이스밴드 통신 디바이스 Download PDF

Info

Publication number
KR20140105805A
KR20140105805A KR1020147018299A KR20147018299A KR20140105805A KR 20140105805 A KR20140105805 A KR 20140105805A KR 1020147018299 A KR1020147018299 A KR 1020147018299A KR 20147018299 A KR20147018299 A KR 20147018299A KR 20140105805 A KR20140105805 A KR 20140105805A
Authority
KR
South Korea
Prior art keywords
vector
issue
unit
instruction
execution
Prior art date
Application number
KR1020147018299A
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 KR20140105805A publication Critical patent/KR20140105805A/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
    • 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/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/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
    • 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)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)

Abstract

본 발명은 프로세서 코어(201), 정수 실행유닛(212) 및 복수의 벡터 실행유닛(203, 205, 520, 530)을 포함하고, 상기 디지털 신호 프로세서는 실행유닛(212, 203, 205)에 대한 명령어를 홀드하도록 구성되는 프로그램 메모리(211)와 명령어를 발행하는 이슈 로직을 포함한다. 상기 디지털 신호 프로세서는 동시에 동일 명령어를 수신하여 실행하려는 적어도 두 실행유닛을 선택하는 이슈 제어유닛(705)과 상기 적어도 두 실행유닛에 명령어를 전송하는 로직을 포함한다.

Description

디지털 신호 프로세서 및 베이스밴드 통신 디바이스{DIGITAL SIGNAL PROCESSOR AND BASEBAND COMMUNICATION DEVICE}
본 발명은 디지털 신호 프로세서(digital signal processor, DSP)에 관한 것으로서, 예를 들어 SIMT 기반 DSP에 관한 것이다.
많은 이통통신 디바이스는 하나 이상의 디지털 신호 프로세서(DSP)를 포함하는 무선 송수신기를 사용한다.
성능과 신뢰성을 향상하기 위해 많은 이동단말은 현재 베이스밴드 프로세서(baseband processor, BBP)로 알려진 유형의 DSP를 사용하여, 수신된 무선신호 처리와 전송을 위한 신호의 준비와 관련된 많은 신호 처리 함수를 핸들링한다. 이러한 함수는 시간에 매우 의존적이고(timing dependant), 실시간 연산 시스템을 요구할 수 있으므로, 메인 프로세서로부터 분리하는 것이 바람직하다. 이러한 베이스밴드 프로세서는 표준개발에 적응하고 하드웨어 재사용이 가능하도록 가능한 한 유연해야 하는 요구가 있다. 따라서, 프로그램가능한(programmable) 베이스밴드 프로세서(PBBP)가 개발되어 왔다.
이러한 프로세서에서 빈번하게 수행되는 많은 함수는, 대단히 많은 수의 데이터 샘플에 수행된다. 따라서 SIMD(Single Instruction Multiple Data) 프로세서로 알려진 유형의 프로세서는, 하나의 단일 명령어(single instruction)로, 한번에 하나의 데이터 아이템이 아닌, 복수 데이터 아이템(multiple data item)에 연산하게 하므로 유용하다. 복수 데이터 아이템은 벡터로 구성될 수 있고, 벡터 데이터를 연산하기에 적합한 처리 유닛(processing unit)은 이 문서에서 벡터 실행유닛(vector execution unit)이라고 한다.
SIMD 아키텍쳐를 더 개발하여, SIMT(Single Instruction stream Multiple Tasks) 아키텍쳐가 개발되었다. 전통적으로 SIMT 아키텍쳐에서는, 하나 또는 둘의 SIMD 타입의 벡터 실행유닛이 정수 실행유닛(integer execution unit)과 관련하여 제공되었고, 이는 코어 프로세서의 일부일 수 있다.
국제특허출원 WO2007/018467은 SIMT 아키텍쳐에 따른 DSP를 개시하며, 이때 SIMT 아키텍쳐는 정수 실행유닛과 프로그램 메모리를 포함하는 프로세서 코어와, 코어에 연결되되지만 코어에 집적되지는 않은 두개의 벡터 실행유닛을 가진다. 벡터 실행유닛은 CALU(Complex Arithmetic Logic Units) 또는 CMAC(Complex Multiply-Accmulate Units)일 수 있다. 코어는 실행유닛에 명령어를 배포하기 위한 프로그램 메모리를 가진다. WO2007/018467에서, 각각의 벡터 실행유닛은 개별 명령어 디코어(decoded)를 가진다. 이것은 서로 독립적으로 벡터 실행유닛의 사용을 가능하게 하고, 효율적인 방식으로, 프로세서의 다른 파트의 사용을 가능하게 한다.
본 발명의 목적은 SIMT 프로세서를 더 유연하게 하고, 프로그램 메모리, 이슈 대역폭 및 실행유닛을 더 효율적으로 사용하게 하는 것이다.
이 목적은 본 발명에 따라,
정수 명령어를 실행하는 정수 실행유닛을 포함하는 프로세서 코어; 및
상기 프로세서 코어와 분리되어 상기 프로세서 코어와 연결된 적어도 제1 및 제2벡터 실행유닛를 포함하고, 상기 벡터 실행유닛은 제1 및 제2 수의 데이터경로를 각각 포함하고, 상기 벡터 실행유닛은 벡터 형식의 복수의 데이터에 수행되는 벡터 명령어를 포함하는 명령어를 실행하도록 구성되고,
상기 디지털 신호 프로세서는 제1 및 제2벡터 실행유닛에 대한 명령어를 홀드하도록 구성되는 프로그램 메모리와 제1 및 제2벡터 실행유닛에 대한 벡터 명령어를 포함하는 명령어를 발행하는 이슈 로직을 포함하는 디지털 신호 프로세서에 의해 실현된다.
상기 디지털 신호 프로세서는, 상기 프로세서가, 동시에 동일 명령어를 수신하여 실행하려는 적어도 두 실행유닛을 선택하는 이슈 제어유닛과, 상기 적어도 두 실행유닛으로 명령어를 전송하는 로직을 포함하는 것을 특징으로 한다.
위에서 정의된 프로세서에서, 동일한 명령어가 복수의 실행유닛을 제어하기 위해 사용될 수 있다. 이것은 복수의 실행유닛에 동일한 명령어를 전송할 때의 제어 오버헤드를 상당히 줄인다. 또한 복수의 실행유닛에 동일한 명령어의 병렬 실행을 가능하게 한다. 동시에 몇개의 실행유닛을 시작하는 가능성은 명령어의 처리를 매우 유용하게 한다. 실행유닛은 벡터 실행유닛일 수도, 스칼라(scalar) 실행유닛일 수도, 또는 정수 실행유닛일 수도 있다. 스칼라 실행유닛은 한번에 하나의 데이터 아이템을 처리하도록 구성되지만, 데이터 아이템은 정수 또는 복소수일 수 있다. 예를 들면, 동일한 벡터 명령어는 둘 이상의 벡터 실행유닛으로 전송되어 다른 세트의 데이터로 실행될 수 있다. 하나 이상의 벡터 실행유닛으로 종종 전송되는 벡터가 아닌 명령어의 예는 clearstar이다. 예를 들어, 모든 벡터 실행유닛을 포함하는 하나의 이슈 그룹을 가지는 것이 가능하다.
바람직한 실시예에서, 각 벡터 실행유닛은 명령어가 벡터 명령어인지 결정하고, 만약 그렇다면, 벡터 길이를 홀드하도록 구성되는 카운터 레지스터에 알리도록 구성되는 벡터 제어기를 포함하고, 상기 벡터 제어기는 명령어의 실행을 제어하도록 더 구성된다.
프로세서는 또한 하나 이상의 가속기(accelerator)를 더 포함할 수 있으며, 가속기는 기술분야에서 널리 알려진 바와 같다. 본 발명의 설명에서, 기능적인 유닛이라는 단어는, 실행유닛 또는 가속기를 나타내는 것이다.
바람직하게는, 복수의 이슈 그룹이 정의되고, 각 이슈 그룹은 적어도 하나의 실행유닛을 포함하고, 적어도 하나의 이슈 그룹은 하나의 실행유닛 이상을 포함하고, 상기 이슈 제어유닛이 이슈 그룹을 선택하는 것에 의해 상기 적어도 두 실행유닛을 선택하도록 구성된다. 이것은 코어에서 하드코드될(hardcoded) 수 있다.
또한, 바람직한 실시예에서, 상기 이슈 제어유닛은 적어도 하나의 이슈 그룹과 관련된 적어도 하나의 마스크를 더 포함하고, 상기 마스크는 이슈 그룹에서 어떠한 실행유닛 또는 유닛들이 상기 명령어를 수신하여 실행할 것인지를 나타낸다.
이것은 이슈 그룹의 정의와 각 이슈 그룹에 대한 실행유닛의 선택을 변경하는 것을 가능하게 하며, 프로세서를 더 유연하게 한다.
이슈 그룹은 적어도 하나의 정수 실행유닛 및/또는 적어도 하나의 벡터 실행유닛을 포함할 수 있다. 이슈 그룹은, 원하는 대로, 동일한 타입의 실행유닛만 포함하도록 정의되거나, 또는 다른 타입의 실행유닛의 혼합으로 정의될 수 있다. 모든 실행유닛을 포함하는 하나의 이슈 그룹을 정의하는 것이, 예를 들어 명령어 clear를 발행하는 이규 그룹을 정의하는 것이 적합할 수 있다.
명령어는 프로세서의 다른 유닛으로부터 데이터를 읽고 데이터를 쓰는데 관계될 수 있다. 동일한 명령어가 이슈 그룹 내의 복수의 실행유닛으로 전송되면, 일반적으로 각 실행유닛은 다른 유닛과 세트로 동작하여 몇몇 실행유닛이 동일한 유닛으로부터 읽거나 동일한 유닛에 쓰려고 시도하는 것을 피할 수 있다. 따라서, 바람직한 실시예에서, 적어도 하나의 실행유닛은, 실행유닛이 상호작용하여야 하는 적어도 하나의 다른 유닛을 나타내는, 예를 들어 어떠한 메모리로부터 데이터를 읽어야 하는지를 나타내는 명령어에 담긴 정보를 해석하는 매핑 테이블을 포함한다. 또한, 둘 이상의 실행유닛이 동일한 메모리 유닛 또는 프로세서 내의 함수 유닛으로부터 데이터를 수신하도록 구성될 수 있다. 예를 들어, 이슈 그룹 내의 하나의 실행유닛이 함수 A=sum(X*Y)를 수행하여야 하면, 다른 것은 함수 B=sum(X*Z)를 수행하여야 한다. 이때 X, Y, Z는 프로세서의 다른 유닛으로부터 획득한 데이터 벡터이다.
이슈 그룹으로부터 결과를 다루는 하나의 방법은 이슈 그룹의 각 실행유닛으로부터의 결과를 동일한 벡터 레지스터 유닛에 쓰고, 벡터 레지스터 유닛이 결과를 처리하는데 관여하는 명령어를 수행하게 하는 것이다.
바람직하게, 명령어 디코더는 벡터 레지스터 유닛에 주어진 시간에 실행될 명령어에 관하여 알리도록 구성된다.
어떠한 이슈 그룹이 특정 명령어를 실행할 것인지를 선택하는 것은 다른 방식으로 다루어질 수 있다. 일반적으로, 이슈 신호가 코어에서 추출되어 대응하는 실행유닛에 전송된다. 이 경우, 이슈 그룹의 적어도 하나의 실행유닛이 이슈 신호를 수신하여 이 이슈 신호에 기초하여 명령어의 실행을 제어하도록 구성된다. 또는, 각 벡터 실행유닛은 수신된 명령어 단어로부터 이슈 신호를 추출하여, 이슈 신호에 기초하여 명령어 단어의 실행에 참여할지 아닌지를 결정하도록 구성된다.
바람직하게, 벡터 제어기는 코어로부터 수신한 이슈 신호를 기초로 명령어의 실행을 제어한다. 또는, 이슈 신호는 실행유닛 자신에 의해 국지적으로 다루어질 수 있다. 이것을 어떻게 구현하는지 하는 것은 기술분야에서 널리 알려진 바와 같다.
본 발명에 따른 처리는 두 실행유닛에 의해 두개의 다른 세트의 데이터에 대해 명령어의 동시적인 처리를 가능하게 하므로 훨씬 효율적이다. 다른 부분이 다른 메모리에 저장되어 있다면, 두 실행유닛이 동일한 세트의 데이터의 다른 부분을 처리하게 하는 것도 역시 가능하다. 이것은 큰 세트의 데이터를 종래 기술에서 가능하였던 것 보다더 큰 벡터 실행유닛을 구현하지 않고서도 효율적으로 처리하게 한다. 대체적인 솔루션으로서, 벡터 실행유닛의 용량(capacity)은 벡터 실행유닛에 포함되는 데이터경로의 수를 증가시킴으로써 증가될 수 있지만, 이러한 고용량 벡터 실행유닛은 대부분 명령어에 대해 불필요하게 클 수 있어서, 효율적이지 않다. 이런 이유로, 본 발명은 더 고용량의 단일 벡터 실행유닛을 제공하는 것보다 더 유연하고 비용효율이 높은 솔루션을 제공한다.
명령어의 배포와 몇몇 유닛으로부터와 몇몇 유닛으로의 데이터는, 몇개의 유닛간 동일 신호를 전송하는 것이 두 유닛간 시그널링과 실제로 동일한 비용으로 이루어질 수 있으므로, 극단적으로 효율적으로 명령어를 다룰 수 있게 한다.
전형적으로, 프로그램 메모리는 프로세서 코어에 제공되고, 또한 정수 실행유닛에 대한 명령어를 홀드하도록 구성된다.
본 발명은 또한 멀티모드 유선 및 유선통신에 적합한 베이스밴트 통신 디바이스로서, 통신 신호를 송신 및/또는 수신하는 프론트-엔드 유닛(7); 상기 아날로그 프론트-엔드 유닛과 결합되는 프로그램가능한 디지털 신호 프로세서(3)를 포함하고, 상기 프로그램가능한 디지털 신호 프로세서는 위에 따른 디지털 신호 프로세서이다.
바람직한 실시에에서, 벡터 실행유닛은 본 발명의 설명에서 벡터 데이터를 연산하도록 구성되는 SIMD 타입 벡터 실행유닛 또는 프로그램가능한 코-프로세서(co-processor)이다.
본 발명의 일실시예에 따른 프로세서는 실제로 디지털 신호 프로세서에, 특히 베이스밴드 프로세서에 유용하다. 프론트-엔드 유닛은 무선 주파수 또는 베이스밴드 신호를 송신 및/또는 수신하도록 구성되는 아날로그 프론트-엔드 유닛일 수 있다.
이러한 프로세서는 모바일 전화, TV 수신기 및 테이블 모뎀과 같은 다른 타입의 통신 디바이스에 넓게 이용된다. 따라서, 베이스밴드 통신 디바이스는 예를 들어 이동 전화 또는 이동 데이터 통신 디바이스로써 셀룰러(cellular) 통신 네트워크에서 통신을 위해 구성될 수 있다. 베이스밴트 통신 디바이스는 또한 블루투스(Bluetooth) 또는 와이파이(WiFi)와 같은 다른 무선 표준에 따라 통신하도록 구성될 수 있다. 프로세서에 베이스밴드 신호를 전달할 수 있는텔레비젼 수신기, 케이블 모뎀, 와이파이 모뎀 또는 다른 타입의 통신 디바이스일 수 있다. "베이스밴드"라는 용어는 프로세서에서 내부적으로 다루어지는 신호만을 언급하는 것으로 이해될 수 있다. 수신 및/또는 송신되는 통신신호는 실제로, 유선 또는 무선 연결에서 수신되는 적절한 타입의 통신신호일 수 있다. 통신신호는 디바이스의 프론트-엔드 유닛에 의해 베이스밴드 신호로 적합한 방식으로 변환된다.
아래에서, 본 발명을 예시적으로 첨부의 도면을 참조로 더욱 자세하게 설명하기로 한다.
도 1은 본 발명의 일실시예에 따른 베이스밴드 프로세서의 블럭 다이어그램이다.
도 2는 특정 이슈 그룹을 선택하는데 사용될 수 있는 명령어 포맷을 나타낸다.
도 3은 SIMT 프로세서에서 명령어 이슈 로직을 나타낸다.
도 4a는 이슈 로직 함수를 나타낸다.
도 4b는 이슈 그룹을 특정하는데 사용될 수 있는 마스크를 나타낸다.
도 5는 도 2의 일실시예의 프로세서 코어의 명령어 이슈 파이프라인을 나타내는 다이어그램이다.
도 6은 이슈 그룹에서 아이들(idle) 신호를 다루는 방법을 나타낸다.
도 1은 SIMT 아키텍쳐에 따른 베이스밴드 프로세서(200)의 일예을 나타낸다. 프로세서(200)는 제어기 코어(controller core)(201)와 제1 및 제2벡터 실행유닛(203, 205)를 포함하며, 이는 아래에서 더 상세하게 논의될 것이다. 도 1에서 논의되는 FEC 유닛(206)은 온-칩(on-chip) 네트워크에 연결된다. 물론, 구체적인 구현에서, FEC 유닛(206)은 몇몇개의 다른 유닛을 포함할 수도 있다.
호스트 인터페이스 유닛(207)은 호스트 프로세서(도시되지 않음)로의 연결을 제공한다. 만약 MAC 프로세서가 존재하면, 이는 호스트 인터페이스 유닛(207)과 호스트 프로세서 사이에 연결된다. 디지털 프론트 엔드 유닛(209)은 본 발명의 기술분야에서 잘 알려진 방식으로 ADC/DAC 유닛으로의 연결을 제공한다.
본 발명의 기술분야에서 잘 알려진 바와 같이, 제어기 코어(201)는 프로그램 메모리(211)와 명령어 이슈 로직 및 멀티-콘텍스트 지원을 위한 함수를 포함한다. 이각각의 실행 콘텍스트, 즉, 스레드(thread)에 대해, 지원된 이것은 프로그램 카운터, 스택 포인터 및 등록 파일(도 2에서 분명하게 도시되지는 않음)을 포함한다. 전형적으로, 2-3개의 스레드가 지원된다. 이는 포크(fork)라 불리는 함수의 사용을 가능하게 하며, 예를 들어 벡터 실행유닛이 벡터 명령어를 실행하고 있는 중에 어떠한 명령어를 코어가 수행하게 한다. 따라서, 다른 스레드 사이에 중복되는 이슈 그룹을 가지지 않는 것이 바람직하다. 이런 이유로, 각각의 스레드는 바람직하게 자신의 벡터 실행유닛의 셋트를 가지므로, 두개의 스레드가 동시에 같은 벡터 실행유닛을 사용하려고 하는 상황을 피할 수 있다. 전형적으로, 시스템에서 하나 이상의 스레드에서 동일 벡터 실행유닛을 사용하는 것이 가능하지만, 만약 하나의 스레드가 이미 다른 스레드에 의해 사용되고 있는 벡터 실행유닛으로 이슈 신호를 전송한다면 에러 메시지가 발행될 것이다.
제어기 코어(201)는 또한 등록 파일(register file, RF), 코어 정수 메모리(ICM), 곱셈유닛(multiplier unit, MUL) 및 연산 로직/쉬프트 유닛(Arithmetic and Logic/Shift Unit, ALSU)을 포함하는 정수 실행유닛(212)을 포함한다. 이들 유닛은 본 발명의 기술분야에서 잘 알려진 바와 같고, 도 1에 도시되지 않았다.
온-칩 네트워크(244)는 프로세서의 모든 유닛을 상호연결하고, 프로세서는 제어기 코어(201), 디지털 프론트 엔드 유닛(209), 호스트 인터페이스 유닛(207), 벡터 실행유닛(203, 205), 메모리 뱅크(230, 232), 정수 메모리 뱅크(238) 및 가속기(242)를 포함한다.
이 예에서, 제1벡터 실행유닛(203)과 제2벡터 실행유닛(205) 각각은 CMAC 벡터 실행유닛이고, 각각은 벡터 제어기(213), 벡터 부하/저장 유닛(215) 및 복수의 데이터 경로(217)를 포함한다. 부하 함수는 온-칩 네트워크(244)에 연결된 다른 유닛(예를 들어 메모리 뱅크)로부터 데이터를 인출하는데 사용되고, 저장 함수는 실행유닛(203, 205)으로부터 예를 메모리 유닛(230, 231)로 온-칩 네트워크(244)를 통해 데이터 저장하는데 사용된다. 데이터는 다른 벡터 실행유닛으로부터 또한 획득될 수 있고/있거나 계산 결과는 이후 처리를 위해 다른 벡터 실행유닛으로 전달될 수 있다. 각 벡터 실행유닛은 또한 프로그램 메모리(211)로부터 명령어를 수신하도록 구성된 벡터 제어기(213, 223)를 포함한다.
이 제1벡터 실행유닛의 벡터 제어기는 제어기 코어(201)의 프로그램 메모기(211)에 이슈 로직을 통해 연결되어, 프로그램 메모리로부터 명령어와 관련된 이슈 신호를 수신한다. 위에서 설명한 바와 같이, 이슈 로직은 명령어 단어(instruction word)를 디코드하여 이슈 신호를 획득하고 이 이슈신호를 분리된 신호로서 벡터 실행유닛으로 보낸다. 벡터 실행유닛의 벡터 제어기가 국지적으로(locally) 이슈 신호를 생성하게 하는 것도 가능하다. 이 경우, 이슈 신호는 이슈 로직에서와 동일한 방식으로 명령어 단어를 기초로 벡터 제어기에 의해 생성된다.
또는, 벡터 실행유닛(203, 205)은 본 발명의 기술분야에서 알려진 유형의 CALU 벡터 실행유닛이며, 벡터 제어기(223), 벡터 부하/저장 유닛(225), 및 복수의 데이터 경로(227)를 포함한다. 이 제2벡터 실행유닛의 벡터 제어기(223)는 역시 제어기 코어(201)의 프로그램 메모리(211)와 이슈 로직을 통해 연결되어 있으며, 프로그램 메모리로부터 명령어와 관련된 이슈 신호를 수신한다.
벡터 실행유닛(203, 205)은 또한 어떤 종류의 벡터 실행유닛일 수 있다. 비록 두 벡터 실행유닛이 보여지고 논의되었지만, 본 발명은 셋 또는 그 이상의 벡터 실행유닛으로 동일 명령어를 전송하는 것으로 확장될 수 있을 것이다.
도 1에서 도시된 두개에 더하여, 임의의 수의 벡터 실행유닛이 존재할 수 있다. 오직 CMAC 유닛이 존재할 수도, 오직 CALU 유닛이 존재할 수도, 또는 적절한 수의 각각의 타입이 존재할 수도 있다. 또한 CMAC와 CALU 이외에 다른 유형의 벡터 실행유닛이 존재할 수도 있다. 위에서 설명한 바와 같이, 벡터 실행유닛은 벡터 명령어를 처리할 수 있는 프로세서이고, 이는 단일 명령어는 다수의 데이터 유닛에 동일한 함수를 수행한다는 것을 의미한다. 데이터는 복소수이거나 실수일 수 있으며, 바이트(bytes) 또는 워드(words)로 그룹지어질 수 있고, 벡터 실행유닛에 의해 연산될 수 있는 벡터로 구성될 수(packed) 있다. 본 발명의 설명에서, CALU와 CMAC 유닛은 예로서 사용되는 것이고, 벡터 실행유닛이 벡터 데이터에 적합한 함수를 수행하는데 사용될 수 있음을 알아야 할 것이다.
여러개의 병행 벡터 연산을 가능하게 하기 위해, 프로세서는 분산된 메모리 시스템을 가지는 것이 바람직하며, 이때 메모리는 도 1에서 메모리 뱅크0(230)에서 메모리 뱅크N(231)으로 나타낸 바와 같이, 여러개의 메모리 뱅크로 분리된다. 각 메모리 뱅크(230, 231)는 각각 자신의 복소(complex) 메모리(232, 233)와, 어드레스 생성 유닛(AGU)(234, 235)를 가진다. 도 1의 PBBP는 또한 하나 이상의 정수 메모리 뱅크(238)를 포함하며, 이는 메모리(239) 및 어드레스 생성 유닛(240)을 포함한다.
본 발명이 속하는 기술분야에서 널리 알려진 바와 같이, 많은 가속기(242)가 전형적으로 연결되어 있으며, 많은 가속기(242)는 채널 코딩(channel coding) 및 인터리빙(interleaving)과 같은 어떤 베이스밴드 함수의 효율적인 구현을 가능하게 하기 때문이다. 이러한 가속기는 본 발명이 속하는 기술분야에서 널리 알려져 있으므로, 여기서 상세하게 논의하지는 않겠다. 가속기는 많은 다른 표준에 의해 재사용되도록 구성될 수 있다.
제1 및 제2벡터 실행유닛(203, 205)은 동시에 또는 분리되어 운영될 수 있는 네개의 복소 데이터경로를 가지는 4-방향 CMAC 유닛으로서 도시되어 있다. 네개의 복소 데이터 경로는 승산기(multiplier), 가산기(adder), 축적기 레지스터(accumulator register, 도 1에 도시되지는 않음)를 포함한다. 따라서, 이 실시예에서, CMAC(203)는 4-방향 CMAC 데이터경로로서 언급될 수 있다. 승산 및 가산 외에, 이 기술분야에서 잘 알려진 바와 같이 CMAC(203)는 라운딩(rounding)과 스케일링(scaling) 연산을 수행할 수 있고, 포화(saturation)를 지원할 수도 있다.
일실시예에서, 프로세서 코어(201)에 대한 명령어 세트 아키텍쳐는 세 클래스의 합성 명령어(compound instructions)를 포함할 수 있다. 첫번째 클래스의 명령어는 RISC 명령어로서, 이는 16-비트 정수 피연산자(operand)를 연산한다. RISC-명령어 클래스는 대부분의 제어-지향(control-oriented) 명령어를 포함하고 프로세서 코어(201)의 정수 실행유닛(212) 내에서 실행될 수 있다. 다음 명령어 클래스는 DSP 명령어이고, 실수부와 허수부를 가지는 복소 지수(complex- valued) 데이터를 연산한다. DSP 명령어는 하나 또는 그 이상의 벡터 실행유닛(203, 205)에서 실행된다. 세번째 클래스의 명령어는 벡터 명령어(Vector instructions)이다. 벡터 명령어는 DSP 명령어의 확장으로 간주되는데, 이는 큰 데이터 세트를 연산하고 발전된 어드레싱 모드(advanced addressing modes)와 벡터 지원을 활용하기 때문이다. 벡터 명령어는 복소수 또는 실수 데이터 타입을 연산할 수 있다.
종래 기술에서, CMAC 유닛(203, 205)는 개별적으로 연산하도록 구성되고, 각각 하나의 명령어를 한번에 하나의 데이터 세트에 처리한다. 본 발명에 따르면, 처리 속도를 빠르게 하기 위해, CMAC 유닛(203, 205)이 동일한 세트의 데이터를 동시에 동작하게 하는 제어 수단이 포함된다.
예시적으로, 종래 기술에서 각 벡터 실행유닛은 이름을 가진다. 다음 명령어
Figure pct00001
는 다음의 CMAC 명령어가 CMA 유닛 넘버 0으로 보내져야 한다는 것을 의미한다. 이 정보는 명령어 자체에서 발견되는 것이고 코어(201)의 이슈 로직에서 디코드되거나 또는 벡터 실행유닛 스스로에 의해 디코드된다.
본 발명에 따르면, 이슈 그룹이라고 불리우는 실행유닛의 그룹이 특정되고, 각 이슈 그룹은 동일한 타입의 또는 다른 타입의 하나 이상의 실행유닛을 포함한다. 명령어가 발행(issue)되면, 명령어 단어의 유닛 필드(unit field)는 실행유닛의 하나를 직접 인코드하지 않고, 그 대신 이슈 그룹의 하나를 지정할 것이다. 이에 대해서는 도 4a 및 도 4b와 연결하여 설명하기로 한다. 어떠한 실행유닛이 각 이슈 그룹에 포함되는지에 대한 정보는 어떠한 적합한 유닛에 보관될 수 있으며, 예를 들어, 도 3의 이슈 로직 유닛(705)과 같은 프로세서 코어(201)의 전용 메모리에 보관될 수 있다. 이는 도 4a 및 도 4b와 연결하여 더 상세히 설명할 것이다. 이슈 그룹은 종래기술의 단일 벡터 실행유닛과 동일한 방식으로 명령어로 지정될 수 있다.
본 발명에 따라 특정 타입의 모든 명령어가, 개별 벡터 실행유닛이 아닌, 특정 이슈 그룹으로 전송되어야 한다는 것을 나타내는 새로운 명령어가 정의된다. 다음의 명령어가 발행되었다.
Figure pct00002
이것은 모든 cmac 명령어가 이슈 그룹 넘버 0으로 전송되어야 하고 모든 calu 명령어가 이슈 그룹 넘버 5로 전송되어야 한다는 것을 의미한다. 만약 cacc x, y와 같은 cmac 명령어가 발행되면, 이는 이슈 그룹 넘버 0으로 전송될 것이다. 만약 vadd z, b와 같은 calu 명령어가 발행되면, 이는 이슈 그룹 넘버 5로 전송될 것이다. 하나의 이슈 그룹의 벡터 실행유닛은 동일한 수의 데이터경로(datapath)를 가질 수도 있고, 또는 다른 수의 데이터경로를 가질 수도 있다.
도 2는 명령어 포맷의 예를 나타낸다. 이 예에서 이슈 그룹 0이라 불리우는 이슈 그룹은 0 0 1을 인코딩하는 이슈 그룹을 나타낸다. 도 2의 예에서, 정수 실행유닛은 자신의 엔트리(entry)를 가지며 이슈 그룹에 포함되지 않는다. 또한, 이슈 그룹, 예를 들어 이슈 그룹 0이 정수 실행유닛을 포함하도록 정의하는 것도 가능할 것이다. 이 다른 예에서, 이슈 그룹은 정수 명령어를 처리하는데 사용될 수 있다. 도 2의 예에서, 이슈 그룹의 수에 대해 3비트를 사용하면, 8개의 다른 이슈 그룹을 특정할 수 있다. 만약 많은 수의 이슈 그룹이 요구되면, 이슈 그룹을 지정하는데 사용되는 비트의 수는 따라서 증가하여야 한다. 도면에서 문자 x는 데이터 아이템을 나타낸다.
위에서 도 1과 연결하여 설명한 바와 같이, 코어는 일반적으로 둘 또는 그 이상의 스레드 또는 컨텍스트를 지원한다. 개별 벡터 실행유닛이 사용되는 경우에서와 같이, 두개 이상의 스레드에서 동일한 함수 유닛을 포함시키는 것은 충돌의 위험이 있기 때문에 바람직하지 않다. 따라서, 바람직하게, 도 2의 이슈필드에 추가 비트가 더해져서, 이슈 그룹이 어떠한 스레드나 컨텍스트로 사용되는지 나타낸다.
도 3은 종래기술의 베이스밴드 프로세서(700)에서 본 발명에 대한 시작 포인트로 사용될 수 있는 명령어 이슈 로직을 나타낸다. 베이스밴드 프로세서는, 프로세서의 다양한 실행유닛에 대한 명령어를 홀드하는 프로그램 메모리(PM)(702)와 프로그램 플로우 제어유닛(703)를 가지는 코어(701)를 포함한다. 프로그램 플로우 제어유닛(703)은 프로그램 메모리(702)에서 명령어가 읽혀져야 하는 다음 어드레스를 지정하도록 구성된다. 프로그램 메모리(702)로부터, 명령어가 이슈 로직 유닛(705)으로 전송되며, 이는 모든 실행유닛에 공통이고, 각각의 특정 명령어를 어디로 보낼 것인지 제어하도록 구성된다. 이슈 로직 유닛(705)은 이 경우 많은 벡터 실행유닛(710, 712, 714)과 연결되며 멀티플렉서(715)를 통해 정수 실행유닛(716)과 연결된다. 위에서 설명한 바와 같이, 일실시예에서, 실제 명령어를 포함하는 명령어 단어는 모든 실행유닛으로 전송되는 반면, 특정 명령어에 대응하는 이슈신호는 이 명령어를 실행하려는 실행유닛으로만 전송된다. 다른 실시예에서, 이슈신호는 각 벡터 실행유닛에 의해 국지적으로(locally) 다루어진다.
도 4a는 본 발명에 따라, 도 3의 유닛(705)에 대응하는 이슈 제어유닛의 일예를 나타낸다. 앞서와 같이, 코어는 벡터 실행유닛에 대한 명령어를 홀드하는 프로그램 메모리(211)를 포함한다. 프리-디코드(pre-decode) 유닛(321)은 어떠한 실행유닛이 프로그램 메모리로부터 읽혀질 명령어를 각각 수신하여야 하는지를 결정하도록 구성된다. 명령어 단어는 직접 프로그램 메모리(211)로부터 모든 실행유닛으로 전송된다. 이것은 도 4a에서 도시되지는 않았으며, 도 4a는 단지 제어신호만을 보여준다. 어떠한 함수 유닛 또는 유닛들이 명령어를 수행할 것인지에 대한 정보를 전송하는 이슈신호는 디멀티플렉서(demultiplexer, 324)를 통해 전송된다. 이슈신호는, 디멀티플렉서로부터 CORE라고 마크된 화살표에 의해 도시된 바와 같이, 코어의 정수 실행유닛으로 전송될 수 있다. 또는, 이슈신호는 이슈 그룹을 위해 의도될 수도 있다. 이 경우, 이슈신호는 이 이슈 그룹의 모든 기능 유닛으로 그대로 전송될 수 있다.
그러나, 좀더 많은 유연성을 제공하기 위한 바람직한 실시예에서는, 이슈신호와 연관하여 마스크가 사용될 수 있으며, 도 4a에 나타난다. 이 경우, 각각의 이슈 그룹에 대해 복수의 마스크 유닛(326, 328, 330)이 제공된다. 논리연산 유닛(logical operation unit)(332, 334)은 이슈 그룹을 위해 의도되는 이슈신호를 디멀티플렉서(324)로부터 수신한다. 이 논리연산 유닛(332, 334)는 또한 이 이슈 그룹에 대응하는 마스크 유닛(326, 328, 330)으로부터 정보를 수신하여, 이슈 그룹 내의 어떠한 함수 유닛이 명령어를 수신하여야 하는지 결정한다. 마스크 유닛의 기능은 다음에 더욱 상세하게 설명될 것이다. 논리연산 유닛이 이슈신호와 마스크로부터의 정보에 기초하여, 어떠한 함수 유닛 또는 유닛들이 명령어를 수행할 것인지 결정하면, 이슈 신호는 이 벡터 실행유닛에 전송된다. 이러한 방식으로, 이슈 그룹에 포함되는 함수 유닛은 설정(configuration)시 시스템에서 하드 코드(hard coded)되는 대신 동적으로 다양화될 수 있다.
도 4b는 위의 실시예에 따른 마스크 유닛(325)의 일예를 나타낸다. 마스크 유닛은 명령어를 실제 수신하여야 하는 벡터 실행유닛의 그룹에서 벡터 실행유닛을 결정하는(identifying) 마스크를 포함한다. 특히, 마스크는 각 벡터 실행유닛에 대해 1비트를 가지는데, 0 또는 1로 설정될 수 있으며, 이는 벡터 실행유닛이 이슈 그룹에 속하는지 아닌지를 나타낸다. 이 정보는 이슈 신호에 담긴 정보와 결합하여 어떠한 벡터 실행유닛이 명령어를 수신할 것인지를 결정한다.
이 예에서, 마스크 유닛(326, 328, 330)은 동일 이슈 그룹에 대해 모두 사용된다. 다른 마스크 유닛(340)에 의해 나타내어지는 바와 같이, 더 많은 이슈 그룹의 하나에 대한 마스크 유닛이 있을 수도 있다. 하나의 이슈 그룹에 대해 복수의 마스크 레지스터를 가지는 주요 목적은, 각각의 컨텍스트가 자신의 개별 마스크 레지스터를 가지도록 하는 것이다.
도 4b의 예에서, 아홉개의 벡터 실행유닛이 이슈 그룹에 잠재적으로 포함된다. 필터 유닛에 저장된 정보는 첫번째와 마지막 실행유닛이 실제 명령어를 실행하는데 참여하여야 한다는 것을 나타낸다. 위에서 이해된 바와 같이, 이슈 그룹은 마스크 유닛 없이 정의될 수 있지만, 마스크 유닛은 미리 정의된 그룹의 실행유닛 내에서 이슈 그룹의 동적인 정의를 가능하게 한다.
도 5는 메모리 유닛(230)이 특정 이슈 그룹에서 두개의 CMAC 유닛(203, 205)로부터 어떻게 동시에 억세스될 수 있는지를 나타낸다. 메모리(230)로부터 두 CMAC 유닛(203, 205)을 향해 나뉘어진 화살표에 의해 나타난 바와 같이, 데이터는 메모리(230)로부터 두 CMAC 유닛(203, 205)으로 읽혀지거나 또는 두 CMAC 유닛(203, 205)으로부터 메모리로 쓰여질 수 있다. CMAC 유닛(203, 205)으로부터 메모리(230)로의 공통 화살표는 CMAC 유닛으로부터 제어신호가 메모리 유닛(230)의 동일 제어 입력으로 전송될 수 있다는 것을 나타낸다. 두 CMAC 유닛(203, 205)은 메모리 유닛으로부터 동일한 데이터를 동시에 수신할 수 있다. 메모리 유닛에 쓰기를 위해, 자연히, 교대하여야 한다. 이것은 당업자에게 알려진 바와 같이, 다양한 방법으로 구성될 수 있다. 물론, CMAC 유닛(203, 205)은 일예일 뿐이며, 다른 실행유닛일 수 있다. 그리고 분할(split) 및 접합(joint) 연결은 실제로 온-칩 네트워크(244)에서 구현될 수 있으며, 이는 프로세서에서 모든 유닛 간에 연결을 가능하게 한다.
도 5는 또한 벡터 레지스터 유닛(902)를 포함하며, 이는 이슈 그룹에서 두개 또는 모든 실행유닛의 결과를 수신하여 결합하도록 구성된다. 벡터 레지스터 유닛(902)은 또한 온-칩 네트워크(244)에 직접 연결되어 프로세서에서 다른 모든 유닛과 데이터를 교환가능하게 한다. 만약 벡터 레지스터 유닛이 제공되면, 에필로그(epilog)를 수행할 것이다. 에필로그는 원하는 방식으로 결과를 결합하는데, 예를 들어 결과를 서로 가산하는데 관여할 것이다.
이슈 그룹 함수는, 두개의 CMAC 유닛이 정확하게 동시에 시작하여 동기화된 방식으로 동작하는 것이 중요한 상황에서 특히 유용하다. 전형적으로 멀티-이슈 함수는 몇개의 벡터 실행유닛이 동일한 명령어를 실행하게 하는데, 즉, 몇개의 벡터 실행유닛에 동일한 명령어를 전송하는 것이 바람직한 경우에 사용된다. 이것은 실행의 동기화가 중요한 경우와 몇개의 벡터 실행유닛이 동일 명령어를 수신하여야 하지만 동기화될 필요는 없는 경우 모두에 적용된다. 후자의 예는 벡터 실행유닛을 클리어하는데 사용되는 클리어(clear) 명령어이다. 모든 벡터 실행유닛을 클리어하기 위해, 이슈 그룹은 모든 벡터 실행유닛을 포함하는 것으로 정의될 수 있고 명령어는 이 이슈 그룹으로 전송될 수 있다.
다음 예로써 임의의 수의 실행유닛으로 SIMT DSP를 기반으로 하는 것에 대해 논의한다. 간단을 위하여, 모든 유닛은 이 예에서 CMAC 벡터 실행유닛인 것으로 가정하지만, 실제로 디지털 신호 프로세서는 다른 유형의 유닛을 가질 수 있다.
많은 베이스밴드 처리(processing) 알고리즘과 프로그램에서, 알고리즘은 복수의 DSP 태스크로 분해되고, 각각은 "프롤로그(prolog)"와, 벡터 연산과, "에필로그"를 포함한다. 프롤로그는 주로, 벡터 연산이 수행되기 전에 축적기를 클리어하고, 어드레싱(addressing) 모드와 포인터를 설정하는 등에 사용된다. 벡터 연산이 완료되면, 벡터 연산의 결과는 태스크의 "에필로그" 파트에서 코드에 의해 더 처리될 수 있다. SIMT 프로세서에서, 전형적으로 하나의 벡터 명령어만이 벡터 연산을 하는데 요구된다.
본 발명에 따른 하나의 DSP 태스크의 전형적 레이아웃(layout)은 다음 예의 태스크와 같이 예시화될 수 있다.
예에서 코드 스니펫(code snippet)은 512개의 복소값에 대한 복소 내적(dot-product) 계산을 수행하여 다시 메모리에 그 결과를 저장한다. 루틴(routine)은 프로세서 코어에 의해 인출되는 다음의 명령어를 요구한다.
Figure pct00003

위 예에서, setcmvl, cmacstar 명령어는 CMAC 벡터 실행유닛으로 발행되어 CMAC 벡터 실행유닛에서 실행되는 반면, ldi, outidle 명령어는 정수 코어("코어")에서 실행된다. star 명령어에 대한 파라미터 [3]은 결과 데이터가 보내져야 하는 간접(indirect) 네트워크 포트 어드레스를 나타낸다.
벡터 명령어의 벡터 길이는 얼마나 많은 데이터 단어(샘플)에 벡터 실행유닛이 동작하여야 하는지를 나타낸다. 벡터 길이는 어떠한 방식으로도 설정될 수 있으며, 예를 들어 다음과 같다.
1) 위의 예의 setcmvl.123과 같이, 전용 명령어에 의해
2) 예를 들어 도 4에에서 나타난 cmac.123 포맷에 따라, 명령어 자신에 운반되어
3) 예를 들어 out r0, cmac_vector_length 포맷에 따라, 제어 레지스터에 의해 설정되어
명령어 idle #cmac0 는 코어 프로그램 플로우 제어기에 CMAC0 유닛이 그 벡터 연산을 종료할 때까지 새로운 명령어를 인출하기를 중지하라고 명령한다. 아이들(idle) 기능이 해제되고, 새로운 명령어가 인출되는 것이 가능해지면, "star" 명령어가 인출되어 CMAC0 벡터 실행유닛에 보내어진다. 스타 명령어는 CMAC 벡터 실행유닛에 축적기를 메모리에 저장하라고 명령한다.
이슈 그룹의 실행유닛으로부터의 출력을 다루는 세가지 가능한 방법이 있다. 가장 간단하고 가장 평범한 것은, 실행유닛이 데이터 세트에 개별적으로 동작하고, 각각의 명령어 또는 명령어의 시퀀스(sequence)가 개별적으로 종료되는 것이다. 이 경우, 결과는 기술분야에서 알려진 방식으로 처리된다.
두번때 다른 방법은 이슈 그룹을 구성하는 두개 또는 이상의 실행유닛으로부터의 결과가 함께 처리되는 것이다. 이를 달성하는 하나의 방법은, 도 5와 같이 벡터 레지스터 파일(902)을 제공하여, 전체 이슈 그룹으로부터 출력을 수신하여 에필로그를 수행하도록 구성하는 것이다. 에필로그는 원하는 방식으로 결과를 결합하도록, 예를 들어 서로 가산하도록 할 것이다.
세번째 옵션은 하나의 실행유닛만이 에필로그를 수행하게 하는 것이다. 이 경우, 이슈 그룹에서 실행유닛 하나를 제외한 모든 실행유닛에 대해, 마지막 명령어는 실행유닛이 그 데이터를 결과의 최종 결합을 수행하였던 이슈 그룹의 하나의 실행유닛으로 전송하도록 하는 것이다.
위의 예에서, 명령어에서 파라미터 [0], [1], [2]는 각각 연산을 위해 읽혀지거나 쓰여져야 하는 메모리의 간접 네트워크 포트 어드레스를 나타내며, 이때 데이터는 두 메모리로부터 읽혀지고 결과는 하나의 메모리에 쓰여지는 것으로 가정된 것이다.
Figure pct00004
따라서, 동일한 메모리 정보가 참여된 모든 벡터 셀행유닛에 주어진다. 명백하게, 이슈 그룹의 모든 벡터 실행유닛이 동일 데이터에 대한 작업에 참여하는 것은 일반적으로 바람직하지 않다. 이 문제를 해결하기 위해, 각각의 벡터 실행유닛은 네트워크 포트 매핑 테이블을 가져, 이 벡터 실행유닛이 읽어야 하거나 써야 하는 네트워크 포트로 정확하게 파라미터 [0], [1], [2]를 해석한다. 일반적으로, 이슈 그룹의 각각의 벡터 실행유닛은 고유의 매핑 테이블을 가진다. 도 5에서 이해된 바와 같이, 벡터 실행유닛은 동일한 메모리 유닛으로부터, 또는 다른 메모리 유닛으로부터의 데이터에 동작할 수 있다. 예를 들어, 두개의 벡터 실행유닛(203, 205)은 각각 Σx·y와 Σx·z 함수를 실행할 수 있으며, 이때 x, y, z는 제1, 제2 및 제3메모리로부터 각각 얻은 데이터 벡터이다.
아이들 명령어는 SIMT 아키텍쳐에서 특정 벡터 실행유닛이 그 명령어를 종료할 때까지 프로그램 메모리로부터 명령어 인출을 중지하는데 사용된다. 벡터 실행유닛이 종료되면 준비하고 있던 코어에 이를 나타내는 신호를 리턴한다. 이 신호는 인터럽트(interrupt) 신호를 개시하게 한다. 이슈 그룹이 사용되면, 바람직하게 아이들 명령어가 이슈 그룹의 모든 벡터 실행유닛이 종료될 때까지 명령어의 인출을 멈춘다. 따라서, 코어는 연계된 방법으로 이슈 그룹의 모든 벡터 실행유닛으로부터 준비 신호를 처리하여야 한다. 전형적으로, 이슈 그룹의 실행유닛이 동일한 명령어를 실행하고 기능정지(stall)가 실행유닛에서 발생하지 않으면, 동일 이슈 그룹 내의 모든 실행유닛은 동시에 인터럽트 신호를 배포(release)한다. 유연성을 제공하기 위해, "and" 또는 "or" 로직이 사용되어 대응하는 출력 신호를 형성할 수 있는지 여부를 특정하는 것도 가능하다. 예를 들어 판정기준(creterion)은 준비 신호가 모든 벡터 유닛으로부터 수신되었는지, 즉, 이슈 그룹의 모든 벡터 실행유닛이 완료하였는지일 수 있다. 또는, 판정기준은 벡터 유닛 중 하나가 준비 신호를 발행하였는지일 수 있다. 이를 처리하는 실제 방법이 도 6에 도시되어 있다. 논리 유닛(904)이 이슈 그룹의 벡터 실행유닛(0, 1, 2) 각각으로부터 준비 신호를 수신하도록 제공된다. 논리 유닛(904)은 또한 도 3b와 연결하여 논의되었던 이슈 그룹 마스크(900)로부터 정보를 가지고 적합한 로직 기능, 예를 들어 OR, AND 또는 XOR를 수행하여 원하는 결과를 얻도록 제공된다.

Claims (15)

  1. 디지털 신호 프로세서(200)에 있어서,
    정수 명령어를 실행하는 정수 실행유닛(212)을 포함하는 프로세서 코어(201); 및
    상기 프로세서 코어(201)와 분리되어 상기 프로세서 코어(201)와 연결된 적어도 제1 및 제2벡터 실행유닛(203, 205, 520, 530)를 포함하고,
    상기 벡터 실행유닛은 제1 및 제2 수의 데이터경로를 각각 포함하고, 상기 벡터 실행유닛은 벡터 형식의 복수의 데이터에 수행되는 벡터 명령어를 포함하는 명령어를 실행하도록 구성되고,
    상기 디지털 신호 프로세서는 제1 및 제2벡터 실행유닛(203, 205, 520, 530)에 대한 명령어를 홀드하도록 구성되는 프로그램 메모리(211)와 제1 및 제2벡터 실행유닛에 대한 벡터 명령어를 포함하는 명령어를 발행하는 이슈 로직을 포함하고,
    상기 디지털 신호 프로세서는, 상기 프로세서가,
    동시에 동일 명령어를 수신하여 실행하려는 적어도 두 실행유닛을 선택하는 이슈 제어유닛(705)과,
    상기 적어도 두 실행유닛으로 명령어를 전송하는 로직을 포함하는 것을 특징으로 하는 프로세서.
  2. 제1항에 있어서, 복수의 이슈 그룹이 정의되고,
    각 이슈 그룹은 적어도 하나의 실행유닛(212, 203, 205)을 포함하고, 적어도 하나의 이슈 그룹은 하나의 실행유닛 이상을 포함하고,
    상기 이슈 제어유닛(705)이 이슈 그룹을 선택하는 것에 의해 상기 적어도 두 실행유닛을 선택하도록 구성되는 프로세서.
  3. 제1항 또는 제2항에 있어서, 상기 이슈 제어유닛(705)은 적어도 하나의 이슈 그룹과 관련된 적어도 하나의 마스크(900)를 더 포함하고,
    상기 마스크는 이슈 그룹에서 어떠한 실행유닛 또는 유닛들이 상기 명령어를 수신하여 실행할 것인지를 나타내는 프로세서.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 이슈 그룹은 적어도 하나의 정수 실행유닛(212) 및/또는 적어도 하나의 벡터 실행유닛(203, 205, 520, 530)을 포함할 수 있는 프로세서.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서, 적어도 하나의 실행유닛은, 실행유닛이 상호작용하여야 하는 적어도 하나의 다른 유닛을 나타내는, 예를 들어 어떠한 메모리로부터 데이터를 읽어야 하는지를 나타내는 명령어에 담긴 정보를 해석하는 매핑 테이블을 포함하는 프로세서.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서, 각 벡터 실행유닛은 명령어가 벡터 명령어인지 결정하고, 만약 그렇다면, 벡터 길이를 홀드하도록 구성되는 카운터 레지스터에 알리도록 구성되는 벡터 제어기를 포함하고, 상기 벡터 제어기는 명령어의 실행을 제어하도록 더 구성되는 프로세서.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    벡터 레지스터 파일 유닛(902)를 더 포함하고,
    이슈 그룹의 상기 실행유닛은 상기 벡터 레지스터 파일 유닛에 명령어 실행 결과를 작성하도록 명령될 수 있는 프로세서.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 명령어 디코더(723)는 상기 벡터 제어기(720, 720')에 주어진 시간에 실행될 명령어에 관하여 알리도록 구성되는 프로세서.
  9. 제1항에 있어서, 이슈 그룹의 상기 적어도 하나의 실행유닛(203, 205, 212)은 이슈 신호를 수신하여 이 이슈 신호를 기반으로 명령어의 실행을 제어하도록 더 구성되는 프로세서.
  10. 제1항에 있어서, 각 벡터 실행유닛(203, 205, 520, 530)은 수신된 명령어 단어로부터 이슈 신호를 추출하여, 상기 이슈 신호에 근거하여 상기 명령어 단어의 실행에 참여할 것인지를 결정하도록 구성되는 프로세서.
  11. 멀티모드 유선 및 유선통신에 적합한 베이스밴드 통신 디바이스에 있어서,
    통신 신호를 송신 및/또는 수신하는 프론트-엔드 유닛(7);
    상기 아날로그 프론트-엔드 유닛과 결합되는 프로그램가능한 디지털 신호 프로세서(3)를 포함하고,
    상기 프로그램가능한 디지털 신호 프로세서는 제1항 내지 제10항 중 어느 하나에 따른 디지털 신호 프로세서인 베이스밴드 통신 디바이스.
  12. 제11항에 있어서, 상기 프론트-엔드 유닛(7)은 무선 주파수 또는 베이스밴드 신호를 송신 및/또는 수신하도록 구성되는 아날로그 프론트-엔드 유닛인 베이스밴드 통신 디바이스.
  13. 제11항 또는 제12항에 있어서, 상기 베이스밴드 통신 디바이스는, 셀룰러 통신 네트워크와 같은, 무선 통신 네트워크를 위한 것인 베이스밴드 통신 디바이스.
  14. 제11항에 있어서, 상기 베이스밴드 통신 디바이스는 텔레비전 리시버인 베이스밴드 통신 디바이스.
  15. 제11항에 있어서, 상기 베이스밴드 통신 디바이스는 케이블 모뎀인 베이스밴드 통신 디바이스.
KR1020147018299A 2011-12-20 2012-11-28 디지털 신호 프로세서 및 베이스밴드 통신 디바이스 KR20140105805A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
SE1151231-6 2011-12-20
SE1151231A SE1151231A1 (sv) 2011-12-20 2011-12-20 Digital signalprocessor och basbandskommunikationsanordning
PCT/SE2012/051321 WO2013095258A1 (en) 2011-12-20 2012-11-28 Digital signal processor and baseband communication device

Publications (1)

Publication Number Publication Date
KR20140105805A true KR20140105805A (ko) 2014-09-02

Family

ID=47563584

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147018299A KR20140105805A (ko) 2011-12-20 2012-11-28 디지털 신호 프로세서 및 베이스밴드 통신 디바이스

Country Status (7)

Country Link
US (1) US20140344549A1 (ko)
EP (1) EP2751671B1 (ko)
KR (1) KR20140105805A (ko)
CN (1) CN104040493A (ko)
ES (1) ES2647099T3 (ko)
SE (1) SE1151231A1 (ko)
WO (1) WO2013095258A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE537552C2 (sv) 2011-12-21 2015-06-09 Mediatek Sweden Ab Digital signalprocessor
US10713059B2 (en) * 2014-09-18 2020-07-14 Advanced Micro Devices, Inc. Heterogeneous graphics processing unit for scheduling thread groups for execution on variable width SIMD units

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6077265A (ja) * 1983-10-05 1985-05-01 Hitachi Ltd ベクトル処理装置
US5045995A (en) * 1985-06-24 1991-09-03 Vicom Systems, Inc. Selective operation of processing elements in a single instruction multiple data stream (SIMD) computer system
US5210834A (en) * 1988-06-01 1993-05-11 Digital Equipment Corporation High speed transfer of instructions from a master to a slave processor
US5197130A (en) * 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
CA2122139C (en) * 1991-10-24 2000-08-29 David Leroy Sprague Data processing system
US5437043A (en) * 1991-11-20 1995-07-25 Hitachi, Ltd. Information processing apparatus having a register file used interchangeably both as scalar registers of register windows and as vector registers
GB2273377A (en) * 1992-12-11 1994-06-15 Hughes Aircraft Co Multiple masks for array processors
JPH07271764A (ja) * 1994-03-24 1995-10-20 Internatl Business Mach Corp <Ibm> 計算機プロセッサ及びシステム
US6317819B1 (en) * 1996-01-11 2001-11-13 Steven G. Morton Digital signal processor containing scalar processor and a plurality of vector processors operating from a single instruction
US6219776B1 (en) * 1998-03-10 2001-04-17 Billions Of Operations Per Second Merged array controller and processing element
US6308250B1 (en) * 1998-06-23 2001-10-23 Silicon Graphics, Inc. Method and apparatus for processing a set of data values with plural processing units mask bits generated by other processing units
GB2352536A (en) * 1999-07-21 2001-01-31 Element 14 Ltd Conditional instruction execution
US6839828B2 (en) * 2001-08-14 2005-01-04 International Business Machines Corporation SIMD datapath coupled to scalar/vector/address/conditional data register file with selective subpath scalar processing mode
US7681013B1 (en) * 2001-12-31 2010-03-16 Apple Inc. Method for variable length decoding using multiple configurable look-up tables
CN100541425C (zh) * 2002-05-24 2009-09-16 Nxp股份有限公司 标量/矢量处理器
US20040193838A1 (en) * 2003-03-31 2004-09-30 Patrick Devaney Vector instructions composed from scalar instructions
US8307194B1 (en) * 2003-08-18 2012-11-06 Cray Inc. Relaxed memory consistency model
US7383427B2 (en) * 2004-04-22 2008-06-03 Sony Computer Entertainment Inc. Multi-scalar extension for SIMD instruction set processors
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
US20070150697A1 (en) * 2005-05-10 2007-06-28 Telairity Semiconductor, Inc. Vector processor with multi-pipe vector block matching
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
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
US7543136B1 (en) * 2005-07-13 2009-06-02 Nvidia Corporation System and method for managing divergent threads using synchronization tokens and program instructions that include set-synchronization bits
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
US7788468B1 (en) * 2005-12-15 2010-08-31 Nvidia Corporation Synchronization of threads in a cooperative thread array
US20080079712A1 (en) * 2006-09-28 2008-04-03 Eric Oliver Mejdrich Dual Independent and Shared Resource Vector Execution Units With Shared Register File
US8082420B2 (en) * 2007-10-24 2011-12-20 International Business Machines Corporation Method and apparatus for executing instructions
US20110320765A1 (en) * 2010-06-28 2011-12-29 International Business Machines Corporation Variable width vector instruction processor

Also Published As

Publication number Publication date
CN104040493A (zh) 2014-09-10
US20140344549A1 (en) 2014-11-20
WO2013095258A1 (en) 2013-06-27
EP2751671B1 (en) 2017-08-16
SE536099C2 (sv) 2013-05-07
EP2751671A1 (en) 2014-07-09
SE1151231A1 (sv) 2013-05-07
ES2647099T3 (es) 2017-12-19

Similar Documents

Publication Publication Date Title
EP2751668B1 (en) Digital signal processor and baseband communication device
JP2010067278A (ja) プロセッサでの条件付き実行をサポートする装置及びその方法
US20140281373A1 (en) Digital signal processor and baseband communication device
US7043625B2 (en) Method and apparatus for adding user-defined execution units to a processor using configurable long instruction word (CLIW)
EP2751671B1 (en) Digital signal processor and baseband communication device
US7395408B2 (en) Parallel execution processor and instruction assigning making use of group number in processing elements
JP2008181535A (ja) ディジタル信号処理装置
CN107077381B (zh) 异步指令执行装置和方法
US20140372728A1 (en) Vector execution unit for digital signal processor
JP2003005954A (ja) データ処理装置およびその制御方法
EP2751670B1 (en) Digital signal processor
JPWO2009110497A1 (ja) Simd型プロセッサアレイシステム及びそのデータ転送方法
US20130238880A1 (en) Operation processing device, mobile terminal and operation processing method
US7668193B2 (en) Data processor unit for high-throughput wireless communications
CN116097213A (zh) 一种图指令处理方法及装置

Legal Events

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