DSP란 무엇인가
먼저, 디지털 신호처리의 기본 개념을 살펴보자. 신호는 연속적으로 변화하는 시간 t의 모든 값에 대해 신호 함수 값이 정의되는 연속 시간 신호(continuous-time signal)와 시간 t의 특정값에 대해 불연속적으로 신호 함수의 값이 정의되는 이산 시간 신호(discrete-time signal)로 나눠질 수 있다. 이산화된 신호를 처리하는 디지털 신호처리기는 신호가 S(시간 간격) 시간마다 갱신되므로 S시간마다 출력을 갖는다. 신호처리란 원하는 정보를 전달ㆍ가공ㆍ제어하기 위해 신호에 어떠한 연산을 통해 어떤 가공을 하는 것이다. 이런 신호처리를 DSP나 전용 프로세서를 사용해 디지털적으로 처리하는 것을 디지털 신호처리라고 한다.
DSP는 규칙적인 시간 간격으로 샘플링되어 나오는 디지털화된 실시간 신호에 대해 산술적으로 신호처리를 하는 프로세서이다. 신호처리에는 filtering(<그림 1>), convolution(두 신호의 혼합), correlation(두 신호 간의 상관관계), 신호의 정류, 증폭 그리고 변환 등이 있다. <그림 1>에서 이 회로의 처리는 anti-alias 필터로 대역-제한 입력으로 주어지고, 샘플링 처리로 통과 대역 내에서 다시 alias 될 수 있는 대역 밖의 신호는 제거한다. 이 신호는 샘플되고, A/D 변환기로 디지털화되고 나서 DSP로 보내진다. DSP로 실현되는 필터는 정확히 소프트웨어 문제이다. DSP로는 아날로그 기술을 사용해 실현할 수 있는 어떤 필터라도 바로 실현될 수 있다. 적응 필터의 경우는 DSP를 사용해 쉽게 실현할 수 있는 반면에 아날로그 기술을 사용해 실현하는 것은 극히 곤란하다. DSP의 출력은 D/A 변환기로 처리되고 디지털 신호에 영향을 끼치는 것들을 제거하기 위해 저역-통과 필터를 거친다.
아날로그 신호처리의 시스템은 구성 요소가 아날로그이므로 열과 잡음과 부품의 수명 그리고 주위 온도에 영향을 받아 불안정성의 문제가 있다. DSP를 사용하는 이점은 신호처리를 소프트웨어로 하므로 간단히 변경할 수 있고 디지털 회로의 장점을 이용하므로 적은 부품으로 회로를 구성할 수 있고 고성능ㆍ안정성ㆍ정밀도가 뛰어나며 높은 잡음 제거성과 저전력 소모 구조로 시스템 크기를 소형화할 수 있다.
DSP 코어의 중요성
DSP에서 가장 핵심적인 부분은 코어(Core)이다(<그림 2>). 코어의 구조를 살펴보면(<그림 3>), 프로그램 제어 장치, 번지 발생 장치(AGU, Address Generat ion Unit) 그리고 데이터 ALU(Arithm etic and Logic Unit)로 구성된다. 프로그래머가 에디터에서 프로그램을 작성하면 프로그램 제어 장치에서 명령어를 읽어 오고 거기에 해당되는 메모리 번지를 AGU에서 발생해 데이터를 ALU의 레지스터로 이동시켜 ALU에서 산술 연산을 한 후 결과를 AGU에서 만든 번지로 데이터를 이동시킨다. DSP의 성능은 ALU의 연산 처리 능력을 기준으로 한다. 단위로는 MMACS(Million Multiply Accum ulates per Second)인데 이것은 1초에 ALU가 얼마나 많은 곱하기 연산과 그 결과를 더해 주는가를 나타내고 있다.
최근 DSP의 성능은 4800MMAC까지 진보되었다. 코어의 아키텍처에 따라 DSP 성능에 큰 영향을 미치기 때문이다. 시장에서 요구되는 제품은 다양해지고 반면에 라이프 사이클은 짧기에 고객의 욕구를 충족하기 위해서는 DSP에 사용할 잘 설계된 코어를 빨리 개발하여 출시해야 좋은 성능의 DSP를 사용한 제품을 DSP 사용자들이 먼저 시장에 내놓을 수 있다. ALU를 여러 개 갖고 있으면, ALU 개수의 배수만큼의 성능을 DSP가 낼 수 있다. 예로서 ALU가 4개인 경우(<그림 2>) 300MHz 클럭 속도로 DSP가 동작된다면 1200MMAC의 성능을 낼 수 있으며 이는 ALU가 각각 독립적으로 명령어를 수행하기 때문이다(<그림 4>).
DSP의 핵심 기술은 코어 설계 기술을 의미하며, 코어는 DSP 칩 내에 있는 모듈들을 통해 받은 데이터를 처리한다. 짧은 시간에 얼마나 많은 데이터를 에러 없이 잘 처리하는 것, 이것이 바로 코어의 성능을 나타내고 동시에 DSP의 성능을 나타내는 것이다. DSP 코어가 미세 공정기술로 설계되면, DSP의 다이(Die)가 작아져 DSP 사이즈가 줄어들고, 제품의 전력 소모가 적어 결국 원가 절감에 영향을 준다. DSP 제조 회사에서는 DSP 코어를 개발하면 이것으로 여러 가지 DSP를 만든다. 1998년에 모토로라와 어기어(Agere)는 DSP를 제조 생산하는 업체이면서 세계 통신 시장을 주도하는 회사로서 차세대 DSP 코어를 개발하는 스타코어(STARCORE) 디자인 센터를 설립했다. 모토로라와 어기어에서 만든 SC140 스타 코어를 사용해 모토로라에서는 MSC8101과 MSC8102를 설계해 생산하고 있고, 어기어는 SC140 사용 Star Pro 2000을 개발했다. TI는C6400 코어를 개발해 TMS320C6414, TMS320C 6415, TMS320C6416을 생산하고 있다.
DSP와 DSP 소프트웨어의 관계
기본적인 DSP 알고리즘인 FIR 필터 소스 프로그램을 가지고 DSP의 소프트웨어와 하드웨어의 관계를 살펴보고자 한다. 다음과 같이 어셈블리 언어로 프로그램을 작성하면 프로그램 컨트롤 유닛에서 프로그램 코드를 읽고(<그림 5>), AGU에서 입력 데이터와 계수를 가져오기 위한 메모리 주소를 발생시킨다.
x-memory에 있는 계수와 y-memory에 있는 입력 데이터를 읽어 들인 후 데이터 ALU의 레지스터에 저장하면 데이터는 ALU에서 연산된 후 어큐멀레이터(Accumulator)를 통과한 후 결과를 내보낸다. DSP 아키텍처는 부동소수점 형태와 고정소수점 형태가 있는데, 부동소수점인 경우는 두 숫자의 곱셈의 결과가 부동소수점을 가지므로 프로그램 작성이 용이하고 보다 정밀성이 뛰어나다. 고정소수점 형태는 소수점이 고정된 결과를 가져오므로 프로그래머가 결과를 처리해야 한다. DSP 명령어 형태로는 VLIW (Very Long Instruction Word)와 VLE S(Variable Length Execution Set)가 있다. VLIW는 명령어에 대해 고정된 ‘SLOTS’을 가지므로 명령어를 쉽게 내보낼 수 있으나 컴파일러에게는 부담을 준다. VLES는 한 번에 6개까지의 명령을 수행할 수 있어 하드웨어와 C 컴파일러 간을 밀접하게 연결시켜 줄 수 있다.
DSP 개발 장비
DSP 개발 장비에는 소프트웨어 툴과 하드웨어 툴이 있는데 완벽한 시스템 솔루션으로 우수한 제품을 적기에 출시해 사용자의 욕구를 충족시키고 있다. 소프트웨어 툴은 프로그램 매니저, 편집기(editor), 탐색기(search engine), 소스 코드 브라우저, C 컴파일러, 어셈블러, 링커 그리고 디버거(debugger)로 종합적인 개발 환경을 제공한다(<그림 6>). 사용하기 편리한 그래픽 유저 인터페이스(GUI) 환경으로 구성되어 있어 디버깅이 쉽고(<화면 1>), GUI에서 소스 코드 편집이 실시간으로 가능하고, 프로파일러(profiler)에서 프로그램을 수행하는데 걸리는 사이클 수를 각 함수별로 알아볼 수 있고, 수행시간이 오래 걸리는 함수를 찾아 최적화를 시킬 수 있다.
얼마 전까지만 해도 어셈블리 언어를 사용해 DSP 프로그램을 작성해야 DSP 성능을 충분히 효과적으로 사용할 수 있었는데 최근에는 코어 설계시 C 컴파일러를 염두에 두고 설계하므로 컴파일러는 최적 코드 밀도를 유지하면서 코드 최적화에 있어 최고 수준의 효율성을 제공할 수 있도록 설계됐다. 그러므로 C 언어를 사용해 DSP 프로그램이 가능해졌고 DSP 사용자도 DSP 제조 회사에 제약받지 않고 용도에 적합한 DSP를 선택해 편리하게 사용할 수 있게 되었다.
DSP 하드웨어 툴을 살펴보면(<그림 7>) DSP 내의 모든 기능을 보여 주기 위해 시스템으로 구성됐다. <그림 7>의 예를 보면, 보코더 알고리즘 실행을 위한 스테레오 오디오 인테페이스와 155Mbp s ATM, 10/100-Mbit Ethernet, E1/T1, E3/T3, 4개의 TDM 인터페이스를 제공한다. 이러한 특징은 회로 교환 네트워크(circuit switched network)에서 패킷 교환 네트워크(packet switched network)로의 혁신적인 기술 변화 시대를 이끌고 있다. 온-칩 에뮬레이션(EOn CE) 기능을 갖추고 있는데, 시스템 소프트웨어와 하드웨어를 디버그하기 위해 별도의 에뮬레이션 시스템에 의존함 없이 DSP 내의 자체 디버깅 기능을 보유하므로 훨씬 높은 수준의 제어 및 감시 기능을 제공한다. 따라서 시스템 개발비용 절감 및 개발 보드 진단 기능 향상에 기여할 수 있게 되었다. DSP 프로그램 개발자는 하드웨어 툴에서 개발한 DSP 프로그램을 수행하며 테스트할 수 있고, 하드웨어 엔지니어에게는 귀중한 하드웨어 디자인 참고자료가 되어 빠른 시일 내에 디자인을 성공적으로 완료할 수 있게 도움을 줄 것이다.
종합 개발환경을 제공하는 DSP
수 년 간 신호처리의 응용은 셀룰러 폰, 기지국, 가전용품, 모터 컨트롤과 같은 컨슈머 제품에 사용됐고 통신 세계에 디지털 시대가 열리면서 신호처리 분야는 데이터 통신, 셀룰러, 유무선 통신, 멀티미디어에 수요가 많아지고 있다. DSP를 소프트웨어 측면에서 보면 프로그램 가능한 프로세서로서 언제나 업그레이드 할 수 있다. 또 아키텍처의 발전으로 인해 누구나 쉽게 C 언어를 사용해 프로그래밍 할 수 있고 사용하기 쉬우면서 DSP를 최적화(optimization) 할 수 있는 종합적인 소프트웨어 개발 환경을 제공한다. 코드를 컴파일하는 효율이 좋아져 메모리의 사용을 줄이고 하드웨어 측면에서는 DSP 제조 공정의 발달로 전력 소모량의 절감에 노력하고 있다. SoC(Syste m on a Chip)의 개념으로 DSP에 여러 가지 코프로세서(coprocessor)와 주변 장치(peripheral) 모듈 그리고 대용량의 메모리를 애플리케이션 별로 집적시키고 있으며 코어의 라이선싱 사업이 활발해져 누구나 쉽게 DSP 코어를 구입해 원하는 특별한 애플리