FPGA全称“可编辑门阵列”(Field Programmable Gate Array),其基本原理是在FPGA芯片内集成大量的数字电路基本门电路以及存储器,而用户可以通过烧入FPGA配置文件来来定义这些门电路以及存储器之间的连线。这种烧入不是一次性的,即用户今天可以把FPGA配置成一个微控制器MCU,明天可以编辑配置文件把同一个FPGA配置成一个音频编解码器。现在FPGA和人工智能相关的主要机会是云端服务器的可配置运算 ,目前这个领域的玩家主要是两个,Xilinx和Altera,后者已经被Intel收购。
当下FPGA遇到的一个最关键的问题就是 开发者生态 。传统CPU也好GPU也好,编程是比较容易的,使用的是语言是C++、Java,大家都很熟悉,而且已经形成了成熟的体系,开发环境、生态系统还有开发者的社区这些都很好。但是FPGA开发通常需要使用硬件描述语言,如Verilog、VHDL等等,这些对于程序员来说需要大量的时间才能掌握。这样的话FPGA的生态就无法发展,因为门槛高意味着做的人少,做的人少意味着知名度低,相关项目数量少,这又导致了无法吸引到开发者参与项目,如此便形成了恶性循环。
针对这种情况,Xilinx就发布了一个比较能改善生态的东西,叫做可重配置加速栈,这些用于云端的FPGA将会使用部分重配置方案。什么意思呢?通常FPGA配置过程包括硬件描述语言的综合、布局布线、最后产生比特流文件并写入以完成配置。在这个过程中,综合以及布局布线花费的时间非常长,可达数小时,而最后比特流文件写入以及配置可以在一秒内完成。用于云端的FPGA方案为了实现快速应用切换,预计将会使用硬IP(即针对某应用硬件加速的比特流),并在需要使用该应用时快速写入该比特流。在未来,云端FPGA的生态预计将不止包括Xilinx,还会包括许多第三方IP提供商,最后形成类似App Store的形式让使用者方便地选购对应的硬件加速方案并实时加载/切换。
目前国内FPGA水平较弱,而且FPGA需要一整套从软件到硬件的流程,需要深刻的积累,对于创业公司并不是一个最好的方向,更适合国家科研项目。但是创业公司使用FPGA,做FPGA的解决方案,基于FPGA开发或者做FPGA上的IP,是个不错的机会。换句话说就是你不去手机,而是做APP。其实这个方向国内也已经有不少公司在做了,我知道的比较出名的有深鉴科技。