admin管理员组

文章数量:1608633

        2022年,AMD收购了最大的FPGA生产商——赛灵思(Xilinx),完成了AMD有史以来最大规模收购,为此支付了超3000亿元,使得赛灵思成为了AMD的一部分。而在不久前英特尔收购了第二大的 FPGA 生产商Altera。另外,微软已经在其数据中心使用了FPGA,亚马逊也在其云服务中提供了FPGA,AMD则押宝高性能计算,在游戏显卡领域和智能终端边缘运算设备上大放异彩。以前的时候,以前,这些 FPGA 主要用于电子工程,而在软件工程中用得并不多。FPGA 是否即将腾飞并成为 CPU 和 GPU 的有力替代品呢?

什么是 FPGA?

        如果你想要计算某些东西,常见的方法是为基于指令的架构(如 CPU 或 GPU)编写一些软件。另一种更艰巨的方法是为这种特定的计算设计一个特殊的电路——而不是为 CPU 或 GPU 等通用电路编写指令。

        设计好电路后,您需要某种方法来实现设计,以便真正计算出一些东西。一种方法是实际生产出实现该设计的电路(这称为专用集成电路或 ASIC),但这需要相当多的资金。

        一种更简单的方法,也是本文的主题,就是实现你的电路设计的方法是使用FPGA,将设计好的电路部署在FPGA上,无需实际生产出实现该设计的芯片,就可以实现出能够应用功能的”芯片“。它与基于 CPU 和 GPU 指令的硬件编程方法有很大不同。基于指令的硬件是软件配置的,而 FPGA 则是通过指定所需的硬件电路来配置。

FPGA 的优缺点

        为什么要采用FPGA来完成计算任务,而不是选择更通用的CPU或者GPU呢?这种方法和CPU、GPU的区别主要体现在以下几个方面:

  • 延迟:完成计算需要多长时间?→ FPGA 在这方面更胜一筹。\\t
  • 连接性:可以连接哪些输入/输出,带宽是多少? → FPGA 可以直接连接到输入,提供非常高的带宽。\\t
  • 工程成本:表达所需的计算需要多少努力?→FPGA 工程成本通常比基于指令的架构高得多,因此选择这种方法肯定是因为其他优势值得去做。\\t
  • 效率:计算过程中使用了多少能量? → 这往往是 FPGA 的最大优势,但 FPGA 是否真的胜过 CPU 或 GPU,则取决于具体应用。\

下面将深入探讨以下差异。

低延迟

        如果你需要为喷气式战斗机的无人驾驶功能计算数据,或者开发高频算法交易引擎,那么低延迟肯定是必要的,输入数据和结果之间的等待时间需要尽可能短。这些领域的 FPGA 远远优于 CPU(或 GPU,因为 GPU 也需要通过 CPU 进行通信)。

       FPGA 可以轻松实现约 1 毫秒甚至不到 1 毫秒的延迟,而即使是性能最佳的 CPU 通常也有约 50 毫秒的延迟。更重要的是,FPGA 延迟通常是确定性的。这种低延迟的主要原因之一是 FPGA 通常更具体:无需依赖通用操作系统或通过通用总线(例如 USB 或 PCIe)进行通信。

