Page 112 - 《软件学报》2020年第10期
P. 112

3088                                  Journal of Software  软件学报 Vol.31, No.10, October 2020

         据库处理、网络通信、虚拟化支持等等.利用专用芯片来加速这些基础计算同样能够获得可观的收益.使用硬
         件加速的理想情况是能够直接部署经过专门优化的 ASIC,但是 ASIC 的设计、生产和部署都需要较长的周期
         和较高的成本,在需要快速迭代的生产环境中或者在需要控制风险的情况下,FPGA 作为一种可重新配置的硬
         件平台成为了一种首选的过渡或者替代方案                 [3,4] .
             FPGA 除了能够在生产环境中作为专用芯片的一种过渡和替代,其优秀的可定制性和可重配特点使得它在
         异构计算的学术研究中也发挥着重要作用.与 ASIC 相比,基于 FPGA 的研究主要有两点优势:(1)  区别于 ASIC
         的静态功能,FPGA 可重配特点引入的功能动态变化在系统设计时可创造更多可能;(2)  区别于 ASIC 的流片流
         程,FPGA 的快速烧写在降低成本的同时也使应用可以快速地在硬件上验证并测试端到端的性能.这些特性近
         年来吸引了许多学者投入到 FPGA 的应用研究中,这些研究从最初的加速器设计慢慢扩展到了与 FPGA 相关的
         操作系统、体系结构等领域           [5−7] .
             然而,面向 FPGA 硬件平台的硬件设计和系统集成方法相较于软件工程和程序语言领域的发展仍然处于
         十分初级的阶段.目前主流的 FPGA 加速系统的开发可以大致分为 3 个部分:硬件加速器设计、软件驱动设计
         和软件应用集成.硬件设计虽然经过了多年的发展,已经形成了成熟的工具链,但是这些初衷是辅助专业硬件工
         程师的开发工具和语言,只提供十分底层的硬件抽象,例如寄存器和逻辑运算.由于缺少指令集抽象,软件工程
         师无法直接将算法映射成硬件逻辑,对于希望快速验证硬件加速有效性的云应用开发者和实验室学者等非专
         业的硬件工程师来说,硬件设计无疑成为了利用 FPGA 加速上门槛最高的一关.而第 2 个难点是需要实现驱动
         软件来构建底层软件和硬件的数据通信机制并提供接口给上层应用.这一部分工作即使利用现成驱动(例如
         PCIe DMA 驱动),也需要对底层通信协议有充足的了解,并从软硬件两方面进行适配:软件需要对数据进行序列
         化和反序列化,硬件则需要构建加速器的外围数据通信模块.相比于硬件加速核心的设计和验证,这一步的工程
         量并不逊色甚至犹有过之.克服前两点之后,需要经过最后一步的软硬件集成,开发者才能真正地对应用进行加
         速.此时,可能由于前期软硬件工程师协同的沟通失误或者考虑欠缺,应用的性能受限于不理想的硬件抽象和接
         口,如果需要改进,则往往需要重新进行各部分的设计.
             FPGA 的高度可定制化给其带来灵活性的同时也引入了功能是由硬件来实现还是由软件来实现的权衡,如
         果开发框架不能提供清晰的软硬件交互界面和设计空间定义,加速系统容易陷入软硬件功能过于耦合,调试、
         迭代、维护十分困难的境地.为了提高 FPGA 加速系统的开发效率,研究者们在一脉相承的传统硬件开发工具
         的基础上提出了许多针对 FPGA 特点的优化框架以应对不同的需求.从传统的硬件描述语言开始,这些新的框
         架和工具主要走上了两条道路:高层次综合(high-level synthesis)和高级语言实现的硬件描述语言(high-level
         hardware description language).近年来,国内外 FPGA 应用的研究已颇具规模        [8,9] ,但是与国外传承有序的 EDA
         (electronic design automation)研究历史相比,国内关于硬件开发工具与框架的研究资料依然十分缺乏,本文旨在
         对 FPGA 相关开发工具的发展状况作一定的总结和归纳,以提供从事本领域工作的国内学者参考.接下来,本文
         第 1 节将综述近年来硬件及硬件加速系统开发工具相关的典型工作.第 2 节介绍我们自己针对 FPGA 加速系统
         开发框架的设计实践.第 3 节总结全文并提出未来展望.

         1    相关工作综述

             本节介绍一般硬件以及硬件加速系统开发工具和框架的相关工作,并引入硬件加速系统设计的基本概念
         和背景知识.
         1.1   硬件描述语言
             广义来说,后文将提到的高层次综合工具使用的描述语言和高级硬件描述语言都可以归纳进硬件描述语
         言,本节讨论狭义的硬件描述语言,即以 VHDL 和 Verilog 为代表的经典硬件描述语言.
             硬件描述语言的出现可以追溯到 20 世纪 60 年代,在 1971 年,Bell 和 Newell 在他们的教材中提出了影响
         至今的硬件设计抽象级别——寄存器传输级(register-transfer level)            [10] .基于该抽象,DEC(digital equipment
         corporation)首先设计了 ISP 语言以及其扩展版本来描述 PDP-8 和 PDP-16 机器中的基于寄存器传输模块
   107   108   109   110   111   112   113   114   115   116   117