FPGA History and Future

FPGA 自上世纪 80 年代进入市场以来,就与通用 CPU、ASIC 乃至 GPU 竞争共存。FPGA 的低功耗、可编程、规格适中等特性,使其在市场中占据一席之地。本文分析了通信、HPC、数据中心等多个领域的现状,对市场、价格和竞品对比等方面进行了概要分析,并预测了 FPGA 未来的一些发展方向,对了解 FPGA 提供了很好的参考。

本文概要总结了 2019 年 9 月在斯坦福大学一次三小时讨论情况,其中汇聚了来自多家企业和研究机构的实践经验,包括 Zilog、Altera、Xilinx、Achronix、Intel、IBM、Stanford、MIT、伯克利、威斯康星大学、Technion、Fairchild、贝尔实验室、Bigstream、谷歌、DIGITAL(DEC )、SUN,诺基亚、SRI、日立、Silicom、Maxeler Technologies、VMware、施乐 PARC、思科等。上述各家并不对本文内容承担任何责任,只是在某种程度上激发了作者们的思考,进而构成了 FPGA 的多维发展之路。

FPGA(现场可编程门阵列,Field-Programmable Gate Arrays) 自诞生以来,就与 ASIC 社区纠缠不清。上世纪 80 年代中期,Ross Freeman 及其同事从 Zilog 处购买了该项技术,初创了面向 ASIC 仿真和教育市场的 Xilinx 公司。Zilog 来自于埃克森美孚石油公司,其创立源自于上世纪 70 年代人们对石油将在 30 年内耗尽的担忧——尽管时至今日这一说法依然大行其道。几乎与此同时,以类似技术为核心的 Altera 成立。

FPGA 是支持电路编程的芯片,实现对该电路的“仿真”。对于 ASIC 中的实现,这种仿真的运行性能要慢于实际的电路。它的时钟频率更低,耗能更高,但可以每几百毫秒重新编程一次。

FPGA 用于在 ASIC 制造商做光罩并提交工厂制造前仿真 ASIC。Intel、AMD 等企业在芯片生产前,使用 FPGA 仿真芯片。

电信领域的争夺

FPGA 一直在电信行业大量使用。由于电信标准的不断变化增加了电信设备的制造难度,因此能率先给出电信解决方案的企业往往会占领最大的市场份额。ASIC 的制造周期很长,而 FPGA 提供了一种快捷方式。电信设备开始在初期版本上采用 FPGA,这引发了 FPGA 价格的波动。尽管 ASIC 仿真市场并不受 FPGA 价格的影响,但芯片的价格对电信企业却至关重要。多年前,AT&T 和朗讯制造了自己的 FPGA,称为 ORCA(优化的可重配置单元阵列,optimized reconfigurable cell arrays)。但与 Xilinx 或 Altera 相比,它们在硅片的速度和规格上并不具有竞争优势。

如今,华为已成为 FPGA 的最大客户。美国制造的 FPGA 可能正是中美之间最近的紧张关系的导火索。这些芯片令华为在 5G 电信设备交付上占据优势,领先世界上其他任何准备参与竞争的供应商达两年。

FPGA 价格之争

FPGA 很早就用于 SDR(软件无线电,software-defined radios)。SDR 技术可同时支持多种通信标准的无线电,类似于一部可讲多种语言的电话。这一次 FPGA 遇上了麻烦,因为 SDR 技术走上了两条不同的采用道路。一方面,商业供应商基于成本效益考虑开发了很多解决方案,并在当前地球上所有的基站都部署了 SDR 技术。另一方面,在国防领域,大型国防承包商是为了保护有利可图的传统产品线而构建 SDR 的。这导致基于 FPGA 的无线电产品的价格居高不下,以至美国的部分国防市场一直抵制它们的应用。

下一步,FPGA 试图进入 DSP 和嵌入式市场发展,开始推出部分使用硬核微处理器的 FPGA。但销售这些新型 FPGA 的压力很大,以至于如果客户拒绝这一新系列的芯片,就会被芯片厂商列入黑名单,有时甚至会拒绝提供服务数月。鉴于 FPGA 企业攻克新市场频频失败,FPGA 市场的增长压力依然巨大。因为 FPGA 的芯片面积巨大,涉及的知识产权众多,所以 FPGA 产品难以降低价格。

在 HPC 和数据中心领域碰壁

在过去数年中,FPGA 试图在 HPC(高性能计算)和数据中心市场中发展。2017 年,微软宣布在数据中心使用 Altera FPGA,而英特尔则收购了 Altera。2018 年,Xilinx 宣布了其“数据中心优先”战略。其 CEO 面对广大分析师时,宣称 Xilinx 不再是一家单纯的 FPGA 企业。这颇具戏剧化,但这是历史必然。

