FPGA를 활용한 멀티 프로세서 솔루션 구현<2> FPGA를 활용한 멀티 프로세서 솔루션 구현<2>
김재호 2008-01-25 16:52:20

고성능 처리 솔루션을 위해

FPGA를 활용한 멀티 프로세서 솔루션 구현 <2>

새로운 하드웨어 개발 툴, IP 코어 및 FPGA 인프라에 의해 이러한 기술의 주요 응용 분야가 탄생해 왔다. 임베디드 공동체 내에서 이러한 기술이 성공을 거둠에 따라 주요 FPGA 벤더들에 의한 개발 및 성장이 빠른 속도로 진행되고 있다. 이제 이러한 가능성의 상용화 방안을 찾을 시기이다.

글│밥 가레트(Bob Garrett), 알테라

프로세서 성능 설정

임베디드 시스템에 대한 프로세서 성능 요구 사항을 설정하는 일은 특히 애플리케이션 소프트웨어가 유동적인 상황에서는 매우 어려운 문제일 수 있다. 업계 표준 벤치마크가 몇 가지 지침을 제공하기는 하지만 소프트웨어가 완성되기 전까지는 효과가 미흡한 것이 현실이다.

이로 인해 설계자가 성능 저하를 우려하여 필요한 것보다 더 높은 성능을 제공하는 고가의 디바이스를 선택하는 결과를 낳게 된다. 설계자가 필요한 성능을 정확하게 예측할 수 있으면 프로세서 선택이 훨씬 쉬워진다. 그러한 예상에서는 시간이 중요한 작업에 요구되는 성능과 하나 이상의 우선순위가 낮은 작업에 의해 생성되는 부하를 고려한다.

FPGA 기반 임베디드 시스템은 고객 수요를 기준으로 필요에 따라 시스템 성능을 확장할 수 있습니다. FPGA에서 로직으로 변환되는 컴퓨터 사용량이 많은 알고리즘은 마이크로프로세서 또는 디지털 신호 프로세서 사용 시 소프트웨어에서 실행할 때보다 몇 배 더 빠르게 실행할 수 있습니다. 더 중요한 점은, 우수한 성능이 요구되는 알고리즘에 하드웨어 리소스를 사용할 수 있다는 것입니다. 이로 인해 고성능 CPU에 대한 요구가 감소하고 클럭 주파수와 전원 소비가 줄어들며 보드 설계가 간단해집니다.

명령어 세트 확장

여러 프로세서 IP 벤더에서, 하드웨어로 구현된 애플리케이션 고유의 알고리즘을 포함하도록 프로세서의 명령어 세트 확장을 지원하며, 이는 FPGA 구현에도 해당된다. 프로세서의 일반 로드/저장 작업을 사용하여 데이터를 프로세서의 산술 논리 연산 장치(ALU)의 일부가 되는 맞춤형 로직 블록으로 공급할 수 있다. 경우에 따라 맞춤형 명령어는 다중 사이클 작업을 지원할 수 있으며, FIFO 및 메모리 버퍼와 같은 다른 시스템 리소스에 액세스할 수 있다. 맞춤형 명령어가 적용되는 일반적인 예로는 비트 조작 방식의 복잡한 수치 및 논리 연산을 들 수 있다.(그림 3)

맞춤형 명령어는 프로세서 로드 및 저장 작업에 의존하지만 일반적인 ALU 리소스를 사용하여 같은 알고리즘 리소스를 실행하는 것보다 훨씬 성능상의 이점이 크다. 예를 들어 64KByte 버퍼의 CRC(Cyclic Redundancy Check)는 소프트웨어에서 실행할 때보다 맞춤형 명령어로 구현할 경우 27배 더 빠른 실행 속도를 제공한다. 성능 결과는 애플리케이션마다 다르지만 소프트웨어만 사용할 때보다는 훨씬 더 빠른 것이 일반적이다.

