Skip to main content
QUICK REVIEW

[论文解读] GCC-Plugin for Automated Accelerator Generation and Integration on Hybrid FPGA-SoCs

Markus Vogt, Gerald Hempel|arXiv (Cornell University)|Aug 28, 2015
Embedded Systems Design Techniques参考文献 17被引用 3
一句话总结

本文提出了一款可移植的GCC插件,能够自动识别遗留的、未经修改的嵌入式应用程序中性能关键的C代码部分,并为混合FPGA-SoC平台生成相应的硬件加速器。通过实现无需注释或语言限制的透明硬件/软件划分,该方法在Xilinx Zynq平台上使用标准基准代码实现了高达5.7倍的加速效果。

ABSTRACT

In recent years, architectures combining a reconfigurable fabric and a general purpose processor on a single chip became increasingly popular. Such hybrid architectures allow extending embedded software with application specific hardware accelerators to improve performance and/or energy efficiency. Aiding system designers and programmers at handling the complexity of the required process of hardware/software (HW/SW) partitioning is an important issue. Current methods are often restricted, either to bare-metal systems, to subsets of mainstream programming languages, or require special coding guidelines, e.g., via annotations. These restrictions still represent a high entry barrier for the wider community of programmers that new hybrid architectures are intended for. In this paper we revisit HW/SW partitioning and present a seamless programming flow for unrestricted, legacy C code. It consists of a retargetable GCC plugin that automatically identifies code sections for hardware acceleration and generates code accordingly. The proposed workflow was evaluated on the Xilinx Zynq platform using unmodified code from an embedded benchmark suite.

研究动机与目标

  • 解决C程序员在采用混合FPGA-SoC时面临的高门槛问题,包括复杂的软硬件划分和工具链限制。
  • 克服现有方法的局限性,如需要裸机环境、受限的语言子集或特殊编码注释。
  • 实现在Xilinx Zynq等混合FPGA-SoC平台上的未修改遗留C代码的自动、透明加速。
  • 提供一种与现有软件开发生命周期自然集成的无缝编程流程,无需修改源代码。

提出的方法

  • 开发一款可移植的GCC插件,在编译过程中分析C代码的中间表示(IR)。
  • 利用静态分析和性能启发式方法识别性能关键的代码区域,重点关注计算强度和数据重用性。
  • 使用高层次综合(HLS)后端,从未修改的C代码部分自动生成RTL代码作为硬件加速器。
  • 将生成的硬件模块集成到FPGA结构中,并生成对应的数据传输和控制软件桩。
  • 通过保持C语义和ABI兼容性,确保与标准嵌入式C工具链和现有软件栈的兼容性。
  • 支持在Zynq平台上自动将生成的硬件模块链接到系统镜像和运行时配置中。

实验结果

研究问题

  • RQ1GCC插件能否在无需程序员注释或语言限制的情况下,自动识别并加速性能关键的C代码部分?
  • RQ2从未经修改的C代码自动生成硬件在混合FPGA-SoC平台上能在多大程度上提升性能和能效?
  • RQ3与手动或基于注释的方法相比,所提出的基于插件的工作流在开发人员工作量和加速开销方面表现如何?
  • RQ4在Zynq平台上对真实世界嵌入式基准测试应用该插件时,可实现的加速比和资源利用率如何?
  • RQ5生成的硬件加速器能否无缝集成到现有的软件开发和部署流水线中?

主要发现

  • GCC插件成功识别并加速了未经修改的嵌入式基准测试中的性能关键代码部分,且无需任何源代码修改。
  • 该方法在Xilinx Zynq平台上实现了高达5.7倍的加速,证明了对计算密集型内核具有显著的性能提升。
  • 生成的硬件加速器被正确集成到系统中,数据传输和接口协议均实现自动处理。
  • 该工作流保持了C语义和ABI兼容性,实现了与现有软件栈和工具链的无缝集成。
  • 评估结果表明,该插件在真实世界嵌入式工作负载上表现有效,包括标准基准套件中的应用,在真实部署条件下表现良好。
  • 该方法通过消除对特殊编码实践或底层硬件知识的需求,显著降低了C程序员的入门门槛。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。