최근 DSP 제품 동향과 ZSP 코어-2부 최근 DSP 제품 동향과 ZSP 코어-2부
김재호 2008-01-21 10:36:32

최근 DSP 제품 동향과 ZSP 코어

3G 무선 단말기용 DSP 시스템 - 2부

현존하는 많은 코덱을 적용하고, 향후에 나올 수 있는 표준들을 적용하기 위해서 는 소프트웨어를 바꿀 수 있는 DSP가 최선의 선택이다. 현재의 제품에서 다음 제품으로 갈 때 시스템을 완전 재설계하지 않고 약간의 변경으로 사용가능 하도록 하려면 호환성이 있는 DSP 시리즈를 가지는 것을 선택하는 것이 중요하다.

 

글 | 김재용 차장,블랜드 슬레이드,ZSP Division of LSI Logic

 

다년간의 노력과 실패를 거치고, 이제는 3세대 무선단말기의 시대가 왔다. 베이스밴드 프로세서는 소비자들이 2세대와 2.5세대 제품을 거쳐 3세대 단말기로 발전하면서 기대되는 기능과 가격, 에너지 효율을 만족시키고 있지만, 다중모드의 필요성이 점점 더 대두되고 있다. 3세대는 2세대에 비해서 몇 배의 복잡도를 가지고 있어서 소프트웨어에 많은 부담이 되고 있다. 3세대 단말기 베이스밴드의 기능을 소프트웨어와 하드웨어로 분리할 수 있는 플랫폼이 절실히 요구되고 있다. 설계자들은 베이스밴드 처리 능력뿐만 아니라 생산성,향후 검증의 용이성, 소비전력, 가격 등을 고려해서 DSP 코어를 선택해야한다. 2부에서는 3세대 무선단말기를 설계하는데 있어서 설계자들이 고려해야 하는 베이스밴드의 어려움과 DSP의 필요성, 기능의 분할 등에 대해서 논할 것이다. 어떻게 3세대 무선단말기 모뎀의 기능을 분할 할 것인지를 분석하기 위해서는 이러한 표준들을 살펴볼 필요가 있다. 3세대 표준들은 매우 복잡해서 이번 지면을 통해서는 자세하게 살펴볼 수는 없고, TD-SCDMA(Time Division Multiplexed Synchronous Code Division Multiplexed Access)와 WCDMA의 베이스밴드에 대해서 간단하게 분석을 할 것이다.

TD-SCDMA

TD-SCDMA는 시분할과 코드분할을 혼용해서 다수의 사용자를 지원한다. 그림 1에서는  TD-SCDMA의 특징을 보여준다. TD-SCDMA는 1.6MHz 밴드 폭을 가지고 있고, 각 밴드에는5ms 크기의 서브프레임을 가지고 있다. 각각의 서브프레임은 7개의 슬롯으로 나누어져있고, 서브프레임은 사용자 별로 16개의 코드로 또한 나뉘어져 있다. 최대 384kbps의 사용자 대역폭에는 QPSK가 가장 널리 사용되고 있다. TD-SCDMA에서는 WCDMA에 비해서 복잡도가 낮지만 높은 성능을 필요로 한다. 이것은 중국에서 TDSCDMA가 채택된 이유 중에 하나이다. TD-SCDMA는 수신기에서 데이터를 추출하고 복원하는 측면에서 봤을 때 대부분의 CDMA 표준들과는 다른 기술을 사용하고 있다. 잡음성분과 다른 사용자의 데이터를 제거해서 한 사용자의 데이터를 추출해 내는 방식이 아닌, 모든 사용자의 데이터가 같이 추출된다(Joint Detection). 즉 다른 사용자의 데이터를 잡음성분으로 취급하지 않는다. 동시에 사용자의 데이터를 추출하는 알고리즘은 특허에 걸려 있는 것도 있고 그렇지 않은 것도 있다. 그림 2에서는 TD-SCDMA 수신기의 처리 순서를 보여준다. 초록색 부분은 소프트웨어로 처리 할 수 있는 블록을 나타낸다. 동시 추출 알고리즘(Joint Detection Algorithm)은 간략화 과정을 거쳐서 아래와 같은 수식으로 표현될 수있다.

