深度解析:特斯拉「最强」自动驾驶芯片?

news/2024/7/4 6:21:51

640?wx_fmt=jpeg


作者 | 唐杉

来源 | StarryHeavenAbove


在近日结束的Tesla Autonomy活动中,Tesla非常“大方”的介绍了自己的Full Self-Driving (FSD) Computer从系统到芯片的很多细节。从芯片来看,其“透明度”超过了除Google第一代TPU之外所有的AI相关芯片。实际上,和Goolge TPU的情况类似,在这次发布之前,Tesla也做了一定的专利布局,这正好让我们可以从不同角度更深入的了解Tesla的FSD芯片。


时间线


Tesla自动驾驶芯片负责人Pete Bannon首先介绍了芯片研发的过程:

Feb. 2016:第一个团队成员入职;

Aug. 2017:第一版流片(经过18个月);

Dec. 2017:芯片返回,点亮;

Apr. 2018:BO Release to manufacturing;

Jul. 2018:Production start;

Dec. 2018:Employee retrofits start;

Mar. 2019:Model S & X production start;

Apr. 2019:Model 3 production start


用Pete的话说,从加入Tesla开始到芯片和系统在实际产品中部署,大约用了3年时间,这可能是他做过的项目中用时最短的了。他把这归功于Tesla很强的垂直整合和并行工作的能力,还特别提到了Tesla有很强的Power supply design,Signal integrity design,Package design,System software,Board design,Firmware,System validation团队。这里Tesla给了我们一个参考,即设计,生产和成功部署一颗SoC芯片所需付出的努力和时间。


系统和芯片设计


在具体介绍系统和芯片设计之前,Pete Bannon首先说了项目的前提,“只有一个客户Tesla”,这就很大程度上降低了芯片需求的复杂性。总结起来,FSD芯片的需求就落到了如下几点,依次是功耗,算力,Barch size(latency),安全性。在后面的Q&A中,Pete进一步提到Model 3的功耗的目标是每英里250W(Elon Musk对此作了补充,实际的功耗和道路环境有一定关系)。


640?wx_fmt=jpeg

source:Tesla


前面几个需求主要反映在芯片设计上,而安全性则在系统层面也有很多考虑,比如大量的冗余设计。同一块板卡上的两颗芯片的供电和数据通道都是独立且互为备份的。而一个很有趣的想法是两颗芯片同时都对同样的数据进行分析,然后对比分析结果(或者相互验证),再得出最终结论。


640?wx_fmt=jpeg

source:Tesla


在这个地方Elon Musk还亲自插进来讲了一下这块板卡上的任何部分如果出现故障都不会影响基本的汽车的行驶(他在之后的Q&A环节还补充说明了这一点)。


之后Pete Bannon就开始对芯片进行非常详细的说明。首先是芯片的外观,硅片和一些总体信息。后面的Q&A环节中透露了该芯片使用的是Samsung的14nm工艺。


640?wx_fmt=jpeg

source:Tesla


然后是SoC芯片的基本组成部分,CPU(12核A72),GPU,各种接口,片上网络。这些部分都是采用第三方标准IP。


640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

source:Tesla


此外还专门强调了一个SAFETY SYSTEM(如下图所示),是一个独立的CPU,有最终的控制权。


640?wx_fmt=png

source:Tesla


当然,芯片中自研的最重要的部分是Neural Network Processor,也是发布中重点介绍的内容。首先是整体信息,每颗芯片有两个NNP,每个NNP有一个96x96个MAC的矩阵,32MB SRAM,工作在2GHz。所以一个NNP的处理能力是96x96x2(OPs)x2(GHz) = 36.864TOPS,单芯片72TOPS,板卡144TOPS。


640?wx_fmt=jpeg

source:Tesla


这里比较值得注意的片上SRAM的数量。如果我们对比Google的初代TPU(256 x 256MAC,24MiB SRAM),这个片上存储的数量是相当高的。从下图也可以看到NNP中存储器大概占了总面积3/4以上。Pete Bannon的解释是为了降低功耗,他们的设计目标是将所有的模型都能存储在片上。精度的选择是乘法8bit,加法32bit。


之后Pete Bannon介绍了芯片工作的方式,没有太多新鲜的东西。读256B activation和128B weight,经过变形和buffer,组合成96x96的乘加,然后在MAC矩阵中进行运算,最后结果shift out到专门的ReLU和Pool的硬件模块,然后再以每周期128B的带宽存回memory。由于MAC矩阵是96 x 96,所以在把数据输入给MAC矩阵之前,需要做数据格式的变换。完成这一系列动作,总带宽需求是1TB/Sec。考虑到所有数据都在片上SRAM中,这个带宽比较容易满足。


640?wx_fmt=png

source:Tesla


