굿바이, 미스터 DSP! MAC 장치를 사용해 신호 처리 성능을 향상 굿바이, 미스터 DSP! MAC 장치를 사용해 신호 처리 성능을 향상
최혜진 2008-01-29 10:47:03
DSP 코어는 SOC 설계 팀에게 구성 가능형 프로세서 아키텍처에서 성능 이점을 더 이상 제공하지 않는다. 모든 DSP 아키텍처의 좋은 아이디어는 구성 가능형 프로세서의 선택 기능이 되고 있다. 동시에, 구성 가능형 프로세서는 더 우수한 성능을 보유해 제어 코드를 실행하고 더욱 향상된 컴파일러 타깃으로 남겨둔다. DSP는 다양한 성능 향상 아키텍처 기능들을 선도하고 있으며 온-칩 프로세서로 역할을 해온 시간들이 지나가고 있다.

글│스티브 립슨(Steve Leibson), 텐실리카


고전영화 `굿바이, 미스터 칩스(Goodbye, Mr. Chips)`는 소설 속의 영국 부룩필드 학교에서 활동한 고전어 교사 찰스 에드워드(칩스) 치핑의 초기 교사 시절에서부터 노년기까지를 다루고 있다. 영화 결말에서 칩스 교사는 잘 지내온 삶을 마감한다. 미스터 칩스처럼 DSP(Digital Signal Processor)는 온칩 프로세서 코어로써 이미 힘 없는 노년 시기에 접어들고 있다. DSP는 업계의 요구를 충족시켜 왔으나 SoC 기술은 DSP를 넘어서고 있다.

디지털 신호 처리는 현재 주류 기술이다. 따라서 DSP 코어에 최후를 선언한다는 것은 이단자처럼 여겨질 수 있다. 음성에서 음악, 스틸 이미지, 비디오에 이르기까지 모든 종류의 미디어 프로세싱은 DSP 기능을 요구한다. DSP는 1980년대 초 그 당시의 범용 프로세서가 당시 신호 처리 작업을 위해 충분한 성능을 제공할 수 없었기 때문에 칩으로 처음 등장했다. 초기 DSP 아키텍처는 작동을 위해 고안된 신호 처리 알고리즘으로 형성되었다. DSP내의 모든 기능은 신호 처리 알고리즘에서 연산을 가속화시킨다.

MAC 추격

초기의 범용 프로세서는 하드웨어 멀티플라이어가 부족해 그 당시엔 수많은 게이트가 상대적으로 사용되었다. 그러나 FIR 앤드 IIR(Finite-and Infinite-Impulse-Response) 필터링과 같은 신호 처리 알고리즘은 멀티플리케이션(Multiplication) 제품에 따르는 멀티플리케이션에 집중되고 있다. 따라서 DSP는 1982년 텍사스 인스트루먼트가 최초의 상업용 DSP (TMS32010)를 성공적으로 출시한 이후 하드웨어 멀티플라이어와 MAC (Multiplier/Accumulator) 장치로 통합되었다.

오늘날, 끊임없는 진보를 이루고 있는 무어의 법칙 덕분에 MAC 장치는 칩에 놓여진 다른 블록들과 관련해 대규모 형태가 아니다. DSP 코어와 범용 프로세서 모두는 MAC 장치를 사용해 신호 처리 성능을 향상시킨다. 텐실리카의 Xtensa 제품군과 같은 구성 가능한 프로세서 코어는 선택형 MAC 장치를 갖고 있다. 타깃 애플리케이션이 MAC 기능을 요구한다면 SOC 설계 팀은 MAC 기능 장치를 포함시킨 것만 요구한다. 결과적으로, 단일 사이클 MAC 장치는 더 이상 DSP를 유일한 특징으로 만들지 않는다. 수많은 프로세서와 프로세서 코어는 DSP를 갖고 있다.


더욱 많은 기능 장치, 더 적은 사이클

