今天亚马逊云服务AWS推出了一个服务叫做F1,这个尽管不是极品飞车,但是在数据处理领域,效果却堪比赛车。这个东东就是FPGA,全称叫Field Programmable Gate Array,翻译过来是现场可编程门阵列。挺抽象的,但其实就是可以定制逻辑的芯片。用FPGA的编程语言比如VHDL,Verilog,还有程序员熟悉的C风格的OpenCL写个程序编译,就能烧到芯片里面成为逻辑。有了FPGA,你可以用它做CPU,也可以做DSP,还可以做显卡,反正就是小泥人,捏成什么就是什么。
听起来挺爽的,但是一般FPGA的使用比较复杂,需要有一定的硬件功底才能玩转。一般程序员听到硬件就头大了,很多自称是全栈程序员的大拿也搞不定FPGA。不过真正的大牛程序员不仅写程序,还自己玩芯片,比如阿呆以前在微软亚洲研究院实习时的部门主管Crazy Bird(CB),他曾经在IBM设计了一个计算机叫做深蓝,下国际象棋赢了世界冠军卡斯帕罗夫,名噪一时。为什么这个计算机很厉害?据说CB为了追求性能,自己设计了一款下象棋的芯片并流片,最后在上面写程序,搞了个全定制化。
众所周知,几十年以来,半导体制程不断更新,一直到现在的几nm尺度,所以芯片的性能和容量也不断翻番。但是,现在工艺已经接近极限,芯片制程没办法继续按照摩尔定律往下走,所以Intel不再只走工艺路线,开始向架构路线转移,收购了FPGA厂商Altera,想通过FPGA和CPU的融合来实现更强计算能力。Altera傍上了大树,竞争对手Xilinx也不想做昨日黄花AMD,频频出招,这次AWS就是采用了他们的FPGA芯片。
FPGA使用有门槛,但是为了让广大没有硬件功底的程序员有权利享受更快的计算设备(花更多的钱),FPGA厂商费劲了心思,经过了各种简化,比如用简单易学的高级语言OpenCL编程。
F1加速卡提供了不同的价位,最多的套件包含8个FPGA芯片,其中芯片采用16nm Xilinx UltraScale Plus FPGA,每个FPGA有250万个逻辑单元和6800个DSP引擎,套件包括有ECC保护的64GiB DDR4内存和PCIe X16接口(如果是PCIe 3.0,那带宽就能到128Gb/s)。
F1套件还包含高达4TB的NVMe SSD,而且FPGA之间通过PCIe网络互联。所以看起来FPGA + PCIe Fabric + SSD结合在一起是高性能计算的未来方向之一。
为了方便使用,AWS给开发者免费提供了FPGA开发环境AMI和硬件开发包HDK。FPGA可以按小时付费,无限次烧写。这里说的逻辑单元就是和火柴棍一样的基本组件,比如几千个逻辑单元就能搭出一个简单的32位CPU。DSP呢,就是现成的乘法器等常用计算单元,跟盖房子用的预制件一样。
亚马逊说,如果这块FPGA租给你了,那这段时间别人就不能用了。所以租了就能追求极致性能。自己搞一套FPGA环境是很贵而且花时间的,高端FPGA动辄几千上万一片,有经验的FPGA工程师+硬件工程师雇佣成本也是很高的。所以租一个对有些人来说很省事,省钱。更重要的是,本来数据就在AWS上,就没必要在本地自己搭一套系统了。
F1包含三个开发工具:
- Hardware Development Kit:硬件开发包HDK,包含示例代码,编译脚本,debug工具等。
- AMI:开发环境,可以对FPGA设计进行仿真,编译,最后产生镜像文件。
- AFI,Amazon FPGA Image:编译后的镜像文件可以直接下载到FPGA执行,同时保持加密。
我们来看一个简单的例子。先登入到开发环境AMI,如下图。
进入AMI之后,安装一些依赖包,启动License管理器,然后就能打开Xilinx的FPGA开发工具Vivado了。所以所谓的AMI其实就是一个操作系统,包含了Xilinx的FPGA开发工具和亚马逊的支持包。
通过命令行启动Vivado。
Vivado界面。
写一段Verilog或者OpenCL代码,并编译综合成硬件逻辑。
不过这只是简单的使用,真正要做硬件加速需要解决:CPU,FPGA和内存之间的交互,HDK就是帮你实现这些,包含很多预配置好的接口和常见应用示例程序。
最后,亚马逊说,F1可以用来基因分析,金融分析,实时图像处理,大数据搜索和分析,安全计算(比如加密解密)。阿呆想说,FPGA工程师又有很多新雇主了!
参考: