Skip to main content
QUICK REVIEW

[논문 리뷰] Enabling FPGAs for the Masses

Janarbek Matai, Dustin Richmond|arXiv (Cornell University)|2014. 08. 20.
Embedded Systems Design Techniques참고 문헌 19인용 수 10
한 줄 요약

이 논문은 일반 소프트웨어 프로그래머가 FPGA 개발을 위해 고수준 합성(HLS) 도구를 효과적으로 사용할 수 있도록 하기 위해 품질 결과(QoR)를 향상시키는 코드 재구조화 기법을 연구함으로써 방법론을 제안한다. 최신 HLS 도구를 위한 C/C++ 커널을 어떻게 리팩터링할 수 있는지 보여주며, 비전문가를 위한 하드웨어 프로그래밍 모델을 구축하는 데 있어 핵심 과제를 밝히고, FPGA 프로그래밍의 진입 장벽을 낮추기 위한 실용적 예시를 제공한다.

ABSTRACT

Implementing an application on a FPGA remains a difficult, non-intuitive task that often requires hardware design expertise in a hardware description language (HDL). High-level synthesis (HLS) raises the design abstraction from HDL to languages such as C/C++/Scala/Java. Despite this, in order to get a good quality of result (QoR), a designer must carefully craft the HLS code. In other words, HLS designers must implement the application using an abstract language in a manner that generates an efficient micro-architecture; we call this process writing restructured code. This reduces the benefits of implementing the application at a higher level of abstraction and limits the impact of HLS by requiring explicit knowledge of the underlying hardware architecture. Developers must know how to write code that reflects low level implementation details of the application at hand as it is interpreted by HLS tools. As a result, FPGA design still largely remains job of either hardware engineers or expert HLS designers. In this work, we aim to take a step towards making HLS tools useful for a broader set of programmers. To do this, we study methodologies of restructuring software code for HLS tools; we provide examples of designing different kernels in state-of-the art HLS tools; and we present a list of challenges for developing a hardware programming model for software programmers.

연구 동기 및 목표

  • 비하드웨어 전문가들이 고수준 합성(HLS) 도구를 효과적으로 사용할 수 있도록 하여 FPGA 개발의 전문성 장벽을 낮추기 위해.
  • 소프트웨어 프로그래머가 저수준 FPGA 구현 세부사항에 깊이 몰입하지 않더라도 효율적인 하드웨어 아키텍처를 생성할 수 있도록 하는 방법을 탐구하기 위해.
  • 소프트웨어 개발자를 위한 맞춤형 하드웨어 프로그래밍 모델을 설계하는 데 있어 핵심 과제를 규명하고 해결하기 위해.
  • HLS 도구에서 품질 결과(QoR)를 향상시키는 데 기여하는 실용적 코드 재구조화 기법을 보여주기 위해.
  • 체계적인 방법론을 통해 고수준 소프트웨어 프로그래밍과 효율적인 FPGA 하드웨어 생성 간 격차를 메우기 위해.

제안 방법

  • HLS 도구에 적합한 하드웨어 최적화 형태로 고수준 C/C++ 코드를 변환하기 위해 코드 재구조화 기법을 분석하고 적용하기 위해.
  • 최신 HLS 도구에서 다양한 커널 구현을 평가하여 성능 및 자원 활용도를 분석하기 위해.
  • 구조화된 코드 변환을 통해 고수준 소프트웨어 추상화를 효율적인 하드웨어 마이크로아키텍처로 매핑하기 위해.
  • 메모리 접근 패턴과 데이터플로우 구조화 등 QoR에 영향을 주는 HLS 코드의 패턴과 악성 패턴을 식별하기 위해.
  • 저수준 하드웨어 지식이 없이도 HLS 우아한 코드를 작성할 수 있도록 이끄는 설계 방법론을 개발하기 위해.
  • HLS 도구에서 효율적이고 이식 가능하며 고성능 코드를 작성하기 위한 최선의 실천 방법 프레임워크를 제시하기 위해.

실험 결과

연구 질문

  • RQ1고수준 소프트웨어 코드를 어떻게 체계적으로 재구조화하여 고수준 합성(HLS) 도구에서의 품질 결과(QoR)를 향상시킬 수 있는가?
  • RQ2일반 소프트웨어 프로그래머가 FPGA 개발을 위해 효과적으로 HLS 도구를 사용할 수 있도록 하기 위한 핵심 과제는 무엇인가?
  • RQ3C/C++에서 효율적인 하드웨어 구현을 이끄는 설계 패턴과 코드 구조는 무엇인가?
  • RQ4비전문가용 FPGA 사용자를 고려할 때 소프트웨어 개발과 하드웨어 아키텍처 사이의 추상화 격차를 어떻게 줄일 수 있는가?
  • RQ5HLS를 통해 고수준 응용 코드를 최적화된 FPGA 마이크로아키텍처로 변환하는 데 있어 핵심 요소는 무엇인가?

주요 결과

  • 코드 재구조화는 하드웨어 전문 지식 없이도 성능 향상과 자원 활용도 향상에 기여하는 QoR를 크게 향상시킨다.
  • 루프 편집, 데이터 병렬성, 메모리 접근 최적화 등의 특정 C/C++ 코딩 패턴이 생성된 하드웨어의 효율성에 직접적인 영향을 미친다.
  • 저수준 하드웨어 인식 코딩 실천 방법에 대한 지침 없이도 경험이 많은 소프트웨어 개발자조차 최적의 FPGA 설계를 생성하는 데 어려움을 겪는다.
  • 고수준 소프트웨어 추상화와 효율적인 하드웨어 구현 간 격차는 광범위한 FPGA 채택을 위한 주요 장벽으로 남아 있다.
  • 체계적인 코드 재구조화 방법론은 소프트웨어 프로그래머가 경쟁적인 성능을 달성할 수 있도록 HLS 우량 코드를 작성하는 데 도움이 된다.
  • 본 연구는 소프트웨어 개발자들이 접근 가능한 하드웨어 프로그래밍 모델 설계를 위한 실용적 가이드라인과 과제를 규명했다.

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

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

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

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