Pete Bannon还提了一下控制逻辑功耗的问题,认为ICache,Register File和Control逻辑消耗的能量要远比运算消耗的能量大,所以NNP的设计就尽量简化了控制逻辑,只做运算。相应的,指令集比较简单,只有8条指令:DMA Read,DMA Write,Convolution,Deconvolution,Inner-product,Scale,Eltwidth,Stop。编程模型(控制流)也非常简单,完成一次运算只需配置4个信息。另外也介绍了编译工具,这个基本也是常见的功能。


640?wx_fmt=jpeg

source:Tesla


最后,Pete Bannon给出了芯片的实际性能指标,2300 帧/秒,72W。当然我们并不知道这是运行什么网络的结果。如果是讲演中给出的如下示例网络,每帧需要35GOPS,每秒是35x2300=80TOPS,即能达到55%左右的利用率。


640?wx_fmt=png

source:Tesla


到此我们看到了FSD芯片的一些细节,但还不足以充分了解它的架构设计。实际上,在这次公开之前,Tesla是给NNP申请了一系列专利的[2],我们可以从中看到一些更详细的东西。


专利布局


Tesla目前公开的专利,大体的思路和Google之前给TPU申请专利也是差不多的(Google的神经网络处理器专利),先申请整体框架和方法的专利,然后是具体运算,数据格式准备,Vector处理,包括下面几个。


  • Accelerated Mathematical Engine(Sep. 2017)

  • Computational Array Microprocessor system with variable latency memory access(Mar. 2018)

  • Computational array microprocessor system using non-consecutive data formating(Mar. 2018)

  • Vertor Computational Unit(Mar. 2018)


这里先要说明一下,专利和实际实现可能是有很大差别的。我们对专利的阅读主要是作为对比和参考。下面我们主要看一下第一个专利,即整体架构和方法的专利。虽然这里的名字叫“ACCELERATED MATHEMATICAL ENGINE”,但权力要求里的说法是,“A matrix processor for accelerating convolutions in a neural network”,基本就是一个CNN加速器。


它的基本硬件架构主要是围绕一个大的矩阵处理器(MATRIX PROCESSOR)做文章(如下图)。


640?wx_fmt=png

source:Tesla patent “ACCELERATED MATHEMATICAL ENGINE”


Data和Weight分别经过一个FORMATTER进行格式的转换,存入BUFFER,之后有一个硬件电路读出提供给矩阵处理器。专利中提到FORMATTER可以用软件或者硬件实现,它们实际芯片中应该是硬件实现的。由于要有效利用这种规模(96x96)的MAC矩阵,必须把输入数据排好,这个FORMATTER起到了很大作用。因此他们也专门对它申请了专利(Google也是类似情况),有兴趣的同学也可以看看。


在完成了矩阵乘加运算后,结果会移出(shift)矩阵处理器(根据专利里的描述,应该是从上向下逐级移动)进行后续处理,包括累加,ReLU,和Pooling。由Vector Engine和Post-Processing Unit完成。这部分也有专门的专利(申请时间要晚一些),表述上和主架构专利似乎有点不一致。此外就是控制逻辑部分,这部分是一个尽量简单的设计。


下面我们进入矩阵处理器(MAC Array)内部看看运算单元的设计。


640?wx_fmt=jpeg

source:Tesla patent “ACCELERATED MATHEMATICAL ENGINE”


对比一下Google的专利中的计算单元,


640?wx_fmt=png

source:Google patent “NEURAL NETWORK PROCESSOR”


可以看出主要的区别在于Tesla多了一级累加器ShiftAcc,支持的数据流也能更灵活一些。总得来说,Tesla描述的架构和Google TPU专利描述的NNP("Neural network processor")是类似的,不过看起来在设计和表述上更为完整。在具体实现上,一个主要区别在于,FSD芯片主要使用片上SRAM工作,而不像是Google TPU还需要使用片外的DRAM。当然,还是那句话,专利不代表具体实现,而且Google的专利要早很多。这里只是单纯参考一下。


Q&A环节的花絮


回到Tesla的活动,在芯片发布之后还进行了Q&A环节,这部分其实也很有意思。首先,Elon Musk说了如下一段话(大意),“我们今天之所以要提供如此详细的信息,就是因为,在一开始,对于Tesla这样从没做过芯片的公司来说,要研发一颗世界最先进的芯片看起来是不可能的。我们的目标就是这样,而且我们的目标不仅仅是领先一点,而是大幅度的领先。”从这段话可以看出,Tesla自研芯片应该是有必要性和能力上的质疑的。对于系统和应用厂商来说,这种质疑也是很正常的。


必要性比较容易讲,如问答环节所说,Telsa如果每年卖上百万辆车,而自研芯片能让整车成本降低,当然就值得去做。而针对芯片研发的能力的质疑,这次发布算是一个回答。


