自动驾驶域控制器,要具备多传感器融合、导航定位、路径规划、计算决策、V2X无线通讯、运动控制的能力。通常需要外接多个摄像头、毫米波雷达、激光雷达、V2X模块以及IMU等设备,完成包含图像识别、数据处理等功能。
随着自动驾驶商业化趋势愈演愈烈,其所涉及的环境感知、控制决策、运动控制系统,以及与车身其他域控制系统的交互、车联网V2X的通讯信息处理,都需要一个强大的域控制器计算平台支持,而域控制器的处理能力取决于所选型的核心AI芯片的计算能力。目前能够提供自动驾驶AI芯片的公司不多,业内仅有NVIDIA、华为、瑞萨、NXP、TI、Mobileye、赛灵思、地平线等方案,且都未实现量产。
不同的自动驾驶公司,会因为不同的客户以及需求,选择不同的方案。但中间也会有一些共性。当前阶段,AI 芯片的主流仍然是GPU + CPU,但随着机器视觉、语音控制、深度学习的算法在 FPGA以及 ASIC芯片上的不断优化,此两者也将逐步占有更多的市场份额,从而形成与GPU长期共存的局面,并逐渐实现反超。但从长远看,人工智能类脑神经芯片才是发展的终极方向。
AI 芯片是人工智能时代的技术核心之一,决定了自动驾驶计算平台的软硬件基础架构和发展生态。AI 芯片按技术架构分类可分为GPU(Graphics Processing Unit,图形处理单元)、半定制化的 FPGA、全定制化 ASIC和神经拟态芯片等。GPU 通用性强、速度快、效率高,同样功耗也高,特别适合用在深度学习训练方面,但是性能功耗比较低。
FPGA 具有低能耗、高性能以及可编程等特性,相对于 CPU 与 GPU 有明显的性能或者能耗优势,但对使用者技术要求较高,行业门槛不容易迈过。ASIC 可以更有针对性地进行硬件层次的优化,从而获得更好的性能、功耗比。但是ASIC 芯片的设计和制造需要大量的资金,而且深度学习算法仍在快速发展,若深度学习算法发生大的变化,FPGA 能很快改变架构,适应最新的变化,ASIC 类芯片一旦定制则难于进行修改。
FPGA 是在 PAL、GAL、CPLD 等可编程器件基础上进一步发展的产物。用户可以通过烧入FPGA 的配置文件来定义这些门电路以及存储器之间的连线。这种烧入不是一次性的,比如用户可以把 FPGA 配置成一个微控制器 MCU,使用完毕后可以编辑配置文件把同一个FPGA 配置成一个音频编解码器。因此,它既解决了定制电路灵活性的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA 可同时进行数据并行和任务并行计算,在处理特定应用时有更加明显的效率提升。对于某个特定运算,通用 CPU 可能需要多个时钟周期;而 FPGA 可以通过编程重组电路,直接生成专用运算电路,仅消耗少量甚至一次时钟周期就可完成运算。
由于FPGA的灵活性,很多使用通用处理器或 ASIC难以实现的底层硬件控制操作技术,利用 FPGA 可以很方便地实现。这个特性为算法的功能实现和优化留出了更大空间和可修改性。同时 FPGA 一次性成本(光刻掩膜制作成本)远低于 ASIC,在芯片需求还未成规模、深度学习算法暂未稳定,需要不断迭代改进的情况下,利用 FPGA 芯片具备可重构的特性来实现半定制的人工智能芯片是最佳选择之一。
功耗方面, FPGA 也具有天生的优势。CPU执行指令,都需要有指令存储器、译码器、各种指令的运算器及分支跳转处理逻辑参与运行,而FPGA每个逻辑单元的功能在重编程时就已经确定,不需要指令且无需共享内存,从而可以极大的降低单位执行的功耗,提高整体的能耗比。
由于 FPGA 具备灵活快速的特点,因此在众多领域都有替代 ASIC 的趋势。尤其是在需要更多的灵活变更需求验证和支持扩展应用方面,FPGA 在人工智能领域的应用如图所示。
目前深度学习、视觉融合等人工智能计算需求,主要采用 CPU+GPU、FPGA 等已有的适合并行计算的芯片来实现。在自动驾驶应用没有大规模兴起之前,使用这类已有的通用芯片可以避免专门研发定制芯片(ASIC)的高投入和高风险。但是,由于这类通用芯片设计初衷并非专门针对深度学习,因而天然存在性能、功耗等方面的局限性。