이 수식에서는 복소수의 MAC (Multiply-Accumulate)연산이 수행된다. 얼핏 보면 하드웨어로 구현하는 것이 쉬워 보일 수도 있지만 연산 수식을 따라가다 보면 하드웨어로 구성하기가 쉽지 않음을 알 수 있다. 이러한 부분은 DSP로 구현하는 것이 위험요소를 적게 가져갈 수 있고, 유연성이 좋게 만들 수 있다.

아래의 예제 1에서는 복소수를 계산하는 C 코드와 어셈블리 코드를 보여준다. 두 개의 MAC(ZSP500), 네 개의 MAC(ZSP540)을 가지는 DSP에 대한 어셈블리 코드를 각각 표시하였다. 복소수 MAC 연산은 4번의 곱셈과 3번의 덧셈, 1번의 뺄셈이 필요하다. ZSP 코어에서는 복소수 곱셈을 위한 명령어와 다수의 ALU가 있어서, 2개의 MAC을 가지는 경우에는 매 2사이클마다, 4개의 MAC을 가지는 경우에는 매 사이클마다 복소수 MAC 연산을 실행 할 수 있는 구조를 가지고 있다. MAC연산에서의 장점뿐만 아니라 베이스 밴드를 소프트웨어로 구현하는 데 있어서 고려할 만한 DSP의 특징들이 있다. 최종 결과는 16비트로 사용되기는 하지만, 대부분의 연산에서 32비트의 정밀도를 가지는 것이 필요해서, 적절한 32비트 ALU가 있어야 한다. ZSP540과 같은 DSP는 3개의 32/40 비트 ALU를 가지고 있다.

 

동시 추출 알고리즘(Joint Detection)과 같은 함수에서는 중간변수에 대해서 빠른 속도로 읽고 쓸 필요가 있는데, 이 때는 메모리 대역폭이 연산처리 능력만큼 지원이 되어야 한다. 일반적으로 4개의 MAC을 가지는 경우에는 2개의 64비트 대역폭이 필요로 한다. FFT 연산은 Channel Estimation에서 많이 사용되는데 이 또한 DSP에서 효과적으로 지원이 되어야만 한다. MAC연산뿐만 아니라 덧셈, 뺄셈, Bitreversed 연산을 동시에 수행 할 수 있어야 한다. 이것은 오래된 DSP 구조 혹은 단순한 DSP 기능을 지원하는 MCU와는 확연하게 구분되는 부분이다. 베이스 밴드의 Joint Detection에서는 수많은 경우의 수가 있는데, 이것은 DSP를 사용해야 하는 이유 중에 하나이다. 실행시간을 예측할 수 있으면서도, 효과적으로 각 경우의 수를 판단하고 분기할 수 있게 하려면 조건부 실행 명령어가 절실하게 필요하다. 특히 고성능 다단계 파이프라인 프로세서를 검토할 때는 더욱더 중요하다. 마지막으로 효과적으로 비트열을 처리하기 위해서는 비트단위로 관리할 수 있는 명령어가 있어야만 각 비트를 AND/OR/SHIFT 하는데 사이클을 낭비하는 것을 막을 수 있다. 그림 2에서 본 것과 같이 Joint Detection이 TD-SCDMA 수신기의 가장 중요한 기능이기 때문에 DSP로 구현하는 것이 가장 적당하다. 수신기의 일부 다른 블록들은 데이터의 전속속도가 너무 높거나, 연산이 고정되어 있는 경우에는 하드웨어로 구현하는 것이 확실히 좋다. FEC(Forward Error Correction)에서 사용되는 Viterbi나 Turbo Decoder는 아주 복잡하지만 잘 정의되어 있다.이러한 블록을 DSP에서 구현하기 위해서는 최신의 DSP 에서도 많은 연산 사이클을 필요로 하기 때문에 에너지 소비효율과 칩 크기의 측면에서 효과적이지 못하다.FEC 디코더 같은 기능은 데이터를 블록단위로 처리하기 때문에 공유메모리를 사용할 수 있다. 소프트웨어와 하드웨어 설계를 적절히 조절하면, 저전력을 구현할 수 있는 하드웨어 설계의 장점과 유연성을 가질 수 있는 DSP의 장점을 최대한 살릴 수 있다. 이렇게 하기 위해서는 DSP와 하드웨어 설계 간에 밀접하게 연관되어 있는 공유 메모리를 사용할 수 있다.

