임펄스 C

Impulse C
공동 개발자
설계자임펄스 가속 기술
개발자임펄스 가속 기술
첫 등장2003
안정적 해제
3.60.a.8 / 2009-09-30
OSFPGA 및 관련 임베디드 프로세서
면허증임펄스 가속 기술에 의해 판매 및 배포된 FPGA 컴파일러
웹사이트www.ImpulseC.com[데드링크]
영향을 받은
C 프로그래밍 언어, 스트림-C

임펄스 C병렬 프로그래밍지원하는 C 호환 기능 라이브러리와 결합된 C 프로그래밍 언어의 하위 집합이며, 특히 FPGA 장치를 대상으로 하는 응용 프로그램의 프로그래밍을 위한 것이다.미국 워싱턴주 커클랜드의 임펄스 액셀러레이티드 테크놀로지스가 개발했다.null

개요

고준위 합성 도구 CoDeveloper는 FPGA 기반 애플리케이션의 개발을 목적으로 하는 임펄스 C 컴파일러 및 관련 기능 라이브러리를 포함한다.임펄스 C는 표준 ANSI C와 호환돼 FPGA를 겨냥한 애플리케이션 설계 및 디버깅에 표준 C 도구를 사용할 수 있다.임펄스 C 컴파일러는 C의 서브셋을 받아들여 HDL(Hardware Description Language) 파일 형태로 FPGA 하드웨어를 생성한다.임펄스 C는 임베디드 시스템 설계자와 소프트웨어 프로그래머가 C언어 애플리케이션 가속을 위해 FPGA 장치를 대상으로 할 수 있도록 한다.null

임펄스 C는 혼합 프로세서 및 FPGA 플랫폼에 병렬 프로그래밍 모델을 제공한다는 점에서 표준 C와 구별된다.이를 위해 임펄스 C는 기능 및 데이터 유형의 형태로 C에 대한 확장을 포함하며, 프로그램 가능한 FPGA 하드웨어와 함께 표준 프로세서를 포함할 수 있는 거친 갈림 병렬 아키텍처에 표준 C로 작성된 애플리케이션을 매핑할 수 있다.null

임펄스 C 도구는 하드웨어/소프트웨어 공동 시뮬레이션 도구뿐만 아니라 FPGA 로직 합성 도구를 통해 하드웨어에 애플리케이션 요소를 매핑하는 데 사용되는 C-to-RTL 스케줄링/최적화 기술을 포함한다.null

프로그래밍 모델

임펄스 C는 디버거, 프로파일러와 같은 표준 C 도구와 호환성을 유지하면서 통신 순차 프로세스(CSP) 프로그래밍 모델의 변형을 지원한다.임펄스 C는 데이터 흐름 중심의 스트리밍 애플리케이션을 위해 설계되었지만, 통신 메커니즘으로서 공유 메모리를 사용하는 것을 포함한 대체 프로그래밍 모델을 지원하도록 설계되었다.null

임펄스 C 스트리밍 애플리케이션에서 하드웨어와 소프트웨어 프로세스는 주로 하드웨어에서 직접 구현되는 버퍼링된 데이터 스트림을 통해 통신한다.컴파일러에 의해 생성된 듀얼 클럭 FIFO를 사용하여 구현되는 이 데이터 버퍼링은 그렇지 않으면 필요할 사이클별 동기화가 없이도 비교적 높은 추상화 수준에서 병렬 애플리케이션을 작성할 수 있게 한다.null

임펄스 C를 이용하여 애플리케이션을 분할하여 하드웨어와 소프트웨어 구성요소로 분할하거나 FPGA 장치 내에서 전체적으로 구현되는 다중 프로세스 구현을 만들 수 있다.예를 들어, 이미지 필터링 애플리케이션은 하나 이상의 C 서브루틴을 사용하여 각각 설명한 병렬 파이프라인 프로세스의 집합으로서 임펄스 C를 사용하여 설명할 수 있다.null

예를 들어 임베디드 FPGA 프로세서의 소프트웨어 측면에서는 임펄스 C 라이브러리 기능을 사용하여 데이터 스트림을 열고 닫고 스트림에 대한 데이터를 읽거나 쓰고, 원하는 경우 결과를 위해 상태 메시지나 폴링을 전송한다.프로세서와 FPGA 간 통신의 경우 스트림 읽기 및 쓰기를 FPGA별, 내부 또는 외부 버스 인터페이스를 이용하는 작업으로 지정할 수 있다.null

어플리케이션의 하드웨어 측면에서는 임펄스 C 라이브러리 기능과 기타 C문을 컴파일하여 합성 가능한 HDL 파일의 형태로 동등한 병렬 하드웨어 구현을 생성한다.이러한 파일은 FPGA 도구에 의해 처리되어 FPGA 하드웨어 비트맵을 생성한다.null

임펄스 C 스트리밍 프로그래밍 모델의 중심에는 프로세스와 스트림이 있다.프로세스는 독립적으로 동기화되어 애플리케이션의 세그먼트를 동시에 실행한다.하드웨어 프로세스는 표준 C의 서브셋을 사용하여 작성되며 데이터를 수용하고 계산을 수행하고 출력을 생성하여 애플리케이션의 작업을 수행한다.일반적인 애플리케이션에서 데이터는 버퍼링된 스트림을 통해 프로세스에서 프로세스로, 또는 경우에 따라 메시지 및/또는 공유 메모리를 통해 흐른다.생성된 FIFO의 폭과 깊이를 포함한 각 스트림의 특성은 C 애플리케이션에서 지정할 수 있다.null

적용들

임펄스 C는 임베디드 시스템이미지 처리디지털 신호 처리를 포함한 애플리케이션뿐만 아니라 재무 분석, 생물정보학, 과학 컴퓨팅을 포함한 고성능 컴퓨팅 애플리케이션의 가속화에 사용된다.null

대상 플랫폼

임펄스 C는 사용 가능한 소프트 코어 프로세서와 하드 코어 프로세서인 알테라 니오스 II자일린마이크로블레이즈파워PC를 포함하여 자일린스와 알테라의 FPGA를 지원한다.null

참조

외부 링크