自动驾驶 Autopilot FSD是特斯拉最核心的应用软件。可以把其软件收入组成分为三块,具体而言:
1)Autopilot FSD(Full Self-Driving)完全自动驾驶选装包。特斯拉著名的自动驾驶的功能,也可以说是特斯拉汽车的灵魂。消费者付费激活后,可以享受到包括自动泊车、自动辅助导航驾驶、智能召唤等在内的高级自动驾驶功能,而且后续可以通过 OTA 空中软件持续升级自动驾驶能力。2020 年 7 月 1 号,其价格已经上涨至 8000 美元/套(国内 64000 元/套)。
2) OTA 付费升级。特斯拉此前对于软件的 OTA 升级基本上是以免费的形式提供的。2019年以来,特斯拉开始积极尝试 OTA 付费升级。典型案例就是“Acceleration Boost”加速性能升级包。Model 3 车主只要付费 3000 美元,即可将汽车的百公里加速性能从 4.6s 提升到4.1s。
3) 高级车联网功能。特斯拉从 2019 年 Q4 开始,首度开启车联网高级连接服务收费(9.9美元/月),车主支付了服务费后即可使用实时路况、卡拉 OK、流媒体等高级车联网功能。
其中,OTA 付费升级以及高级车联网功能两块业务是特斯拉从 2019 年开始逐步发力的软件业务。现阶段,FSD 是特斯拉最核心的应用软件,其软件收入也主要由 FSD 选装包贡献。
完全自动驾驶芯片(FSD芯片,以前的自动驾驶硬件3.0)是特斯拉设计的自动驾驶芯片,在2019年初为他们自己的汽车推出。特斯拉声称,该芯片的目标是自主4级和5级。FSD芯片采用三星的14纳米工艺技术制造,集成了3个四核Cortex-A72集群,共有12个CPU,工作频率为2.2GHz,1个Mali G71 MP12 GPU,2个神经处理单元,工作频率为2GHz,还有其他各种硬件加速器。FSD最多支持128位LPDDR4-4266内存。
FSD芯片的设计和规划始于2016年,当时特斯拉声称他们没有看到适合他们解决自动驾驶问题的其他解决方案。FSD芯片项目由吉姆-凯勒和皮特-班农以及其他建筑师领导。该设计团队于2016年2月成立。开发工作在18个月内完成。2017年8月,该芯片被发布用于制造,第一批硅片于2017年12月完全工作回来。对设计进行了一些额外的修改,需要重新制作。
2018年4月,B0步进被发布到制造业。B0的全面生产在2018年7月获得资格后不久开始。2018年12月,特斯拉开始用新的硬件和软件堆栈对员工汽车进行改造。2019年3月,特斯拉开始在其Model S和Model X汽车中批量运送FSD芯片和计算机。2019年4月,在特斯拉Model 3中开始生产出货。
完全自动驾驶芯片或简称FSD芯片是特斯拉自制的定制设计的自动驾驶芯片。该芯片自2016年以来一直在开发,并在2019年初进入量产阶段。作为特斯拉现有汽车的升级产品,FSD芯片继承了先前解决方案的大部分功率和热要求--包括保持100瓦的最大功耗。由于芯片本身是专门为特斯拉自己的汽车和他们自己的要求设计的,替代性神经处理器的大部分通用能力已经从FSD芯片中剥离出来,只留下他们需要的硬件设计。
在高层次上,该芯片是一个完整的片上系统,能够启动标准的操作系统。它是由三星在德克萨斯州奥斯汀的工厂采用14纳米工艺制造的,在260毫米见方的硅片上装有大约60亿个晶体管。FSD芯片符合AEC-Q100-2级汽车质量标准。选择成熟的14纳米节点而不是更前沿的节点,归结为成本和IP准备。有12个64位ARM内核,作为三个四核Cortex-A72内核集群,工作频率为2.2GHz,用于通用处理。还有相对较轻的GPU,主要设计用于轻量级的后处理。它的工作频率为1GHz,能够达到600GFLOPS,支持单精度和双精度浮点运算。该芯片具有一个相对低成本的传统内存子系统,支持128位LPDDR4内存,工作频率为2133MHz。
安全系统
有一个安全系统,它包含了一个双核锁步CPU,对汽车执行器进行最终仲裁。这个CPU确定由FSD计算机上的两个FSD芯片产生的两个计划是否匹配,以及驱动执行器是否安全(参见§操作)。
安全系统
安全系统的设计是为了确保芯片只执行经过特斯拉加密签名的代码。
相机串行接口
FSD芯片有一个摄像机串行接口(CSI),能够从各种视频输入设备中每秒处理多达25亿个像素。
FSD芯片集成了一个H.265(HEVC)视频编码器,用于各种应用,如倒车摄像头显示、仪表盘和云剪辑记录。
图像信号处理器
FSD集成了一个图像信号处理器(ISP),其内部24位流水线旨在处理特斯拉汽车上配备的8个HDR传感器,能够每秒处理多达10亿个像素。ISP具有色调映射功能,使芯片能够暴露出由于明/暗点(如阴影)而产生的额外细节。此外,ISP还具有降噪功能。
神经处理单元
FSD芯片集成了两个定制设计的神经处理单元。每个NPU包含32 MiB的SRAM,旨在存储临时网络结果,减少对主存储器的数据移动。整体设计相当简单明了。每个周期,256字节的激活数据和另外128字节的权重数据从SRAM中读到MACs阵列中,在那里它们被合并。每个NPU有一个96x96的乘积阵列,总共有9,216个MAC和18,432个操作。对于FSD芯片,特斯拉使用8位乘8位的整数乘法和32位整数加法。对这两种数据类型的选择主要是由于他们努力降低功耗(例如,32位FP加法的功耗大约是32位整数加法的9倍)。在2GHz下运行,每个NPU的峰值性能为每秒36.86万亿次运算(TOPS)。每块芯片上有两个NPU,FSD芯片的综合峰值性能可达每秒73.7万亿次运算。在点乘操作之后,数据被转移到激活硬件、池化硬件,最后进入汇总结果的写缓冲器。FSD支持多种激活功能,包括整流线性单元(ReLU)、Sigmoid线性单元(SiLU)和TanH。每个周期,128字节的结果数据被写回SRAM。所有的操作都是同时和连续进行的,重复进行直到完成整个网络。
一些硬件已经被简化,这就把复杂性放到了软件上。这样做是为了降低硅的成本,以支持稍微复杂的软件。软件可以映射和分配单个SRAM库。在特斯拉的NN编译器的帮助下,还可以进行层融合,通过耦合conv-scale-act-pooling操作来实现数据重用。编译器还执行层平滑,确保一致的内存访问,添加旨在减少库冲突的通道填充,并插入DMA操作以在使用前预取数据。在代码生成过程中,权重数据被生成,代码被压缩,并生成一个CRC校验以保证可靠性。
在正常操作下,神经网络程序在启动时被加载,并在芯片通电的整个过程中保持在内存中。运行是通过设置输入缓冲区地址(如新拍摄的图像传感器照片),设置输出缓冲区地址,和权重缓冲区地址(如网络权重),设置程序地址,然后运行。NPU会异步地自行运行整个神经网络模型,直到达到停止指令,触发中断,让CPU对结果进行后处理。
FSD计算机的设计是为了加装到现有的特斯拉车型上,因此在外形尺寸和I/O方面基本相同。计算机本身正好可以放在汽车手套箱的后面。FSD计算机可以由技术人员安装在与先前的自动驾驶硬件2.5板相同的插槽中。板子本身包含了两个完全独立的FSD芯片,以及它们自己的电源子系统、DRAM和闪存,以实现完全冗余。每个芯片从自己的存储存储器启动,并运行自己的独立操作系统。在板子的右边(如下图所示)是八个摄像头的连接器。电源和控制装置在电路板的左侧。该板位于两个独立的电源上--一个用于FSD芯片,一个用于另一个。此外,一半的摄像机位于一个电源上,另一半位于第二个电源上(注意,视频输入本身是由两个芯片接收的)。冗余的设计是为了确保在一个组件,如摄像机流或电源或板上的一些其他IC坏了的情况下,整个系统可以继续正常运行。
操作
当通电并启动时,感官输入从各种来源输入到电路板。其中包括当前的汽车读数,如惯性测量单元(IMU)、雷达、GPS、超声波传感器、车轮转速、转向角和地图数据。有8个外部视觉摄像头(在某些车辆上有1个内部摄像头)和12个超声波传感器。数据同时被送入两个FSD芯片进行处理。这两个芯片独立形成汽车的未来计划--汽车接下来应该做什么的详细计划。然后,来自两个芯片的两个独立的计划被发送到安全系统,安全系统对它们进行比较,以确保达成一致。一旦来自两个芯片的两个计划在计算的计划上达成一致,汽车就可以继续前进并按照该计划行动(即操作执行器)。然后,驱动命令被验证,感觉信息被用作反馈,以确保命令执行了所需的操作。整个操作循环以高帧率连续运行。
功耗
运行完整的软件堆栈,FSD计算机耗散了72W。这比之前的解决方案HW2.5所耗散的57瓦特多了大约25%。在这72瓦中,包括由NPU耗散的15瓦。与HW2.5相比,运行确切的软件堆栈和传感器,特斯拉报告说每秒的帧数提高了21倍。