더 빠르고 더 유연한 임베디드 시스템 설계의 해법 |
더 빠르고 더 유연한 시스템 설계에 대한 요구는 끊임없이 증가하고 있다. 오늘날의 개발 환경에서는 코프로세싱 및 커스터마이제이션은 물론 모든 시스템 옵션을 이해하고 여러 유형의 프로세서 코어를 지원할 수 있는 `플랫폼 인식`이 가능한 설계 툴을 필요로 한다. 프로그래머블 플랫폼 FPGA 디바이스와 지능형 툴을 결합하면 보다 빠르고 유연한 고성능의 프로세싱 솔루션을 구현할 수 있다. 글│제이굴드(Jay Gould), 자일링스 |
더 빠르고 더 유연한 시스템 설계에 대한 요구는 끊임없이 증가하고 있다. 따라서 미래의 임베디드 시스템 설계에서는 고성능에 대한 요구와 빠르게 변화하는 산업표준을 수용할 수 있는 새로운 수준의 커스터마이제이션이 필요하다. 플랫폼 FPGA는 온 보드 메모리를 비롯해 DSP와 임베디드 프로세서 및 하드웨어 가속 코프로세싱을 지원하는 프로그래머블 SOC로 제품이 출시된 이후에도 재프로그램 및 필드 업그레이드가 가능해 버그 수정은 물론 기능 향상 및 성능 최적화, 그리고 새로운 산업표준을 추가할 수도 있다. 이러한 강력한 기능들은 프로그래머블 SoC 디바이스에 이미 통합되어 있으며, 우리에게 필요한 것은 이러한 임베디드 성능을 실행시킬 수 있는 최적의 툴이다.
지능형 툴 및 XPS 최근의 조사자료에 따르면 설계 엔지니어들은 디바이스나 운영시스템 보다 지능형 툴에 더 많은 가치를 두고 있음을 알 수 있다. 따라서 임베디드 시스템을 설계하기 위해 적절한 툴을 선택하는 것은 제품 개발 일정은 물론 전체적인 성공여부를 결정하는 중요한 요소가 되고 있다. 오늘날의 개발 환경에서는 코프로세싱 및 IP 생성과 커스터마이제이션은 물론 모든 시스템 옵션을 이해하고 여러 유형의 프로세서 코어를 지원할 수 있는 `플랫폼 인식`이 가능한 설계 툴이 필요하다. 설계 마법사와 자동 모듈 생성과 같은 기능은 오류를 줄이고 개발과정을 보다 원활하게 해 주며, 하드웨어와 디버거 소프트웨어의 통합은 버그의 신속한 발견과 수정을 가능하게 해 준다. 이러한 지능형 툴은 개발을 가속화하고 성능을 최적화할 수 있다. 자일링스는 플랫폼 FPGA를 위해 XPS(Xilinx Platform Studio) 툴 수트를 개발했으며, 하드웨어(HDL/ FPGA용 넷리스트)와 임베디드 소프트웨어 디자인(프로세싱 코어 엔진을 위한 C/ELF 코드)을 위한 기존 플로우를 지원하고 있다.(그림 1) XPS가 제공하는 임베디드 시스템 개발을 가속화시키는 새로운 기능들은 그 성과를 인정받아 IEC(International Engineering Consortium)의 DesignVision 혁신상을 수상하기도 했다. XPS와 같은 플랫폼 인식 툴을 사용할 경우, 설계 마법사의 개념화 플로우를 통해 실시간으로 하드웨어/소프트웨어 시스템을 빠르게 생성할 수 있다. 설계 마법사는 기본 시스템 생성 과정을 안내하는 것은 물론 설계자가 초기에 설정한 전제조건에서 제외되는 설계 옵션 등을 차단함으로써 오류를 줄여준다. 또한 IP 이식이나 생성, 커스터마이징과 같은 작업도 개별적인 설계 마법사를 통해 원활하게 수행할 수 있으며, IP의 용이한 재사용을 위해 IP 저장소도 지원하고 있다. 이 밖에도 XPS는 번거롭고 오류가 발생하기 쉬운 수동 설계 단계를 대체할 수 있는 다양한 자동 생성기를 통해 개발과정을 효율적으로 가속화시킬 수 있다. XPS는 플랫폼 FPGA 실리콘 특성과 옵션을 인식할 수 있으므로 채택한 주변장치에 맞는 소프트웨어 드라이버와 보드 옵션을 위한 샘플 테스트 코드 등을 자동으로 생성시켜 준다. 또한 XPS는 C 코드를 FPGA 비트 스트림 안에 통합시킬 수 있는 고유의 유틸리티(Data2Mem)를 제공하고 있어 시간 소모적인 FPGA P&R(Place and Route) 툴을 재실행하지 않고도 소프트웨어 개발 및 디버깅을 실시간으로 처리할 수 있다.
코프로세싱을 통한 가속
시스템 요건을 대부분 만족시키는 유연한 프로세서 기반 플랫폼을 얻었다면 이제는 성능을 향상시키는 것이 중요하다. 설계자들은 프로세서의 클럭을 빠르게 하는 것만으로 성능의 모든 문제가 해결되지 않는다는 것을 알고 있다. 더욱이 개별 프로세서의 물리적 한계와 열 소모로 인해 클럭 가속 만으로 코어 프로세서가 실시간으로 모든 이벤트나 애플리케이션 처리를 감당할 수는 없다. 최근에는 메인 유닛의 실시간 실행을 보장하기 우선순위가 낮은 작업을 메인 컨트롤 프로세서로부터 분리시키기 위해 `멀티프로세서` 솔루션이 속속 등장하고 있다. 프로그래머블 플랫폼은 각각의 애플리케이션에 맞게 커스터마이제이션할 수 있는 디바이스와 함께 이러한 문제를 해결할 수 있는 몇가지 추가적인 방법을 제공하고 있다. 플랫폼 FPGA는 하드 및 소프트 프로세서 코어를 모두 지원함으로써 임베디드 하드 프로세서에서는 우선순위가 높은 작업을 집중적으로 처리하고 우선순위가 낮은 작업은 소프트 프로세서 코어로 처리하도록 함으로써 부하를 덜어주는 방법이 있다. 또 다른 방법은 `코프로세싱` 개념을 구현하는 것으로, 지능형 툴을 사용하여 임베디드 PowerPC를 하드웨어 가속 기능을 가지고 있는 고성능 FPGA 패브릭과 직접 연결하는 방법이다. 그림 2에서 보듯이 메인 CPU의 많은 연산을 요하는 애플리케이션 부하를 덜어줌으로써 전체 시스템의 성능을 향상시킬 수 있다. FPGA 하드웨어 패브릭은 특성상 병렬 구조로 되어 있어 클록킹 방법보다 시스템 기능을 수십 배 가속화시킬 수 있다. 예를 들어 PowerPC 코어를 APU(Auxiliary Processor Unit)를 이용해 보완할 경우 데이터 처리, 부동 소수점 연산 및 비디오 처리와 같은 애플리케이션을 병렬 소프트 프로세서와 연결해 처리할 수 있다. 이와 같은 직접 연결 방식은 다른 멀티 코어 프로세서나 버스 조정 솔루션에 비해 병렬처리의 장점과 함께 고대역폭 및 낮은 지연을 구현할 수 있다. 성능 분석
성능저하의 원인을 찾기 위한 임베디드 소프트웨어 디버깅 및 분석작업은 다소 까다롭다. 코드 상에서 모든 요건을 만족하고 있다 하더라도 비동기 인터럽트 및 실제 상황에서 실시간으로 하드웨어를 실행하면 성능이 제대로 나오지 않을 때가 있다. 이러한 경우 지능형 툴을 이용하면 구동 디바이스의 내부를 보여주는 독특한 뷰 기능을 얻을 수 있다. 자일링스 플랫폼 스튜디오(Xilinx Platform Studio) 7.1 버전은 소프트웨어가 정확히 실행되고 있는지, 어디에서 성능 저하가 발생하는지를 파악할 수 있도록 성능 분석 툴과 뷰를 제공한다.(그림 3) 어떤 소프트웨어가 가장 많은 시간을 소모하는지, 그리고 호출 횟수를 포함해 어떤 기능이 다른 기능을 호출하는지를 알면 임베디드 설계에 대한 정확한 실행과정을 파악할 수 있다. 실행 시간이 너무 길거나 다른 루틴에 의해 많이 호출되는 기능들을 코프로세서 역할을 하는 병렬 하드웨어로 이동시키면 성능을 더욱 가속화시킬 수 있다. 이로써 시간 낭비가 많고 원하는 만큼의 성능향상을 이루기 어려운 추측에 기반한 실험 시나리오를 생략할 수 있다. 시간 소모가 많은 루틴을 고성능 FPGA 하드웨어로 이동할 경우 10배의 성능 향상을 가져올 수 있다. 특정 기능 이름별로 코드 실행을 볼 수 있는 지능형 뷰를 사용한다면 어떤 소프트웨어 루틴을 조정해야 하는지 정확하게 알 수 있어 시스템 성능을 훨씬 더 높일 수 있다. 고성능의 병렬 FPGA 하드웨어의 장점과 Virtex-4 FX APU와 같은 사용하기 쉬운 프로그래머블 코프로세싱 기술을 이용하면 더 빠르고 더 유연한 임베디드 프로세싱 시스템을 구현할 수 있다. <자료제공: 월간 반도체네트워크 06년 03월호> |