随着数字化时代的飞速发展,人工智能(AI)、大数据分析、自动驾驶等新兴领域的需求不断攀升。FPGA作为灵活可编程的硬件平台,正成为AI与高性能计算等领域的重要支柱。这一趋势不仅推动了FPGA架构的创新,也对开发者提出了新的要求。这篇文章将带您深入探讨FPGA发展趋势,并剖析这些变化对开发者的影响与挑战,为在新时代的技术浪潮中把握机遇提供参考。
1. 异构化
1.1 异构计算的概念
所谓异构计算,就是在一个系统中使用不同类型指令集和体系架构的计算单元实现复杂多样的计算方式。简单来说就是多种芯片协同工作,例如CPU,GPU,ASIC,FPGA,DSP等,最近几年也出现了AI硬件引擎这样的新型计算单元。
1.2 异构化的原因
近些年来,IC设计中的异构化趋势已经越来越明朗了。各领域的前沿芯片,都热衷于集成越来越多的新计算单元,依次来满足日益扩大的市场需求和延续摩尔定律的使命。这主要是为了满足现代应用日益增长的复杂性、性能需求和功耗限制:
①. 新领域对性能需求的增长:近些年大数据分析、人工智能(AI)、自动驾驶、5G通信和高性能计算等领域高速发展,迫切需要极高性能的IC芯片来满足这样发展的势头。
②. 各类芯片能效比的提升:随着各类芯片的不断发展,其在各自领域的优势日益凸显,所以全能单芯片渐渐失去了可行性;相反,让不同芯片协同工作的方案,才能将性能发挥到极致
③. 新型任务的专用化需求:现代计算任务变得越来越专用化,尤其是在人工智能、机器学习、图像处理和科学计算领域。这种任务往往需要特定的计算单元才能高效执行。
④. 多任务处理和并行计算的需求:现代计算环境通常需要处理大量并行任务,如在数据中心或超级计算机中。异构计算架构可以通过多种处理单元的协同工作,显著提高并行计算能力。
⑤. 其他原因:如定制化和灵活性的需求,延续摩尔定律发展的需求。
1.3 FPGA的异构化趋势
作为AI时代新型驱动引擎,FPGA当然也没有落伍。从早些年内嵌ARM的ZYNQ,到集成DSP,ARM,AI等处理器的ACAP平台,FPGA前沿创新无不延续着这样的思路。如图为Xilinx推出的ACAP架构图,FPGA与DSP,AI,ARM等处理器协同工作,充分发挥各自性能满足巨大的客观需求。
1.4 异构化对开发者提出的新需求,新挑战
相较于过去开发者只需要对FPGA有足够了解,异构化芯片则要求,开发者需要熟悉异构计算环境,了解如何将FPGA与CPU、GPU、ASIC等其他处理单元协同工作。这包括掌握数据在不同计算单元间传输的方法、任务分配策略,以及优化整体系统性能的技巧。
也就是说,开发者在应对新型FPGA时要具备系统化思维,不仅要保证FPGA自身性能充分施展,还要在FPGA开发中充分考虑到系统中其他芯片,追求整体系统性能的最大化。
这就意味着,异构系统的复杂性增加了开发难度,要求开发者具备跨领域的知识,如并行编程、数据流优化和硬件架构设计。
2. AI与机器学习加速
2.1 AI硬件加速
AI与机器学习的性能不仅依赖于软件算法模型,还依赖于执行其算法的硬件设备,通过硬件优化AI性能就是所谓的AI加速技术。FPGA在AI加速中具备得天独厚的优势,是极为理想的选择。如上ACAP图,许多高级FPGA已经集成了专用AI引擎,促进AI技术的发展与应用。
2.2 FPGA实现AI加速的案例
微软的Project Brainwave项目,是一个基于FPGA的实时AI推理加速平台,专为云计算环境中的人工智能(AI)和机器学习(ML)任务设计。该项目已经集成到微软的Azure云平台中,用于加速各种AI服务,例如图像识别,自然语言处理,语音识别等。
平台架构:Project Brainwave基于Intel Stratix 10 FPGA,以此为核心其关键组件包括深度神经网络引擎(DNN),矢量处理单元和可编程逻辑等。深度神经网络引擎(DNN),是专为加速深度学习推理任务设计的硬件模块,其直接运行在FPGA上,利用FPGA的并行处理能力来加速卷积神经网络(CNN)等复杂模型。矢量处理单元,用于处理矢量化的神经网络运算,结合FPGA中的DSP模块,实现高效的矩阵乘法和加法运算,显著提升推理速度。
如图为该项目的简单示意图,可以看见FPGA层是运算核心单元,它与CPU通过PCIe3.0进行高速通信。
2.3 AI硬件加速对开发者提出的新需求
随着AI应用领域越来越广,开发者需要学习如何利用FPGA中的AI引擎和加速器进行机器学习任务的加速,包括如何设计、优化和部署FPGA上的AI模型。
芯片供应商们,为开发者提供了高效的AI开发套件,例如Xilinx公司提供的Vitis套件。它不仅提供了高层次综合(HLS)的新型开发技术环境,还提供了FPGA与ARM,AI等其他处理器的开发环境
如图所示,为Vitis全套开发流程。在设计阶段,Vitis开发可以分为三个部分,即红色部分使用C语言对内嵌ARM的编程,橙色部分C/C++对AI引擎的开发,绿色部分使用RTL语言(Verilog/VHDL)或者C/C++进行高层次综合实现FPGA电路的设计,这三者之间的协同工作通过AXI总线实现。我们可以看到,三部分设计最终统一打包在v++ -package内,它包含了FPGA,ARM,AI的编程设计,Vitis可以将其烧写到实际电路上运行和调试。
3. 高层次综合(HLS)
3.1 传统FPGA开发的缺陷
传统的FPGA开发,多使用RTL语言(Verilog/VHDL/SystemVerilog)进行电路设计。尽管后来,人们使用IP化设计和高效的代码管理体系,大大提升了RTL语言设计的开发效率,但是RTL语言自身的局限性仍然明显。
RTL代码需要设计者详细描述寄存器、状态机、数据路径等低级硬件结构,开发者必须考虑时序、同步等复杂因素,这对开发者的硬件设计经验要求较高,且容易出错;并且,在后期优化代码时,部分改动就需要大量时间重新编译,这拉长了开发周期,使得生产率底下。
因此RTL设计不能让开发者专注于算法设计上,而是花费过多时间在具体的硬件适配上,这并不利于发挥FPGA在高速运算上的优势,因此高层次综合HLS应运而生。
3.2 高层次综合
如图,传统的FPGA设计方法以HDL语言与IP例化为核心,借助EDA工具完成Synthesis 和Implement的工作,从而完成从代码到硬件实现的工作。若想要使用C/C++语言完成硬件设计,则需要HLS工具,将其映射到HDL语言上或是直接生成电路原理图,从而进一步完成FPGA硬件的实现。
现形的HLS工具已走出萌芽期,HLS技术已集成进了AMD的Vitis和Intel的Quartus Pro中去了。
3.3 HLS的学习路线
高层次综合是大势所趋,但需要新的学习提升。其实供应商们为了推广芯片,已经尽可能地为我们传统FPGA设计者铺平了道路,我们只要在原有基础上选择合理地学习思路和学习技巧,也能很快地掌握HLS开发。
①. C语言复习:对于硬件开发者,可能会对C/C++有所生疏。这不仅包括基本语法,还包括调库,模块化编程等开发技巧;此阶段只需要简单过一遍即可,进阶还是需要实战的磨砺才能实现
②. 了解HLS的库:供应商提供了成体系的C语言库,方便我们调用。在了解库的过程中,需要学习常用的HLS专用指令,如pipeline、unroll、dataflow等,还需要在C语言上构建硬件思维,了解如何将C/C++中的算法转换为硬件结构,理解代码对硬件资源的合理利用和平衡。
③. HLS工具的使用:就像学习Vivado的操作一样,HLS需要学习Vitis或者Quartus Pro工具的使用,这个学习思路跟学习Vivado也大差不差
④. 实战提升。
4. 技术迭代
新概念,新技术固然新颖,但一些旧技术仍然十分重要,它们的更新迭代也需要及时跟进。接下来说几个目前还在不断迭代的技术,这也需要开发者们及时更新技术,满足最新的市场需求。
4.1 PCIe
PCIe接口当前已经迭代到了6.0版本,而最新的FPGA也内嵌了PCIe5.0版本的接口,其单通道传输速率可达32GT/s,是传统FPGA应用的2.0版本的6倍之多。PCIe的技术迭代带来了更快速的数据处理,这对于当下的“大数据时代"相当重要,而FPGA开发者也需要及时了解新协议,运用新IP,跟上数据密集型产业的巨大需求
4.2 低功耗设计
FPGA低功耗的特点尤为凸显,在异构化的趋势下,现今FPGA开发者则更需要充分释放FPGA的特点。开发者需要掌握低功耗设计技术,了解如何通过选择合适的架构、优化电源管理和减少时钟频率来降低FPGA的功耗,这需要我们深入理解FPGA内部结构,并能灵活应用功耗优化工具和技术。
4.3 HBM
HBM(High Bandwidth Memory)是一种先进的3D堆叠内存技术,它将多个内存层堆叠在一起,实现高密度、高性能的存储。FPGA供应商已将HBM集成到其高端FPGA产品中(如上ACAP),应用于高性能计算(HPC),视频处理,网络加速等技术上。
HBM的引入,让FPGA开发者在设计中面临了一些新的挑战和需求。HBM的高带宽要求开发者设计高效的数据访问模式,以充分利用其潜力。开发者需要深刻理解HBM的架构和数据传输机制,优化数据存储和访问策略。此外,HBM的复杂性增加了FPGA设计的验证和调试难度。开发者需要利用更高级的调试工具和仿真技术,确保设计的功能和性能符合预期。
5.总结与预告
这一章我们探讨了FPGA在数字化时代的主要发展趋势,包括异构化、AI加速、高层次综合以及技术迭代。随着AI、大数据和自动驾驶等领域的快速发展,FPGA同时也对开发者提出了新的挑战,如掌握异构计算环境、优化AI模型、学习高层次综合工具以及跟进最新的技术迭代。这也对我们的未来学习提供了一定参考。
下一章我们着重于AI应用方面,分析FPGA在AI时代的独特优势,借助实际案例,说明AI开发的思路与要点。