异构FPGA系统高级综合生态系统的分类学

《ACM Transactions on Reconfigurable Technology and Systems》:A Taxonomy of the High-Level Synthesis Ecosystem for Heterogeneous FPGA Systems

【字体: 时间:2025年11月07日 来源:ACM Transactions on Reconfigurable Technology and Systems

编辑推荐:

  该调查分析了FPGA异构系统中HLS(高层次合成)相关工具的分类与统一框架FS-HLS,指出HLS通过提升抽象层次解决硬件设计复杂度问题,但面临性能优化与系统集成的挑战。FS-HLS框架整合了SynL(可综合语言)、中间件、后端工具及运行时系统,并首次提出基于应用场景的HLS分类方法,涵盖传统合成、加速器为中心的合成及混合编程模型工具。研究进一步对比了MLIR、CIRCT等编译基础设施,以及AutoScaleDSE、PyLog等DSE工具的性能优化策略,最后提出统一工具流对异构系统开发的实际意义。

  随着摩尔定律逐渐接近其极限,领域特定硬件加速器成为维持性能和效率提升的关键路径之一。尽管领域特定加速器在特定任务上表现出卓越的性能和效率,但它们的开发和优化过程却相对繁琐,导致其在异构FPGA系统中的应用受到一定限制。为了克服这些挑战,FPGA(现场可编程门阵列)的高阶综合(High-Level Synthesis, HLS)工具逐渐成为一种重要解决方案。HLS工具通过将软件语言转换为可综合的硬件描述语言(HDL),使开发人员能够以更高的抽象级别进行设计,从而提升生产力。然而,当前HLS相关工具的分类和设计方法仍存在一定的混乱,使得研究者难以统一评估和比较这些工具。因此,本文旨在建立一个明确的HLS分类体系,并提出一种新的综合框架——FullStack-HLS(FS-HLS),以更好地适应异构FPGA系统的开发需求。

### 1. 异构FPGA系统中的HLS

HLS作为一种工具链,其核心目标是将软件编程语言转换为可执行的硬件描述,从而降低硬件设计的复杂性。传统的HLS工具通常依赖于C或C++语言,通过添加特定的指令(directives)来指导综合过程,以生成优化的硬件结构。然而,随着FPGA硬件的演进,尤其是FPGA System-on-Chips(SoCs)的出现,开发人员需要更灵活和高效的工具来应对异构系统中的多组件协同设计。因此,HLS相关工具的发展逐渐从单一的综合流程转向更复杂的架构,包括系统级集成、领域特定语言(DSL)和中间件等。

在异构FPGA系统中,开发人员需要将一个原本可能是顺序执行的程序调整为适合FPGA的并行设计。这通常涉及到对程序进行划分,确定哪些部分需要加速,以及如何将这些部分映射到FPGA的硬件资源。传统的HLS流程通常包括解析、源代码优化、构造控制和数据流图(CDFG)、分配、调度、绑定和生成HDL代码等多个阶段。然而,这种流程对于异构系统而言并不完全适用,因为其需要更多的系统级集成和协调。

为了应对这一挑战,近年来出现了多种新的HLS相关工具。这些工具不仅提供更高的抽象级别,还引入了更智能化的设计方法,如领域空间探索(Domain Space Exploration, DSE)和中间件(Middleware)等。例如,ScaleHLS利用MLIR(多级中间表示)作为其核心框架,支持多种输入语言,并通过自定义优化和DSE引擎来提高设计的效率。SODA-OPT同样基于MLIR,它通过将输入程序分解为适合FPGA加速的代码段,并利用DSE引擎对这些代码段进行优化,以生成高效的目标代码。POLSCA则专注于多维优化,通过将代码转换为MLIR的抽象表示,并应用多阶段的优化策略,进一步提高FPGA设计的性能。

此外,HeteroCL作为一种多范式编程语言,支持将算法描述与优化策略分离,从而提高开发的灵活性和可移植性。它结合了类似DSL的数据流编程风格和简化的Python语言,允许开发人员以更高级的方式表达计算流程。PyLog则专注于将Python代码转换为HLS C代码,并利用DSE引擎对优化参数进行搜索,以找到满足资源约束的最佳设计。TAPA则通过引入任务级并行模型,使得开发人员能够以更直观的方式组织计算任务,并利用自动生成的OpenCL代码来实现与主机代码的无缝集成。

这些工具的设计思路各有不同,但它们的共同目标是简化异构FPGA系统的开发流程,提高设计的效率和可移植性。例如,Merlin Compiler通过引入类似OpenMP的优化指令,使得开发人员能够更轻松地指定硬件设计的意图,从而减少对底层硬件知识的依赖。Intel oneAPI Toolkits则利用SYCL作为其统一的编程模型,使得开发人员可以在同一套代码中实现对多种硬件(如FPGA、GPU和CPU)的优化。

