特斯拉是全球新能源汽车产业的领先者之一,旗下的电动汽车不但提供了独特的驾乘体验,还带给驾驶者充分的科技感受。尤其是在自动驾驶领域,以激进著称的特斯拉为旗下所有车型都提供了自动驾驶套包的选配,算是对自动驾驶最为看好、贯彻自动驾驶技术最为彻底的车企之一。不过自动驾驶作为一项全新技术,对计算能力要求极高。特斯拉从研发自动驾驶技术开始,就非常注重自家的知识产权和技术独立性。在换用了多家厂商的方案后,特斯拉在2016年走上了自研自动驾驶芯片的道路。经过数年的研发,特斯拉的自动驾驶芯片和方案目前处于什么状况?本文将为你解答这个问题。
如果说在自动驾驶领域,谁的定价最为随心所欲,那一定是特斯拉了。2019年5月,特斯拉宣称旗下全自动驾驶功能FSD涨价,从5000美元涨价到6000美元。两个月后,又宣布FSD降价至3000美元。这还没完,仅仅在一个月之后,特斯拉又将该功能的选配价格上涨了1000美元。如此频繁地调整价格,让人们在这个新能源车企的身上看到了一丝IT行业厂商的影子。甚至有网友问马斯克:“你是打算半年涨价一次吗?”马斯克则回答:“不,我们打算2~4个月调整一次价格,这将取决于我们的技术开发情况而定。”
特斯拉反复的调价、却依旧有消费者对其自动驾驶功能趋之若鹜,这无疑反映了一个事实:特斯拉在自动驾驶的方案上有硬货,消费者就吃这套。那么,特斯拉在自动驾驶领域有什么独特的设计和方案呢?
从买到造,特斯拉决定自己来做
特斯拉在自动驾驶领域已有多年的积累。早在2014年,特斯拉就联合Mobileye推出了第一代自动驾驶产品。两年后,特斯拉与Mobileye结束合作,转而采用英伟达旗下的产品。不过在这项合作开始的同时,特斯拉就已经开始招兵买马准备自己的芯片了。
2016年,特斯拉启动自研芯片的项目,2017年流片完成,2019年4月份特斯拉FSD,也就是Full Self Driving全自动驾驶芯片正式以量产的形式发布,特斯拉在自动驾驶硬件方面已经发展到第三代。2019年9月,特斯拉在业内著名的芯片会议HotChip上公布了芯片设计和架构的大量细节,一时间业内都为之侧目。
说起特斯拉自研的自动驾驶芯片,人们都会惊叹于特斯拉强大的技术研发实力。不过在自研芯片的背后,是极高的技术风险和巨额投资。那么特斯拉为什么放弃外购,而启动自研芯片的计划呢?说来说去,还是一个投入和收益的问题。
特斯拉的目标是在每一辆自家汽车上都搭载自动驾驶功能,但是会根据用户是否付费来开启或者关闭这一功能。目前特斯拉汽车的全球年销量大约在15万辆左右,并且这个数据每年的增速都很高。这意味着特斯拉会面对一个巨大且不断增长的芯片市场。
除此之外,追求技术自主也是特斯拉的一贯风格。之前特斯拉购买的芯片来自Mobileye和英伟达,而这两家芯片厂商的产品都并非专门为特斯拉定制设计,因此不一定可以满足特斯拉未来的需求。并且这两家厂商的产品为了普适性和广泛的兼容性,还会加入很多在特斯拉看起来并不需要的设计。因此,综合考虑了销量、市场和自己掌握技术的能力之后,特斯拉开启了自研芯片之路,并且在2019年4月推出了这款产品。
▲特斯拉在自研芯片之前,采用过多家厂商的方案。图为英伟达的DriverPX系列产品。
▲特斯拉Model 3车型上已经普及了自动驾驶模块,不过波动的定价让消费者感觉有点无所适从。
初探特斯拉FSD:专为自动驾驶设计的SoC
特斯拉FSD芯片是一款专门为自动驾驶功能设计的产品,它的架构比较特殊,不但有传统的CPU和GPU部分,还加入了特别定制的NNA、ISP等部分,共同组成了一个庞大的SoC芯片。
先来看看特斯拉FSD的基础情况。特斯拉FSD采用的是三星在得克萨斯州奥斯汀工厂的14nm FinFET工艺,面积大约为260mm2,集成了60亿晶体管,封装尺寸为37.5mm×37.5mm,底座采用了FCBGA设计,整体设计支持AEC-Q100汽车零部件可靠性验证规范。
芯片内部设计方面,特斯拉采用了完全定制的独享方案,因此很多之前在其他芯片中集成的功能要么被弱化,要么干脆去掉。计算方面,FSD芯片中包含了三个能够提供计算性能的模块,分别是CPU、GPU和NNA(Neural Network Accelerator神经网络加速单元)。其中CPU采用的是Cortex-A72架构,三组、每组4个核心,一共有12个核心,最高运行频率为2.2GHz,这部分处理器核心用于通用的计算和任务。
▲特斯拉FSD芯片内部架构简图
GPU方面,特斯拉设计了一个支持FP32和FP64的GPU模块,主频最高1GHz,最高计算能力约为600GFLPS。NNA方面,特斯拉采用了自研的架构,设计了2个NNA核心,每个核心都可以执行8位整数计算,运行频率为2GHz,单个NNA的峰值计算能力为36.86TOPS,2个NNA的总能力为73.73TOPS。
▲特斯拉FSD芯片的NNA(NNP)、GPU和CPU部分。
除了三大计算性能模块外,还有一个模块值得注意,那就是图像信号处理器ISP。特斯拉设计了一个专用的、带有内部24bit流水线设计ISP,这个ISP专门针对特斯拉汽车上配备的八个HDR传感器而设计,可以每秒钟处理十亿像素的图像信息。在处理中还加入了色调映射等功能,并且允许芯片自主处理阴影、亮点、暗点等细节,还加入了降噪设计。可以说,ISP是特斯拉FSD中除了计算核心外面积最大、功能最复杂的辅助功能模块。
▲特斯拉通过自主研发,终于拥有了面向自动驾驶的芯片和整套方案。
除此之外,特斯拉FSD的其余辅助功能模块设计也颇有特点。特斯拉FSD包含了一个安全模块和一个加密模块。其中安全模块中包含了一组双核心同步的CPU,用于执行汽车信息的仲裁。它可以决定FSD整个模块上2个FSD芯片发出的执行计划是否匹配、以及驱动执行器的过程是否安全。
换句话来说,由于特斯拉FSD模块上包含了两个FSD芯片,这两个芯片在处理过程中可能出现信息、执行不同步的情况,当这种情况出现时,判断就交由安全模块完成并给出最终的判定,以保证信息的同步和无冲突。安全模块之外,加密模块执行的功能是确保整个FSD系统只执行经过特斯拉签名授权的代码,而不是任何其他代码,保证系统的安全性。
视频处理方面,和常见的SoC支持大量的视频格式处理和编解码不同的是,特斯拉FSD只集成了支持H.265(HEVC)的视频编码器,可以用于备用摄像机显示、行车记录仪、剪辑视频等内容,其余诸如MPEG、H.264等一概不支持,精简了不少规模。其他输入输出模块方面,FSD系统还拥有一个摄像头串行接口CSI,最高可以支持输入并处理每秒25亿像素。
在内存方面,特斯拉FSD芯片采用了比较廉价的双通道LPDDR4-2133的方案,位宽为128bit,带宽为63.58GB/s。这应该是特斯拉权衡过成本和性能后得出的最佳方案,毕竟内存控制器一向是芯片中的面积大户,并且事关性能又轻易削减不得,性能和规模的平衡处理非常重要。
▲这款芯片采用了LPDDR4内存控制器
从特斯拉FSD芯片的整个设计来看,特斯拉采用了非常个性化和定制化的方案,完全不考虑其通用性(也没必要考虑),只针对特斯拉旗下汽车的使用。这样一来,小小的60亿晶体管的芯片就能释放出大量的计算资源,令人侧目。
▲特斯拉FSD芯片的外壳和内部照片
特斯拉定制的NNA:恰到好处
说完了整体架构,再来看看特斯拉定制的NNA核心。这也是特斯拉在Hotchip以及之前数次发布会上提及的重要内容。
特斯拉FSD芯片内包含了2个NNA,每个NNA中有一个96×96的MAC矩阵,包含了32MB的内置SRAM,整体工作频率为2GHz。所以在理想的情况下,一个NNA的计算能力是96×96×2OPs×2GHz=36.86TOPS,两个核心加起来就是73.73 TOPS。一个FSD系统有2个FSD芯片,整板计算能力就是144TOPS。
▲特斯拉FSD内部NNA的微架构简图
这里需要注意的是,特斯拉设计的NNA根据目前的情况来看,由于神经网络计算并不需要太高的精度,因此特斯拉设计的芯片只能支持8位整数计算,并且整个计算周期设计也很简单。在每个计算周期,NNA都会从内置的32MB SRAM中读取256bit的激活数据和另外128bit的权重数据组合在一起进入乘法累加,也就是MAC阵列,后者可以执行96×96的MAC操作,总共可移植性9216个MAC和18432个操作。
在这里,NNA只支持8位乘以8位整数乘法和32位整数乘法,完全不支持任何浮点计算,也无需支持任何其他格式,比如16位或者4位计算等,这都大大降低了核心的设计难度。并且这样专用而直接的设计,还可以在很大程度上降低功耗。
▲NNA的基本规格和信息
举例来说,支持浮点运算的32位加法器功耗大约是支持整数计算的32位加法器的9倍。在完成了MAC的乘法累加操作后,数据将会被转移到激活(Activations)以及池化部分(Pooling),并等待写入缓冲区汇总结果。FSD支持很多激活功能,包括整流线性单元ReLU、Sigmoid线性单元 (SiLU)和TanH。每个周期,NNA都可以将128字节的结果写回SRAM,所有的操作同时和连续的进行,直到整个计算完成。
▲在执行特定运算时,NNA的性能非常出色。
除了上述计算过程外,特斯拉在NNA的设计中还偏向于将硬件简化,并复杂化软件,这样做可以降低芯片成本。比如软件可以映射和分配单个SRAM库,在特斯拉的神经网络编译器的帮助下,还可以执行层融合操作,通过耦合conv-scale-act-pooling操作允许数据重用。编译器还可以通过执行层平滑处理来确保数据一致的内存访问操作,还可以加入代码压缩、CRC校验等功能,保证数据的可靠性。
除了架构设计之外,特斯拉NNA另一个值得注意的点就是32MB的片上SRAM缓存。这是迄今为止见过的最大规模的片上SRAM缓存了,相比其计算能力,这个容量可以说相当抢眼。其他典型的芯片比如谷歌初代TPU,采用了256×256的MAC,也只是在片上设计了24MB的SRAM。从特斯拉给出的芯片图样来看,SRAM占据了NNA面积的75%以上,耗费了大量的晶体管。
▲特斯拉FSD的NNA核心,可见SRAM面积很大。
对于这种特殊的设计,特斯拉解释这样做是为了让数据尽可能地在片内周转,而不用频繁地与内存或者其他模块进行读写操作。这样做不但可以提高性能,还可以有效降低功耗。特斯拉宣称整个NNA的片上操作大概需要1TB/s带宽,所有数据都在片上完成,这样SRAM就可以满足其需求。
在指令方面,特斯拉认为之前一些神经网络处理器的设计在缓存、寄存器以及逻辑控制方面消耗了大量能量,因此NNA需要尽可能多地降低这方面的耗费。于是特斯拉干脆简化逻辑控制,将资源集中在计算方面。特斯拉NNA的指令集非常简单,只有8条指令,包括DMA Read、DMA Write、Convolution、Deconvolution、Inner-product、Scale、Eltwidth、Stop,流程控制更是只需要配置4个信息,进一步简化了操作。
有关这个芯片的实际性能,特斯拉给出的数据是2300帧/秒,72W功耗。特斯拉还给出了一些示例网络,每秒大约需要80TOPS,恰好满足芯片的计算需求,2个芯片的话也仅有55%利用率,还存在很大的空余性能。另外,马斯克宣称这个芯片的性能是之前英伟达方案的21倍之多,并且更为安全。不过马斯克没有给出具体的指标和计算方法。
FSD系统:双倍安全
除了FSD芯片外,特斯拉还给出了FSD系统的相关消息。整个FSD系统上布置了2个FSD芯片,特斯拉还给出了一些示意图,显示FSD芯片在整个系统中的工作情况。
▲FSD系统全貌
从特斯拉给出的信息来看,两个FSD芯片以独立的方式工作,当一颗芯片出现问题时,另一颗芯片可以完全接管。为了安全,特斯拉还设计了冗余的电源、重叠的摄像机视野部分、各种向后兼容的连接器和接口。
在一般操作中,当整车信息通过雷达、摄像头等传感器发送至FSD系统时,两颗芯片都会处理并给出方案,然后由之前提及的芯片上的模块进行平衡和仲裁、验证,最后发送给传动装置ECU并驱动汽车进行操作。特斯拉宣称,FSD系统的故障率非常低,甚至比人失去意识的可能性还要低一个数量级。
▲FSD系统工作流程简图
其他方面,特斯拉FSD系统板载了8颗LP DDR4内存,每个芯片有4颗,另外每个芯片各有一颗NAND颗粒用于存储操作系统和数据。不过这些存储芯片的容量和规格目前还没有披露出来。散热方面,整体方案采用水冷设计,确保整个工作过程的安全和稳定。
▲特斯拉自动驾驶硬件性能提升情况
功耗方面,特斯拉FSD系统的每英里功耗仅为250W,大概只有之前硬件的七分之一,成本也是之前硬件的七分之一。不得不说,特斯拉走上自研芯片这条道路还是非常正确的,不但节省了大量的资金耗费,同时也带来了新的利润增长点。
特斯拉FSD系统和芯片已经正式运行了一段时间,总的来看,它带来了诸如交通信号灯识别、自动泊车、自动辅助变道、城市内自动辅助驾驶、自动辅助导航驾驶、停车召唤等功能,让汽车的自主能力提升了一个台阶。
▲特斯拉FSD在识别物体方面有着强大的实力
不仅如此,在这一代FSD芯片发布后,特斯拉也没有停下脚步,而是加快进度,研发下一代FSD芯片。目前有消息显示,新FSD芯片的性能起码会再翻一番,未来它还能带给用户怎样的功能与体验,令人十分期待。
暂无评论内容