하지만 합성할 때 타이밍 문제를 발생시킬 수 있고, 또 다른 세대의 베이스밴드 규격을 지원하기 위해서는 하드웨어 설계의 호환성 문제가 발생할 수 있다.그래서 사용자가 원하는 명령어를 추가할 수 있는 보조처리기(Co-Processor)를 사용했을 경우에는 원래의 명령어는 전혀 영향을 받지 않으면서 보조처리기는 사용자가 원하는 명령어를 수행 할수 있다.그림 3에서는 이러한 보조처리기를 사용하는 경우의 예를 보여준다. 레지스터의 값이 보조처리기의 입력이 되고, 결과는 다시 레지스터로 들어오도록 되어 있다. 보조처리기는 필요하면 stall신호를 통해서 주 프로세서를 세울 수도 있다. 이러한 하드웨어적인 기능은 주 프로세서가 필요 없이 결과를 기다리는 루프를 실행할 필요가 없도록 만들고, 또한 합성할 때의 타이밍 문제가 발생하지 않도록 완전히 분리시켜 준다. OpCode 부분은 설계자가 정하는 것으로 여러 개의 보조처리기 중에 하나를 선택하도록 할 수 있다. 일부의 프로세서에서는 보조처리기의 기능을 C 컴파일러에서 사용할 수 있지만 무선단말기의 베이스밴드에서 필요로 하는 데이터 전송률을 만족시키기 위해서는 보조처리기의 기능은 어셈블리 언어로 작성하는 것이 바람직하다. 또한 C 언어에서는 적절한 데이터 형이 없거나 해당하는 기능을 C로 표현하기 어려울 수있다. 그래서 전체적인 기술은 C 언어로 하되 보조처리기의 특별한 기능을어셈블리로 기술하는 것이 유리하다.FFT를 기반으로 하는 많은 알고리즘과 다른 연산에서 필요로 하는 기능들을 종합적으로 봤을 때, 2개의 MAC을 가지는 구조가 많이 고려된다. 또한어셈블리의 호환성이 있는 DSP군을 선택을 해야만, 더 작은 공정과 더 높은 성능의 프로세서가 준비되었을 때 공정 변경을 쉽게 할 수 있다. 예를 들어 2개의 MAC과 FFT 보조처리기를가지는 0.13um 공정의 프로세서는 4개의 MAC을 가지는 90nm 공정의 코어로 교체될 수 있기 때문이다.

표 1에서는 TD-SCDMA 단말기에서 필요로 하는 성능을 보여준다. 여기에서 AMR 음성 코덱을 포함하고 있고, 384Kbps 양방향 단일 채널일 경우의 한 예이다.

 

 

 

WCDMA

W-CDMA FDD(Frequency DivisionDuplex) 단말기에서의 기능분할과 필요한 연산 량의 정도는 TD-SCDMA 단말기와는 많은 차이가 있다. WCDMA FDD에서는 5MHz의 광대역이 사용되고, 사용자는 코드를 분산시켜서 대역폭을 공유하기 때문에 TD-SCDMA에 비해서 많은 계산 량을 필요로 한다. 그림 4에서는 분산된 데이터를 검출해 내는 수신기를 보여준다. 특정 사용자의 데이터를 검출해 내기 위해서 여러 개의 경로에서 들어오는 데이터를 조합해야 한다. 여기에서많은 수의 복소수에 대한 연산을 반복적으로 수행해야 한다. 이러한 수신기의 연산은 구조가 단순한 편이어서 하드웨어로 구현하는 것이 쉬울 수 있지만, 최신의 고성능 DSP에서도 쉽게 구현될 수 있다. 어떻게 구현 할 것인가에 대한 결정은 전력소모량과 개발기간, 향후 확장성을 고려해야 한다. 다중 모드를 사용해야 하는 경우 혹은 베이스밴드의 상위 레이어를 DSP에서 구현 하기 위해서는 보조처리기가 적합하다. 표 2에서는 그림 4의 WCDMA FDD 수신기에서 필요한 성능을 나타낸다. 기능의 소프트웨어/하드웨어 분할은 향후 제품의 방향과 사용 가능한 DSP 제품군까지 고려 해야 하는 쉽지 않은 일이다. 기능을 적절하게 분할하고, 향후에 효과적으로 새로운 기능을 추가하기 위해서는, 효과적인 설계툴과 방법이 필요하다. 많은 설계자들은 Matlab에서 시작해서 C 모델을 만들고, 새로운 기능들을 붙여 나간다. 이 단계에서 설계자들은 구현에 대해서 고려하기 시작하는데, 이것은 데이터의 흐름을 정확하게 고려할 수 없는 위험한 방식이다.

CoWare, Synopsys, Mentor Graphics에서 나오는 System-C 기반의 모델링 툴은 DSP와 주변기기의 버스구조를 빠른 시간 안에 구현하도록 도와준다. 이렇게 만들어진 시스템은 그성능을 자세하게 분석할 수 있기 때문에 해당하는 구조가 효과적인지, 향후에도 계속해서 사용하는데 무리가 없는지를 판단 할 수 있다. DSP의 시뮬레이터의 결과가 사이클수 측면에서도 정확하고, 보조처리기와 통신할 수 있는 API를 지원한다면,보조처리기의 시뮬레이션 모델은 DSP시뮬레이터에 붙여서 효과적으로 구현할 수 있다. 보조처리기의 시뮬레이션 모델은 매 사이클마다 입력 값을 받고,결과를 다시 전달하고, 필요하면 추가되는 DSP에 인터럽트나 stall을 요청할 수 있다. 이러한 시뮬레이션 모델개발 방법은 칩을 제작하기 전에도 소프트웨어 개발에 사용될 수 있다. 전력소비의 효율성은 System-C 모델 단계에서 버스의 사용률이나 프로세서 대기시간, 메모리 접근빈도 등을통해서 계산할 수 있다. 하지만, 전체적인 전력소모를 관리하기 위해서는 클럭 게이팅 혹은 가능하다면 전원 분리 등의 방법을 고려할 필요가 있다. 최근의 단말기에서 사용되는 DSP는 클럭 게이팅이 필수이고, 또한 하드웨어/소프트웨어로 전원을 관리할 수 있어야 한다. 시스템 설계를 담당하는 사람은 메모리의 전력소모를 고려해야한다. 메모리의 전력소모는 일반적으로 DSP 코어 자체의 전력소모보다 훨씬크기 때문이다. DSP의 연산은 많은 부분이 루프를 기반으로 하고 있기 때문에 레지스터 기반의 버퍼 혹은 단순한 캐시를 가지는 경우에는 메모리로부터 명령어를 읽어올 필요가 없어지는 경우가 많이 생긴다. 이러한 레지스터 기반의 캐시버퍼가 있으면 전력소모를크게 줄일 수 있다.

결론

DSP는 3세대 휴대용 단말기가 가능할 정도로 발전해 있지만, 설계자는 어떻게 하드웨어와 소프트웨어의 기능을 나눌 것인지에 대한 고민을 해야 한다. 너무 많은 부분을 하드웨어로 구현했을 때는 개발기간이 지연될 수 있고,특별한 기능을 추가할 때 호환성이 떨어지거나 필요 없는 기능이 하드웨어로 들어 있을 수 있다. 반대로 너무 많은 기능을 소프트웨어로 구현했을 때는 DSP에 추가기능을 구현할 여유가 없거나 너무 많은 전력소모 때문에 어려울 수 있다. 오늘날에는 올바른 소프트웨어/하드웨어 분할을 할 수 있으면서 또한 적절한 모델링 툴을 적용할 수 있는 DSP를 선택할수 있기에 설계자들은 3세대 단말기의 개발의 어려움을 극복하기가 훨씬 쉬워졌다


<자료제공 반도체네트워크 2006년 2월호>
디지털여기에 news@yeogie.com <저작권자 @ 여기에. 무단전재 - 재배포금지>