신호 처리 알고리즘이 요구하는 높은 연산 조건은 DSP 설계자들에게 병렬형의 독립적 실행 장치를 추가하도록 자극했다. ALU, 시프터(Shifter: 위상변환스위치), 어드레스-생성 장치와 같은 병렬 실행 장치는 DSP 가 더 적은 사이클로 알고리즘의 내부 루프를 실행시킬 수 있게 한다. 수많은 범용 프로세서 코어는 복합적인 병렬 실행 장치를 갖고 있지 않다고 해도 구성 가능한 프로세서는 갖출 수 있다.

이러한 특징은 플라스틱의 컨피규러블 프로세서 아키텍처의 장점들 중의 하나이다. 실제로 덧셈, 시프트(Shift), 바로 옆의 어드레스 연산을 수행하는 퓨즈 명령어가 내부 루프의 속도를 증가시킨다면, 이 명령어는 구성가능한 프로세서의 명령 셋트와 소트프웨어 개발 툴 체인에 쉽게 추가될 수 있다. 하드웨어 멀티플라이어처럼, 병렬 실행 장치는 DSP에서 더 이상 독점적으로 발견되지 않는다. 다른 프로세서들 역시 이러한 장치를 갖는다.


고속 메모리 액세스

고속 연산은 신호 처리 알고리즘이 실행되는 동안 수행되는 유일한 작동이 아니다. 고속 연산 장치는 연산수의 스트림을 필요로 하며 DSP 작동의 결과는 이에 상응하는 결과 스트림을 생성한다. 결과적으로, 신호 처리 연산을 효율적으로 수행하는 프로세서의 성능은 부하/기억장치 대역폭에 맞춰져야 한다.

처음, DSP 설계자들은 사이클 당 멀티플 메모리 접속을 수행해 메모리 대역폭을 증대시키는 비표준형 메모리 아키텍처를 채택했다. 가장 폭넓게 채택된 방식은 하버드 아키텍처(명령어와 연산수를 위한 별도의 메모리)와 XY 메모리 아키텍처이다. XY 메모리 아키텍처는 동시 진행형 데이터-메모리 접속을 수행해 X와 Y 메모리를 하나의 클럭 사이클로 분리시킨다.

신호 처리 알고리즘은 종종 예측 가능한 메모리 접속 패턴을 가진 루프를 포함하고 있다. 특수형 DSP 어드레스-생성 장치는. 포스트-인크리멘트(Post-Increment), 고리형을 갖춘 간접적인 어드레싱과 메모리에 저장된 연산수를 효율적으로 인덱스하는 비트-역전형 어드레싱과 같은 특수 어드레싱 모드를 활용해 예측성을 활용할 수 있다.

이러한 어드레싱 모드는 FIR 필터링과 FFT(Fast Fourier Transform)를 포함해 광범위한 신호 처리 알고리즘을 가속화시킨다. 구성 가능한 프로세서 코어는 알고리즘 실행을 가속화시키는 필수 어드레스-생성 장치를 갖춘 DSP를 위해 개발된 메모리 아키텍처 옵션 모두를 제공한다. 따라서 이러한 특징들은 DSP에 더 이상 유일하지 않다.


성능의 정점

SIMD(Single-Instruction, Multiple-Data) 실행 장치를 이용해 신호 처리 알고리즘의 내부 루프내에서 여러 개의 데이터 단어로 동일한 작동을 독립적으로 실행하는 것도 가능하다. DSP는 복수 어드레스, 멀티플라이어 즉 MAC를 갖춘 SIMD 실행 장치의 특징이 있다.

SIMD 실행이 유용한 알고리즘의 경우, 병렬 연산은 매우 높을 수 있다. 4웨이 혹은 8웨이 SIMD 장치들은 4개 또는 8개의 요소로 각각 내부 루프를 효과적으로 가속화시킬 수 있다. 위에서 논의한 다른 특징들처럼, SIMD 실행 장치는 DSP 단독으로 더 이상 이용할 수 없다. 구성 가능한 코어를 포함해 수많은 프로세서 아키텍처는 성능 향상 특징을 이용한다.

