헨델-C

Handel-C
헨델-C
패러다임필수(절차적, 구조적), 동시
설계자옥스퍼드 대학 컴퓨터 연구소
개발자ESL, Celoxica, 민첩성, 멘토 그래픽스
처음 등장한1996
안정된 릴리스
v3.0
타이핑 분야정적, 매니페스트, 공칭, 추론
OS크로스 플랫폼(멀티 플랫폼)
파일 이름 확장자.hcc, .hch
웹 사이트www.mentor.com/products/fpga/handel-c/
주요 구현
Celoxica DK http://192.168.100.187
영향을 받다
C, CSP, ocam

Handel-C는 하위 하드웨어를 대상으로 하는 고급 프로그래밍 언어이며, FPGA 프로그래밍에서 가장 일반적으로 사용됩니다.C의 풍부한 서브셋으로, 병렬화에 중점을 두고 하드웨어 인스턴스화를 제어하는 비표준 확장 기능을 갖추고 있습니다.Handel-C는 최초의 고급 프로그래밍 언어와 마찬가지로 CPU를 하드웨어 설계하는 것입니다.특정 아키텍처를 대상으로 하는 다른 많은 설계 언어와는 달리 Handel-C는 다수의 설계 언어로 컴파일되고 대응하는 하드웨어로 합성될 수 있습니다.이것에 의해, 개발자는 특정의 설계 언어와 아키텍처의 특색이 아니고, 수중에 있는 프로그래밍 태스크에 집중할 수 있게 됩니다.

기타 기능

C의 서브셋에는 복잡한 알고리즘을 기술하는 데 필요한 모든 공통 C 언어 기능이 포함됩니다.많은 임베디드 C 컴파일러와 마찬가지로 부동소수점 데이터형은 생략되었습니다.부동 소수점 산술은 매우 효율적인 외부 라이브러리를 통해 지원됩니다.

병렬 프로그램

병렬 동작을 기술하는 방법을 용이하게 하기 위해 일부 CSP 키워드를 Occam의 일반적인 파일 구조와 함께 사용합니다.

예를 [1]들어 다음과 같습니다.

 {          ++c;      a = d + e;      b = d + e; } 

채널

채널병렬 스레드 메시지를 전달하기 위한 메커니즘을 제공합니다.채널은 비동기 또는 동기식으로 정의할 수 있습니다(각각 추론된 스토리지 요소가 있거나 없는 경우).동기 채널에 대한 스레드 쓰기는 대응하는 리스닝 스레드가 메시지를 수신할 준비가 될 때까지 즉시 차단됩니다.마찬가지로 수신 스레드는 송신 스레드가 다음 전송을 실행할 때까지 읽기 스테이트먼트를 차단합니다.따라서 [1]스레드를 동기화하는 수단으로 사용할 수 있습니다.

 {     찬스 인트 a; // 동기채널 선언     인트 x;      // 스레드 전송 시작     인식하다 (i = 0; i < > 10; i++) {         a ! i;  // 0 ~ 9 의 값을 순차적으로 채널로 전송합니다.     }      // 스레드 수신 시작     인식하다 (j = 0; j < > 10; j++) {         a ? x;  // 채널에서 변수 x로 10회 읽기를 수행합니다.         지연시키다;  // 연속 읽기 간에 1 클럭 사이클의 지연이 발생함                 // 쓰기 사이에 송신 스레드를 차단하는 효과가 있습니다.     } } 

비동기 채널은 FIFO 형식으로 비동기 채널을 통과하는 데이터에 대해 지정된 양의 스토리지를 제공합니다.이 FIFO는 가득 차지도 비어 있지도 않지만 송신 스레드와 수신 스레드 모두 차단되지 않고 진행될 수 있습니다.단, FIFO가 비어 있는 경우 수신 스레드는 다음 읽기 시 차단됩니다.가득 차면 다음 전송 시 송신 스레드가 차단됩니다.다른 클럭 도메인에 액터가 있는 채널은 준안정성을 완화하기 위해 적어도 하나의 스토리지 요소가 필요하기 때문에 자동으로 비동기화됩니다.

스레드는 동시에 여러 채널(동기 또는 비동기)에서 대기하며 지정된 우선순위의 첫 번째 채널에서 동작하거나 준비되지 않은 경우 선택적으로 대체 경로를 실행할 수 있습니다.

범위 및 변수 공유

선언의 범위는 코드 블록으로 제한됩니다.{ ... }선언된 범위는 선언이 서브블록 [1]내의 범위 내에 있기 때문에 계층적입니다.

예를 들어 다음과 같습니다.

인트 a;  무효 주된(무효) {    인트 b;    /* 'a'와 'b'는 범위 */    {      인트 c;      /* "a", "b", "c"는 범위 */     }    {      인트 d;      /* "a", "b" 및 "d"는 범위 */      } } 

C 언어의 확장

C의 표준 시멘틱스가 프로그램 타이밍에 미치는 영향 외에[1] 다음 키워드는 FPGA 환경의 실용성을 기술하거나 Occam에서 발신된 언어 요소를 위해 예약되어 있습니다.

유형 및 객체 표현. 진술들
찬스 < ... > (타입 구분자) ! (채널로 전송)
채널 [ : ] (비트 범위 선택) ? (채널에서 읽기)
챠우 \\(드롭) 지연시키다
매크로 expr <-(테이크) if select(선택)
외부의 @(연결 연산자) intwidth를 설정하다
외부_외부 선택한다. 들여보내다
인라인
인터페이스 프라이어트
내부의 방출하다
internal_internal_internal 세트 클럭
mram 세트 패밀리
매크로 프로세서 세트 파트
들이받다 세트 리셋
로망 인식하다
세마 {...}을(를) 시도하다} 리셋
공유했습니다. 트리스마
신호. 와 함께
유형
정의되어 있지 않다
입소문

