作者简介:刘少山,PerceptIn公司联合创始人。加州大学欧文分校计算机博士,研究方向包括智能感知计算、系统软件、体系结构与异构计算(FPGA、GPU)。现在PerceptIn主要专注于增强现实、虚拟现实、机器人的核心SLAM技术及其在智能硬件上的实现与优化。创立PerceptIn之前在百度美国研发中心工作。
责编:周建丁(zhoujd@csdn.net)
本文为《程序员》原创文章,未经允许不得转载,更多精彩文章请订阅2016年《程序员》http://dingyue.programmer.com.cn
十年前,微软创始人比尔 · 盖茨在其文章《A Robot in Every Home》里提出他对未来的憧憬:机器人将会像个人电脑一样进入每个家庭,为人类服务。随着人工智能以及智能硬件在过去几年的飞速发展,到了2016年的今天,笔者坚信各项技术已臻成熟,智能机器人很快进入商业化时代,盖茨的愿景也极有可能在5到10年内实现。
要想机器人有智能,必先赋予其感知能力。感知计算,特别是视觉以及深度学习,通常计算量比较大,对性能要求高。但是机器人受电池容量限制,可分配给计算的能源比较低。除此之外,由于感知算法不断发展,我们还需要不断更新机器人的感知处理器。与其它处理器相比,FPGA具有低能耗、高性能以及可编程等特性,十分适合感知计算。本文首先解析FPGA的特性,然后介绍FPGA对感知算法的加速以及节能,最后谈一谈机器人操作系统对FPGA的支持。
FPGA:高性能、低能耗、可编程
与其它计算载体如CPU与GPU相比,FPGA具有高性能、低能耗以及可硬件编程的特点。图1介绍了FPGA的硬件架构,每个FPGA主要由三个部分组成:输入输出逻辑,主要用于FPGA与外部其他部件,比如传感器的通信;计算逻辑部件,主要用于建造计算模块;以及可编程连接网络,主要用于连接不同的计算逻辑部件去组成一个计算器。在编程时,我们可以把计算逻辑映射到硬件上,通过调整网络连接把不同的逻辑部件连通在一起去完成一个计算任务。比如要完成一个图像特征提取的任务,我们会连接FPGA的输入逻辑与照相机的输出逻辑,让图片可以进入FPGA。然后,连接FPGA的输入逻辑与多个计算逻辑部件,让这些计算逻辑部件并行提取每个图片区域的特征点。最后,我们可以连接计算逻辑部件与FPGA的输出逻辑,把特征点汇总后输出。由此可见,FPGA通常把算法的数据流以及执行指令写死在硬件逻辑中,从而避免了CPU的Instruction Fetch与Instruction Decode 工作。
高性能
虽然FPGA的频率一般比CPU低,但是可以用FPGA实现并行度很大的硬件计算器。比如一般CPU每次只能处理4到8个指令,在FPGA上使用数据并行的方法可以每次处理256个或者更多的指令,让FPGA可以处理比CPU多很多的数据量。另外,如上所述,在FPGA中一般不需要Instruction Fetc