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

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

Info

Publication number
KR20140078718A
KR20140078718A KR1020147011839A KR20147011839A KR20140078718A KR 20140078718 A KR20140078718 A KR 20140078718A KR 1020147011839 A KR1020147011839 A KR 1020147011839A KR 20147011839 A KR20147011839 A KR 20147011839A KR 20140078718 A KR20140078718 A KR 20140078718A
Authority
KR
South Korea
Prior art keywords
vector
instruction
instructions
execution unit
vector execution
Prior art date
Application number
KR1020147011839A
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 KR20140078718A publication Critical patent/KR20140078718A/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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • 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
    • 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
    • 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/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • 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)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

디지털 신호 프로세서는 벡터 실행 유닛을 포함하고, 이는 벡터 형태인 다수의 데이터상에서 명령들을 실행하도록 구성되며, 로컬 큐(730)를 포함하여 프로그램 메모리로부터 명령들을 수신하고, 미리 정의된 조건이 충족될 때까지 그 내부에 그것들을 홀드하도록 구성된다. 상기 로컬 큐(730)는 상기 프로그램 메모리로부터 한번에 명령 시?스를 수신하고, 마지막 N 명령들을 저장하며, 여기서, N은 정수이다. 상기 벡터 실행 유닛내의 상기 벡터 제어기는 상기 로컬 큐를 제어하도록 구성된 큐 제어 수단(732,721,744)을 포함하고, 상기 로컬 큐내에 저장된 M 명령 시?스들을 횟수 K 만큼 반복하며, 여기서 M 은 N 이하의 정수이다.
이는 상기 벡터 실행 유닛이 기다리게 되는 시간을 감소시키며, 그 이유는 프로그램 메모리내의 IDLE 명령들 때문이다.

Description

