本文是多为作者的讨论总结。这些总结包含了以下组织的经验:Zilog, Altera, Xilinx, Achronix, Intel, IBM,斯坦福,麻省理工,伯克利,威斯康星大学,Technion, Fairchild,贝尔实验室,Bigstream,谷歌,DEC, SUN,诺基亚,SRI,日立,Silicom,Maxeler技术,VMware,施乐PARC,思科等。但这些组织并不对内容负责,只是在某些方面给了作者一些启发,使得本文对FPGA领域的描述显得丰富多彩。
Field-programmable gate arrays(FPGA),现场可编程门阵列,从一开始就触动着ASIC社区的神经。在20世纪80年代中期,Ross Freeman和他的同事从Zilog购买了这项技术,并创建了Xilinx,目标是ASIC仿真和教育市场。同样,Altera的成立也是以类似技术为核心。1985年,Xilinx推出第一篇现场可编程阵列。Xilinx和Altera是FPGA领域的两大著名厂商。
FPGA是一种通过电路编程的芯片,被称为电路的“模拟”。和ASIC中的同样电路实现相比,FPGA运行的更慢(时钟频率),并且消耗更多的能量。但FPGA的好处是可以在几百毫秒内重新编程一次。
ASIC制造商一般都使用FPGA来模拟他们的ASIC,然后烧录到一个模板上,并将其送到工厂生产。英特尔、AMD和许多其他公司在生产之前都使用FPGA来模拟他们的芯片。
电信行业一直是FPGA的大客户。电信标准不断变化给电信设备制造带来很大困难,因此,最先提供电信解决方案的公司往往会占据最大的市场份额。由于ASIC需要较长时间来制造,FPGA提供了一个捷径。电信设备首个版本采用FPGA,就引发了FPGA价格冲突。虽然FPGA的价格对ASIC仿真市场无关紧要,但对电信芯片至关重要。许多年前,AT&T和朗讯制造了他们自己的FPGA,称为Optimized Reconfigurable Cell Arrays(ORCAs,优化可重构单元阵列),但在速度和规模方面,他们无法与Xilinx或Altera竞争。
如今,华为是FPGA的最大客户。最近美国和中国之间的紧张关系可能源于美国的FPGA。美国给予华为提供5G电信设备的优势,比世界上任何其他供应商早了两年。
FPGA价格
在早期,FPGA被用于软件定义无线电(SDR)技术,同时在许多不同标准上构建无线通信。这一次,在SDR如何实现上的分歧,使得FPGA触及了一个巨大的神经。商业供应商开发了具有成本效益的解决方案,并且今天地球上的每个基站都有SDR技术。另一方面,在国防领域,SDR是由大型国防承包商建造的,他们要保护利润丰厚的传统产品线。其结果是基于FPGA的无线产品的价格如此之高,以至于美国部分国防市场对其使用一直存在过敏反应。
更进一步,FPGA试图在DSP(数字信号处理器)和嵌入式市场上发力。这些市场上开始出现带有小硬微处理器的FPGA。销售这些新型FPGA的压力非常大,甚至如果客户拒绝使用这种新型芯片,他们就会被列入黑名单,有时甚至会被拒绝服务几个月。FPGA市场增长的压力过去是巨大的,现在仍然是巨大的。鉴于FPGA产品的知识产权成本,无法降低其价格,FPGA在征服新市场方面可能面临巨大的失败。
高性能计算和数据中心
在过去的几年中,FPGA试图在高性能计算(high-performance computing ,HPC)和数据中心市场中发力。2017年,微软宣布在数据中心使用Altera FPGA,英特尔收购了Altera。2018年,Xilinx宣布了“数据中心优先”的战略,其CEO在分析师面前宣布,Xilinx不再是一家FPGA公司。这可能是一种轻微的戏剧化,但在历史上是有关联的。
高性能计算(HPC)和数据中心对FPGA的最大使用障碍是放置和路由——运行专有的FPGA供应商软件所需的时间,也就是将电路映射到FPGA元素所需的时间。在大型的FPGA和快速的CPU服务器上,放置和路由需要花费3天的时间,很多时候甚至在3天之后软件也不能完成映射。
石油和天然气
在石油和天然气领域,2007年左右出现了一个利基市场。传统计算机模拟在地球上钻探探测以找到石油所用的时间,比实际建造一个钻井地点和钻探本身所用的时间要长。FPGA加速器的使用极大地改变了这种颠倒的耗时模式。在石油公司的数据中心,第一个FPGA应用是计算地震图像,由Maxeler技术公司建造并交付给雪佛龙公司。
FPGA在石油和天然气领域的使用持续扩大,直到面临ASIC行业的压力,导致标准CPU技术的回归。今天,石油和天然气的预测和模拟仍然很重要,地震成像大部分是在CPU和GPU上完成的,但FPGA的机会仍然存在。我们被提醒“今天的新事物是明天的遗产”,当然,今天的新事物是人工智能和大数据。
尽管如此,FPGA仍然是一种快速进入市场的方法,一种获得竞争优势的简单方法,而且是许多关键任务中不可或缺的技术——尽管与ASIC相比,它们在芯片上的价格昂贵。然而,在高性能计算和数据中心中,FPGA与在CPU或GPU上运行软件相比,其运行成本要低得多:需要更少的FPGA,比CPU和GPU需要更少的制冷。FPGA使得数据中心更小,这触动了运营商的神经。
ASIC和FPGA
FPGA对ASIC进行补充。ASIC用来保持固定的功能,而增加FPGA来提供一些灵活性:可以响应最新的变化或适应不同市场的产品。
现代FPGA正在集成更多的固定功能,并变得越来越像ASIC。而ASIC有时会在设计中添加一些FPGA结构,用于调试、测试、现场修复,以及根据需要灵活地添加一些功能(ASIC越来越像FPGA)。
然而,ASIC技术人员总是反对FPGA的概念。ASIC设计师会问:“你想要哪种功能?” ,如果答案是“我还不知道“,他们就会不耐烦。
自动驾驶行业就是这样一个新战场。由于算法是不断变化的,当汽车行驶在某个领域时,法律可能会发生变化,需要驾驶者更新算法,因此解决方案需要灵活。FPGA具有较低的时钟频率,因此散热片更小,从而比GPU和GPU的物理尺寸更小。更低的功耗和更小的体积使FPGA成为明显的优选。然而,GPU更容易编程,不需要三天的放置和路由。
此外,能够在车载和云中(主要用于模拟和测试)运行相同的代码是至关重要的,因此FPGA必须先在云中可用,然后才能在车内使用。由于这些原因,许多开发人员更喜欢GPU。
FPGA的进化
FPGA正在进化。
FPGA的现代接口正试图使FPGA更容易编程,更模块化,并与其他技术更易协作。FPGA支持高级可扩展接口(Advanced Extensible Interface,AXI)总线,这使它们更容易编程,但也带来了巨大的效率降低,使FPGA的性能更差,最终降低是竞争力。最新的学术研究,如Eric Chung关于FPGA动态网络的论文,有助于解决路由问题,但这种先进的想法还没有被工业界采纳。
FPGA是如何连接的?对于具有大量数据流的HPC工作负载,可以使用PCI Express并部署通信隐藏技术。但是对于小的工作负载,比如在网络功能虚拟化(NFV)中发现的,同时为大量用户提供服务,情况又如何呢?对于一般虚拟机的NFV和加速,FPGA必须直接连接到CPU,可能使用缓存一致性作为通信机制,就像VMware最近研究的那样。当然,一个关键特性是能够使FPGA崩溃而不使CPU崩溃,反之亦然。Hyperscalar技术公司正在重新发现IBM大型机时代的需求,使标准化平台变得越来越复杂。
大众也有机会。在提供FPGA平台方面,没有ASIC开发预算、不了解最新硅制造挑战和解决方案的组织也可以开发电路并在其产品中建立竞争优势,例如,在物联网(IoT)网络的边缘、靠近传感器、显示器或只是在数据线上进行计算的新机会正在出现。
与此同时,FPGA公司正将堆栈垂直向上推进到CPU套接字(CPU套接字是英特尔主导市场的地方),比如包括NFV的特殊指令。新CPU和FPGA进入数据中心的关键障碍不仅是速度和成本,而且是所有可能的I/O设备的软件和驱动程序的可用性。
FPGA进入数据中心的关键是更容易使用。例如,自动化工具使FPGA没有放置和路由的困难。微软率先在一个超标量数据中心使用FPGA来加速Bing、NFV和AI算法。微软还构建了抽象、领域特定语言和灵活的硬件基础设施。商业上,FPGA的主要问题是进入市场的策略。
制造出新的芯片,然后开始再考虑软件已经太迟了。如何通过调整硬件为软件服务,并从现有软件中提取价值?这也带来了重新考虑FPGA架构的机会。不过,有一句话要提醒:硅产业是在吞噬现金。构建ASICs就像一场扑克游戏,最低投注额逐年上升。这是一场赢者通吃的比赛,FPGA之类的威胁在比赛初期就被消除了。
FPGA给硅项目带来了额外的和不受欢迎的风险。
利基技术
软件设计师总是说,“如果可以用软件完成,那就一定要用软件来完成。”,ASIC设计者会说,“如果它能在ASIC中完成,它就会在ASIC中完成。”,最有趣的说法是,“如果这可以用软件来完成,你就不必和那些像FPGA一样思考的人打交道了。”。与制造ASIC所需的大量专业人员和全世界的软件程序员相比,FPGA拥有一个由许多古怪程序员组成的小社区。FPGA公司规模很小,FPGA社区也很小。英特尔正在推动FPGA的灵活性,它是遵循以下原则最成功的公司:构建硬件以运行现有软件。
FPGA可以比CPU和GPU更快,但从工业界和投资界得到的惨痛教训是,在计算机存在的大部分时间里,速度并不重要,实时也不重要。因此,仅仅为了速度而购买电脑是很少见的。它会发生,但它更多的是一个随机事件,而不是一个建立业务的市场。此外,FPGA没有标准的、开源的、令人愉快的编程模型,因此,没有FPGA程序的标准市场,使得开发人员可以在所有的FPGA芯片上工作,或者可以很容易地交叉编译。Maxeler技术公司提供了一个高层次解决方案来提供这样的接口,但是广泛的行业采用还需要信任。要从早期采用者受益到惠及每个人,信任需要数据中心领域中现有供应商的一致认可和支持。
现实世界中的使用者会说:“我不在乎它是什么,只要给我一种方法来做我想做的事就行了。”,FPGA还有哪些可能的应用领域尚未被广泛探索?对于实时计算,有制造业。对于无人机行业的计算机视觉来说,这是FPGA优势的重量和能量所在。在卫星上进行硬件升级是非常昂贵的,因此FPGA提供的长期灵活性是至关重要的。FPGA需要找到一个能产生共鸣的产品,而且它们需要易于编程。不仅仅是硬件或软件,还有生态系统。这是一个完整的解决方案。
一种超越当前市场限制的方法是实时编译和自动FPGA程序生成。这说起来容易做起来难,但随着人工智能撕裂应用程序的生态空间,机会正在增加。如今,一切都是人工智能完成的,甚至石油和天然气的地震成像等传统算法也加入了人工智能。在人工智能的构建块中需要一个科学和工程的解决方案。FPGA可能是一个很好的起点,最初可能是连接人工智能构建块,然后将它们合并到FPGA结构中,比如xilinx的下一代芯片——带有人工智能I结构、CPU、100G接口和FPGA单元,都在同一个7-nm芯片中。从另一个角度来看,随着人工智能芯片产生和消耗大量数据,FPGA将需要满足这个怪兽的需求,并将输出数据快速转移走。随着满足人工智能处理的新ASIC的出现,FPGA可以为人工智能芯片公司提供差异化。
预测未来
在10年或25年前就能预测到以下的发展吗?虽然世界在变化,但预测似乎保持不变。
1/ 将会出现CPU FPGA服务器芯片,或直接访问CPU缓存层次的FPGA。有人说会,有人说不会。
2/ 片上系统(SoC) FPGA芯片将发展壮大,推动医疗、下一代电信和汽车等行业的发展。
3/ 开发人员将使用FPGA来做一些令人惊奇的事情,让世界变得更美好,但必须隐藏一个事实,那就是里面有一个FPGA。
4/ FPGA的名称将保留,称为FPGA的芯片将被制造出来,但内部的一切将完全不同。
5/ 由于我们放弃了(数据流)优化以使FPGA更容易编程,FPGA的性能将会下降,因此它们不再与CPU竞争,而CPU总是更容易编程。
6/ 将会出现带有以下功能的FPGA:动态路由、演化连接、运行时灵活数据移动。放置和路由软件,以及FPGA之上的的完整软件栈,都将是开源的。这方面已经有Yosys和Lattice的初步努力。
7/ 所有的半导体架构都将会组合TPU、GPU、CPU、ASIC和FPGA的功能到单个芯片中,有些可能是整体的组合,有些可能是部分的组合。
8/ 大量芯片将集中在有限的应用程序上,而更少的芯片将集中在通用芯片上。在某种程度上,一切都在变成SoC。
最后评论
本文解决了多少冲突,引入了多少新冲突?从这个意义上说,冲突是对现有工作方式的挑战。这种现有的工作方式可能会影响我们的思维方式,因此也会影响我们的行动方式。但可能更重要的是,这将对大量开发人员如何谋生产生影响。