고성능 DSP는 병렬 실행 장치에 대해 각 사이클마다 독립형의 작동을 여러 번 수행하는 VLIW(Very-Long Instruction Word) 장치에 적당하다. VLIW 프로세서는 16비트 대신에 명령어 당 32 혹은 64비트(또는 더 폭넓은)를 갖춘 더 폭넓은 명령어를 요구한다. 이러한 폭넓은 명령어는 코드 블로트(Code Bloat)를 생성한다. 더 폭넓은 프로그램 코드는 대규모 명령어 때문에 단순하게 확장된다. 더 많은 작업이 실행되지 않기 때문이다.

클럭 사이클 당 독립적인 복수 작동을 실행하는 추가적인 기능은 코드 블로트를 초래한다. 예를 들어, 텐실리카의 Xtensa LX 프로세서 코어는 FLIX (Flexible-Length Instruction Extensions)로 불리는 VLIW 기능들을 통합했다. FLIX는 32비트 혹은 64비트 멀티-이슈 작동 번들을 프로세서의 기존 24/16 비트 원래 명령 셋트에 추가시켰다.

컴파일러는 원래 명령의 동일한 씨퀀스보다 더욱 효율적이라면 FLIX 명령을 선택한다. 이것은 루프를 더욱 가속화시킨다. 제어 코드(모든 신호 처리 알고리즘은 이러한 코드로 구성되어 있다)에서, 병렬은 일반적으로 도움이 되지 않아서, 컴파일러는 프로세서의 더 좁은 원래 명령을 선택한다.


그렇다면, 차이점은 무엇인가?

적절한 명령의 자동형 컴파일러 선택은 DSP와 증가된 구성 가능형 프로세서 코어 간의 주요한 차이점에 대한 토론을 이끌어 낸다. 일반적으로, DSP의 특수형의 불규칙하고 복잡한 명령 셋트, 소형 레지스터 파일 및 불규칙 메모리 아키텍처는 컴파일러 타깃을 열악하게 만든다.

그 결과 코드는 상대적으로 비효율적이다. 그 이유는 컴파일러가 C에서 DSP 불규칙 명령어 셋트와 소형 레지스터 보완물로 전환시켜야 하기 때문이다. 신호 처리 알고리즘이 성능 목적을 일반적으로 성능 목표를 만족시키는 효율적인 코드를 요구하기 때문에, 엄청난 프로세싱이 수행되는 내부 루프에서 특히 DSP 코드는 어셈블리 언어를 손으로 작성하곤 한다.

반대로 말하면, 범용 컨피규러블 프로세서는 훌륭한 컴파일러 타깃이다. 컨피규러블 프로세서는 실행형 제어 코드에서 탁월하다. DSP 향상은 신호 처리 알고리즘의 내부 루프 내에서 사용된다.

여기서 컴파일러는 이러한 특수 명령어를 최상을 이용할 수 있다. 적절하게 구현될 때, 이러한 DSP-향상 기능은 컴파일러 코드에 의해 쉽고 효율적으로 이용된다. DSP 향상 컨피규러블 프로세서는 남아있는 우수한 컴파일러 타깃의 부가적인 이점과 함께 DSP의 성능 이점을 제공한다. 이것은 SOC 개발 팀의 전반적인 코드에 대한 부담을 감소시킨다.

정리하면, DSP 코어는 SOC 설계 팀에게 구성 가능형 프로세서 아키텍처에서 성능 이점을 더 이상 제공하지 않는다.

모든 DSP 아키텍처의 좋은 아이디어는 구성 가능형 프로세서의 선택 기능이 되고 있다. 동시에, 구성 가능형 프로세서는 더 우수한 성능을 보유해 제어 코드를 실행하고 더욱 향상된 컴파일러 타깃으로 남겨둔다. 미스터 칩스처럼, DSP는 다양한 성능 향상 아키텍처 기능들을 선도하고 있으며 온-칩 프로세서로 역할을 해온 시간들이 지나가고 있다.


<자료제공: 월간 반도체네트워크 2006년 10월호>

디지털여기에 news@yeogie.com <저작권자 @ 여기에. 무단전재 - 재배포금지>