개발자가 맞춤형 명령어를 사용하는 방법은 프로세서 IP 벤더에 따라 다르다. 맞춤형 명령어를 추가할 경우에는 새로운 컴파일러의 생성이 필요하다. 그러면 이 맞춤형 컴파일러가 몇몇 애플리케이션 기준에 따라 맞춤형 명령어를 추론한다. 보다 간단한 접근 방법은 사용자가 서브루틴인 것처럼 C 코드에서 명시적으로 명령어를 호출하는 것이다. 맞춤형 명령어를 사용할 최상의 시기는 소프트웨어 설계자가 알고 있기 때문에 보통 이 접근 방법이 더 유용하다.

시스템 성능 개선을 위한 대체 접근 방법

전반적인 시스템 성능 향상을 위해 하드웨어 가속기(예: 코프로세서), 프로세서 컴패니언 칩 또는 맞춤형 SoC를 사용할 수 있다.

맞춤형 명령어와 달리, 하드웨어 가속기는 독립적인 로직 모듈로서 동작하여, 임베디드 CPU로부터 지시를 받으며 CPU 간섭 없이 전체 데이터 버퍼를 처리할 수 있다. 2개의 1/2 DMA 채널(입력 데이터를 읽는 채널 1개와 결과를 저장하는 채널 1개)과 작업 중 CPU가 장치를 설정, 시작, 중지 및 폴링하는 제어 인터페이스가 간단한 블록 다이어그램에 포함된다. 이 아키텍처는 데이터를 로드하고 결과를 저장하는 CPU 프로세스가 성능 병목 현상을 일으키는 대형 데이터 블록이 수반되는 작업에 아주 적합하다.(그림 4)

하드웨어 가속기는 가속 기능이 하드웨어로 설계된다는 사실과 그 자체의 자발성 때문에 소프트웨어 실행 방식보다 훨씬 더 나은 성능을 제공한다. 또한 CPU가 FPGA 내부에 있는지 여부에 관계 없이, FPGA에 연결된 이산 프로세서와 DSP 컴패니언 칩은 하드웨어 가속, 주변기기 확장, 인터페이스 브리징 등의 이점을 활용할 수 있다. FPGA에 포함된 주변기기, 가속 로직 및 I/O 인터페이스에 외부로부터 액세스하기 위해 시중에서 쉽게 구할 수 있는 칩-칩 인터페이스 IP를 사용할 수 있다.

제품 수명 연장을 위한 맞춤형 설계

제품 출시 시기를 앞당기다 보면 초기 버전의 기능과 성능이 예상보다 떨어지는 경우가 종종 생긴다. 그렇다고 해서, 신제품 출시를 지연시켜 얻을 수 있는 것은 그다지 많지 않다. 오히려, 플래시 메모리와 같은 시스템 펌웨어를 업그레이드하여 버그를 수정하거나 기능을 추가하거나 성능을 개선하는 것이 보다 효과적이다. 프로그램 가능한 로직을 사용하여 구축된 시스템은 시스템 소프트웨어를 포함하는 동일한 플래시 장치에 하나 이상의 FPGA 구성 이미지도 포함할 수 있기 때문에 하드웨어 특성 변경이 가능하다. 시스템 구성을 포함하는 플래시 디바이스는 FPGA의 프로세서에 의해 쉽게 작성할 수 있다. 그런 다음 수 밀리초 만에 시스템 하드웨어 업데이트를 위한 재구성을 시작할 수 있다.

네트워크 사용이 가능한 제품은 새 기능 추가, 성능 개선 및 버그 수정을 위해 인터넷을 통해 원격으로 하드웨어를 재구성할 수 있다. FPGA 기반 설계에서 이러한 원격 하드웨어 재구성이 일반화된 것은 채 몇 년이 되지 않았다. 데이터 손상 시 로드되는 㰡안전한㰡‘ 기본 설계와 함께 플래시 메모리에 저장되는 복수의 FPGA 이미지를 기반으로 한 안전한 구조는 시스템 디바이스의 지속적인 작동을 보증해준다. 디바이스가 구성에 실패하는 최악의 경우에는 대신 기본 설계를 로드함으로써 장애를 보고하고 이전처럼 계속 작동할 수 있다.