디지털 신호 프로세서 및 기저 대역 통신장치{DIGITAL SIGNAL PROCESSOR AND BASEBAND COMMUNICATION DEVICE}
본 발명은 SIMT-기반의 디지털 신호 프로세서에 관한 것이다.
많은 이동 통신 장치는 하나 이상의 디지털 신호 프로세서(DSP)를 포함하는 무선 송수신기를 사용한다.
그러한 프로세서에서 실행되는 많은 기능들은 빈번하게, 많은 수의 데이터 샘플들에 대해 실행된다. 따라서 단일 명령 다중 데이터(SIMD) 프로세서라고 알려진 타입의 프로세서가 유용한데, 그 이유는 그것이 하나의 단일 명령이 한번에 하나의 정수에서 작동하도록 하기 보다는, 다수의 데이터 항목에서 작동하도록 할 수 있기 때문이다. 이러한 종류의 프로세서는 벡터 명령들을 처리할 수 있으며, 이는 단일 명령이 다수의 데이터 유닛들에 동일한 기능을 실행한다는 것을 의미한다. 따라서 그것들은 벡터 실행 유닛으로서 지칭될 수 있다. 데이터는 바이트 또는 워드들로 그룹화되고, 그리고 작동될 수 있는 벡터로 포장된다.
추가적인 SIMD 아키텍처의 개발로서, 단일 명령 스트림 다중 작업(SIMT) 아키텍처가 개발되어 있다. 전통적으로, SIMT 아키텍처에서는, 1 또는 2개의 SIMD 타입의 벡터 실행 유닛들이 코어 프로세서의 일부일 수 있는 정수 실행 유닛에 연관되어 제공되어 있다.
국제 특허 출원 WO2007/018467호는 SIMT 아키텍처에 따른 DSP를 개시하고 있으며, 이는 정수 프로세서 및 프로그램 메모리를 포함하는 프로세서 코어와, 상기 코어에 연결된, 그러나 그 내부에 통합되어 있지는 않는 2개의 벡터 실행 유닛들을 포함한다. 상기 벡터 실행 유닛은 컴플렉스 산술 논리 유닛(CALU), 또는 컴플렉스 다중누적 유닛(CMAC)일 수 있다. 이러한 코어는 실행 유닛에 명령을 배포하는 프로그램 메모리를 포함한다. WO2007/018467호에는, 각각의 벡터 실행 유닛들이 별개의 명령 디코더를 갖는다. 이것은 효율적인 방식으로, 그리고 서로에 대해 독립적으로 벡터 실행 유닛들과, 상기 프로세서의 다른 부분들의 사용을 가능하게 한다.
따라서, 상기 SIMT 아키텍처에는, 여러 개의 실행 유닛들이 있다. 일반적으로, 하나의 명령은 프로그램 메모리로부터 실행 유닛들 중 하나에 매 클록 사이클마다 발행될 수 있다. 벡터 연산은 전형적으로 큰 벡터들에 대해 작동하기 때문에, 하나의 클록 사이클 도중에, 하나의 벡터 실행 유닛에서 수신된 명령은, 처리될 클록 사이클의 수를 가질 것이다. 따라서, 다음의 클록 사이클에서는, 명령들이 프로세서의 다른 연산 유닛들로 발행될 수 있다. 벡터 명령들이 긴 벡터상에서 실행되기 때문에, 많은 RISC 명령은 벡터 연산도중에 실행될 수 있다.
많은 기저 대역 알고리즘은, 작업들 사이에서 이전과는 종속성이 없는, 보다 작은 기저 대역 작업의 체인으로 분해될 수 있다. 이러한 속성은 다른 작업들이 벡터 실행 유닛상에서 병렬로 실행될 수 있도록 할 뿐만 아니라, 상기 명령 세트 아키텍처를 사용하여 이용될 수 있다.
종종, 제어 흐름 동기화를 제공하고 데이터 흐름을 제어하기 위해, "아이들(idle)" 명령이 주어진 벡터 연산이 종료될 때까지, 제어 흐름을 중단시키도록 사용될 수 있다. 상기 "idle" 명령은 특정 조건이 충족될 때까지, 추가적인 명령 호출을 중단할 것이다. 그러한 조건은 벡터 실행 유닛 내에서 벡터 명령의 종료일 수 있다.
전형적으로, 이후에 보다 상세히 논의될 바와 같이, DSP 작업은 2 또는 3 명령 시?스를 포함할 것이다. 이것은 상기 벡터 실행 유닛이 벡터 명령을 수신하고, 즉 계산을 실행하고, 그것이 전체 벡터와는 끝날 때까지, 제공되어진 데이터 벡터상에서 그것을 실행하는 것을 의미한다. 다음 명령은, 상기 계산이 전체 벡터상에서 실행된 이후에, 그 결과를 처리하고 그것을 메모리에 저장하는 것이며, 이것은 이론적으로는 즉시 일어날 수 있다. 그러나, 종종, 벡터 실행 유닛은 프로그램 메모리로부터 그것의 다음 명령에 대해 몇몇의 클록 사이클을 기다려야 하며, 그것은 상기 프로세서 코어가 다른 벡터 유닛들이 종료하기를 기다리면서 바쁘기 때문이며, 이것은 벡터 실행 유닛의 비효율적인 활용을 초래한다. 벡터 실행 유닛이 비활성 상태로 유지되는 이러한 확률은, 벡터 실행 유닛들의 수가 증가함에 따라서 함께 증가한다.
본 출원과 동일자로, 동일 출원인에 의해서 출원되고, 디지털 신호 프로세서 및 기저 대역 통신장치로서 명칭이 부여된 공동 계류중인 특허 출원은, 그러한 프로세서내에서 병렬도를 강화시키는 것에 관련된 것이다. 이는 각각의 벡터 실행 유닛내에 로컬 큐를 제공함으로써, 공동 계류중인 출원에 따라서 해결된다. 특정 벡터 실행 유닛의 로컬 큐는, 이 벡터 실행 유닛을 위해서 의도된 다수의 명령들을 저장하고, 그것들을 프로그램 메모리의 상태와는 독립적으로 상기 벡터 실행 유닛에 공급할 수 있다.
따라서, 이 공동 계류중인 출원에 따른 처리는 프로세서내에서 병렬성을 증가시킴으로써 보다 효율적으로 이루어진다. 본 발명은 종래 기술에서, 벡터 명령을 종료한 벡터 실행 유닛은 종종 다음 명령을 즉각적으로 수신할 수 없다는 통찰에 기초한다. 이는 상기 프로그램 메모리내의 첫 번째 명령이 바쁜 상태의 다른 벡터 실행 유닛에 대해 의도되어 있는 동안, 벡터 실행 유닛이 새로운 명령을 수신할 준비가 되었을 때에 발생할 것이다. 이러한 경우, 다른 벡터 실행 유닛이 그것의 다음 명령을 수신할 준비가 될 때까지, 어떠한 벡터 실행 유닛도 새로운 명령을 수신할 수는 없다. 각각의 벡터 실행 유닛에 제공된 로컬 큐 때문에, 하나의 벡터 유닛에 대한 여러 명령들을 포함하는, 명령 번들이, 한번에 상기 벡터 유닛으로 제공될 수 있다. SYNC 명령은, 조건이 충족될 때까지, 전형적으로는 상기 데이터 경로가 또 다른 명령을 받고 실행할 준비가 된 상태일 때 까지, 상기 로컬 큐로부터 명령의 판독을 일시 중단한다. 이러한 두 가지 기능들은 함께, 명령 시?스가 한번에 상기 벡터 실행 유닛으로 전송되도록 하고, 로컬 큐에 저장되도록 하며, 상기 벡터 실행 유닛내에서 연속적으로 처리되도록 하여, 상기 벡터 실행 유닛이 하나의 명령을 처리하면 즉시, 다음 것에 대해 시작할 수 있도록 하여 준다. 이러한 방식으로, 각각의 벡터 실행 유닛은, 최소한의 비활성 시간으로 작동할 수 있다.
본 발명의 목적은 가능한 한, 효율적으로 프로세서내에서 내부 통신을 실행할 수 있도록 하는 것이다.
이러한 목적은, 본 발명에 따라서, 디지털 신호 프로세서내에서 사용하기 위한 벡터 실행 유닛에 의해서 달성되며, 상기 벡터 실행 유닛은 벡터 형태의 다수의 데이터상에서 실행되어야 하는 벡터 명령들을 포함하는, 명령들을 실행하도록 구성되며,
명령이 벡터 명령인지를 결정하고, 만약 그렇다면, 벡터 길이를 홀드하도록 구성된 계수 레지스터에게 알리도록 구성된 벡터 제어기를 포함하는 벡터 제어 유닛을 구비하며, 상기 벡터 제어기는 상기 명령들의 실행을 제어하도록 추가적으로 구성되고, 여기서 상기 벡터 실행 유닛은,
- 로컬 큐(queue)를 포함하며, 그것은 프로그램 메모리로부터 적어도 제1 및 제2 명령을 수신하고, 미리 정의된 조건이 충족될 때까지, 그 내부에 제2 명령을 홀드하도록 구성되며,
- 상기 로컬 큐는 프로그램 메모리로부터, 한번에 명령 시?스를 수신하고, 마지막 N 명령들을 저장하며, 여기서, N은 정수임,
- 상기 벡터 제어기는 상기 로컬 큐를 제어하도록 구성된 큐 제어 수단을 포함하되, 상기 로컬 큐내에 저장된 M 명령 시?스들을, 횟수 K 만큼 반복하는 방식으로 제어하며, 여기서 M 은 N 이하의 정수인 것을 포함한다.
바람직하게는, 상기 벡터 제어기는 상기 코어로부터 수신된 발행 신호에 기초하여 명령들의 실행을 제어한다. 다르게는, 상기 발행 신호는 벡터 실행 유닛, 그 자체에 의해서 국소적으로 처리될 수 있다.
상기 큐 제어 수단은 바람직하게는,
- 반복되어야 할 M 명령들과, 명령이 반복되어야 하는 횟수 K를 추적하는 버퍼 관리기, M 및 K 는 정수임,
- 실행의 반복이 중단되어야 할 때를 결정하기 위하여, 명령 시?스의 반복적인 실행을 모니터링하도록 구성된 반복 제어 수단,
- 반복되어야 할 명령들의 수 M 과, 상기 큐내에서 그것들의 위치를 홀드하도록 구성된 명령 계수 레지스터를 포함한다.
본 발명에 따르면, 로컬 큐는 예를 들면, 마지막 N 명령들을 저장하도록 구성된 순환 버퍼의 형태로 구성되며, N 은 정수이다. 임의의 적합한 정수가, 예를 들면 16으로 배열될 수 있다. 그 다음, 상기 벡터 실행 유닛은 상기 큐내에서, 마지막 M 명령들을 K 횟수 만큼 반복하도록 구성된 반복 명령을 가지며, M 및 K 도 또한 적절한 정수들이다. K는 제어 레지스터 파일로부터, 명령어로부터, 또는 다른 어떤 소스로부터 검색될 수 있다. 이 경우, 상기 벡터 실행 유닛은 또한, 반복 계수기를 포함하며, 이는 반복 횟수를 K 까지 셀 것이다. 상기 반복 기능은 명령의 반복을 중단시키기 전에, 반복 계수기를 K회 감소(또는 증분)시키도록 구성된다.
본 발명에 따르면, 대역폭이 제어 경로내에 저장되며, 그 이유는 동일한 세트의 명령들이 일단 프로그램 메모리로부터 전송되고, 그리고 벡터 실행 유닛내에서 여러번 실행될 수 있기 때문이다. 이것은 명령 루프가 그것이 실행되어야 할 때마다, 프로그램 메모리로부터 동일한 명령 시?스를 전송함으로써 이루어지는 종래 기술의 해결책과는 대조적인 것이다. 특히, 높은 번호의 K에 대해서, 이것은 분명히 유익한 것이다.
상기 버퍼 관리기는 제어 레지스터 파일로부터, 또는 명령어 그 자체로부터 정수 K 를 검색하도록 구성될 수 있다.
바람직한 실시 예에서, 상기 반복 제어 수단은 K 반복을 추적하도록 구성된 계수기이다.
본 발명의 실시 예에 따른 프로세서는, 디지털 신호 프로세서들, 특히 기저 대역 프로세서들에 특히 유용하다.
본 발명은 또한, 디지털 신호 프로세서에 관한 것이며, 아래의 것들을 포함한다:
·정수 명령들을 실행하도록 구성된 정수 실행 유닛을 포함하는 프로세서 코어; 그리고
·서로 분리되고, 상기 프로세서 코어에 결합된 적어도 제1 및 제2 벡터 실행 유닛, 여기서 각각의 벡터 실행 유닛은 선행 청구항 중의 어느 한 항에 따른 벡터 실행 유닛임;
상기 디지털 신호 프로세서는 상기 제1 및 제2 벡터 실행 유닛을 위한 명령들을 홀드하도록 구성된 프로그램 메모리와, 상기 제1 및 제2 벡터 실행 유닛으로 향하여 벡터 명령들을 포함하는, 명령들을 발행하기 위한 발행 로직를 포함한다.
상기 프로그램 메모리는 프로세서 코어 내에 구성되고, 또한 정수 실행 유닛을 위한 명령들을 홀드하도록 구성된다.
본 발명은 또한, 멀티 모드 유선 및 무선 통신에 적합한 기저 대역 통신 장치에 관한 것이며, 아래의 것들을 포함한다:
·통신 신호들을 송신 및/또는 수신하도록 구성된 전방-엔드 유닛;
·상기 아날로그 전방-엔드 유닛에 결합된 프로그램 가능한 디지털 신호 프로세서, 여기서 상기 프로그램 가능한 디지털 신호 프로세서는 상기에 따른 디지털 신호 프로세서임.
바람직한 실시 예에서, 본 문서를 통해서 언급된 상기 벡터 실행 유닛은, 데이터의 벡터에 대해 작동하도록 구성된 SIMD 형 벡터 실행 유닛, 또는 프로그램 가능한 코-프로세서들이다.
본 발명의 실시 예에 따른 프로세서는, 디지털 신호 프로세서들, 특히 기저 대역 프로세서들에 특별히 유용하다. 상기 전방-엔드 유닛은, 무선 주파수 또는 기저 대역 신호들을 송신 및/또는 수신하도록 구성된 아날로그 전방-엔드 유닛일 수 있다.
그러한 프로세서들은, 널리 휴대 전화, TV 수신기 및 케이블 모뎀과 같은 다른 타입의 통신 장치들에서 이용된다. 따라서, 상기 기저 대역 통신 장치는 무선 전화 통신 네트워크내의 통신 기능을 위해서, 예를 들면 휴대 전화나 이동 데이터 통신 장치로서 구성될 수 있다. 상기 기저 대역 통신 장치는, 블루투스나 무선 랜과 같은 다른 무선 표준에 따른 통신을 위해서 구성될 수도 있다. 또한, 그것은 텔레비전 수신기, 케이블 모뎀, 무선 모뎀이나, 또는 그 프로세서에 기저 대역 신호를 제공할 수 있는 임의의 다른 타입의 통신 장치일 수 있다. 상기 용어 "기저 대역(baseband)"은 단지 프로세서내에서 내부적으로 처리된 신호만을 의미하는 것이 이해되어야 한다. 실제로 수신 및/또는 송신된 통신 신호들은, 유선 또는 무선 연결에서 수신된 통신 신호의 임의의 적절한 타입일 수 있다. 상기 통신 신호들은 적절한 방법으로, 상기 장치의 전방-엔드 유닛에 의해서 기저 대역 신호로 변환된다.
본 발명에 의하면, 가능한 한, 효율적으로 프로세서내에서 내부 통신을 할 수 있게 된다.
이하에서는, 본 발명이 첨부된 도면을 참조하여 예를 들어서, 보다 상세히 설명될 것이다.
도 1은 본 발명의 실시 예에 따른 기저 대역 프로세서의 블록 다이어그램이다.
도 2는 도 1에 도시된 프로세서 코어의 일 실시 예의 명령 발행 파이프 라인을 도시하는 블록 다이어그램이다.
도 3은 SIMT 프로세서내에서의 명령 발행 로직을 도시한다.
도 4는 종래 기술에 따른 벡터 실행 유닛을 도시한다.
도 5는 로컬 큐들을 갖는 벡터 실행 유닛들을 도시한다.
도 6은 로컬 큐들이 있는 본 발명의 일반적인 실시 예들에 따른 벡터 실행 유닛을 도시한다.
도 7은 본 발명에 따른 로컬 큐를 도시한다.
도 1은 본 발명의 일 실시 예에 따른, 기저 대역 프로세서(PBBP)(500)의 블록도이다. PBBP(500)는 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)들에 결합된다. 이러한 유닛들과 그 기능들은, 그것들이 본 발명과 관련된 것이면, 도 3에 관련하여 이후에 보다 상세히 설명될 것이다.
도 2는 프로그램 메모리로부터 다양한 실행 유닛들로 향한 명령들의 종래 기술에 따른 처리의 일례를 도시하며, 이는 본 발명에서 해결하고자 하는 근본적인 문제점을 예시하기 위해 의도된 것이다. 도 2의 왼쪽 열은 시간(실행 클록 사이클에서)을 나타낸다. 나머지 열들은 왼쪽으로부터 오른쪽으로 향해서, 제1 및 제2 벡터 실행 유닛의 실행 파이프선(보다 구체적으로는, CMAC(203) 및 CALU(205)의 데이터 경로) 및 정수 실행 유닛 및 그것으로의 명령의 발행을 나타낸다. 보다 구체적으로, 제1 클록 사이클에서, 컴플렉스 벡터 명령(예를 들면, CMAC(256))이 CMAC(203)로 발행된다. 도시된 바와 같이, 상기 벡터 명령은 종료하는 데 많은 사이클들을 겪는다. 다음 클록 사이클에서, 벡터 명령들이 CALU(205)로 발행된다. 다음 클록 사이클에서, 정수 명령이 정수 실행 유닛(510)으로 발행된다. 다음의 여러 사이클에서, 벡터 명령들이 실행되는 동안, 임의 수의 정수 명령들은 정수 실행 유닛(510)으로 발행될 수 있다. 비록 도시되어 있지는 않지만, 나머지 벡터 실행 유닛들도 또한, 비슷한 방식으로 명령들을 동시적으로 실행할 수 있다는 것을 유의하여야 한다.
일부의 경우에, "idle" 명령은 명령 시?스내에 포함되어 코어 프로그램 흐름 제어기가 프로그램 메모리로부터 명령들을 호출하는 것을 중지시킬 수 있다. 예를 들면, 벡터 명령의 종료에 프로그램 흐름을 동기화시키기 위해서, 상기 "idle" 명령은 특정 조건이 충족될 때까지, 명령 호출을 중단하기 위해 사용될 수 있다. 전형적으로, 이러한 조건은 관련 벡터 실행 유닛이 그 이전 벡터 명령은 종료하고, 새로운 명령을 수신할 수 있는 상태일 것이다. 이러한 경우, 관련 벡터 실행 유닛(520,530)의 벡터 제어기(275)는, 상기 벡터 실행 유닛이 다른 명령을 수신할 준비가 되어 있음을 나타내는 표시를, 예를 들면 플래그를, 프로그램 흐름 제어기(501)에 보낼 것이다.
아이들 명령들은, 동시에 하나 이상의 벡터 실행 유닛에 대해 사용될 수 있다. 이러한 경우, 각각의 관련 벡터 실행 유닛(520,530)들이 새로운 명령을 수신할 준비가 되어 있음을 나타내는 플래그를 송신할 때까지, 더 이상의 명령들이 프로그램 메모리(503)로부터 전송될 수는 없을 것이다.
도 2의 예에서, 상기 "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 , cmacstar 명령들이 발행되고, CMAC 벡터 실행 유닛 상에서 실행되며, 반면에 ldi , outidle 명령들은 정수 코어("core")상에서 실행된다.
상기 벡터 명령들의 벡터 길이는 상기 벡터 실행 유닛이 작동해야만 하는 얼마나 많은 데이터 워드(샘플)들이 있는지를 나타낸다. 상기 벡터 길이는, 다음 중 하나의 예를 들면서, 임의의 적절한 방법으로 설정될 수 있다:
1) 전용 명령에 의해서, 상기 예에서 예를 들면, setcmvl .123
2) 예를 들면, 포맷에 따라서 명령 자체내에서 실행됨:
도 2에 도시된 바와 같이, 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로서 종료될 때까지, 상기 로컬 큐를 정지시키도록 제공되며, 따라서 실행하는 데에 몇 클록 사이클이 소요된다.
도 3은 종래 기술의 기저 대역 프로세서(700)에서 명령 발행 로직을 도시하며, 이는 본 발명을 위한 출발점으로서 사용될 수 있다. 상기 기저 대역 프로세서는 프로세서의 다양한 실행 유닛들에 대한 명령들을 보유하는 프로그램 메모리 PM(702)을 갖는 RISC 코어(701), 및 RISC 프로그램 흐름 제어 유닛(703)을 포함한다. 상기 프로그램 메모리(702)로부터, 명령들이 발행 로직 유닛(705)으로 호출되고, 이것은 모든 실행 유닛들에 공통적이며, 각각의 특정 명령이 어디로 전송되어야 하는 지를 제어하도록 구성된다. 상기 발행 로직(705)은 도 1의 유닛-필드 추출(508) 및 발행 제어(509)의 유닛들에 대응한다. 상기 발행 로직은, 이와 같은 경우, 여러 개의 벡터 실행 유닛(710,712,714)들에 연결되고, 그리고 멀티플렉서(715)를 통해 RISC 코어 + 데이터 경로 유닛(716)에 연결되며, 상기에서 후자 부분은 RISC 코어의 일부이며, 도 1의 유닛(505,506,507,510)들에 대응된다. 상기에서 설명된 바와 같이, 일 실시 예에서, 실제 명령들을 포함하는, 명령어들은 모든 실행 유닛들로 전송되는 반면, 특정 명령에 해당하는 발행 신호는 이러한 명령을 실행하여야만 하는 실행 유닛으로만 전송된다. 다른 실시 예에서, 상기 발행 신호는 각각의 벡터 실행 유닛에 의해서 국소적으로 처리된다.
도 4는 벡터 실행 유닛(710)을 도시하며, 이는 종래 기술에 따른 도 3의 벡터 실행 유닛(710,712,714) 중의 어느 하나일 수 있다. 상기 벡터 실행 유닛(710)은 벡터 제어기(720), 벡터 길이 계수기(721), 명령 레지스터(722) 및 명령 디코딩 유닛(723)을 갖는다. 도 3에 도시된 바와 같이, 도 4의 벡터 실행 유닛(710)은 프로그램 메모리(702)로부터 명령을 수신하며, 도 4에서는 간략하게 도시되어 있다. 상기 명령어는 실제 명령이며, 명령 레지스터(722) 내에서 수신되고, 그리고 명령 디코더(723) 측으로 전달된다. 상기 발행 신호는 발행 로직 유닛(705)을 통해서 벡터 제어기내에 수신되고, 그리고 명령어의 실행을 제어하기 위해서 사용된다. 만일 상기 발행 신호가 활성화되면, 상기 명령은 명령 레지스터내로 적재되고, 디코딩되며, 실행되며, 그렇지 않으면 폐기된다. 또한 상기 벡터 제어기(720)는 후술되는 바와 같이, 벡터 길이 계수기(721) 및 시스템에서 사용되는 다른 제어 신호들을 처리한다.
전통적으로, 각각의 클록 사이클 동안, 실행 유닛들 중 하나를 대상으로 의도된 하나의 명령은, 프로그램 메모리(702)로부터 호출될 수 있다. 상기 명령어 내의 유닛 필드는, 상기 명령어로부터 추출될 수 있고, 상기 명령이 전달되어지는 제어 유닛을 제어하는 데에 사용될 수 있다. 예를 들면, 만일 상기 유닛 필드가 "000"인 경우, 명령은 RISC 데이터 경로로 전달될 수 있다. 이것은 발행 로직(705)으로 하여금, 명령어가 RISC 코어(716)(도 4에는 도시되지 않음) 내로 멀티플렉서(715)를 통과하여 유입되도록 허용할 수 있지만, 새로운 명령들이 이 싸이클에서, 벡터 실행 유닛들 내로 적재되도록 하지는 않는다. 그러나, 만일 유닛 필드가 다른 값을 유지한다면, 발행 로직(705)은 그것이 의도된 벡터 실행 유닛으로, 해당 명령 발행 신호를 가능하게 할 수 있다. 다음, 상기 선택된 벡터 실행 유닛 내의 벡터 제어기(720)는, 명령어가 상기 벡터 실행 유닛의 명령 레지스터(722) 내로 통과하도록 한다. 그러한 경우, NOP 명령이 RISC 코어(716) 내의 RISC 데이터 경로 명령 레지스터로 보내질 것이다.
벡터 명령들을 처리하기 위하여, 하나의 명령이 벡터 실행 유닛으로 전달되면, 명령어로부터의 벡터 길이 필드는 추출되고, 계수 레지스터(721) 내에 저장될 수 있다. 이러한 계수 레지스터는 해당 벡터 명령내의 벡터 길이를 지속적으로 추적하기 위해 사용될 수 있으며, 상기 벡터 실행 유닛이 다른 명령을 수신할 준비가 되어 있음을 나타내는 플래그를 전송하도록 사용될 수 있다. 해당 벡터 실행 유닛이 벡터 연산을 완료한 때, 벡터 제어기(720)는 신호(플래그)가 프로그램 흐름 제어(703)(도 4에 도시되지 않음)에 전송되도록 하여 상기 유닛이 새로운 명령을 수용할 준비가 되어 있음을 나타내게 된다. 각각의 벡터 실행 유닛(520,530)(도 1 참조)의 벡터 제어기(720)는, 부가적으로 실행 유닛 내에서 프롤로그 및 에필로그 상태에 대한 제어 신호들을 생성할 수 있다. 그러한 제어 신호들은 벡터 연산을 위한 VLU 및 VSU를 제어하며, 예를 들면 홀수 벡터 길이들을 관리할 수도 있다.
상기 발행 로직(705)이, 유닛 필드를 디코딩하여, 특정 명령이 특정 벡터 실행 유닛으로 전송되어야만 한다는 것을 판정한 경우, 상기 명령어는 프로그램 메모리(702)로부터 명령 레지스터(722)내로 적재된다. 또한, 만일 상기 명령이 벡터 길이 필드를 운반하도록 결정되면(벡터 제어기에 의함), 계수 레지스터(721)는 이 값으로서 벡터 길이 값이 적재된다. 상기 벡터 제어기(720)는, 상기 명령이 벡터 명령이며 벡터 길이 정보를 운반하는 지를 결정하기 위해서, 상기 명령어의 일부분을 디코딩한다. 만일 그렇다면, 벡터 제어기(720)는 계수 레지스터(721)에 대한 신호를 활성화하여 상기 벡터 길이를 나타내는 값을 계수 레지스터(721)내에 적재한다. 또한, 벡터 제어기(720)는 명령 디코드 유닛(723)에 명령하여 상기 명령의 디코딩을 개시하고, 그리고 제어 신호들을 데이터 경로(724)로 보내는 것을 개시한다. 명령 레지스터(722) 내의 명령은, 그 다음 명령 디코더(723)에 의해서 디코딩되며, 그것의 제어 신호들은 데이터 경로로 보내지기 이전에, 제어 신호 레지스터(724) 내에 유지된다. 계수 레지스터(721)는 상기 명령이 반복되어야 하는 횟수, 즉 벡터 길이를, 종래의 방식으로 지속적으로 추적한다.
도 5는 본 발명에 따른 벡터 실행 유닛(810)을 도시한다. 상기 벡터 실행 유닛은, 도 4에 도시된 종래 기술의 벡터 실행 유닛의 모든 요소들을 포함하며, 여기에는 동일한 부호들이 부여되어 있다. 또한, 본 발명에 따른 벡터 실행 유닛은, 프로그램 메모리로부터 수신된 다수의 명령들을 홀드하도록 구성된 로컬 큐(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 큐이다.
도 6은 본 발명의 바람직한 실시 예에 따른 벡터 실행 유닛(910)을 도시한다. 도 6에 도시된 벡터 실행 유닛은, 도 5에서와 같은 동일한 유닛들을 포함하며, 동일한 방식으로 상호 연결되어 있다. 그러나, 본 실시 예에 있어서, 로컬 큐(730)는 특정 수의 명령들을 반복하기에 적합한 순환 큐이다. 이것은 동일한 시?스의 명령들이 다수회 실행되어야 할 구현에서 특히 유리할 것이다. 이러한 횟수는 때때로 1,000을 초과할 수 있다. 이러한 경우, 상당한 양의 대역 폭이 제어 경로내에 저장될 수 있으며, 이는 코어 유닛으로부터 벡터 실행 유닛으로, 그것들이 실행될 때마다 동일한 명령들을 재차 보낼 필요가 없게 되어 가능하게 된다.
도 5에 도시된 바와 같이, 벡터 제어기(720) 내에 구성된 큐 제어기(732)가 있다. 도 6의 실시 예에서, 반복되어야 하는 명령들을 추적하고, 명령이 반복되어야 하는 횟수를 추적하도록 구성된 버퍼 관리기(744)도 있다. 이러한 목적을 위하여, 2개의 레지스터가 있으며, 이들도 벡터 제어기(720)에 의해서 제어된다: 명령의 반복 횟수를 저장하기 위한 반복 레지스터(746)와, 반복되어야 할 명령의 수를 홀드하도록 구성된 명령 계수 레지스터(748).
벡터 실행 유닛으로 발행된 모든 명령들은 큐(730), 즉, 순환 버퍼를 통과하기 때문에, 상기 버퍼는 마지막 N(전형적으로, 8-16) 명령을 기억할 것이다. 반복 레지스터(746)는 실행되어야 할 반복 횟수를 홀드하도록 구성된다. 반복 레지스터(746)는 제어 레지스터 파일에 의해서 적재될 수 있거나, 벡터 실행 유닛으로 발행된 명령어로부터, 또는 임의의 다른 방법에 의해서 판독될 수 있다.
명령 계수 레지스터(748)는 반복 루프에 포함되어야만 하는 얼마나 많은 명령들이 순환 버퍼(730)내에 있는 지를 나타내는 횟수를 홀드하도록 구성된다. 명령 계수 레지스터는 제어 레지스터 파일에 의해서 적재될 수 있거나, 또는 벡터 실행 유닛으로 발행된 명령어로부터, 또는 임의의 다른 방법에 의해서 판독될 수 있다.
"반복" 명령이나, 또는 "반복 플래그" 세트를 갖는 명령이 벡터 실행 유닛으로 발행되는 때에, 상기 벡터 제어기(720)와 명령 디코더(723)는 함께 큐 제어기(732)에 명령하여 순환 버퍼(730)로부터 명령 레지스터(722)로 명령들을 전달하게 된다.
도 5에서와 같이, "sync" 명령이 명령 디코더(723)에 의해서 입력되면, 상기 명령 디코더는 큐 제어기(732)에 지시하여 미리 정의된 조건이 발생될 때까지, 상기 로컬, 순환, 큐로부터 명령들을 가져오는 것을 중지한다. 이 조건은 전형적으로, 상기 큐로부터 호출된 이전의 명령이 종료되어 디코더가 새로운 명령을 수신할 준비가 되었다는 것을 나타내는 것이다.
비록, 로컬 큐(730) 및 명령 레지스터(722)가 본 문서에서는 별도의 개체로서 도시되어 있지만, 그것들을 하나의 유닛으로 결합하는 것이 가능할 것이다. 예를 들면, 명령 레지스터(722)는 로컬 큐의 마지막 요소로서 통합될 수 있다.
버퍼 관리기(744)는, 로컬 버퍼(730)의 작동을 감독하고, 현재 순환 버퍼내에 저장되어 있는 명령들의 반복을 관리하지만, 큐 제어기(732)는 순환 버퍼/큐(730)로부터의 명령 전달의 개시/정지를 관리한다.
버퍼 관리기(744)는 반복 레지스터(746)를 추가적으로 관리하고, 얼마나 많은 반복이 실행되었는 지를 추적한다. 반복 레지스터(746) 내에 특정된 반복 횟수가 실행된 때, 신호가 벡터 제어기(720)로 전송되고, 그 다음, 프로그램 흐름 제어(703)(도 6에는 미도시)에 전송되어 작업이 완료되었음을 나타낼 수 있다.
요구된 반복 회수가 실행된 경우, 상기 순환 버퍼(730)의 동작은 큐 기능으로 디폴트 복귀되어 새로운 반복 명령들이 시작될 수 있도록 마지막으로 발행된 명령들을 저장한다.
도 7은 본 발명의 실시 예에 따른 로컬 큐의 작동 원리를 도시한다. 상기 큐는 그 자체가, 수평선(901)에 의해서 표현되어 있다. 제1 수직 화살표는 새로운 명령이 현재 기록되어 있는 큐의 위치를 나타내는 기입 포인터(903)를 상징한다. 해당 수평 화살표(905)는 기입 포인터가 도면에서 오른쪽을 향해 이동되는 방향을 나타낸다.
제2 수직 화살표는 실행되어야 할 명령이 현재 판독되어지는 큐의 위치를 나타내는 판독 포인터(907)를 상징한다. 해당 수평 화살표(909)는 판독 포인터가 기입 포인터(903)와 동일한 방향으로 이동하는 방향을 나타낸다. 기입 포인터(903) 와 판독 포인터(907) 사이의 거리는 상기 큐의 현재 길이, 즉, 큐내의 현재 명령들의 수이다.
도 7의 예에는, 여러번 반복되어야 하는 명령 시?스가 상기 큐에 기록되어 있다. 상기 시?스의 시작 및 시?스의 끝은 수평선(901)을 가로지르는 제1 및 제2 수직선(911,913)으로 표시되어 있다. 후방향 화살표(915)는 상기 판독 포인터(907)가 제2 수직선(913)에 의해서 표시된 명령 시?스의 끝에 도달한 때, 상기 판독 포인터는 제1 수직선(911)에 의해서 표시된 명령 시?스의 시작으로 순환 복귀될 것임을 나타낸다. 이것은 명령 시?스가 특정 횟수만큼 실행되었을 때까지 반복될 것이다.
제어 로직(미도시)은 반복되어야 할 시?스내에서 명령들의 수, 및 큐에서의 그것들의 위치를 추적하도록 구성되어 있다. 이것은 예를 들면, 아래의 것들 포함한다:
·반복되어야 할 명령 시?스의 시작 위치(911)
·반복되어야 할 명령 시?스의 종료 위치(913)
·반복되어야 할 명령 시?스의 횟수
상기 시?스의 시작과 종료 대신에, 상기 시?스의 시작 또는 종료 각각의 위치가 시?스의 길이, 즉, 상기 시?스 내에 포함된 명령들의 수와 함께 저장될 수 있다. 판독 포인터(907) 또는 기입 포인터(903)가 큐의 끝에 도달하면, 그것은 상기 큐의 시작 부분으로 이동하거나, 시작으로부터 각각 판독 또는 기입을 계속할 것이다.

Claims (14)

  1. 디지털 신호 프로세서에서 사용하기 위한 벡터 실행 유닛(520,530)으로서, 상기 벡터 실행 유닛은 벡터 형태의 다수의 데이터상에서 실행되어야 할 벡터 명령들을 포함하는, 명령들을 실행하도록 구성되며, 벡터 제어기(275,720)를 포함하여 명령이 벡터 명령인지를 결정하고, 만약 그렇다면, 벡터 길이를 홀드하도록 구성된 계수 레지스터(531)에게 알리며, 상기 벡터 제어기(275,720)는 상기 명령들의 실행을 제어하도록 추가적으로 구성되고, 여기서 상기 벡터 실행 유닛은,
    - 로컬 큐(730)를 포함하여 프로그램 메모리로부터 적어도 제1 및 제2 명령을 수신하고, 미리 정의된 조건이 충족될 때까지 그 내부에 제2 명령을 홀드하도록 구성되며,
    - 상기 로컬 큐(730)는 상기 프로그램 메모리로부터 한번에 명령 시?스를 수신하고, 마지막 N 명령들을 저장하며, 여기서, N은 정수이고,
    - 상기 벡터 제어기(275,720)는 상기 로컬 큐(730)를 제어하도록 구성된 큐 제어 수단(732,721,744)을 포함하되, 상기 로컬 큐내에 저장된 M 명령 시?스들을 횟수 K 만큼 반복하는 방식으로 제어하며, 여기서 M 은 N 이하의 정수인 것을 특징으로 하는 벡터 실행 유닛.
  2. 제1항에 있어서, 상기 벡터 제어 유닛(275,720)은 발행 신호를 수신하고, 이러한 발행 신호에 기초하여 명령들의 실행을 제어하도록 구성된 것임을 특징으로 하는 벡터 실행 유닛.
  3. 제1항 또는 제2항에 있어서, 상기 큐 제어 수단은,
    - 반복되어야 할 M 명령들과, 명령이 반복되어야 하는 횟수 K를 추적하며, M 및 K 는 정수인 버퍼 관리기(744),
    - 실행의 반복이 중단되어야 할 때를 결정하기 위하여, 명령 시?스의 반복적인 실행을 모니터링하도록 구성된 반복 제어 수단(746),
    - 반복되어야 할 명령들의 수 M 과, 상기 큐(901)내에서 그것들의 위치를 홀드하도록 구성된 명령 계수 레지스터(748)를 포함하는 것임을 특징으로 하는 벡터 실행 유닛.
  4. 제3항에 있어서, 상기 버퍼 관리기(744)는 제어 레지스터 파일로부터 정수 K 를 검색하도록 구성된 것임을 특징으로 하는 벡터 실행 유닛.
  5. 제3항에 있어서, 상기 버퍼 관리기(744)는 명령어로부터 정수 K 를 검색하도록 구성된 것임을 특징으로 하는 벡터 실행 유닛.
  6. 제3항 내지 제5항 중의 어느 한 항에 있어서, 상기 반복 제어 수단은 K 반복을 추적하도록 구성된 계수기인 것임을 특징으로 하는 벡터 실행 유닛.
  7. ·정수 명령들을 실행하도록 구성된 정수 실행 유닛(510)을 포함하는 프로세서 코어(500); 그리고
    ·서로 분리되고, 상기 프로세서 코어에 결합된 적어도 제1 및 제2 벡터 실행 유닛(520,530), 여기서 각각의 벡터 실행 유닛은 선행 청구항 중의 어느 한 항에 따른 벡터 실행 유닛이고;
    상기 디지털 신호 프로세서는 상기 제1 및 제2 벡터 실행 유닛을 위한 명령들을 홀드하도록 구성된 프로그램 메모리(503)와, 상기 제1 및 제2 벡터 실행 유닛(520,530)으로 향하여, 벡터 명령들을 포함하는, 명령들을 발행하기 위한 발행 로직(705)을 포함하는 것임을 특징으로 하는 디지털 신호 프로세서.
  8. 제7항에 있어서, 상기 프로그램 메모리(503)는 또한, 상기 정수 실행 유닛(510)에 대한 명령들을 홀드하도록 구성된 것임을 특징으로 하는 디지털 신호 프로세서.
  9. 제7항 또는 제8항에 있어서, 상기 프로그램 메모리(503)는 상기 프로세서 코어(500)내에 구성된 것임을 특징으로 하는 디지털 신호 프로세서.
  10. 다중 모드 유선 및 무선 통신에 적합한 기저 대역 통신 장치로서,
    ·통신 신호들을 송신 및/또는 수신하도록 구성된 전방-엔드 유닛;
    ·상기 아날로그 전방-엔드 유닛에 연결된 프로그램 가능한 디지털 신호 프로세서를 포함하고, 여기서 상기 프로그램 가능한 디지털 신호 프로세서는 제1항 내지 제6항 중 어느 한 항에 따른 디지털 신호 프로세서인 것임을 특징으로 하는 기저 대역 통신 장치.
  11. 제10항에 있어서, 상기 전방-엔드 유닛은 무선 주파수 또는 기저 대역 신호들을 송신 및/또는 수신하도록 구성된 아날로그 전방-엔드 유닛인 것임을 특징으로 하는 기저 대역 통신 장치.
  12. 제11항에 있어서, 상기 기저 대역 통신 장치는, 무선 통신 네트워크에서 통신을 위하여 구성된 것임을 특징으로 하는 기저 대역 통신 장치.
  13. 제10항에 있어서, 상기 기저 대역 통신 장치는 텔레비전 수신기인 것임을 특징으로 하는 기저 대역 통신 장치.
  14. 제10항에 있어서, 상기 기저 대역 통신 장치는 케이블 모뎀인 것임을 특징으로 하는 기저 대역 통신 장치.
KR1020147011839A 2011-10-18 2012-09-17 디지털 신호 프로세서 및 기저 대역 통신장치 KR20140078718A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
SE1150967-6 2011-10-18
SE1150967A SE535856C2 (sv) 2011-10-18 2011-10-18 Digital signalprocessor och basbandskommunikationsanordning
PCT/SE2012/050980 WO2013058696A1 (en) 2011-10-18 2012-09-17 Digital signal processor and baseband communication device

Publications (1)

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

Family

ID=47501629

Family Applications (1)

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

Country Status (6)

Country Link
US (1) US20140281373A1 (ko)
EP (1) EP2751669A1 (ko)
KR (1) KR20140078718A (ko)
CN (1) CN103890719B (ko)
SE (1) SE535856C2 (ko)
WO (1) WO2013058696A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9250953B2 (en) 2013-11-12 2016-02-02 Oxide Interactive Llc Organizing tasks by a hierarchical task scheduler for execution in a multi-threaded processing system
US11544214B2 (en) * 2015-02-02 2023-01-03 Optimum Semiconductor Technologies, Inc. Monolithic vector processor configured to operate on variable length vectors using a vector length register
GB2536069B (en) * 2015-03-25 2017-08-30 Imagination Tech Ltd SIMD processing module
US10459723B2 (en) * 2015-07-20 2019-10-29 Qualcomm Incorporated SIMD instructions for multi-stage cube networks
US10019264B2 (en) * 2016-02-24 2018-07-10 Intel Corporation System and method for contextual vectorization of instructions at runtime
GB2560059B (en) 2017-06-16 2019-03-06 Imagination Tech Ltd Scheduling tasks
CN108364065B (zh) * 2018-01-19 2020-09-11 上海兆芯集成电路有限公司 采布斯乘法的微处理器
CN111065190B (zh) * 2019-12-05 2022-01-28 华北水利水电大学 基于Zigbee通信的智能灯光控制方法及系统
CN113900712B (zh) * 2021-10-26 2022-05-06 海光信息技术股份有限公司 指令处理方法、指令处理装置及存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6043535B2 (ja) * 1979-12-29 1985-09-28 富士通株式会社 情報処理装置
US5179530A (en) * 1989-11-03 1993-01-12 Zoran Corporation Architecture for integrated concurrent vector signal processor
US6950929B2 (en) * 2001-05-24 2005-09-27 Samsung Electronics Co., Ltd. Loop instruction processing using loop buffer in a data processing device having a coprocessor
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
CN102156637A (zh) * 2011-05-04 2011-08-17 中国人民解放军国防科学技术大学 向量交叉多线程处理方法及向量交叉多线程微处理器
US20130185538A1 (en) * 2011-07-14 2013-07-18 Texas Instruments Incorporated Processor with inter-processing path communication

Also Published As

Publication number Publication date
SE1150967A1 (sv) 2013-01-15
US20140281373A1 (en) 2014-09-18
CN103890719B (zh) 2016-11-16
WO2013058696A1 (en) 2013-04-25
CN103890719A (zh) 2014-06-25
SE535856C2 (sv) 2013-01-15
EP2751669A1 (en) 2014-07-09

Similar Documents

Publication Publication Date Title
KR20140078718A (ko) 디지털 신호 프로세서 및 기저 대역 통신장치
KR20140078717A (ko) 디지털 신호 프로세서 및 기저 대역 통신장치
US9727341B2 (en) Control flow in a thread-based environment without branching
US7366874B2 (en) Apparatus and method for dispatching very long instruction word having variable length
US7136989B2 (en) Parallel computation processor, parallel computation control method and program thereof
KR100983135B1 (ko) 패킷의 의존성 명령을 그룹핑하여 실행하는 프로세서 및 방법
JP3669884B2 (ja) 処理装置
CN112789593A (zh) 一种基于多线程的指令处理方法及装置
JP2008181535A (ja) ディジタル信号処理装置
JPWO2008155801A1 (ja) 情報処理装置及びレジスタ制御方法
CN116635829A (zh) 用于高吞吐量和低开销内核启动的压缩命令分组
EP2751671B1 (en) Digital signal processor and baseband communication device
US20070226468A1 (en) Arrangements for controlling instruction and data flow in a multi-processor environment
US20040128476A1 (en) Scheme to simplify instruction buffer logic supporting multiple strands
CN112181497B (zh) 一种分支目标预测地址在流水线中的传递方法和装置
CN117348933B (zh) 一种处理器及计算机系统
US20100153688A1 (en) Apparatus and method for data process
US20110093863A1 (en) Context switching in a data processing apparatus
JP5013966B2 (ja) 演算処理装置
JP6191457B2 (ja) 演算処理装置、演算処理方法
JP2002351658A (ja) 演算処理装置
JPH06250854A (ja) 命令プリフェッチ装置
JPH05197743A (ja) ベクトル処理装置
JP2004326710A (ja) 演算処理装置及び方法

Legal Events

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