### 2. 低级可综合语言(LLL)

低级可综合语言(LLL)通常指的是与FPGA硬件高度相关的编程语言,如HLS C/C++。这些语言通常不支持动态内存管理或递归等高级特性,因此它们的开发和优化需要开发人员对FPGA架构有深入的理解。例如,VHLS(Vitis HLS)是一种由AMD Xilinx提供的HLS工具,它接受HLS C/C++作为输入,并通过一系列指令(如PIPELINE、UNROLL、LOOP FLATTEN等)来指导综合过程。这些指令允许开发人员对硬件设计进行微架构级别的优化,从而提高性能和效率。

然而,LLL语言的使用仍然存在一定的局限性。一方面,它们的开发和优化需要大量的专业知识;另一方面,由于每个LLL语言的实现方式不同,开发人员需要在不同的工具链之间切换,增加了开发的复杂性。因此,近年来出现了许多基于LLL的中间件工具,如PandA Bambu HLS Framework和Stratus HLS,它们旨在提供更灵活和可扩展的解决方案。这些工具不仅支持HLS C/C++,还能够接受其他语言,如OpenCL或SystemC,从而降低开发门槛。

尽管LLL语言在性能方面具有优势,但它们的可编程性较低,使得开发人员在面对复杂的硬件设计时感到困难。因此,许多HLS相关工具开始探索更高级的抽象层次,以提高开发效率。例如,Merlin C/C++作为一种LLL语言,通过引入更简洁的优化指令,使得开发人员能够更轻松地指定硬件设计的意图。同样,Intel的IHLS Compiler也在尝试通过优化指令的简化来提高开发效率。

### 3. 高级可综合语言(HLL)

高级可综合语言(HLL)则是在LLL的基础上进一步抽象化,使得开发人员能够以更接近软件编程的方式进行FPGA设计。这些语言通常包含更多的软件开发特性,如面向对象编程、动态内存管理等,从而提高代码的可读性和可维护性。例如,SYCL作为一种基于C++的HLL,提供了一种统一的编程模型,使得开发人员可以在同一套代码中实现对多种硬件(如FPGA、GPU和CPU)的优化。SYCL通过引入类似于OpenCL的指令,使得开发人员能够以更简洁的方式表达并行计算任务。

此外,HLL语言还能够与DSE技术相结合,以实现更智能的优化。例如,SODA-OPT通过将代码段分解为适合FPGA加速的部分,并利用DSE引擎对这些部分进行优化,以找到最佳的设计方案。PyLog则通过引入基于Python的高级语言,使得开发人员能够以更直观的方式表达计算流程,并利用DSE引擎对优化参数进行搜索,以找到满足资源约束的最佳设计。

HLL语言的另一个优势是它们能够与现代软件编程语言相结合,从而提高代码的可移植性和可维护性。例如,HeteroCL作为一种多范式语言,结合了类似DSL的数据流编程风格和简化的Python语言,使得开发人员能够以更灵活的方式表达计算任务。这些语言不仅提高了开发效率,还使得FPGA设计能够更容易地适应不同的硬件架构。

### 4. 中间件(Middleware)与编译基础设施

中间件(Middleware)是HLS相关工具的重要组成部分,它能够将高级语言转换为低级可综合语言,并在转换过程中应用优化策略。例如,Merlin Compiler利用ROSE作为其编译基础设施,使得开发人员能够通过自定义的优化指令来指定硬件设计的意图。ROSE是一个开源的编译基础设施,支持C/C++、Fortran、OpenMP等语言,并提供丰富的API来实现代码转换和分析。

近年来,MLIR(多级中间表示)作为一种新型的编译基础设施,逐渐成为HLS相关工具的主流选择。MLIR允许开发人员在不同的抽象层次上进行代码转换和优化,从而提高开发效率。例如,ScaleHLS和HeteroCL都基于MLIR,它们通过引入不同的中间表示(dialects)来实现更灵活的优化。这些dialects不仅支持HLS C/C++,还能够与OpenCL、SystemC等语言相结合,从而降低开发门槛。

MLIR的另一个优势是它能够支持多种优化策略,如基于模型的DSE和基于黑盒的DSE。例如,ScaleHLS通过MLIR的dialects实现了一种基于模型的DSE,使得开发人员能够更高效地探索设计空间。而SODA-OPT则通过将代码段分解为适合FPGA加速的部分,并利用DSE引擎对这些部分进行优化,以找到最佳的设计方案。这些中间件工具不仅提高了开发效率,还使得HLS相关工具能够更灵活地适应不同的硬件架构。

