Skip to main content
QUICK REVIEW

[논문 리뷰] hlslib: Software Engineering for Hardware Design

Johannes de Fine Licht, Torsten Hoefler|arXiv (Cornell University)|2019. 10. 10.
Embedded Systems Design Techniques참고 문헌 9인용 수 17
한 줄 요약

hlslib는 고수준 합성(HLS) 개발을 위한 오픈소스 C++ 라이브러리로, 이식 가능한 CMake 통합, 통합된 OpenCL 호스트 코드 추상화, FIFO, 시프트 레지스터, 트리 감소를 위한 하드웨어 최적화된 C++ 템플릿을 제공함으로써 FPGA를 위한 HLS 개발을 향상시킵니다. 이는 하드웨어 인식 추상화와 재사용 가능한, 벤더에 종속되지 않는 코드 패턴을 통해 Xilinx 및 Intel HLS 도구 간의 생산성과 이식성을 향상시킵니다.

ABSTRACT

High-level synthesis (HLS) tools have brought FPGA development into the mainstream, by allowing programmers to design architectures using familiar languages such as C, C++, and OpenCL. While the move to these languages has brought significant benefits, many aspects of traditional software engineering are still unsupported, or not exploited by developers in practice. Furthermore, designing reconfigurable architectures requires support for hardware constructs, such as FIFOs and shift registers, that are not native to CPU-oriented languages. To address this gap, we have developed hlslib, a collection of software tools, plug-in hardware modules, and code samples, designed to enhance the productivity of HLS developers. The goal of hlslib is two-fold: first, create a community-driven arena of bleeding edge development, which can move quicker, and provides more powerful abstractions than what is provided by vendors; and second, collect a wide range of example codes, both minimal proofs of concept, and larger, real-world applications, that can be reused directly or inspire other work. hlslib is offered as an open source library, containing CMake files, C++ headers, convenience scripts, and examples codes, and is receptive to any contribution that can benefit HLS developers, through general functionality or examples.

연구 동기 및 목표

  • 기존 소프트웨어 개발 관행과 하드웨어 인식 추상화를 융합함으로써 FPGA 개발의 생산성 격차를 해소합니다.
  • 벤더별 도구 체인과 수동 빌드 설정으로 인한 복잡성과 이식성 문제를 줄입니다.
  • 기본적으로 수동으로 HLS에서 구현하기 어려우거나 실수하기 쉬운 재사용 가능한 고수준 하드웨어 구조(예: 시프트 레지스터, 트리 감소)를 제공합니다.
  • 추상화 계층과 일관된 인터페이스를 통해 Xilinx 및 Intel HLS 도구 간의 교차 벤더 호환성을 보장합니다.
  • 재사용 가능한 코드, 예제, 하드웨어 최적화 패턴 공유를 위한 오픈소스 플랫폼을 제공함으로써 커뮤니티 기반 개발을 촉진합니다.

제안 방법

  • 플랫폼 간 이식성을 확보하기 위해 커스텀 Find 모듈(FindSDAccel.cmake 및 FindIntelFPGAOpenCL.cmake)을 통한 CMake 통합을 통해 빌드 설정과 종속성을 관리합니다.
  • Xilinx 및 Intel OpenCL API 간의 저수준 차이를 통합된 OpenCL 래퍼를 사용해 추상화하여 명령 큐, 메모리 플래그, 메모리 백업 사양을 처리합니다.
  • hlslib::ShiftRegister과 같은 템플릿 기반 하드웨어 추상화를 구현하여 컴파일 시점에 시프트 레지스터 탭의 버퍼 파artition을 명시적으로 인스턴스화합니다.
  • 가변 인자 템플릿을 사용해 트리 감소의 완전한 하드웨어 파이프라인을 표현함으로써 HLS 도구가 균형 잡힌 이진 트리 구조를 정확히 합성할 수 있도록 보장합니다.
  • 하드웨어 자원에 효율적으로 매핑되며 파이프라인 및 스트리밍을 지원하는 재사용 가능한, 벤더에 종속되지 않는 C++ 컴ponent(예: Stream, DataPack)을 노출합니다.
  • DaCe 및 SMI와 같은 프레임워크 지원을 포함한 실제 사용 사례를 위한 예제 코드와 통합 패턴을 제공하여 종단 간 사용성의 실현 가능성을 입증합니다.

실험 결과

연구 질문

  • RQ1Xilinx Vivado HLS 및 Intel OpenCL와 같은 다양한 FPGA 도구 체인 간에 고수준 합성(HLS) 워크플로우를 어떻게 더 이식성 있고 유지보수 가능하게 만들 수 있는가?
  • RQ2빌드 자동화, 종속성 관리, 추상화와 같은 고수준 소프트웨어 개발 관행이 HLS 개발에 얼마나 효과적으로 적용될 수 있는가?
  • RQ3재사용 가능한, 하드웨어 최적화된 C++ 추상화(예: 시프트 레지스터, 트리 감소)를 이식성 있고 HLS 도구에 의해 효율적으로 합성 가능한 방식으로 어떻게 구현할 수 있는가?
  • RQ4Xilinx 및 Intel OpenCL API 간의 차이를 어떻게 추상화하여 단일 통일된 호스트 코드베이스를 통해 FPGA 커널 개발을 가능하게 할 수 있는가?
  • RQ5고수준 추상화가 HLS로 생성된 하드웨어 설계의 유지보수성, 정확성, 성능에 어떤 영향을 미치는가?

주요 결과

  • hlslib는 Xilinx 및 Intel FPGA 도구 체인 간의 OpenCL 명령 큐, 메모리 플래그, 메모리 백업 사양의 차이를 추상화함으로써 교차 벤더 호환성을 제공합니다.
  • 벤더별 Find 모듈을 통한 CMake 통합은 수동 makefile 대비 프로젝트의 이식성 향상과 구성 오버헤드 감소에 기여합니다.
  • hlslib의 템플릿 기반 ShiftRegister 추상화는 컴파일 시점에 명시적인 시프트 레지스터 탭 인스턴스화를 가능하게 하여 정확한 버퍼 파artition을 보장하고 HLS 도구의 패턴 인식 의존도를 제거합니다.
  • TreeReduce 템플릿은 트리 구조를 명시적으로 인스턴스화함으로써 완전히 파이프라인화되고 균형 잡힌 이진 트리 감소를 보장하여 HLS 컴파일러의 잘못된 최적화나 펼침을 방지합니다.
  • hlslib의 추상화는 이미 실무 프로젝트인 DaCe 및 스트리밍 메시지 인터페이스(SMI)에 통합되어 실용성과 커뮤니티 수용을 입증한 생산 준비 상태의 도구입니다.
  • 재사용 가능한 잘 문서화된 예제와 커뮤니티 기반 개발 모델을 제공함으로써 hlslib는 벤더 도구가 기본적으로 지원하지 않는 최상의 실천 방법론의 도입을 가속화합니다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.