在 HPC 和数据中心使用 FPGA,主要障碍在于布局布线(place & route),即运行 FPGA 供应商特定软件将电路映射(mapping)为 FPGA 元件所耗费的时间。针对大型 FPGA,使用快速的 CPU 服务器,布局布线耗时可能多至三天。并且在很多情况下,三天之后软件依然无法找到映射。

在石油天然气领域碰壁

2007 年前后,石油和天然气领域的应用形成了利基市场。在传统计算机上模拟钻探地球发现石油所花费的时间,比现场实际施工和钻探的时间还要长。使用 FPGA 加速器,极大地改变了这种耗时颠倒的情况。首个用于计算地震图像的石油企业数据中心的 FPGA,是由 Maxeler Technologies 制造并交付给 Chevron 的。

FPGA 在油气领域的应用经过了数年扩展,直到来自 ASIC 产业的压力,才让标准的 CPU 技术重新回归。当下,预测和仿真在油气领域依然重要,地震成像大多使用 CPU 和 GPU 完成,不过 FPGA 依然占据了一席之地。我们知道,“当前的新事物,会成为明日黄花”。当然,人工智能和对数据的关注是当前的新事物。

尽管如此,FPGA 依然是一种进入市场的快捷方式、获取竞争优势的简单方法,以及许多关键任务中必不可少的技术。FPGA 的每个芯片价格要比 ASIC 昂贵,但是对 HPC 和数据中心而言,相比 CPU 和 GPU 而言需要的 FPGA 芯片更少,制冷开销更低,因此 FPGA 的运行费用要显著低于在 CPU 或 GPU 上运行软件。FPGA 使得数据中心规模更小,这会使运营商感到不安,因为他们担心自己的数据中心可能会缩水。

ASIC vs. FPGA

FPGA 的另一用途,是作为 ASIC 的补充。构建 ASIC 的目的在于实现固定的功能,添加 FPGA 则可为产品的最新更改以及适应不同的市场提供一定的灵活性。

现代 FPGA 集成了越来越多的硬核功能,变得越来越像是 ASIC。而 ASIC 也时常会在设计中添加一些 FPGA 结构,以便于调试、测试、现场修复,以及增加添补小功能的灵活性。

但 ASIC 团队却一直在与 FPGA 概念做抗争。ASIC 设计师询问“用户需要什么功能?”,并在得到“我也不确定”的回答后会失去耐心。

无人驾驶汽车行业就是这样的一个新战场。由于算法的不断变化,并且法律法规可能会在汽车入场时发生变化,需要不断对驾驶技术做相应调整,这需要灵活可变的解决方案。FPGA 的时钟频率更低、散热片较小,物理尺寸小于 CPU 和 GPU。更低的功耗和更小的尺寸,使 FPGA 成为显而易见的选择。尽管如此,GPU 更易于编程,并且不需要耗时三天的布局布线。

另一个至关重要的考虑是,出于模拟和测试等方面的考虑,需要在汽车上和云中运行相同的代码。这样需要 FPGA 必须在云中可用,然后才能在汽车中使用。由于上述问题,许多开发人员更喜欢选择 GPU。

FPGA 的演进

FPGA 正处于不断发展中。现代接口正使 FPGA 更易于编程,更为模块化,更易于与其他技术协作。FPGA 支持 AXI(高级可扩展接口,Advanced Extensible Interface)总线,使其更易于编程,但也会引入很多严重的效率损失,结果降低了 FPGA 的性能,最终导致其竞争力下降。一些学术工作提出了解决布线问题的研究,例如 Eric Chung 的关于 FPGA 动态网络的论文,但是这些先进的理念尚未为产业界所接受。

FPGA 是如何连接的?对于具有大量数据流的 HPC 工作负载,可以使用 PCI Express,并部署通信隐藏技术。但是像 NFV(网络功能虚拟化,network function virtualization)这样的小规模但却能同时为大量用户提供服务的工作负载呢?VMware 最近的调查结果指出,对于 NFV 和虚拟机加速,FPGA 必须直接连接到 CPU,并使用缓存一致性作为通信机制。

当然,一个关键的特性是 FPGA 的崩溃不会导致 CPU 崩溃,反之亦然。大型技术企业正在重新审视 IBM 大型机时代的需求,意图使用标准化平台涵盖越来越多的复杂性。

在大众化的企业市场也存在着机会。在提供 FPGA 平台时,企业即便没有进行 ASIC 开发的预算,也不了解最新的硅制造挑战和解决方案,也可以去开发电路,并在其产品中建立竞争优势。例如新兴的物联网(IoT)边缘计算,实现在近传感器、显示器端甚至在数据流经过时进行计算。

同时,FPGA 企业正将技术栈上推直至 CPU 插槽。英特尔在该市场上占据主导地位,其掌握了 NFV 特殊指令等技术。在数据中心中添加新 CPU 和 FPGA 的主要障碍不仅是速度和成本,还在于所有可能的 I/O 设备的软件和驱动程序是否可用。