### 5. 领域空间探索(DSE)

领域空间探索(DSE)是HLS相关工具中的一个重要组成部分,它能够帮助开发人员找到最佳的硬件设计参数,以实现性能和资源的最优平衡。传统的DSE方法通常基于模型,通过分析优化对设计性能的影响来指导综合过程。例如,FLASH是一种快速的模拟器,它能够在不进行完整综合的情况下,快速估算FPGA设计的性能指标。这种方法虽然提高了效率,但可能无法覆盖所有可能的优化选项。

另一方面,基于黑盒的DSE方法则依赖于实际的综合结果来构建模型。例如,FCUDA通过分析CUDA代码的性能指标,利用学习算法来预测最佳的设计参数。这种方法虽然能够更准确地反映实际的硬件行为,但需要大量的计算资源来构建模型。此外,一些DSE方法还结合了迭代优化策略,如AutoScaleDSE和AutoDSE,它们通过不断调整设计参数,逐步优化硬件设计。

尽管DSE方法在提高FPGA设计的效率方面取得了显著进展,但仍存在一些挑战。例如,DSE方法需要大量的计算资源来构建模型,这可能限制了其在大规模设计中的应用。此外,DSE方法的优化策略可能过于依赖特定的硬件架构,使得其在跨平台设计中的适用性受到限制。因此,未来的研究方向可能包括开发更通用的DSE方法,以及探索更高效的模型构建技术。

### 6. 运行时系统(Runtime)

运行时系统(Runtime)是HLS相关工具中的另一个关键组件,它负责管理FPGA加速器的执行和数据传输。目前,XRT(Xilinx Runtime)和OpenCL是两种主要的运行时系统。XRT是由AMD Xilinx提供的开源软件栈,它通过C/C++和OpenCL接口,使得开发人员能够更方便地使用其FPGA设备。XRT支持多种内存管理方式,包括基于PCIe的设备和嵌入式平台的直接内存共享。

OpenCL作为一种跨平台的并行编程框架,同样被广泛应用于FPGA加速器的运行时管理。它提供了一种统一的编程模型,使得开发人员能够在不同的硬件设备上实现相同的计算任务。SYCL则是OpenCL的高级封装,它通过引入更简洁的编程接口,使得开发人员能够更高效地编写并行代码。这些运行时系统不仅提高了FPGA加速器的使用效率,还使得开发人员能够更灵活地管理硬件资源。

然而,当前的运行时系统仍然存在一定的局限性。例如,XRT和OpenCL的运行时接口可能较为复杂,使得开发人员在使用过程中需要更多的专业知识。此外,这些运行时系统可能无法完全覆盖所有可能的硬件配置,从而限制了其在异构系统中的应用。因此,未来的研究方向可能包括开发更简单的运行时接口,以及探索更通用的运行时系统,以适应不同的硬件架构。

### 7. 总结与展望

综上所述,HLS相关工具在异构FPGA系统的开发中发挥着越来越重要的作用。这些工具通过引入更高级的编程模型、中间件和DSE技术,使得开发人员能够以更高的抽象级别进行设计,从而提高生产力和可移植性。然而,当前的HLS相关工具仍然存在一些挑战,如对不同硬件架构的支持不足、运行时系统的复杂性以及DSE方法的局限性。

未来的研究方向可能包括以下几个方面:首先,开发更通用的HLS相关工具,以支持多种硬件架构;其次,优化运行时系统,以提高其在异构系统中的适用性;最后,探索更高效的DSE方法,以实现更全面的性能和资源优化。此外,随着MLIR等新型编译基础设施的不断发展,HLS相关工具可能会进一步整合这些基础设施,以提高开发效率和代码质量。

总之,HLS相关工具的持续发展为异构FPGA系统的开发提供了新的可能性。通过结合高级编程语言、中间件和DSE技术,这些工具能够显著降低开发难度,提高设计效率,并实现更优的性能和资源利用。未来,随着更多研究的深入和技术的进步,HLS相关工具有望在异构计算领域发挥更大的作用。
相关新闻
生物通微信公众号
微信
新浪微博
  • 急聘职位
  • 高薪职位

知名企业招聘

热点排行

    今日动态 | 人才市场 | 新技术专栏 | 中国科学人 | 云展台 | BioHot | 云讲堂直播 | 会展中心 | 特价专栏 | 技术快讯 | 免费试用

    版权所有 生物通

    Copyright© eBiotrade.com, All Rights Reserved

    联系信箱:

    粤ICP备09063491号