KR20100018039A - 소프트웨어 기반 무선통신 터미널을 위한 프로그래밍 가능한 장치 - Google Patents

소프트웨어 기반 무선통신 터미널을 위한 프로그래밍 가능한 장치 Download PDF

Info

Publication number
KR20100018039A
KR20100018039A KR1020107000185A KR20107000185A KR20100018039A KR 20100018039 A KR20100018039 A KR 20100018039A KR 1020107000185 A KR1020107000185 A KR 1020107000185A KR 20107000185 A KR20107000185 A KR 20107000185A KR 20100018039 A KR20100018039 A KR 20100018039A
Authority
KR
South Korea
Prior art keywords
vector
scalar
instruction
programmable device
portions
Prior art date
Application number
KR1020107000185A
Other languages
English (en)
Other versions
KR101445794B1 (ko
Inventor
브르노 보우가르드
토마스 슈스터
Original Assignee
삼성전자주식회사
인터유니베르지테르 마이크로엘렉트로니카 센트룸 (아이엠이씨)
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사, 인터유니베르지테르 마이크로엘렉트로니카 센트룸 (아이엠이씨) filed Critical 삼성전자주식회사
Publication of KR20100018039A publication Critical patent/KR20100018039A/ko
Application granted granted Critical
Publication of KR101445794B1 publication Critical patent/KR101445794B1/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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • 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

Abstract

본 발명은 프로그래밍 가능한 장치에 관한 것으로, 프로그래밍 가능한 장치는 스칼라 클러스터 및 적어도 2개의 상호 연결된 벡터 클러스터들을 포함한다. 상기 스칼라 클러스터는 스칼라 데이터 경로 및 스칼라 레지스터 파일을 제공하고 스칼라 명령어들을 실행하도록 배열된다. 상기 벡터 클러스터들은 상기 스칼라 클러스터와 연결된다. 상기 적어도 2개의 벡터 클러스들의 각 벡터 클러스터는 벡터 데이터 경로 및 벡터 레지스터 파일을 제공하고, 상기 각 벡터 클러스터는 상기 적어도 2개의 벡터 클러스터들의 다른 하나의 벡터 클러스터에 의해 수행되는 벡터 명령어들과 상이한 적어도 하나의 벡터 명령어를 실행하도록 배열된다.

Description

소프트웨어 기반 무선통신 터미널을 위한 프로그래밍 가능한 장치{PROGRAMMABLE DEVICE FOR SOFTWARE DEFINED RADIO TERMINAL}
본 발명은 소프트웨어 기반 무선통신 플랫폼에서의 사용에 적합한 디지털 프로그래밍 가능한 장치에 관한 것으로, 보다 상세하게는 높은 듀티 사이클(duty cycle)을 가지고, 완화된 프로그래밍 가능성(programmability) 요건을 구비한 기능들에 대한 것이다.
소프트웨어 기반 무선통신(SDR: Software-defined radio)은 무선 네트워크 및 사용자 단말들에 대한 시스템 아키텍쳐를 재구성할 수 있도록 하는 하드웨어 및 소프트웨어 기술의 집합체이다. SDR은 소프트웨어 업그레이드를 이용하여 개조되거나, 업데이트되거나 또는 향상될 수 있는, 멀티-모드(multi-mode), 멀티-밴드(multi-band), 멀티-기능(multi-functional)의 무선 장치를 구축하는 문제에 대하여 효율적이고 상대적으로 저렴한 해결책을 제공한다. SDR은 무선 커뮤니티 내에서 넓은 범위에 걸쳐 적용가능한 기술로 간주될 수 있다.
지속적으로 증가하는 무선 규격(wireless standard) 및 집적회로(IC) 설계 및 핸드셋과 연관된 비용의 증가로 말미암아, 재구성 가능한 무선 통신 플랫폼에 대한 무선 규격의 구현이 가까운 미래에 유일한 대안이 되고 있다. 플랫폼은 애플리케이션(application)이 동작할 수 있는 프레임워크를 의미한다. SDR은 필요한 성능 및 유연성(flexibility)를 제공하는 효과적인 방법이다.
만약, 높은 수준(high-level)의 언어(예를 들어, C 언어)로 프로그래밍이 가능한다면, SDR은 전용 하드웨어 솔루션과 비교하여 여전히 상당한 에너지 불이익(penalty)을 수반하는 멀티-모드 단말기를 비용상 효과적으로(cost effective) 한다. 따라서, 프로그래밍 가능성 및 에너지 효율은 주의 깊게 균형을 이루어야 한다. 모바일 장치 통합에 요구되는 수준에서의 에너지 효율성을 유지하기 위해서, 전체 평균 전력에 대한 영향이 충분히 낮거나 또는 결과적으로 유연성이 향상된 에너지 관리(목표로 하는 유연성)에 의해 활용될 수 있는 곳에만 도입될 수 있다.
SDR에 대하여 많은 다른 아키텍쳐 스타일이 제안되어 왔다. 그들 중 대부분은 무선 물리 계층(wireless physical layer)의 중요한 특성, 즉 높은 데이터 레벨의 병렬성(DLP: Data Level Parallelism) 및 데이터 플로우의 우수성을 고려하여 설계된다. 목표로 하는 유연성은 무선 시스템 분야에서 에너지 효율성과 서로 거래될 수 있다는 사실은 이질적인 멀티-프로세서 시스템-온-칩(MPSOC: Multi-processor system-on-chip) 아키텍쳐를 요구하고, 그러한 아키텍쳐에서는 전송 스킴의 상이한 태스크들이 최소 비용으로 필요한 성능을 제공하는 특정 엔진상에서 구현된다.
실제적으로, 무선통신 규격의 구현은, 변조 및 복조 다음으로 매체 접근 제어(MAC: Medium Access Control) 및 버스트-기반(burst-based)의 통신의 경우에 신호 감지 및 시간 동기화의 기능을 수반한다. 높은 DLP는 제어 지배적이고, 분리되어 구현되어야하는(예를 들어, RISC) MAC 프로세싱에 대해서는 유지되지 않는다. 더욱이, 패킷 감지 및 정확하지 않은(coarse) 시간 동기화는 패킷 변조 및 복조보다 상당히 높은 듀티 사이클을 가진다.
대조적으로, 상기한 높은 듀티 사이클 기능은 프로그래밍 가능성의 관점에서 완화된 요건들을 가진다. 패킷 감지 및 정확하지 않은 시간 동기화의 특별한 기능은 대개 전체 기능의 5% 이하의 원인이 된다. 결과적으로, 상기한 높은 듀티 사이클의 기능이 적용되는 아키텍쳐는 높은 수준의 언어 프로그래밍 가능성(예를 들어, C 언어)의 제공 없이도 최적화될 수 있다. 하기에서 설명되는 발명은 상기한 높은 듀티 사이클의 기능에 주로 연관된 것이나 그러나 독점적으로 그것에만 연관되지는 않는다.
프로그래밍 가능성의 관점에서 완화된 요건을 가진 무선 애플리케이션에 대한 효과적인 디지털 신호 처리는 벡터 프로세싱(vector processing)을 대개 가정한다. 그러한 벡터 프로세싱에서는, 명령어(instruction)가 생길 때, 유사한 연산이 소위 데이터 벡터들로서, 데이터 성분 집합(a set of data elements)을 구성하는 연산수(operands)에 병렬적으로 적용된다. 데이터 성분은 레지스터 파일에 벡터적인 방법으로 역시 저장된다.
많은 구현들에서 벡터 프로세싱은 스칼라 프로세싱과 결합되고, 여기서 단지 스칼라(즉, single 데이터 성분) 연산수(operand)가 고려된다('3G+WLAN 이후로부터 핸드셋에서의 소프트웨어 기반의 무선통신을 위한 인에이블러(enabler)로서의 벡터 프로세싱', van Berkel 외, SDR 포럼 기술 콘퍼런스, 2004 및 '커스터마이즈된 벡터 프로세서를 구비한 HSPDA 수신기의 구현', Rounioja 및 Puusaari, SoC2006, Nov. 2006 참고). 2개 등급(class)의 명령어들, 즉 주로 주소 계산을 위한 스칼라 명령어 및 주로 계산이 집중된(computationally intensive) 태스크를 위한 벡터 명령어가 이어서 사용된다. 따라서, 그러한 프로세서는 스칼라 및 벡터 명령어들을 병렬적으로 계산할 수 있어야 한다.
종래 기술에서의 일반적인 방법은 개별적인 스칼라 및 벡터 슬롯들을 구비한 VLIW(Very Large Instruction Words)을 채택하고 있다.
종래 기술의 솔루션은 몇가지 중요한 약점을 가지고 있다. 스칼라 및 벡터 슬롯들의 상이한 명령어들을 처리하기 위해서는 가산기(adder) 및 승산기(multiplier)와 같은 많은 연산자(operator)들이 필요하다. 단지 하나의 명령어/슬롯이 한번에 수행될 수 있기 때문에, 이러한 연산자들의 이용은 활용도는 매우 낮다. 보다 나은 성능을 위해서, 슬롯들의 개수가 증가될 수 있다. 이것은 비록 설계상의 연산자들 개수를 증가시킴에도 불구하고, 그들의 활용도를 향상시키지 않는다. 더욱이, VLIW 프로세서에서의 이슈 슬롯들(issue slots) 개수의 증가는 보다 고비용의 명령어 추출(instruction fetch)을 초래하고 전력이 부족한(power-hungry) 멀티-포트 레지스터 파일들을 일반적으로 요구한다.
특정 애플리케이션(SDR과 같은)을 위하여 설계되지 않았을 때, VLIW 프로세서는 순수한 기능상의 어프로우치(functional approach)에 이어지는 명령어 슬롯당 연산자들의 개수를 감소시키도록 최적화된다. 일례로서, 3개의 명령어 슬롯들을 구비한 프로세서에서, 제1 슬롯은 로드/저장(load/store) 연산에, 제2 슬롯은 ALU 연산에, 제3 슬롯은 곱셈-누적(multiply-accumulate) 연산에 전용될 수 있다. 그러나, 애플리케이션에서 연산자들 간에 그 활용이 불균형을 이루는 경우, 이러한 애플리케이션-불가지론(application-agnostic) 접근법은 비효율적인 연산자 활용을 초래할 수 있다.
반면에, 하나의 애플리케이션 특정 명령어 집합 (ASIP: Application Specific Set Processor)가 최적화될 때, 연산자들의 개수는 목표로 하는 애플리케이션에서의 연산자 활용도 통계에 기초하여 명령어들을 정의함으로써 최소화될 수 있다.
연산자 활용도 측면에서의 애플리케이션 특정 VLIW 프로세서의 효율은, 명령어의 정의에 대해서뿐만 아니라 다수의 병렬 슬롯들의 명령어 할당(allocation)에 대해서 연산자 프로파일링(profiling)에 기초한 ASIP 최적화 접근법을 일반화시킴으로써 향상시킬 수 있다.
본 발명의 목적은 최대 활용도를 가진 최소 개수의 연산자들을 구비한 복수의 실행 슬롯들을 포함하는 프로그래밍 가능한 장치를 제공하는 것이다. 본 발명의 다른 목적은 밀집한 스케쥴(dense schedule)을 달성하기 위하여, 상기 슬롯들에 명령어들의 할당을 최적화하고 명령어 플로우를 스케쥴링 및 제어하는 방법을 제공하는 것이다.
본 발명은 프로그래밍 가능한 장치에 관한 것으로, 프로그래밍 가능한 장치는 스칼라부(scalar portion) 및 적어도 2개의 상호 연결된 벡터부(vector portion)들을 포함한다. 스칼라부는 스칼라 데이터 경로 및 스칼라 레지스터 파일을 제공하고, 상기 데이터 경로 및 상기 레지스터 파일은 연결되고, 상기 스칼라부는 스칼라 명령어들을 실행하도록 배열된다. 상기 벡터부들은 상기 스칼라부와 연결된다. 상기 적어도 2개의 벡터부들의 각 벡터부는 서로 연결된 벡터 데이터 경로 및 벡터 레지스터 파일을 제공하고, 상기 적어도 2개의 벡터부들의 다른 하나의 벡터부에 의해 수행되는 벡터 명령어와 상이한 적어도 하나의 벡터 명령어를 실행하도록 배열된다.
본 발명의 실시예에 따르면, 상기 스칼라부 및 상기 적어도 2개의 벡터부들의 각 벡터부에는 각각의 명령어들을 저장하기 위한 로컬 저장 수단이 제공된다.
본 발명의 실시예에 따르면, 상기 프로그래밍 가능한 장치는 상기 벡터부들간의 데이터 통신을 위하여 소프트웨어적으로 제어되는 상호 연결을 더 포함한다.
본 발명의 실시예에 따르면, 상기 적어도 2개의 벡터부들의 제1 벡터부는 산술 논리 유닛 명령어들을 위한 연산자들을 포함하고, 상기 적어도 2개의 벡터부들의 제2 벡터부는 곱셉 연산자들을 포함한다.
본 발명의 실시예에 따르면, 프로그래밍 가능한 장치는 상기 적어도 하나의 벡터 명령어를 제공하기 위하여 배열되는 프로그램을 위한 수단을 포함한다.
본 발명의 실시예에 따르면, 프로그래밍 가능한 장치는 제2 스칼라부 및 3개의 상호 연결된 벡터부들을 더 포함한다.
본 발명의 실시예에 따르면, 각 벡터 레지스터 파일은 3개의 독출 포트들 및 1개의 기록 포트를 구비한다. 상기 독출 포트들 중에서 하나의 독출 포트는 기능적 유닛에 전용되어 있다. 상기 독출 포트들 중에서 하나의 독출 포트는 상기 벡터 슬롯들 간에 독출을 위하여 배열될 수 있다. 이것은 클러스터 간의 독출(intercluster reading)로 불린다.
본 발명의 실시예에 따르면, 상기 적어도 두 개의 벡터부들 중에서 하나의 벡터부에서 실행가능한 모든 벡터 명령어들은 다른 어떠한 벡터부에서 실행 가능한 벡터 명령어들과 상이하다.
본 발명의 실시예에 따르면, 되는 프로그래밍 가능한 장치는 IEEE 802.11a/g/n, IEEE 802.16e, 및 3GPP-LTE를 포함하는 표준 규격에 따른 통신을 더 수행하기 위하여 배열된다.
본 발명은 상기 프로그래밍 가능한 장치를 포함하는 디지털 프론트 엔드 회로와 상기 프로그래밍 가능한 장치를 포함하는 소프트웨어 기반의 무선통신 단말과 연관된다.
본 발명의 다른 일면은 앞서 설명한 프로그래밍 가능한 장치에 적용되는 알고리즘을 위한 명령어 집합을 자동적으로 설계하기 위한 방법과 연관된다. 상기 방법은 특정 슬롯에 대하여 명령어 집합의 부분 집합들의 정적 할당이 최적화될 수 있도록 한다. 상기 방법은 하이-레벨 프로그래밍 언어로 상기 알고리즘을 상술하는 단계, 상기 알고리즘을 데이터 플로우 그래프들로 변환하는 단계, 상기 데이터 플로우 그래프들의 활성화를 산정하기 위하여 프로파일링을 수행하는 단계, 상기 프로파일링의 결과에 기초하여 상기 명령어 집합을 유도하는 단계, 및 상기 스칼라부 및/또는 상기 적어도 2개의 벡터부들에 상기 명령어 집합의 부분 집합들을 할당하는 단계를 포함한다. 이러한 접근 방법은 슬롯당 명령어 개수가 최소화되도록 하여, 이전 단계들에서 추출된 프로파일링 데이터에 기초하여 밀집한 스케쥴이 가능하도록 한다.
본 발명의 다른 일면에 따르면, 수신된 데이터 패킷들의 패킷 감지 방법과 연관된다. 상기 방법은 앞서 설명한 프로그래밍 가능한 장치와 데이터 패킷들간의 상호 관계를 분석하는 단계를 포함한다.
본 발명에 따르면, 최대 활용도를 가진 최소 개수의 연산자들을 구비한 복수의 실행 슬롯들을 포함하는 프로그래밍 가능한 장치를 제공할 수 있다.
또한, 본 발명에 따르면, 밀집한 스케쥴(dense schedule)을 달성하기 위하여, 슬롯들에 명령어들의 할당을 최적화하고 명령어 플로우를 스케쥴링 및 제어하는 방법을 제공할 수 있다.
도 1은 IEEE 802.11a 규격에 대한 동기화 알고리즘을 도시한 것이다.
도 2는 IEEE 802.11a 동기화 피크를 도시한 것이다.
도 3은 벡터 누적(vector accumulation)을 도시한 것이다.
도 4는 본 발명에 따른 프로그래밍 가능한 장치를 도시한 것이다.
도 5 내지 도 9는 소프트웨어적으로 제어되는 상호 연결을 도시한 것이다
본 발명은 신호 감지에 적합한 명령어 집합 프로세서 및 SDR을 위한 이기종(heterogeneous) MPSOC 플랫폼으로 통합을 위한 정확하지 않은(coarse) 시간 동기화와 연관된다. 신호 감지 및 정확하지 않은 시간 동기화의 태스크들은 가장 높은 듀티 사이클을 가지고 대기 전력(standby power)을 좌우한다. 본 발명의 중요한 적용은 IEEE 802.11a/g/n 및 IEEE 802.16e 규격과 관련되는데, 이러한 규격들에서 패킷 기반의 무선 통신은 직교 주파수 분할 다중화 또는 다중화-접근(OFDM(A): Orthogonal Frequency Division Multiplexing or Multiple-Access)에 기반하여 구현된다. 본 발명은 이러한 예시들을 이용하여 더 설명되나, 이것은 예시에 지나지 않고 본 발명의 범위를 한정하지 않음은 당업자에게는 자명하다. 성능은 규격들에 의해서 정의된 속도들(rates)에서의 실시간 프로세싱이 가능하도록 충분해야 한다. 3GPP-LTE와 같은 장래 규격들을 준비하기 위하여, 애플리케이션 특정 명령어 집합(ASIP)이 바람직하고, 최고의 에너지/효율 트레이드-오프(trade-off)가 구현될 수 있다.
충분한 데이터 병렬성의 적용을 위하여, VLIW ASIP 프로세서 아키텍쳐가 적어도 하나의 스칼라 및 적어도 두 개의 벡터 명령어 슬롯들과 함께 제안된다. 예시에서는, 벡터 슬롯들의 일부(적어도 하나)가 ALU 명령어들에 대한 연산자들을 포함하고, 다른 일부(적어도 하나)가 곱셈 연산자들을 포함한다. ALU 및 곱셈 연산자들 간의 비율은 목표 어플리케이션 영역(target application domain) 내의 그러한 연산의 비율에 적합하여야 한다. 일반적으로, 하나 이상의 ALU 연산자는 바람직하고, 그 경우에 모든 부가 ALU들의 명령어 집합 아키텍쳐(ISA: Instruction Set Architecture)는 목표 어플리케이션에서 일어나는 특정 연산들에 커스트마이징된다(프로세서의 명령어 집합 정밀한 모델 상에서 대표적인 벤치마크 프로그램의 실행을 시뮬레이션하는 프로파일링 실험에 기초하여).
더 많은 연산수들(operands)을 병렬적으로 로드하는 추가 비용은 연산자들과 레지스터 파일들을 명령어 슬롯들과 클러스터링함으로써(clustering) 감소된다. 일실시예에 따르면, 클러스터들 간의 통신은 훨씬 적은 전력으로 멀티-포트 레지스터 파일의 유연성을 제공하는, 소프트웨어적으로 제어되는 상호 연결(software controlled interconnect)과 함께 수행된다. 보다 상세한 내용은 '미디어 프로세싱을 위한 레지스터 구성(organization)', Rixner 외, 2000년 1월, HPCA, 375-386 페이지에 나와 있다.
보다 고비용의 명령어 추출(instruction fetch)에 대한 오버헤드를 감소시키기 위해서, 벡터 연산자들의 클러스터들 내에서, 스칼라 및 벡터 명령어들을 위한 별개의 루프 버퍼들(loop buffers) 및 제어기들(controllers)이 제안된다. 그러한 방법에서는, 상이한 클러스터들의 제어 플로우(control flow)가 더 이상 동일할 필요가 없기 때문에, 모든 클러스터가 각자 제어 플로우를 가질 수 있고, 프로그램 메모리 내에 저장된 동일한 공유 프로그램으로부터 그것이 유도될 수 있기 때문에, 이슈 슬롯들(issue slot)을 훨씬 잘 채워 넣는 것(filling)이 허용된다.
에너지-어웨어(energy-aware) 구현을 위하여, 명령어 집합, 병렬화(parallelization), 저장부(storage elements)(레지스터 파일들 및 메모리들) 및 상호 연결(interconnect)에 특별한 관심이 필요하다. 이러한 각각의 주제는 이하에서 보다 상세히 언급된다.
명령어 집합 선택( Instruction Set Selection )
대개, ASIP 설계는 목표 알고리즘의 주의 깊은 분석과 함께 시작된다. 명령어 집합을 정의하고, 분할하고(partition), 여러 개의 병렬적인고 클러스터된 명령어 집합들에 할당하기 위한 프로그램상에서 프로파일이 수행되도록 플로우가 적용될 수 있다. 그래서, 제1 단계로서, 목표 알고리즘들이 C와 같은 하이-레벨 언어로 기술되어야 한다. 이러한 알고리즘들은 데이터 플로우 그래프들로 이이서 변환되고, 어플리케이션을 대표하는 임의의 자극 집합(random stimuli set)을 사용하여 실행된다. 그리하여, 종종 활성화되는 데이터-플로우 그래프들의 일부는 식별될 수 있다. 나중에, 반-자동화(semi-automatic) 방법으로, 특별한 명령어들이 정의되고, 고유의 기능들(intrinsic functions) 형태로 알고리즘에 도입된다. 특별한 명령어들의 정밀도(granularity)는 목표로 하는 기술과 클록 주파수(clock frequency)에 좌우된다.
명령어들이 정의된 후에는, 차원화, 분할화, 및 할당(dimensioning, partitioning, allocation) 단계가 수행된다. 그래서, 새로이 정의된 고유 기능들을 포함하는 알고리즘들이 활성화 통계들을 수집하기 위하여 실행된다. 이러한 통계에 기초하여, 주요한 연산들(dominant operations)이 식별된다 (사용자 정의된 임계치에 기초하여).
획득된 정보에 기초하여, 하기 사항들이 충족되도록, 연산자가 그룹으로 묶여지거나 또는 연산자 그룹별로 복사된다.
(1) 슬롯당 상이한 명령어들의 개수가 최소화되어, 연산자 타입 및 전체 연산들의 개수가 최소화된다.
(2) 연산 시퀀스(데이터 종속성을 포함하는)가 제한된 홀들(limited holes)을 갖는 것을 보장하도록, 보다 밀집한 스케쥴(denser schedule)이 가능하도록 한다.
(3) 그러한 시퀀스들(연산자 그룹당)은 실시간 제약보다 낮은 중요한 경로(critical path)를 가진다. 이것은 목표 클록 속도(targeted clock rate)가 알려지기 때문에 자동화될 수 있다.
도 1은 IEEE 802.11a 의 예에서의 동기화 알고리즘의 전형적인 구조를 도시한 것이다. 코드(code)는 대개 3개의 루프로 구성된다. 처음의 2개 루프에서, 입력 신호의 상관 관계(correlation)를 살펴본다. 벡터 머신들(vector machines)에 의해 효율적으로 활용될 수 있는 의미 있는(significant) DLP가 존재한다. 3번째 루프에서, 상관 관계 결과치에서 피크를 찾고, 이것을 임계치와 비교하게 된다. 이것은 보다 제어 지향적인(control oriented) 태스크이다. 많은 입력 샘플들(상관 관계 윈도우)이 메모리에 저장될 필요가 있을 것이다.
도 2는 결과적으로 나타나는 동기화 피크(synchronization peak)를 예시한다. IEEE 802.16e에 대한 코드(code)는 유사한 특성을 보인다. 더욱이, 많은 일반적인 계산상의 프리미티브들(computational primitives)이 식별될 수 있고, 이것은 이어지는 ASIP 접근법에 적합하다. 그러나, IEEE 802.11a 동기화와 비교하여, IEEE 802.16e에 대한 알고리즘은 훨씬 더 계산이 집중된다(평균적으로 191 연산/샘플(operations/sample) 대(vs.) 82 연산/샘플 IEEE 802.11a). 스루풋(throughput) 측면에서, 양자의 적용은 높은 수준을 요구한다(20 메가 샘플/초(Msamples/s)).
제한된 정확도를 가지고 고정점 코드(fixed point code)에서의 부동점 코드(floating point code)의 번역(고정점 개선(refinement))은 IEEE 802.11a 및 802.16e에 대한 모든 연산이 16 비트의 부호화를 지닌 정확도(signed precision) 내에서 가능함을 보여준다. 더욱이, 모든 분할(divisions)들은 알고리즘 변환에 의해서 제거될 수 있다. 코드는 커널들(kernels)의 단일 루프로의 병합을 포함하여, 데이터 집약성(data locality)을 향상시키고 제어를 감소시키기 위하여, 최적화된다. 나중에, 코드는 벡터화되고(vectorised), 실용적으로 선택되는 많은 프리미티브들에 맵핑된다(mapped). 명령어 집합은 이어서 유도될 수 있다. 모든 계산이 복잡한 샘플(complex samples)들에 관한 것이기 때문에, 복잡한 계산(complex arithmetic)이 하드웨어적으로 구현된다.
특정 목표의 어플리케이션에서는, 벡터 누적((vector accumulation)에 대한 메커니즘의 개발이 특정의 도전이라 할 수 있다. 예시에서는, 동기화 피크의 감지가 샘플 정확해야 한다. 따라서, 모든 상관 관계 출력은 평가될 필요가 있다. 따라서, 실시예에서는, 벡터 누적의 중간 결과 (triang, 레벨 - 도 3 참고) 및 벡터들(rmax/imax)로부터 최대치들(maxima)을 추출하는 명령어들을 유지하는 스킴이 소개된다.
병렬 프로세싱( Parallel Processing )
벡터 프로세싱 능력을 구비한 인-오더(in-order) VLIW 머신들은 SDR 에 대해 가장 에너지 효율적이다. 명령어 집합 정의 후에, 최소 에너지 비용으로 실시간 성능을 보장하기 위하여 필요한 병렬 프로세싱의 양이 결정되어야 한다.
첫번째로, 목표 클록이 유도된다. 실시예에서는, 선택된 최저 전력 메모리 기술에 의해, 최대 달성 가능한 클록 속도가 200 MHz로 제한된다. 프로그램 및 데이터 메모리들은 멀티-사이클 액세스 또는 프로세서 스톨링(processor stalling) 없이 독출 및 기록하도록 구현된다. 명령어 및 데이터-레벨 병렬성은 분석된다. 애플리케이션으로부터, 제어 및 데이터 프로세싱이 쉽게 병렬화될 수 있는 것이 관찰된다. 이것은 개별적인 스칼라 및 벡터 슬롯들을 초래한다. DLP 는 신호 감지 및 정확하지 않은 시간 동기화에 대한 알고리즘에 대부분 존재하기 때문에, 벡터화의 양은 처음으로 결정된다. 하나의 벡터 슬롯 및 200MHz 의 클록 속도를 가진 프로세서를 가정하면, 가장 높은 수준을 요구하는 어플리케이션 실시간(20MHz의 입력 속도에서 IEEE 802.16e)의 가장 완전한(홀이 없는) 스케쥴을 처리하기 위해서는 적어도 4.5의 벡터화 계수(vector factor)(벡터 당 복소수 데이터부(vector data elements)의 개수)가 요구된다. 벡터화 계수 4에 대하여, 직교(겹치지 않는(non-overlapping)) 명령어 집합을 가진 다중 벡터 슬롯들(multiple vector slots)을 이용함으로써, 최적의 연산자 활용에 근접한 스케쥴이 가능하다. 이것은 연산잗르의 최대 활용을 역시 보장한다. 따라서, 직교(겹치지 않는) 방법으로, 다중 스칼라 및 벡터 슬롯에 대한 명령어 집합을 분산시킴으로써, 성능 및 에너지 효율이 향상될 수 있다. 최고의 효율은 어플리케이션의 명령어 통계에 따라서 명령어들을 분산시킴으로써 달성될 수 있다. 어떤 실시예들에서는, 스칼라 연산에 대한 벡터 연산의 비율이 IEEE 802.16e 에서는 46/28 이고, IEEE 802.11a 커널에서는 23/16 이다. 따라서, 목표 아키텍쳐는 3개의 벡터 및 2개의 스칼라 연산을 이상적으로 병렬 처리할 수 있어야 한다. 따라서, 설계는 3개의 벡터 및 2개의 스칼라 명령어 슬롯들로 분할된다(partitioned).
도 3은 미세 아키텍쳐(micro-architecture) 및 예제에서 유도된 명렁어의 분포를 도시한다. 스칼라 슬롯들의 명령어들은 16비트의 부호화를 지닌 연산수(signed operands) 상에서 동작하고, 벡터 슬롯들의 명령어들은 4개의 복잡한 샘플들(complex samples) 상에서 (128 비트로) 병렬적으로 동작한다. 그 이상의 벡터화(further vectorization)가 상호 연결 네트워크(interconnection network)에서 더 큰 복잡도를 초래할 것임은 직관적으로 알 수 있다.
클러스터 레지스터 파일들 및 상호 연결( Clustered Register files and interconnect )
공유되는 멀티-포트(multi-ported) 레지스터 파일은 전형적으로 VLIW 구조에서 확장성의 병목(scalability bottleneck)이고, 높은 전력 소비자 중의 하나이다. 따라서, 클러스터 레지스터 파일의 구현이 우선된다.
도 4에 도시한 바와 같이, 상기한 특정 예에서는, 4개의 범용 레지스터 파일들(400)이 구현된다. 스칼라 레지스터 파일(SRF: Scalar Register File)은 16비트의 16개 레지스터를 포함하고, 4개의 독출 및 2개의 기록 포트들을 포함한다. 작은 워드 폭(word width) 때문에, 2개의 스칼라 슬롯들 내의 기능적 유닛들(FUs: functional units) 사이에서 그것을 공유하는 비용은 상대적으로 낮다. 프로세서의 벡터 측은 전부 클러스터되어 있다. 3개의 벡터 레지스터 파일들(VRF: Vector Register File)은 128 비트의 4개의 레지스터를 유지하고(hold), 3개의 독출 및 1개의 기록 포트를 구비한다. 2개의 독출 포트들은 특정 벡터 슬롯(도 5) 내의 기능적 유닛(FUs)에 전용된다(dedicated). 3번째 독출 포트는 연산수 브로드캐스팅(broadcasting)(상호 클러스터 독출 - 도 6)에 사용되고, 스칼라 클러스터(벡터 계산(vector evaluation), 벡터 저장)를 포함하는 모든 다른 클러스들로부터 액세스될 수 있다. 벡터 연산수들의 라우팅(routing)은 벡터 연산수 독출 상호 연결(vector operand read interconnect)을 통하여 이루어진다. 각각의 VRF는 하나의 브로드캐스트 포트만을 구비하기 때문에, VRF 당 단지 하나의 상호 클러스터(intercluster) 독출이 사이클 당 수행될 수 있다. 벡터 연산수 독출 상호 연결은 벡터 클러스터 내에서(within) 및 벡터 클러스터들에 걸쳐서(across) 연산수 포우딩(operand forwarding)을 역시 가능하게 한다(도 7 및 도 8 참고). 이러한 유연성으로 인하여, 어떠한(any) 벡터 명령어의 결과도 다음의 사이클에서 어떠한(any) 벡터 클러스터 내의 어떠한 벡터 명령에 대해서도 입력 연산수로 직접 사용될 수 있다. 소프트웨어적으로 제어되는 상호 연결은 어떠한 벡터 명령어의 레지스터 파일 라이트백(writeback)의 디스에이블링(disabling)을 역시 허용한다. 그러한 방법으로, 다음의 사이클에서 지접 소비되는 연산 결과들은 저장될 필요가 없고, 레지스터 파일에 대한 압박(pressure)도 감소한다(할당, 전력). 벡터 결과 기록 상호 연결(vector result write interconnect)은 연산 결과들을 VRF들의 기록 포트들에 라우팅하는데 사용된다.
각 VRF 기록 포트는 모든 벡터 슬롯들 및 슬롯 스칼라2(벡터를 생성하고, 벡터를 포드하는) 내의 FUs들로부터 기록된다. 프로그래머는 액세스 충돌을 회피할 책임이 있다. 선택된 상호 연결은 중앙 레지스터 파일만큼이나 많은 유연성을 더 낮은 에너지 비용으로 제공한다.
본 발명의 일실시예에 따르면, 데이터 스크래치패드(scratchpad)가 구현된다. 상호 연결을 공유하기 위하여, 벡터 로드(vector load) 및 벡터 저장(vector store)이 상이한 유닛들에서 구현된다. 로드 FU는 제1 스칼라 슬롯에 연결되고, 제1 스칼라 슬롯은 벡터들을 기록할 수 있다. 저장 FU는 제2 스칼라 슬롯에 할당되고, 제2 스칼라 슬롯으로부터 벡터 연산수들이 독출될 수 있다(도 4). 플랫폼 통합(integration)을 용이하도록 하기 위하여, 프로세서는 다수의 I/O 포트들, 예를 들어 입력 스트림으로부터 독출 벡터들에 대한 인터페이스를 차단하는 포트들을 제공할 수 있다.
상술한 아키텍쳐 및 목표 기술 하에서, 목표 클록 속도에 도달하고 명령어 및 데이터 메모리를 완벽하게 인터페이스하기 위하여 필요한 파이프라이닝(pipelining)의 양이 결정되어야 한다.
본 발명의 일실시예에 따르면, 파이프라인 모델이 2개의 명령어 추출(fetch)(FE1, FE2) 및 하나의 명령어 해독(DE: decode) 단계와 함께 유도된다. 부가적으로, 스칼라 슬롯들 및 제1, 제2 벡터 슬롯 내의 유닛들은 하나의 실행(EX) 단계를 가진다. 제3 벡터 슬롯 내의 복소 벡터 승산기(complex vector multiplier) FU는 2개의 실행 단계들(EX, EX2)을 가진다.
FE1 단계는 프로그램 메모리의 어드레싱 단계(addressing phase)를 구현한다. 명령어 워드는 FE2 에서 독출된다. DE 단계에서, 명령어는 해독되고, 데이터 메모리는 어드레스된다. 디코더는 어느 레지스터 파일 포트들이 액세스될 필요가 있는지를 결정한다. 소스 연산수들(source operands)의 라우팅, 포워딩, 및 체이닝(chaining)은 완전히 소프트웨어적으로 제어된다. 소스 연산수들은 DE의 마지막에서 파이프라인 레지스터들에 저장되고, 다음 사이클에서 활성화된 FUs 에 의해 소비된다. 레지스터 파일들은 EX(또는 EX2)의 마지막에서 기록된다.
400 : 4개의 범용 레지스터 파일

Claims (15)

  1. 스칼라 데이터 경로 및 스칼라 레지스터 파일을 제공하고, 스칼라 명령어를 실행하도록 배열되는 스칼라부; 및
    적어도 2개의 상호 연결된 벡터부들
    을 포함하고,
    상기 벡터부들은 상기 스칼라부와 연결되고, 상기 적어도 2개의 벡터부들의 각 벡터부는 벡터 데이터 경로 및 벡터 레지스터 파일을 제공하고, 상기 각 벡터부는 상기 적어도 2개의 벡터부들의 다른 하나의 벡터부에 의해 수행되는 벡터 명령어와 상이한 적어도 하나의 벡터 명령어를 실행하도록 배열되는 프로그래밍 가능한 장치.
  2. 제1항에 있어서,
    상기 스칼라부 및 상기 적어도 2개의 벡터부들의 각 벡터부에는 각각의 명령어들을 저장하기 위한 로컬 저장 수단이 제공되는 프로그래밍 가능한 장치.
  3. 제1항 또는 제2항에 있어서,
    상기 벡터부들간의 데이터 통신을 위하여 소프트웨어적으로 제어되는 상호 연결을 더 포함하는 프로그래밍 가능한 장치.
  4. 제1항 내지 제3항 중 어느 하나의 항에 있어서,
    상기 적어도 2개의 벡터부들의 제1 벡터부는 산술 논리 유닛 명령어들을 위한 연산자들을 포함하고, 상기 적어도 2개의 벡터부들의 제2 벡터부는 곱셉 연산자들을 포함하는 프로그래밍 가능한 장치.
  5. 제1항 내지 제4항 중 어느 하나의 항에 있어서,
    상기 적어도 하나의 벡터 명령어를 제공하기 위하여 배열되는 프로그램을 위한 수단을 더 포함하는 프로그래밍 가능한 장치.
  6. 제1항 내지 제5항 중 어느 하나의 항에 있어서,
    제2 스칼라부 및 3개의 상호 연결된 벡터부들을 더 포함하는 프로그래밍 가능한 장치.
  7. 제1항 내지 제6항 중 어느 하나의 항에 있어서,
    상기 각 벡터 레지스터 파일은 3개의 독출 포트들 및 1개의 기록 포트를 구비하는 프로그래밍 가능한 장치.
  8. 제7항에 있어서,
    상기 독출 포트들 중에서 두 개의 독출 포트는 상기 벡터 데이터 경로의 기능적 유닛에 전용 되어 있는 프로그래밍 가능한 장치.
  9. 제7항 또는 제8항에 있어서,
    상기 독출 포트들 중에서 하나의 독출 포트는 상기 벡터 슬롯들 간에 독출을 위하여 배열된 프로그래밍 가능한 장치.
  10. 제1항 내지 제9항 중 어느 하나의 항에 있어서,
    상기 적어도 두 개의 벡터부들 중에서 하나의 벡터부에서 실행가능한 모든 벡터 명령어들은 다른 어떠한 벡터부에서 실행 가능한 벡터 명령어들과 상이한 프로그래밍 가능한 장치.
  11. 제1항 내지 제10항 중 어느 하나의 항에 있어서,
    IEEE 802.11a/g/n, IEEE 802.16e, 및 3GPP-LTE를 포함하는 표준 규격에 따른 통신을 더 수행하기 위하여 배열되는 프로그래밍 가능한 장치.
  12. 제1항 내지 제11항 중 어느 하나의 항에 있어서,
    상기 프로그래밍 가능한 장치를 포함하는 디지털 프론트 엔드 회로.
  13. 제1항 내지 제12항 중 어느 하나의 항에 있어서,
    상기 프로그래밍 가능한 장치를 포함하는 소프트웨어 기반의 무선통신 단말.
  14. 제1항 내지 제11항 중 어느 하나의 항에 있어서,
    프로그래밍 가능한 장치 상의 알고리즘을 위한 명령어 집합을 자동적으로 설계하기 위한 방법에 있어서,
    하이-레벨 프로그래밍 언어로 상기 알고리즘을 상술하는 단계;
    상기 알고리즘을 데이터 플로우 그래프들로 변환하는 단계;
    상기 데이터 플로우 그래프들의 활성화를 산정하기 위하여 프로파일링을 수행하는 단계; 및
    상기 프로파일링의 결과에 기초하여 상기 명령어 집합을 유도하는 단계
    를 포함하고,
    슬롯당 명령어 개수가 최소화되도록 상기 스칼라부 및 상기 적어도 2개의 벡터부들에 상기 명령어 집합의 부분 집합을 할당하는 단계
    를 더 포함하는 방법.
  15. 제1항 내지 제11항 중 어느 하나의 항에 있어서,
    프로그래밍 가능한 장치와 데이터 패킷들 간의 상호 관계를 분석하는 단계
    를 포함하는 수신 데이터 패킷의 패킷 감지 방법.
KR1020107000185A 2007-06-18 2007-10-19 소프트웨어 기반 무선통신 터미널을 위한 프로그래밍 가능한 장치 KR101445794B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP07110493 2007-06-18
EP07110493.9 2007-06-18
PCT/EP2007/061220 WO2008154963A1 (en) 2007-06-18 2007-10-19 Programmable device for software defined radio terminal

Publications (2)

Publication Number Publication Date
KR20100018039A true KR20100018039A (ko) 2010-02-16
KR101445794B1 KR101445794B1 (ko) 2014-11-03

Family

ID=38800885

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107000185A KR101445794B1 (ko) 2007-06-18 2007-10-19 소프트웨어 기반 무선통신 터미널을 위한 프로그래밍 가능한 장치

Country Status (5)

Country Link
US (3) US20100186006A1 (ko)
EP (1) EP2171609A1 (ko)
JP (1) JP5324568B2 (ko)
KR (1) KR101445794B1 (ko)
WO (1) WO2008154963A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013115557A1 (ko) * 2012-02-02 2013-08-08 삼성전자 주식회사 Asip를 포함하는 연산장치 및 설계 방법

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8656376B2 (en) * 2011-09-01 2014-02-18 National Tsing Hua University Compiler for providing intrinsic supports for VLIW PAC processors with distributed register files and method thereof
JP6102528B2 (ja) 2013-06-03 2017-03-29 富士通株式会社 信号処理装置及び信号処理方法
KR102179385B1 (ko) * 2013-11-29 2020-11-16 삼성전자주식회사 명령어를 실행하는 방법 및 프로세서, 명령어를 부호화하는 방법 및 장치 및 기록매체
JP6237241B2 (ja) * 2014-01-07 2017-11-29 富士通株式会社 処理装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE68928507T2 (de) * 1988-06-07 1998-04-16 Fujitsu Ltd Vektordatenverarbeitungsvorrichtung
US5752035A (en) * 1995-04-05 1998-05-12 Xilinx, Inc. Method for compiling and executing programs for reprogrammable instruction set accelerator
US7100026B2 (en) * 2001-05-30 2006-08-29 The Massachusetts Institute Of Technology System and method for performing efficient conditional vector operations for data parallel architectures involving both input and conditional vector values
US6366998B1 (en) * 1998-10-14 2002-04-02 Conexant Systems, Inc. Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model
US6301653B1 (en) * 1998-10-14 2001-10-09 Conexant Systems, Inc. Processor containing data path units with forwarding paths between two data path units and a unique configuration or register blocks
US7721069B2 (en) * 2004-07-13 2010-05-18 3Plus1 Technology, Inc Low power, high performance, heterogeneous, scalable processor architecture
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013115557A1 (ko) * 2012-02-02 2013-08-08 삼성전자 주식회사 Asip를 포함하는 연산장치 및 설계 방법

Also Published As

Publication number Publication date
JP2010530677A (ja) 2010-09-09
US20140040594A1 (en) 2014-02-06
US20100186006A1 (en) 2010-07-22
KR101445794B1 (ko) 2014-11-03
EP2171609A1 (en) 2010-04-07
US20130173884A1 (en) 2013-07-04
WO2008154963A1 (en) 2008-12-24
JP5324568B2 (ja) 2013-10-23

Similar Documents

Publication Publication Date Title
Ye et al. CHIMAERA: A high-performance architecture with a tightly-coupled reconfigurable functional unit
US20190004878A1 (en) Processors, methods, and systems for a configurable spatial accelerator with security, power reduction, and performace features
JP2013529322A (ja) 高効率の埋め込み型均一マルチコアプラットフォーム用のタイルベースのプロセッサアーキテクチャーモデル
US6795908B1 (en) Method and apparatus for instruction execution in a data processing system
JP2008539485A (ja) 再構成可能命令セル・アレイ
Bougard et al. A coarse-grained array accelerator for software-defined radio baseband processing
US20140040594A1 (en) Programmable device for software defined radio terminal
She et al. Scheduling for register file energy minimization in explicit datapath architectures
Farahini et al. Parallel distributed scalable runtime address generation scheme for a coarse grain reconfigurable computation and storage fabric
Ahmed et al. mRTS: Run-time system for reconfigurable processors with multi-grained instruction-set extensions
Vander Aa et al. A multi-threaded coarse-grained array processor for wireless baseband
Pothineni et al. Application specific datapath extension with distributed i/o functional units
Schuster et al. Design of a low power pre-synchronization ASIP for multimode SDR terminals
She et al. Energy efficient special instruction support in an embedded processor with compact ISA
Ren et al. Swift: A computationally-intensive dsp architecture for communication applications
Sievers et al. The CoreVA-MPSoC: A multiprocessor platform for software-defined radio
Lin et al. A system solution for High-Performance, low power SDR
Jungeblut et al. A systematic approach for optimized bypass configurations for application-specific embedded processors
Wold et al. Design techniques for increasing performance and resource utilization of reconfigurable soft CPUs
David et al. A compilation framework for a dynamically reconfigurable architecture
Guzma et al. Use of compiler optimization of software bypassing as a method to improve energy efficiency of exposed data path architectures
Galanis et al. A partitioning methodology for accelerating applications in hybrid reconfigurable platforms
Hußmann et al. Compiler-driven reconfiguration of multiprocessors
Fell et al. Streaming FFT on REDEFINE-v2: An application-architecture design space exploration
Lin et al. Utilizing custom registers in application-specific instruction set processors for register spills elimination

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant