何时、为什么以及如何使用嵌入式FPGA技术进行硬件加速?

作者:
阿洛克·桑加维
高级营销经理

发布于:2018年6月7日

如果将嵌入式FPGA(eFPGA)集成到ASIC或SoC设计中让你觉得奇怪,那就不应该了。几十年来,集成电路几乎吸收了电路板上的所有组件,从晶体管、电阻器和电容器开始,然后发展到门、ALU、微处理器和存储器。FPGA只是工具箱中又一个有用的组件,几十年来一直作为独立产品提供,现在可以使用Achronix集成到您的IC设计中 Speedcore eFPGA,由Achronix ACE设计工具支持。这些产品使您能够轻松地将可编程逻辑的性能和灵活性整合到下一个ASIC或FPGA设计中。

那么问题就变成了:你为什么要这样做?为什么要使用FPGA?为什么要在ASIC或SoC中放置可编程结构?

为什么选择FPGA?

系统级设计人员使用FPGA的原因有很多,但两个主要原因是性能和灵活性。在处理器上运行的软件中执行的许多任务在硬件中实现时都受益于显著的性能改进。然而,在设计ASIC和SoC时,硬件路径上有一个分叉。如果你绝对确定相关算法永远不会有任何变化,那么将功能冻结到ASIC门中是有意义的。

这些天,似乎没有什么是稳定的。标准发生了变化。市场需要改变。如果你在ASIC门中冻结了错误的算法,你需要重新装入芯片。

为了降低与ASIC门相关的风险,系统设计人员几十年来一直依赖FPGA以硬件级处理速度执行算法,并可以在毫秒(或更短)内灵活更改算法。将应用处理器或微控制器与电路板上的FPGA配对现在是常见的设计实践。FPGA加速了需要它的任务。

将可编程结构移入ASIC

然而,当应用处理器和FPGA位于单独的芯片中时,两者之间的通信是一个主要的瓶颈。无论两个设备之间的通信有多快,FPGA在逻辑上总是与处理器“相距甚远”,正如Achronix的Kent Orthner在视频中所描述的那样, eFPGA加速的基础知识。

例如,PCIe已成为将处理器与电路板上的FPGA连接的通用协议。虽然PCIe是一种高速串行协议,具有快速数据传输的特点,但串行化数据、传输数据然后反序列化数据会有额外的延迟。在实践中,硬件延迟约为1微秒,但考虑到Linux开销,延迟可能会大一个数量级或更多。因此,加速算法在处理时间和处理数据大小方面必须足够丰富,以克服这种延迟。

SoC Speedcore框图

将FPGA嵌入ASIC或SoC可以解决这一瓶颈。您可以根据应用程序的需要,在片上处理器和FPGA之间实例化尽可能多的连接。例如,许多SoC设计使用AXI总线将ARM处理器内核耦合到其他片上硬件。您可以轻松地使用128位AXI总线将复杂的处理器连接到eFPGA。但为什么止步于此呢?如果您的应用程序需要更多带宽,您可以使用两条、四条或更多128位AXI总线来驱动eFPGA中实例化的多个加速器。

避免记忆混乱

eFPGA优于离散处理器/FPGA实现还有另一个更微妙的原因。因为FPGA离处理器“很远”,所以它通常必须有自己的DDR SDRAM来缓冲大数据块。这种缓冲的需要意味着处理器或DMA控制器必须将要处理的数据从应用处理器的DDR存储器移动到FPGA的DDR存储器。然后,处理后的数据必须从FPGA的DDR存储器传输到处理器的DDR存储器。根据要传输的数据量,这些数据传输产生的延迟介于长、长时间和永远之间(从硬件级速度的角度来看)。

让片上eFPGA直接访问处理器的DDR存储器意味着不需要缓冲数据。传输只不过是将内存指针传递给eFPGA,以便它可以立即开始处理。当eFPGA完成其工作时,它会将内存指针传递回处理器以进行任何其他处理。

这些eFPGA品质在哪里有用?这里有三个应用程序示例来激发你的想象力:

  • 无线/5G 目前,没有哪个行业比电信行业更不稳定。5G规范不断更新,而电信提供商正在尽其所能从已安装的4G基础设施设备中获得最大收益。此外,电信设备必须满足严格的尺寸、重量和功率要求。所有这些因素都有利于具有eFPGA的SoC在减少设备尺寸、功耗和重量的同时提供即时的灵活性。
  • 金融科技/高频交易 –如上所述,eFPGA可以减少延迟。在高频交易领域,将延迟减少一微秒可能价值数百万美元。仅此一点就足以证明开发具有片上eFPGA的SoC来处理频繁变化的交易算法是合理的。
  • 人工智能/机器学习(AI/ML)推理和CNN 卷积神经网络(CNN)推理算法严重依赖乘法/累加运算和可编程逻辑。Speedcore eFPGA可以通过在eFPGA规范中包含大量可编程DSP块来实现大规模并行,从而显著加速此类算法。

这只是三个示例,展示了eFPGA如何增强ASIC或SoC的性能和功能。如果您想探索ASIC或SoC设计可能从性能增强的片上FPGA中受益的其他方式,请访问 www.achronix.com/product/speedcore