스케줄

Handel-C에서는 assignment 명령어와 delay 명령어가1 사이클을 실시합니다.다른 모든 작업은 "무료"[1]입니다.이것에 의해, 프로그래머는 수동으로 작업을 스케줄 해, 효과적인 파이프라인을 작성할 수 있습니다.올바른 지연과 병행하여 루프를 배치함으로써 파이프라인은 하드웨어 리소스 사용을 증가시키면서 데이터 스루풋을 대폭 향상시킬 수 있습니다.

역사

Handel-C의 역사적 뿌리는 하드웨어 컴파일 그룹에 의해 개발된 일련의 Oxford University Computing Laboratory 하드웨어 기술 언어에 있습니다.Handel HDL은 1996년 초에 Handel-C로 진화했습니다.옥스퍼드에서 개발된 테크놀로지는 1996년 ESL(Embedded Solutions Limited)의 주춧돌 제품으로 성숙하기 위해 분사되었습니다.ESL은 2000년 9월에 Celoxica로 명칭이 변경되었습니다.

Handel-C는 ESL에 의해 출시된 후 많은 University Hardware Research 그룹에 채택되었으며, 그 결과 학계, 특히 영국에서 하드웨어 설계 도구로서 자리매김할 수 있었습니다.

2008년 초, Celoxica의 ESL 비즈니스는 Agility에 인수되어 Handel-C를 지원하는 ESL 툴을 개발 및 판매했습니다.

2009년 초, Agility는 추가 자본 투자 또는[2] 신용 획득에 실패하여 운영을 중단했습니다.

2009년 1월 Mentor Graphics는 Agility의 C 합성 [3]자산을 인수했습니다.

비슷한 시기에 개발된 다른 서브셋 C HDL은 1994년 토론토 대학의 트랜스모그리퍼 C(현재의 FpgaC 오픈 소스 프로젝트)와 Los Alamos National Laboratory의 Streams-C(현재는 Impulse C라는 이름으로 Impulse Accelerated Technologies에 라이선스됨)입니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b c d e "Archived copy" (PDF). Archived from the original (PDF) on 2010-03-31. Retrieved 2010-03-31.{{cite web}}: CS1 maint: 제목으로 아카이브된 카피(링크) Handel-C 언어 레퍼런스 매뉴얼
  2. ^ Gabe Moretti (19 January 2009). "Agility DS victim of credit crunch". EETimes.com.
  3. ^ Dylan McGrath (22 January 2009). "Mentor buys Agility's C synthesis assets". EETimes.com.

외부 링크