可编程门阵列(Field Programmable Gate Array,FPGA)是一种可以在制造后进行配置和定制的集成电路。由于这种能力,这些芯片被称为”可编程字段”。它们由可编程逻辑块组成,可以设置为执行各种功能或充当逻辑门,为用户在电路操作方面提供了很大的灵活性。
可编程门阵列(FPGAs)是由可配置逻辑块(CLBs)和可编程互连组成的半导体器件。这些块可以执行简单到复杂的操作,并且可以包含翻转器或存储块等存储组件。
FPGAs类似于可编程只读存储器芯片,但可以容纳更多的门,并且是可重新编程的,而ASIC是为特定任务设计的。它们可以用于定制微处理器以用于特定用途,并且在无线通信、数据中心、汽车、医疗和航空航天等各个行业中广泛应用。FPGAs的可重新编程性质允许根据需要进行灵活的设计更新。
FPGAs的应用
FPGAs在各个行业中得到广泛应用,并具有多样化的实施领域。它们的主要应用领域包括:
能源行业
FPGAs在智能电网技术中发挥着重要作用,可以提高性能和可扩展性,同时保持低功耗。这在传输和配电(T&D)变电站中尤为有用,需要高效的电力网络以实现最佳运行。
改进的汽车体验
Microsemi FPGAs允许原始设备制造商(OEM)和供应商为车辆创建新的安全应用程序,如定速巡航、盲点警告和碰撞避免。这些FPGAs还提供了信息保障、防篡改、硬件安全和可靠性功能,如纠错存储器和低静态功耗。
航空航天与国防
工业制造公司提供了抗辐射和抗辐射的FPGAs,这些FPGAs通常是太空级别的,以满足严苛环境下的性能、可靠性和寿命要求。这些FPGAs比传统的ASIC实现具有更高的灵活性,特别适用于处理密集型的空间系统。
计算机视觉系统
在当今世界,计算机视觉系统在视频监控摄像头、机器人和其他设备中广泛应用。通常需要使用基于FPGA的系统,使这些设备能够根据其位置、环境和面部识别能力与人们适当地进行交互。
数据中心
物联网和大数据导致获取和处理数据的数量大幅增加。使用深度学习技术进行并行计算推动了对低延迟、灵活和安全计算能力的需求。由于空间成本上升,增加更多的服务器无法满足这一需求。由于其加速处理能力、设计灵活性和硬件安全性等特点,FPGA在数据中心中得到了接受。
实时系统
FPGA被用于实时系统,响应时间至关重要,传统的CPU响应时间不可预测,很难准确预测何时触发器将会触发。
设计ASIC
首先创建电路架构,然后使用FPGA构建和测试原型,以便纠正错误。一旦原型表现符合预期,就会开发ASIC项目。这种方法节省时间,因为创建集成电路可能是费时和复杂的。
基于FPGA的加速服务
基于FPGA的系统可以执行复杂任务并比虚拟对应物更快地处理数据。虽然并非每个人都能够为特定任务重新编程FPGA,但云服务使得基于FPGA的数据处理对客户更加易于接触。一些云提供商甚至提供了一项名为加速服务(AaaS)的新服务,允许客户访问FPGA加速器。
通过AaaS,人们可以利用FPGA来加速各种类型的工作负载,例如:
- 训练机器学习模型
- 处理大数据
- 分析视频流
- 进行金融计算
- 增强数据库
一些FPGA制造商已经致力于创建基于云的用于AI工作负载加速和其他需要高计算能力的应用的FPGA。例如,英特尔为阿里巴巴云提供了名为f1实例的加速服务。英特尔Xeon CPU与FPGA的加速堆栈也可供阿里巴巴云用户使用,提供了两种流行的软件开发流程,RTL和OpenCL。
该行业的另一家主要公司微软也在竞相构建高效的AI平台。他们的项目Brainwave提供了FPGA技术来加速深度神经网络推理。与阿里巴巴云一样,他们也使用英特尔Stratix 10 FPGA。
FPGA与GPU在深度学习/人工智能中的比较
GPU在并行处理方面表现出色,可以同时执行多个算术运算,在需要快速连续执行相同工作负载的情况下提供显著加速。然而,在GPU上运行AI也有其局限性。GPU的性能不如专门为特定深度学习工作负载设计的ASIC。
另一方面,FPGA提供了具有集成AI能力的硬件定制化,并可以编程模拟GPU或ASIC的行为。它们可重新编程和重构的特性使其适用于快速变化的AI领域,可以快速测试算法并更快地上市。FPGA在深度学习应用和其他AI工作负载中具有许多优势:
- 低延迟:与标准GPU相比,FPGA具有更大的内存带宽,可以处理大量的数据。
- 卓越的性价比: FPGAs可以为不同的功能重新编程,使其成为最具成本效益的硬件选项之一。设计人员可以通过将其他功能集成到同一芯片上来节省成本和板载空间。
- 低功耗:使用FPGA可以将硬件调整到应用程序,帮助满足功耗效率要求。
- 并行性:可以使用FPGA的一部分来处理某个函数,而不是整个芯片,这使其可以同时承载多个功能。
- 将AI集成到工作负载中:使用FPGA,可以将深度数据包检查或金融欺诈检测等AI功能添加到现有工作负载中。
- 为高性能计算(HPC)集群提供加速: FPGAs可作为可编程加速器为推理服务,促进AI和HPC的融合。
使用FPGA的缺点
- 编程:虽然FPGA提供了高度的灵活性,但重新编程可能很困难,市场上需要更有经验的程序员。
- 实现复杂性:虽然使用FPGA加速深度学习的潜力很大,但只有少数公司尝试实施。对于许多AI解决方案开发人员来说,更传统的GPU和CPU组合是更可行的选择。
- 成本:电路的重新编程困难和市场上经验丰富的程序员短缺使得使用FPGA加速基于AI的应用成本高昂。对于小规模项目来说,多次重编程电路的费用可能很高。
- 缺少库:少数机器学习库直接支持FPGA。