2016 年的 re:invent 大会热火朝天地发布了一些公告,其中就包括推出了一种新的F1 实例类型的开发者预览版。F1 配有一到八个高端Xilinx 现场可编程门阵列( FPGA ),为英特尔 E5 2686 v4 处理器提供可编程硬件,让它可以与高达 976G 的 RAM 和 4T 的 NVMe 固态硬盘协同工作。FPGA 可用于风险管理、模拟、搜索和机器学习应用,或者任何能从经过硬件优化的协同处理器中受益的场景。
FPGA 自 80 年代中期以来一直存在,并且是制作专用集成电路(ASIC)原型和非量产专用硬件的一种流行方式。对于典型应用,专用硬件的速度比在 CPU 上运行的软件快约 1000 倍,并且随着时间的推移,FPGA 的装配按照摩尔定律得到了提高,使得它在过去的几十年中保持了速度优势。遗憾的是,FPGA 速度优势一直难以得以利用,因为它要求使用诸如 Verilog 或 VHDL 这样的硬件描述语言( HDL )来进行硬件编程。已经有人尝试了在更高级语言和框架中对 FPGA 编程,比如 C 和 OpenCL ,但是通常要在简单性和速度之间折中。
F1 实例类型提供了采用 16nm 工艺制造的 Xilinx UltraScale+ VU9P 器件。每个芯片提供超过 250 万个逻辑元件。FPGA 通过 PCIe x16 接口连接到 CPU 和内存,通过共享访问同一存储空间,可提供高达 12 Gbps 的双向通信速度。在单个实例包含多个 FPGA 的情况下,它们还可以共享对 400 Gbps 双向环的访问,以实现低延迟通信。虽然这一切听起来令人印象深刻,但是对于那些一直使用快速通道互连( QPI )的 FPGA 的人而言,这仍然令人失望,因为 QPI 为放置在 CPU 插槽中的 FPGA 提供了更高的带宽和更低的延迟。然而,双向环将被证明是利于多个 FPGA 设计的。
为 FPGA 编程选择有效的工具通常是一件具有挑战性的事情,亚马逊通过提供包含设计和验证工具在内的亚马逊系统映像( AMI )解决了这个问题。FPGA 可以使用 VHDL 或 Verilog 进行编码,并使用 Xilinx Vivado 设计套件(Xilinx Vivado Design Suite)进行验证。一旦设计完成,就可以打包成亚马逊 FPGA 映像(AFI),它扩展了通常的 AMI。之后 AFI 会出现在 AWS Marketplace 中,以便可以向其他人提供基于 FPGA 的应用程序。
相比于通用 CPU 上运行的软件,如果在 FPGA 硬件编程上投入的时间能够换来规模的提升和延迟的降低,那么就可以使用 FPGA。典型的例子有,网络中的网速深度包检查(例如, Xilinx 论文 [pdf] )、金融服务中的低延迟交易系统(例如,海德堡大学论文[pdf] )、搜索引擎优化(例如, Microsoft Project Catapult )以及机器学习(例如,Tensor 处理单元 [ TPU ] 似乎是用FPGA 做的原型)。其中一些用例是以网络为中心的,这意味着网络流量将需要迁移到AWS 网络以便让FPGA 发挥效力。例如,为了降低应用交易延迟,AWS 必须取代现有的托管提供商成为交易和金融市场流动性的优选平台。在短期内,F1 可能主要用于机器学习和专业数据分析应用程序。
F1 让人感到惊喜的一点是,它不是基于英特尔的至强芯片。至强芯片将 CPU 和 FPGA 放置在同一个管芯上,这是由于英特尔在 2015 年收购了 Altera。所以不久后很可能会有一个 F2 实例类型。FPGA 服务将显著降低使用该技术的准入门槛,这将激起一股简化开发者体验的新浪潮。这个是有一些早期征兆的,比如 Reconfigure.io 发布了一个为 FPGA 加速器提供 Go 语言支持的平台,原先运行在软件里的串行通信Go 程序就可以变成运行在硅元件里的并行通信Go 程序。还值得注意的是,像 MyStorm 这样的开发小组正在把他们的 FPGA 开发向相关爱好者开放。
查看英文原文: Amazon Preview FPGA enabled EC2 Instances
感谢薛命灯对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(微信号: InfoQChina )关注我们。
评论