在数据中心中推行 FPGA 的关键是易用性。例如,使用自动工具去驱动 FPGA 的应用,避免产生布局布线上的难题。微软率先在大型数据中心中使用 FPGA 来加速 Bing、NFV 和人工智能算法,此外还构建了抽象、领域特定语言和灵活的硬件基础结构。在商业上,FPGA 的主要问题在于入市策略。

构建新的芯片后才去考虑软件就为时已晚了。如何让硬件适应软件而从现有软件中获益?这也提供了重新思考 FPGA 架构的机会。但是需要警告的是:硅产业是个吞金兽。构建 ASIC 是一种赌注多年持续攀升的扑克游戏。这是一场赢家通吃的比赛,在比赛初期就剔除了 FPGA 的威胁。

FPGA 正在为硅项目带来额外的不良风险。

利基市场

正如软件设计师常说,“软件能完成的事情,就应由软件实现”。ASIC 设计师会说,“ASIC 能完成的事情,就应由 ASIC 来完成。”最有趣的说法是,“如果可以用软件完成,那么就不必和一切 FPGA 思维的人打交道了。”相比 ASIC 的团队规模,以及全球范围内软件开发人员的规模,FPGA 的公司很小,社区也很小,其中只有一些甚至是古怪的程序员。

英特尔正在推进 FPGA 的灵活性。在遵循“构建硬件以运行现有软件”这一原则的公司中,英特尔是最成功的一家。

FPGA 性能可能比 CPU 和 GPU 更快,但是来自产业界和投资界的切实经验教训是,自计算机出现以来的绝大多数时间中,速度和实时性并没那么重要。很少有人仅仅为了高性能而购买计算机。尽管此事时有发生,却不能根据这样的随机事件去建立业务市场。此外,FPGA 缺失标准,没有开源代码,也没有令人愉悦的编程模型。

因此,并没有标准市场支持可在所有 FPGA 芯片上工作或易于交叉编译的 FPGA 程序。Maxeler Technologies 具有提供此类接口的高级解决方案,但广泛的行业采用需要的是信任。信任才能推动技术从早期采用者的玩物发展到让所有人受益,但这需要现有数据中心领域供应商的推动和支持。

现实中,应用的用户会说:“我并不在乎具体方法,只要能完成我想要做的事情。” 在尚未广泛探索的应用领域中,哪些是 FPGA 可一展身手的?对于实时计算,FPGA 可用于工业界。对于无人机上的计算机视觉,FPGA 在重量和功耗上具有优势。在卫星上的硬件升级代价很大,对此 FPGA 提供了至关重要的长期灵活性。FPGA 需要的是休戚与共的产品。此类产品必须易于编程,光是硬件或软件还不够,还需要生态系统,需要完整的解决方案。

实时编译和自动 FPGA 程序生成是拓宽当前市场局限的好方法。说起来容易,但做起来难,但是随着人工智能对应用空间的突破,越来越多的机会出现了。当前,一切皆可由人工智能完成,甚至油气领域地震成像等的传统算法也都采用了人工智能。处理人工智能模块需要科学和工程上的解决方案。FPGA 可提供一个很好的出发点,从连接 AI 模块开始进而整合到 FPGA 架构中。例如,Xilinx 的下一代芯片将人工智能架构、CPU、100G 接口和 FPGA 单元整合到同一个 7 纳米芯片中。

从另一个角度来看,随着人工智能芯片生成并处理大量数据,需要 FPGA 提供大量输入并迅速取走输出。随着用于人工智能处理的新 ASIC 的面世,FPGA 将在人工智能芯片公司大展身手。

预测

  • 将出现成功的 CPU+FPGA 服务器芯片,或直接访问 CPU 缓存层次结构的 FPGA。有人赞同,有人否定。
  • SoC(片上系统,system on a chip)FPGA 芯片将不断发展壮大,带动医疗、下一代电信和汽车等行业。
  • 开发人员将使用 FPGA 实现神奇的事情,推动世界的进步,但对内部存在 FPGA 的事实必须秘而不宣。
  • FPGA 的名称将会保留,称为 FPGA 的芯片也会继续出现,但是其内部将大相径庭。
  • 一旦我们为简化 FPGA 编程而放弃(数据流)优化,FPGA 的性能将降低,进而将无法与易于编程的 CPU 竞争。
  • FPGA 将具有动态布线、不断发展的互连,以及运行时灵活的数据移动。
  • 和 FPGA 之上完整的软件栈一样,布局布线软件将会开源。Yosys 和 Lattice FPGA 已经着手于此。
  • 所有半导体架构都将组合为融合了 TPU、GPU、CPU、ASIC 和 FPGA 的单个芯片。芯片中可融合所有技术,也可融合部分技术。
  • 更多的芯片将聚焦于特定应用空间,只有少部分实现通用用途。从某种意义上说,一切都会成为 SoC。