虽然FPGA芯片自20世纪80年代开始供货,但嵌入式FPGA仅在大约五年前才推出。然而,由于其惊人的灵活性和功能集,它很快就在市场上占据了一席之地。它现在可以从多家供应商,各种代工厂(台积电,GlobalFoundries,SMIC和三星)以及180,40,28,22,16,14,12和7nm等工艺节点上商业化获得。嵌入式FPGA还被广泛应用于航空航天,通信,网络以及最近的人工智能(AI)。
在嵌入式FPGA可用的短短几年内,该行业已经看到了几代产品。随着每一代新产品的出现,嵌入式FPGA变得更加灵活,更适用于新应用,所有这些都是由客户需求驱动的。事实上,嵌入式FPGA的应用似乎是无穷无尽的,并且在未来,这种技术应该像今天的Arm处理器一样普及。本文将回顾嵌入式FPGA的各代,以当前可用的当前功能结束。
第一代
第一代嵌入式FPGA相对简单,通常使用4输入LUT。为了提供一系列阵列大小,一些供应商将其嵌入式FPGA设计为复制瓦片阵列,顶层互连自动连接阵列范围网状互连中的瓦片。使用命令行界面在Verilog中完成编程。
第二代
第二代嵌入式FPGA根据客户对第一代产品的反馈意见添加了一系列功能。这些新功能包括:
6输入LUT与当今最先进的FPGA一样。6输入LUT增加了嵌入式FPGA的密度和性能。
能够在阵列的行之间集成任何类型/大小的RAM。这为分布式计算提供了更多本地化内存。这是一个非常重要的补充,因为评估嵌入式FPGA的1/3客户正在申请此功能。
GUI界面,用于使用各种图形工具进行编程,以加速评估和开发。
直接从GDS数据库中提取的时序允许在任何PVT组合中评估性能。
能够回读配置位(在高可靠性环境中是理想的)并在操作期间重写配置位。
DFT覆盖率达到99%以上。
一种新的配置加载模式,可将测试时间缩短约100倍。
通过PC接口为每个新流程提供评估板。
第三代
前几代嵌入式FPGA执行的功能类似于FPGA芯片。然而,在第三代嵌入式FPGA中,它开始做一些未在FPGA芯片中完成的事情。第三代嵌入式FPGA的一个例子是Flex Logix的nnMAX,它是用于推理的优化嵌入式FPGAA,具有以下新特性:
它由高级神经网络模型语言编程,如Tensorflow Lite和ONNX。nnMAX编译器执行较低级别的Verilog编程,自动释放客户并实现更高的性能。
每层运行大约十亿个MAC(乘法 - 累加 - 运算)的神经网络层。nnMAX重新配置嵌入式FPGA互连和下一层的“软逻辑”(控制状态机),然后再次开始运行。在早期的嵌入式FPGA中,重新配置是串行完成的,类似于FPGA芯片。相反,nnMAX在高度并行模式下进行配置,以便在1GHz运行时在大约1,000个周期内重新配置完整阵列。
将AI优化的MAC(8x8整数,16x16整数和/或16x16浮点)组织成64个簇。在传统的嵌入式FPGA中,每个MAC分别连接到互连网络中。在AI工作负载中,矩阵乘法非常大,因此群集是获得更高密度和更有效地使用稀缺互连网络资源的逻辑方法。
可以在Winograd加速模式下运行以加速3x3卷积,步长为1乘2.25x进行整数8运算
能够在层之间混合精度:硬件可以根据需要从整数8/16转换为浮点和返回。这允许模型设计者最大化吞吐量并最大化预测精度。
互连现在具有管道触发器,可实现1GHz的吞吐量,同时每层仅增加几个延迟周期。
迄今为止,上述新功能仅适用于nnMAX推理嵌入式FPGA。但是,根据客户的兴趣,其中一些功能也可能出现在未来的第三代通用嵌入式FPGA中。
虽然嵌入式FPGA最初是为通信和网络等应用而开发的,但随着时间的推移,Flex Logix等公司想出了如何利用嵌入式FPGA中使用的相同核心互连技术来解决爆炸性AI市场的神经推理部分。在神经推理中,计算主要是数万亿次操作(乘法和累加,通常使用8位整数输入和权重,有时使用16位整数)。最初为嵌入式FPGA开发的技术非常适合于推理,因为嵌入式FPGA允许每个网络阶段的可重新配置的快速控制逻辑。嵌入式FPGA中的SRAM可根据需要在神经网络中进行重新配置,其中每个层可能需要不同的数据大小。例如,Flex Logix互连允许SRAM输入组,MAC簇之间的可重新配置连接,
未来
嵌入式FPGA是一种非常强大和灵活的技术,适用于广泛的市场和应用。随着客户提出如何使用嵌入式FPGA的学习曲线并不断要求供应商支持新功能和功能以改善其价值主张,它将继续发展。真正的客户需求将成为嵌入式FPGA未来发展背后的驱动力,看到这项技术如何随着时间的推移不断发展将是令人兴奋的。