所以,虽然这颗芯片目前还谈不上世界领先(指标上和Nvidia的对比是不太科学的,这个Nvidia已有回应),Musk也要硬着头皮去说。从另一个角度,这颗芯片至少可以证明自研的可行性。而且Musk也很认真强调了这套系统的优势在于它的软硬件都是专门为Tesla的自动驾驶定制的。对比Nvidia,他是这么说的,“Nvidia is great company, but they have many customers, as they apply their resources, they need to do a generalized solution. We care about one thing so private. It was designed to do that increadibly well and the software was also designed runing on that hardware increadibly well. The combination of hardware and software I think is unbeatable.” 看起来Tesla会在这条路上继续走下去。在被问道工艺问题的时候,Elon Musk专门提到下一代芯片正在研发当中(已经halfway done)。


在被问道是否使用Lidar,Elon Musk说“lidar is fool's errand, anyone luck reliant on lidar is doomed.”在后面关于神经网络和软件的talk里,AI网红Andrej Karpathy也解释了这个观点,"Lidar只是回避了关键的图像识别问题,只是给我们一个技术进步的假想,虽然可以做一些快速DEMO,最终肯定失败"。


还有一个关于实际路测和仿真的问题,Elon Musk说,“Tesla也做很好的仿真,不过还是很难模拟真实环境发生的各种情况,如果仿真环境能够模拟真实情况(这里他顿了一下)我们也不知道自己是不是生活在仿真环境中。”好像他确实认真的感知了一下。smiley_20.png


总结


Tesla的自动驾驶芯片是FSD系统的最重要部分,其对标的产品应该是Nvidia的Nvidia Xavier SoC芯片(参考Hot Chips 30 - 巨头们亮“肌肉”中相关部分)。客观来看,Tesla的芯片和NvidiaXavier SoC芯片在各方面还是有差距的。Tesla的SoC设计中,除了自研的Neural Network Processor部分之外,其它都是用业界标准IP,并没做太多定制工作,只能说中规中矩。而NNP也是一个比较简单的架构,也很难说做了很多架构和技术上的创新。从另一个角度来看,这款芯片如果真的大量使用了,那它至少也是合格的。可以看到,Tesla的目标和执行策略是清晰和实际的,这是系统厂商自研芯片的最大优势。


Reference:

[1] "Tesla Autonomy - Part 1: Hardware, Chip Design", https://youtu.be/aZK1fARxYsE 

[2] ”Tesla applies for series of patents for new AI chip in Autopilot Hardware 3.0“, https://electrek.co/


http://lihuaxi.xjx100.cn/news/283885.html

相关文章

超全面的Linux基础知识的梳理

我们是谁?我们为什么要学习Linux?我们想达到什么样的目标?作为一名LINUX运维小白,每日每夜面对着这些 linux生产环境,如何胜任?在今天这篇文章中,我们将分享一些Linux基础性的东西。这篇文章只是…

一个妹子的美团面试经历,历经 4 轮 2 小时,成功拿到 Offer

点击上方蓝色字体,选择“标星公众号”优质文章,第一时间送达来源:只爱羽毛球的程序媛blog.csdn.net/csuliyajin2012/article/details/49430659美团,我是在拉勾网上投的简历,之前也投过一次,简历都没通过删选…

【MySQL】Java中的 JDBC 编程

目录💦前言 : 数据库编程的必备条件1. Java的数据库编程:JDBC1.1 JDBD使用步骤4. JDBC使用4.1创建数据源4.2 与数据库服务器建立连接4.3 操作数据库. 以插入数据为例5.数据库操作(CURD 增删改查)5.1 插入(e…

写代码这条路,能走多远?阿里算法专家告诉你

作者 | 张知临 (花名:妙临),阿里巴巴算法专家,专注于计算广告领域的策略研究和机制设计,包括调价机制、合约分配、多目标优化、用户体验建模等,并将上述策略和机制以及DL、RL等技术应用在淘宝、优酷等场景中。职场危机…

20道常见初级Java面试题

1、面向对象的特征有哪些方面?答:面向对象的特征主要有以下几个方面:- 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节…

mysql 索引合并

索引合并是mysql底层为我们提供的智能算法。本文就介绍了mysql 索引合并的使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 索引合并是mysql底层为我们提供的智能算法。了解索引合并的算法&#xff0c…

美国是名副其实的“黑客帝国”

2月17日,外交部发言人耿爽主持网上例行记者会。问:据报道,美国情报部门自冷战时期至2000年代初期,一直控制瑞士加密公司克里普托( Crypto AG ),向外国政府和企业出售加密机器,一边赚取数以百万计美元&#…

不安装Oracle使用cx_Oracle

使用Python连接Oracle数据库的环境非常麻烦,尤其在window下的配置,默认情况下需要安装Oracle数据库才行,对于不想在机器上安装Oracle的用户来讲,安装过程会出现各种问题。最常见的如下:安装出错:distutils.…