시스템 연결

프로세서는 메모리, 주변기기, 코프로세서 및 외부 디바이스와 통신해야 한다. 소프트웨어 드라이버는 멀티프로세서가 공유 메모리를 통해 통신할 수 있도록, 제공된 사서함을 활용한다.

여러 가지 복잡한 IP 기능을 연결하면 처음에는 별 것 아닌 것처럼 보이지만 시스템 개발과 성능에 영향을 미칠 수 있는 다양한 문제가 발생할 수 있다. 시스템을 하나로 㰡연결㰡‘하는데 필요한 로직 함수로는 주소 디코더, 데이터 멀티플렉서, 인터럽트 컨트롤러, 대기 상태 생성기, 중재 로직, 버스 폭 크기 조정, 신호 타이밍 및 레벨 매칭, 클럭 도메인 교차 로직 등이 있다.

이러한 IP 함수는 우수한 하드웨어 설계자라면 충분히 활용이 가능하지만 이렇게 가치가 적은 IP 함수에 대한 수작업 코딩 Verilog 또는 VHDL은 좋은 엔지니어링 재능을 낭비하는 것이다. 이와 같은 틀에 박힌 작업은 컴퓨터 자동화를 통해 쉽게 해결할 수 있다. 최신의 FPGA 시스템 생성 툴이 이러한 잡다한 작업을 간단히 처리해 주기 때문에 설계자는 프로젝트의 보다 중요한 측면에 초점을 맞출 수 있다.

전통적인 임베디드 시스템에서 프로세서는 주기적으로 공유 버스에 대한 독점 액세스를 요청하는 다른 㰡마스터㰡‘ 구성 요소와 시스템 버스를 공유한다. 이 인터커넥트 토폴로지는 두 마스터가 동시에 버스에 액세스하려고 할 때 병목 현상을 일으키게 된다. FPGA는 라우팅 리소스가 풍부하므로 마스터가 슬레이브 구성 요소에 대한 전용 멀티플렉싱 데이터 경로를 가질 수 있다.

마스터 중재에서 슬레이브 중재로 바꾸면 두 마스터가 동시에 같은 슬레이브 장치에 액세스하려고 시도하지 않는 한 동시 트랜잭션이 허용된다. 내부 스위치 패브릭은 여러 가지 버스 폭을 갖는 마스터와 슬레이브 간 연결, 다른 클럭 도메인을 갖는 마스터 및 슬레이브 그리고 마스터와 슬레이브 간 지연 시간을 제어한다.(그림 5)

이 스위치 스타일 토폴로지를 사용하면 모든 마스터가 전용 슬레이브 장치와 동시에 통신할 수 있기 때문에 전반적인 시스템 처리량이 크게 향상된다.

FPGA 디바이스 사용의 이점

이산 프로세스와 비교할 때, FPGA 디바이스에 복수의 소프트 프로세서를 사용하면 작업을 시간과 파워 요구 사항에 따라 분할하여 처리 용량을 보다 효율적으로 이용할 수 있으며 전체 성능을 비슷한 수준으로 유지하거나 더 높일 수 있다. 또한 복수의 소프트 프로세서를 Divide-and-Conquer 전략(대상 FPGA의 로직 및 메모리 리소스에 의해서만 제한됨)으로 사용하여 전체 시스템 성능을 높이거나 기존 프로세서로부터 작업을 오프로드 할 수 있다.

새로운 하드웨어 개발 툴, IP 코어 및 FPGA 인프라에 의해 이러한 기술의 주요 응용 분야가 탄생해 왔다. 임베디드 공동체 내에서 이러한 기술이 성공을 거둠에 따라 주요 FPGA 벤더들에 의한 개발 및 성장이 빠른 속도로 진행되고 있다. 이제 이러한 가능성의 상용화 방안을 찾을 시기이다.

 

<기사제공: 월간 반도체네트워크 2006년 04월호>

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