连接

        我们可以通过 FPGA 将任何数据源(例如网络接口或传感器)直接连接到芯片。CPU 和 GPU 的方法非常不同。它们必须通过标准化总线(例如 USB 或 PCIe)连接到数据源,并依靠操作系统为应用程序提供数据。直接连接到芯片以获得更高的带宽(和更低的延迟)。

        在某些情况下,如此高的带宽是必不可少的,例如LOFAR和SKA这样的射电天文学应用。这样的应用需要在现场部署大量专用传感器,并产生海量数据。然而,为了提高整个系统的可管理性,必须大大减少传感器产生的数据量,然后再传递给应用程序进行处理。荷兰射电天文学研究所ASTRON设计了Uniboard²,这是一种带有四个FPGA芯片的基板,每秒处理的数据量比阿姆斯特丹的互联网交换机还要多!

        工程成本

        在深入探讨能效问题之前,我们先来看看 FPGA 最大的缺点之一:与 CPU 和 GPU 等基于指令的架构相比,它们的编程/配置工作太难了!一般来说,这些硬件电路由硬件描述语言(HDL)描述,例如 VHDL 和 Verilog,而软件可以用多种编程语言进行编程,例如 Java、C 和 Python。

        从理论角度看,硬件描述语言和编程语言都可以用来表达任意的计算(都是图灵完备的),但工程细节差别很大。

        如今该领域出现了一种新趋势:高级综合(HLS),指的是使用 OpenCL 或 C++ 等传统编程语言对 FPGA 进行编程,从而实现更高级的抽象。然而,即使使用这样的编程语言,FPGA 编程仍然比基于指令的系统编程困难一个数量级。

        FPGA编程最难的部分就是漫长的编译过程。以Intel OpenCL编译器为例,典型的FPGA程序编译通常需要4-12个小时,因为繁琐的“布局布线”操作,我们需要将定制电路映射到FPGA资源上,同时确保以尽可能短的路径实现预期的结果。这是一个非常复杂的优化问题,整个过程需要巨大的计算能力。虽然Intel提供了模拟器,可以让我们在更短的时间内测试最终结果的正确性,但确定和优化性能的过程仍然要经过漫长的编译过程。

        效率

        在对外沟通中,英特尔一直将能效作为 FPGA 的显著优势。但实际情况并没有那么明显,尤其是在浮点计算方面。不过我们先来看看 FPGA 在能效方面远优于 CPU 和 GPU 的应用。

        FPGA的高能效主要体现在逻辑计算和固定精度计算领域(而不是浮点计算领域)。这一特性让FPGA在加密货币(如比特币)挖矿方面具有巨大的优势。如今,​​几乎每个人都已经习惯通过FPGA进行挖矿。

        顺便说一句,目前大家挖矿几乎都用ASIC(专用集成电路),也就是专门为特定应用设计的专用集成电路。ASIC是更节能的解决方案,但前期需要更多的投入去设计芯片,而且芯片的产量要足够大才能分摊高昂的成本。后面继续回过头来说FPGA。.

        FPGA 在能源效率方面的另一个优势是 FPGA 基板无需主机即可直接供电。它有自己的输入/输出,因此可以节省主机的能源和金钱。这与 GPU 计算完全不同。GPU 需要通过 PCIe 或 NVLink 与主机系统通信,因此必须安装在主机中才能运行。(但有一个例外,NVidia Jetson 不需要主机即可运行,但它不是高端 GPU。)

        浮点能效 - FPGA 与 GPU

        很多高性能计算场景,比如深度学习,往往依赖浮点运算,而浮点运算正是 GPU 最擅长的领域之一。此前 FPGA 浮点运算效率非常低,因为浮点单元需要通过逻辑块进行组装,这个过程非常耗费资源。

        一些新型 FPGA,例如 Arria 10 和 Stratix 10 将浮点单元直接内置在 FPGA 结构中,浮点计算能力得到了显著提升。额外的浮点单元能否提高 FPGA 的浮点能效?它比 GPU 更节能吗?

        那么我们再来看看目前最先进的GPU和FPGA。目前市面上最先进的专业GPU是Tesla V100,理论上最大运算速度可达15 TFLOPS(万亿次浮点运算/秒,衡量浮点运算能力的标准单位),功耗约为250瓦。而目前市面上最先进的FPGA应该是Nallatech 520C,其搭载的Altera/Intel联合研发的Statix 10芯片基板理论最大运算速度为9.2 TFLOPS,功耗约为225瓦。

        如果从能效角度来比较两种设备,GPU 的能效无疑更高,理论上可以达到 56 GFLOP/W(十亿次浮点运算/瓦,这是衡量浮点运算能效的标准单位),而 FPGA 则只有 40.9 GFLOP/W。所以如果需要购买一台新的浮点硬件设备,并且需要配合主机使用,GPU 似乎是更好的选择,至少从上面的粗略比较来看是如此。

        不过两者之间的差距并不大,而且后期发布的新 FPGA,比如这块即将发布的基于 Stratix 10 的 FPGA,很有可能在浮点运算方面实现比 Volta(Tesla V100 的开发代号)更高的能效。更重要的是,上述对比中涉及的两款产品也有着本质区别,毕竟 Tesla V100 采用的是 12 纳米工艺,而 Stratix 10 采用的是更老的 14 纳米工艺。

        根据上面的对比,如果需要更节能的浮点计算设备,现阶段还是需要继续选择GPU,但这种对比并不能证明GPU在浮点运算上总是更高效。浮点计算能效之争,目前的胜利者是GPU,但结果可能在不久的将来发生变化。

        如果不需要主机,那么就需要将使用高端GPU的主机与完全不使用主机的高端FPGA进行比较。如果继续使用上面比较时使用的数据,对于配备GPU的主机与不配备FPGA的主机,仅主机功耗就为116.7瓦(如果是多GPU主机,则为每块GPU的主机功耗),两者的能效可以保持一致。通常现代主机的功耗在50-250瓦之间,因此FPGA的优势比较大。

回顾与展望

        FPGA 在某些领域必不可少。例如在军用导弹导航系统中,FPGA 的使用主要基于低延迟的特性。在射电天文学领域,FPGA 的专用输入/输出是流畅处理海量数据的关键。在加密货币挖矿应用中,节能的固定精度计算和逻辑计算也是 FPGA 的一大优势。当前FPGA的企业化运用主要还是各类接口通信,图像处理,以及数据中心,但是AMD在边缘智能运算上的迅猛发展,与现在正在飞速发展的小型AI模型的发展,很可能会结合机器人形成机载AI边缘运算及控制,使得真正用于生产发展的AI机器人诞生,引发生产力的迅猛发展,随着之后发展的逐渐成熟芯片将进一步发展,形成真正的AI处理芯片。

        个人认为相对小众的FPGA在未来虽然不会直接成为主流,但是会在新技术发展中广泛存在,相对其他的专用性芯片的成为普及。

本文标签: 优缺点而不是FPGAGPUCPU