正文
FPGA方案的优势
除了传统SoC嵌入式平台和GPU平台外,嵌入式机器视觉硬件解决方案还有ASIC和FPGA两种。就性能和能效比来说,设计得当的ASIC将会是终极解决方案。然而,随着先进工艺节点流片成本越来越高,硬件厂商对于设计制造ASIC往往非常谨慎,因为开一块芯片的成本是以数百万美元计的。另一个问题是,目前对于嵌入式机器学习ASIC的架构还处于研究阶段,并没有一个公认的最优架构。甚至嵌入式机器学习算法本身就处于高速发展阶段,最热门的算法往往过了半年就会被新算法超越很多。而ASIC的开发周期往往是以年为单位计算的,因此选择一种算法并为之而优化ASIC架构的风险很大,很可能等芯片开发完成了算法已经被淘汰了。
这时候,FPGA的灵活性优势就体现出来了。FPGA的开发周期可以短到几个月,因此能跟上算法的进化速度。另外,ASIC开发是一次性的,一旦设计定案了就很难更动,如果需要改动架构就需要再投入一遍数百万的开发资金重新设计流片,但是FPGA要改动架构只需要新的设计完成后重新写入即可,其更动成本相比ASIC来说可以忽略不计。正因为是这样,硬件厂商利用FPGA可以根据自身算法和应用的需求灵活而低成本低风险地定制设计最佳硬件架构,从而实现非常高的性能和非常好的能效比。
另外,FPGA除了灵活性之外,其在架构上也有非常适合深度学习的地方。来自MIT的陈喻新在2016年ISSCC发表的Eyeriss深度学习加速器论文中指出,深度学习加速器最需要优化的地方就在于内存访问,因为机器学习应用中有许多数据实际上是可以复用的,如果有足够多的片上缓存就可以把这些可复用数据放在缓存中随时以较快的速度和较低的能量消耗去访问,而不必存到片外访问速度慢且能量消耗大的DRAM中。基于GPU的方案通过多线程的方式来遮盖内存访问延迟,但是无法减小内存访问的能量消耗。因此,用于嵌入式深度学习硬件需要足够多的片上缓存来减小芯片访问DRAM的频率以及随之而来的能量消耗。与GPU片上缓存较小不同,FPGA用来实现逻辑是基于查找表(LUT),而LUT本身就是一种内存,因此片上的LUT资源既可以用于实现逻辑又可以当内存来用。另外,在Xilinx的FPGA上还有大规模的BRAM用来实现SRAM或者FIFO。因此,FPGA有足够多的片上缓存来减小内存访问来带的能量损耗。例如,在Xilinx的Zynq系列FPGA相比Nvidia同样针对嵌入式应用的TX1,其片上缓存容量多了18倍,从而能实现更高速的计算,但是能量消耗却更小。
最后,目前物联网的兴起除了人们日常能接触到的消费电子相关物联网之外,工业、汽车电子乃至军事应用的物联网也是巨大的市场。这些市场对于芯片有着高于消费电子芯片的标准,一般的硬件厂商,尤其是规模较小的厂商,想要自己开发这些市场的芯片并满足标准非常困难。但是,如果使用FPGA开发,则可以直接买到满足这些标准的FPGA,这就使得小公司也能快速开发针对这些市场的产品。