五、 Mobileye的成长之路,英特尔雄心勃勃欲通吃自动驾驶感知决策产业链;
四、挑战英伟达
GPU在深度学习训练阶段拥有压倒性的效能优势,但是在推理阶段效能不及MAC为核心的DSP器件,同时GPU还是冯诺伊曼架构,在并行计算方面,效能与哈佛架构有明显差距。深度学习分训练和推理两部分,推理用在嵌入式系统,训练只能在服务器上完成,故自动驾驶在推理端的应用数量比训练端要广阔的多,因此出现一大批厂家挑战英伟达的霸主地位。
GPU主要针对图像,灵活性也不算高,所有运算都是浮点运算,没有直接的整数运算,虽然近期有所改善,但效能肯定不如CPU。CPU处理一次标量乘法只要一次标量乘法指令,GPU却把标量先转换成向量 然后用一条SIMD指令。GPU的存储系统是一个二维的分段存储空间,包括一个区段号(从中读取图像)和二维地址(图像中的X、Y坐标)。没有任何间接写指令。输出写地址不能由程序改变。这对于自然分布在存储器之中的算法而言是极大的挑战。所以要求输入数据高度对齐。最后一点,不同碎片Slice的处理过程间不允许通信。
灵活性和高性能是矛盾的,必须做出妥协。灵活性高一般代表着使用面广,出货量高,性价比高。高性能一般代表使用面窄,出货量低,而高性能芯片必备先进制造工艺,最好是7纳米或5纳米,这样的芯片流片成本高达近亿美元,性价比自然很低。对于初创厂家,要挑战的对手主要是英伟达,想要从灵活性、性价比方面挑战英伟达是完全不可能的,所以初创厂家和Mobileye无一例外都选择高性能或高效能。
挑战英伟达主要从四个方面入手
一是运算架构,以DSP为核心,用传统SIMD/DSP架构来适配神经网络的技术思想在国际上已有不少先例,甚至有成熟的产品,例如CEVA公司的XM4处理器、Cadence公司的Tensilica Vision P5处理器、Synopsys公司的EV处理器等。他们多以IP核方式出售,用做卷积加速处理,如CEVA在瑞芯微RV1108的应用。踏实淳朴的厂家会直接说使用了多少个MAC,如已经被Xilinx收购的深鉴预定在2018年推出的ASIC版芯片“听涛”。28nm,2个DPU core,每个2048个MAC,总体算力4.1TOPS(4096个MAC @500MHz),核心部分功耗1.1W,整体3W。2016年6月中星微电子发布的号称中国首款嵌入式NPU(神经网络处理器)芯片也是典型的多核DSP。 这种芯片将传统的面向数字信号处理的DSP处理器架构用于处理神经网络,基本上只能对应卷积运算,对RNN和LSTM几乎无能为力。
二是针对存储器和运算单元之间的瓶颈加以改进,将片外内存访问降低,提高吞吐量。典型代表是寒武纪的DianNaoYu指令集。在计算机体系结构领域,常用的提升访存性能的方案是缓存Cache机制的引入,CNN算法会引入大量的访存行为,这个访存行为的频繁度会随着参考取样集合的增加而增加(原因很简单,缓存无法装下所有的参考取样,所以,即便这些参考取样会不断地被重复访问,也无法充分挖掘数据本地化所带来的cache收益)。针对这种应用类型,实际上存在成熟的优化范式——Loop tiling。Loop tiling的基本思想是,对于循环逻辑,通过将大块的循环迭代拆解成若干个较小的循环迭代块,减少一个内存元素的复用距离,换句话说,也就是确保当这个内存元素被加载到cache以后,尽可能保留在cache中,直到被再次访问,这样就达到了减少了昂贵的片外访存的开销的目的。 使用Loop tiling,片外访存减少了 90%。这就是将访存逻辑定制在硬件层面,通过引入一个称之为IM(Index Module)的硬件模块,完成稀疏访存的处理,从而将稀疏向量/矩阵运算转换成常规向量/矩阵运算。华为就使用了寒武纪的IP。
三是VLIW,Very long instruction word。VLIW是美国Multiflow和Cydrome公司于20世纪80年代设计的体系结构,主要应用于Trimedia(全美达)公司的Crusoe和Efficeon系列处理器中。全美达在2000年发起对巨人英特尔的挑战,当时全美达推出的笔记本电脑无需散热风扇,但软件支持度太弱,2004年挑战失败退出CPU领域。
VLIW体系结构采用多个独立的功能部件,每一个指令周期可以同时流出多条指令,可同时流出的操作类型与数目是确定的,所以指令调度是由编译器静态调度完成(在其它方法中均由硬件实现的)以减少硬件开销,因此指令可同时流出的最大数目越大,超长指令字的性能优势就越明显。每时钟周期例如vliw可运行20条指令,而CISC通常只能运行1-3条指令,RISC能运行4条指令,可见VLIW要比CISC和RISC强大的多。但是,只要是并行处理,就一定会受到更多相关性的限制。这种相关是有程序本身造成的,分为控制相关和数据相关两种,指令在调度时,必须遵循它们之间的依赖关系,防止冲突发生。
VLIW简化了处理器的结构,删除了处理器内部许多复杂的控制电路,这些电路通常是超标量芯片(CISC和RISC)协调并行工作时必须使用的,VLIW的结构简单,也能够使其芯片制造成本降低,价格低廉,能耗少,而且性能也要比超标量芯片高得多。VLIW是简化处理器的最新途径,VLIW芯片无需超标量芯片在运行时间协调并行执行时所必须使用的许多复杂的控制电路,而是将许多这类负担交给了编译器(指令集)去承担。不过英特尔x86和ARM指令集都建立了庞大的生态体系,要想推广一种全新的指令集完全不可能,这就注定VLIW的使用面很窄,非常封闭。VLIW另一个缺点是如果有非确定性事件如错失缓存,那么整个处理器就会死机,这就要求输入数据高度对齐,非常规范,不能有跳跃。此外,指令集庞大,需要高成本的缓存。VLIW非常适合做视频的编解码,声音的编解码。今天德州仪器最成功的DSP TMS320C6x是最典型的VLIW型芯片。
四是SIMD。说到SIMD就附带提一下并行架构,主要分4级,包括:
- 指令级并行,即Instruction-level parallelism (ILP),包括Pipelining, out-of-order execution, superscalar(超标量) processing。
- 线程级并行,Thread-level parallelism (TLP),Simultaneous/fine-grained/coarse-grained multi-threading。
- 存储级并行,Memory-level parallelism (MLP),Non-blocking caches, out-of-order execution, prefetching, runahead。
- 数据级并行,SIMD就是典型的数据级并行。
按照1966年Flynn提出的分类,指令流(Instruction Stream)——机器执行的指令序列。数据流(Data Stream)——指令调用的数据序列,包括输入数据和中间结果。多倍性(Multiplicity)——在系统最受限制的元件上同时处于同一执行阶段指令或数据执行的最大可能个数。
按照指令和数据流不同的组织方式,计算机系统可分为四类:
- 单指令单数据流(Single Instruction stream and Single Data stream,SISD):SISD其实就是传统的顺序执行的单处理器计算机,其指令部件每次只对一条指令进行译码,并只对一个操作部件分配数据。流水线方式的单处理机有时也被当成SISD。
- 单指令多数据流(SIMD) 特性:处理机以同步的形式执行同一条指令。
- 多指令单数据流(MISD) 特性:被证明不可能,至少是不实际。
- 多指令多数据流(MIMD) 特性:能够实现作业,任务,指令等各级全面并行。
SIMD应用广泛,包括向量/阵列处理器,GPU和向量指令集。
上图为传统的超标量运算架构与SIMD的对比。简单地说,SIMD是一种采用一个控制器来控制多个处理器,同时对一组数据(又称“数据向量”)中的每一个分别执行相同的操作从而实现空间上的并行性的技术。在微处理器中,单指令流多数据流技术则是一个控制器控制多个平行的处理微核。通常以指令集的形式出现,SIMD和VLIW是好搭档。
五、英特尔的Mobileye EyeQ5
Mobileye创业之路漫长,1999年创业,2010年第一块量产级芯片问世,历时11年。软硬一体是Mobileye成功的关键, Mobileye从EyeQ2架构基本定型,EyeQ4做了重大升级,EyeQ5主要是CPU方面有所提升,增加了VMP的数量而已。
上图为第一代EyeQ1,只做算法验证,未量产,很明显使用了ARM946E内核。EyeQ1植入多个硬核,效率很高,成本更高。
EyeQ2内部框架图如上,第一次使用VMP。 EyeQ2开放性还是蛮高的,包括10个并行处理器,分别是两个332MHz MIPS 34KF, 8个视觉专用处理器,这8个有三个是VMP。Mobileye对VMP申请了专利,本质上还是一种类似FPGA的查找表结构。其他5个分别是CE,即聚类引擎Classifier Engine。针对双目的视差找寻DFinder (Disparity Finder);滤波Filter, 预处理视窗PW (Preprocessor Window),运动轨迹Tracker用于动作分析。车道线识别引擎被取消了。当时EyeQ2对标德州仪器的达芬奇,号称拥有达芬奇7倍的性能。不过硬核太多,导致成本居高不下。
EyeQ3/4内部框架图如上,EyeQ3在2014年问世,用软件方式将5个专用视觉模块都取消,大幅度降低成本,一举成功。EyeQ4则第一次增加了PMA和MPC。PMA即Program Macro Array,可编程宏阵列,这个是Mobileye独创的,Mobileye解释说PMA就是能够达到类似硬核的效能,但仍然具备可编程性,The programmable macro array (PMA) enables computation density nearing that of fixed-function hardware accelerators without sacrificing programmability. 似乎是一个灵活度很高的固核,似乎是EyeQ3取消硬核后,有些应用力不从心,于是在EyeQ4上加入了PMA。推测实质上是一个多核DSP架构,要不然很难拥有384个MAC,实际量产时,频率降低到了750MHz,单从频率来看,倒不可像是FPGA。
MPC即Multi-Thread Processor Cluster,多线程处理器群。这也是Mobileye独创的词,只有8个MAC。The MPC is more versatile than any GPU and more efficient than any CPU,Mobileye是这么解释MPC的。比任何GPU都应用多样化,比任何CPU都效率高。 GPU的强项是并行运算能力比CPU强(多个不同任务的并行运算GPU也无法胜任,GPU只适合处理单个可并行任务的并行运算),而不是浮点运算能力强。多线程这种CPU技术就是对应多个不同任务的,同时它是双核8MAC的群结构,等于16核CPU处理多个不同任务的并行计算,效能会比一般的CPU略高。
EyeQ4仍然由Mobileye的老伙伴意法半导体采用28纳米FD-SOI工艺制造,而目前大部分强调运算性能的芯片都是采用16纳米以下工艺,英伟达的Xavier是12纳米工艺,华为已经有7纳米工艺芯片问世。28纳米FD-SOI工艺最大的优势是成本低。
EyeQ5内部框架图如上,18个电脑视觉处理器实际就是VMP+PMA+MPC合计18个,估计12个VMP,4个PMA,2个MPC。EyeQ5已经不能再用28纳米FD-SOI工艺,那样落后对手太多,EyeQ5也是采用7纳米FinFET工艺,全球只有台积电一家能够代工,台积电的7纳米订单早已塞爆。按照计划,EyeQ5将在2020年推出。以瑞萨的R-Car H3为例,这是第一款车载16纳米芯片,台积电代工,2015年正式推出,到2019年才能正式量产,2020或2021年才能见到搭载R-Car H3的量产车型,7纳米比16纳米要难得多。
英特尔早期的设计如下图:
后期则取消了Atom,改为下图。
这个AV Kit套件是英特尔雄心勃勃的计划, 包括芯片级 Silicon-only solution,芯片加软件解决方案 Silicon + software solution,完整的子系统,包括主芯片、车载以太网交换机、PCIE交换机、物理层芯片 Complete subsystem,完整的硬件系统,包括摄像头、毫米波雷达和激光雷达,可能还有高精度地图 Complete hardware system, Supply of its internally-developed radars and lidars,移动出行的整套软件技术。 Software technologies necessary for the “moving people” business不仅包括计算平台,英特尔还打算自己设计开发激光雷达和毫米波雷达,为客户提供全套解决方案。
英特尔激光雷达的开发是由英特尔实验室的Silicon Photonics Technology技术小组负责,英特尔也有Silicon Photonics Product Division (SPPD)事业部,从英特尔多年光通讯领域的积累看,英特尔要做的激光雷达可能是两种,一种是1550纳米的旋转型激光雷达,另一种是单光子阵列的Flash激光雷达。光通讯领域基本都是1550纳米激光,这种激光安全系数是目前常用的905纳米的数万倍,可以全天候运作,几乎接近毫米波雷达的气候适应能力。丰田和沃尔沃投资的LUMINAR正是出身光通讯领域,对英特尔来说,激光雷达几乎无技术门槛可言,毫米波雷达也是如此。