AI系统-14特斯拉FSD芯片

246 阅读16分钟

image.png 之前的文章讲了特斯拉的AI训练芯片DOJO,那之前特斯拉做的FSD推理芯片相对这就是小儿科了,但是就是这么个推理芯片也是难道国内的一大片厂商,核心就是其NPU和存算一体架构。

包括我们之前介绍的TPU,这里其实有一个规律,一般大的科技公司有AI需求,不管是互联网、汽车、机器人等,有钱的时候都会涉及到芯片领域,一般第一款芯片就是从推理芯片做起,比较简单,然后就开始做后端的推理、集群。这样遍地开花后可能英伟达GPU首先失去的的就是这些大客户,然后就是那些小客户也可能直接用云服务区了,会进一步压缩,这也是一个趋势。

1. FSD发展

2013 年,马斯克于推特披露特斯拉正在进行辅助驾驶系统 AP(Autopilot System)的研发, 特斯拉自动驾驶之路开启;2014 年 10 月,特斯拉基于与 Mobileye 的深度合作,推出首款自动驾驶软硬件系统 HW1.0 与 AP1.0;2015 年 4 月, 特斯拉组建软件算法小组 Vision,算法开发由第三方供应转向自研;2016 年 7 月,特斯拉宣布结束与 Mobileye 的合作;2016 年 10 月,特斯拉自动驾驶软硬件系统 HW 2.0 与 AP2.0 发布,计算平台基于英伟达 Drive PX 2;2017 年 8 月,特斯拉将 HW 2.0 更新升级为 HW 2.5,底层算力与冗余能力均有提升。2019年3月,特斯拉推出基于自研芯片FSD 的 HW 3.0, 其为特斯拉发布的首个支持完全自动驾驶 FSD(Full Self-Driving)功能的硬件系统;2020 年 10 月,特斯拉向小批量早期测试者推送 FSD Beta V6.0 版本,FSD 功能首上车;2022 年 11 月,FSD 功能全面向北美用户开放。目前特斯拉在研的最新自动驾驶硬件系统已迭代至 HW 4.0,搭载 FSD 二代芯片。

特斯拉 HW1.0 基于与 Mobileye 的深 度合作,其中底层芯片与视觉算法技术均来自于 Mobileye,特斯拉仅负责多传感器融合与应用层软件开发。2014 年-2016 年期间,HW1.0 先后 列装于 Model S 与 Model X 车型。

特斯拉第二代自动驾驶硬件系统 HW2.0 基于定制的英伟达 Drive PX 2 计算平台,算力约为 HW1.0 的 40 倍,达到 12TOPS。配套组件方面,HW2.0 搭载 8 个可实现 360 度环视视角的 120 万像素摄像头,包括 1 个前视三目摄像头,2 个后视侧面摄像头,2 个前视侧面摄像头,1 个后视摄像头,供应商为 Aptina。此外,HW2.0 与 HW1.0 一样,同样配置了 1 个博世 77G Hz 毫米波雷达与 12 个超声波传感器(由中程升级为远程)。HW2.0 由特斯拉与英伟达共同开发,其中英伟达提供计算平台与开发工具,特斯拉负责图像识别算法、多传感器融合与应用层软件开发等工作。2016 年 10 月起,特斯拉售出的所有汽车均有配置 HW2.0。

image.png

特斯拉 HW3.0 又称 FSD Computer,其抛弃了 HW2.5 的英伟达/英飞凌(SOC+MCU)底层芯片组合,转为装载自研 FSD 芯片。与 HW2.5 相比,HW3.0 在性能和成本上都有较大提升,可支持 FSD 功能。根据特斯拉数据,FSD 算力达到 144TOPS,每秒可处理图片2300 张,而 HW 2.5 每秒处理能力仅为 110 张,性能提升21倍;FSD 的成本相对于 HW 2.5 下降了 20%。配套组件方面,HW3.0 与 HW2.5 完全一致,仍采用 8 个可环视摄像头+1 个大陆毫米波雷达+12 个超声波传感器方案。结构布局方面,HW3.0 将驾驶辅助硬件和娱乐系统硬件集成在同一控制器中,但电路设计未实现高度集成,两项功能分别基于独立的电路板。在 HW3.0 研发过程中,特斯拉负责了全套芯片设计、图像识别算法、多传感器融合与应用层软件开发等多项工作,自研比例再次提升。

FSD 芯片采用三星 14nm FinFET CMOS 工艺,在 260mm2 的硅片上集成了约 60 亿个晶体管,组成 2.5 亿个逻辑门电路,芯片封装 尺寸 37.5×37.5mm,底座采用 FCBGA 设计,整体设计符合 AEC-Q100 汽车质量标准。FSD 芯片主要由 CPU、GPU 和 NNA(神经网络加速单 元)三个计算模块,以及各种接口,片上网络等组成,其中 CPU 由三组四核 ARM Cortex-A72 架构组成,主频 2.2GHz,主要用于通用的计算和任务,GPU 支持 16/32 位浮点运算,算力为 600GFlops,主要用于轻量级的后处理任务,NNA 包括 2 个 NPU(神经网络处理器),每个 NPU 都封装了 32MB 的 SRAM。HW3.0 中搭载了两颗 FSD 芯片,在行驶过程中,两颗芯片将分别对传感器收集到的数据进行独立处理,并进行结果平衡、仲裁和验证,自动驾驶功能的可靠性得到提升。

HW4.0

配置将有较大升级。根据外媒拆解报告,HW4.0 采用 FSD 二代芯片,预计算力高于 300TOPS,内部 CPU 的内核从 12 个增加到 20 个,最大频率为 2.35GHz,低功耗频率为 1.37GHz;TRIP 内核数量从 2 个增加到 3 个,最大频率 2.2GHz。配套组件方面,HW4.0 的 主板摄像头接口为 12 个,其中 1 个为备用,即车载摄像头或由原先的 8 个提升至 11 个,前置摄像头像素也有望提升至 500 万。此外,HW4.0 主板增加了 4D 毫米波雷达接口(代号 Phoenix),但未配置超声波雷达。

2. FSD芯片架构

image.png

从芯片框图里面可以看到其由:

  • 两个NPU
  • ISP图像处理
  • GPU
  • Camera接口
  • 3个A72核心簇,一个簇4个核,共有12核
  • VPU核心处理视频编解码
  • FSI功能安全岛
  • 信息安全岛处理加解密
  • NoC片内通信
  • LPDDR高速内存

由这10个子系统组成,当然每个子系统都有自己附属的IP,以及一些SRAM。

Camera的图片一般通过MIPI接口把数据给到ISP进行处理(消除噪音等),这时候数据还在DDR中,然后根据CPU的调度把数据放入SRAM里面,这时SRAM里面是存算一体的数据,NPU去拿到数据后进行计算,计算过程中NPU内核心的并行协同需要NoC总线,最后回结果吐到SRAM里面。GPU是为NPU不支持的算子兜底的,最新的架构里面GPU已经被删除了。

对应芯片的位置如下:

image.png

2.1 CPU子系统

image.png

1:拥有12 Cortex-A72 cores

2:频率:2.2 GHz

3:面积为约为~40.2 mm² die size(~1.19 mm² core)

2.2 NPU子系统

image.png

可以看到周围都是SRAM,除了核心的寄存器外,SRAM是速度最快的存储了,直接给大量配上了。

尽管芯片上的大多数逻辑都使用经过行业验证的IP块来降低风险并加快开发周期,但Tesla FSD芯片上的神经网络加速器(NPU)是由Tesla硬件团队完全定制设计的。它们也是FSD芯片上最大的组件,也是最重要的逻辑部分。

为什么是两个NPU,不是一个更大的NPU?特斯拉指出,每个NPU的大小都是物理设计(时序,面积,布线)的最佳选择。

整体架构

image.png

MAC阵列

CNN的主要操作当然是卷积,占特斯拉软件在NPU上执行的所有操作的98.1%,而反卷积又占1.6%。在优化MAC上花费了大量的精力。

MAC阵列中的数据重用很重要,否则,即使每秒1 TB的带宽也无法满足要求。在某些设计中,为了提高性能,可以一次处理多个图像。但是,由于出于安全原因,延迟是其设计的关键属性,因此它们必须尽快处理单个图像。特斯拉在这里做了许多其他优化。NPU通过合并输出通道中X和Y维度上的输出像素,在多个输出通道上并行运行。这样一来,他们可以并行处理工作,并同时处理96个像素。换句话说,当它们作用于通道中的所有像素时,所有输入权重将被共享。此外,它们还交换输出通道和输入通道循环(请参见下图的代码段)。这使它们能够依次处理所有输出通道,共享所有输入激活,而无需进一步的数据移动。这是带宽需求的另一个很好的降低。

image.png

实现数据共享的技术就是NoC通信,NoC将所有的PE运算节点分配的SRAM都链接起来,这样某个PE的运算需要的输入就直接去读,避免了数据拷贝移动。

通过上述优化,可以简化MAC阵列操作。每个阵列包括9,216个MAC,并排列在96 x 96的独立单周期MAC反馈环路的单元中(请注意,这不是脉动阵列,单元间没有数据移位)。为了简化其设计并降低功耗,它们的MAC由8x8位整数乘法和32位整数加法组成。特斯拉自己的模型在发送给客户时都经过了预先量化,因此芯片只将所有数据和权重存储为8位整数。

在每个周期中,将在整个MAC阵列中广播输入数据的底行和权重的最右列。每个单元独立执行适当的乘法累加运算。在下一个循环中,将输入数据向下推一行,而将权重网格向右推一行。在整个数组中广播输入数据的最底行和权重的最右列,重复此过程。单元继续独立执行其操作。全点积卷积结束时,MAC阵列一次向下移动一行96个元素,这也是SIMD单元的吞吐量

NPU本身实际上可以在2 GHz以上的频率上运行,尽管特斯拉根据2 GHz时钟引用了所有数字,所以大概是生产时钟。在2 GHz的频率下,每个NPU可获得36.86 teraOPS(Int8)的最高计算性能。NPU的总功耗为7.5 W,约占FSD功耗预算的21%。这使它们的性能功率效率约为4.9 TOPs / W,这是我们迄今为止在出货芯片中看到的最高功率效率之一–与英特尔最近宣布的NNP-I(Spring Hill)推理加速器配合使用。尽管特斯拉NPU在实际中的通用性有点疑问。请注意,每个芯片上有两个NPU,它们消耗的总功率预算略超过40%。

SIMD单元

从MAC阵列,将一行压入SIMD单元。SIMD单元是可编程执行单元,旨在为Tesla提供一些额外的灵活性。为此,SIMD单元为诸如sigmoid, tanh, argmax和其他各种功能提供支持。它带有自己丰富的指令集,这些指令由从机指令定序器执行。从指令定序器从前面描述的指令的扩展槽中获取操作。特斯拉表示,它支持在普通CPU中可以找到的大多数典型指令。除此之外,SIMD单元还配备了可执行归一化,缩放和饱和的点状量化单元。

将结果从SIMD单元转发到合并单元,或直接转发到写组合,在其中以128B /周期的速度将其有机会写回到SRAM。该单元进行2×2和3×3合并,在conv单元中进行更高阶的处理。它可以进行max pooling 和 average pooling。对于average pooling,使用基于2×2/3×3的常量的定点乘法单元替换除法。由于特斯拉最初对MAC阵列的输出通道进行了交错处理,因此它们会首先进行适当的重新对齐以进行校正。

详细的优化算法信息参考论文《Compute Solution for Tesla’s Full Self-Driving Computer》,可以在sci-hub里面免费下载。

image.png

2.3 ISA指令集

NPU是具有乱序内存子系统的有序计算机。总体设计有点像是一种状态机。指令集比较简单,只有8条指令:DMA Read,DMA Write,Convolution,Deconvolution,Inner-product,Scale,Eltwidth,Stop。NPU只是运行这些命令,直到碰到停止命令为止。还有一个额外的参数slots ,可以更改指令的属性(例如,卷积运算的不同变体)。有一个标志slots ,用于数据依赖性处理。还有另一个扩展slots 。该slots 存储了整个微程序命令序列,每当有一些复杂的后处理时,这些序列就会发送到SIMD单元。因为这,指令从32字节一直到非常长的256字节不等。稍后将更详细地讨论SIMD单元

2.4 存算一体

image.png

NPU的程序最初驻留在内存中。它们被带入NPU,并存储在命令队列中。NPU本身是一个非常花哨的状态机,旨在显着减少控制开销。来自命令队列的命令连同需要从中获取数据的一组地址一起解码为原始操作-包括权重和数据。例如,如果传感器是新拍摄的图像传感器照片,则输入缓冲区地址将指向该位置。一切都存储在NPU内部的超大缓存中,不需要与DRAM交换数据。

高速缓存的容量为32 MB,有一个完善的bank仲裁程序,与一些编译器提示一起,用于减少bank冲突。每个周期中,最多可以将256个字节的数据读取到数据缓冲区中,并且最多可以将128个字节的权重读取到权重缓冲区中。根据步幅,NPU可能在操作开始之前将多条线路带入数据缓冲区,以实现更好的数据重用。每个NPU的组合读取带宽为384B/周期,其本地缓存的峰值读取带宽为786GB/s。特斯拉表示,这使他们能够非常接近维持其MAC所需的理论峰值带宽,通常利用率至少为80%,而很多时候则要达到更高的利用率。

3. HW4 的芯片进化

image.png

HW4 的 SOC 芯片在 HW3 上进行迭代:

计算核心 (CPU) :三星 Exynos IP,CPU 频率 2.35GHz、 5 个 CPU 集群 (20 个 CPU 核心)

NN 的 AI 加速器 :3 个神经网络 (NN) 处理器、NN 处理器频率 2.2 Ghz,估 50 TOPS 的算力;

应该基本框架已经定了,后续就是堆核和工艺,以及软件编译器等的优化,还有硬件新算子的支持等。

还有就是作为汽车上使用的产品,FSD只是智能驾驶域,车控和座舱的软硬件也会集成进去,大一统也是一个趋势,就需要更多的异构核心和Hypersior的支持。这里其实定制SoC里面的异构核,RISC-V就有优势了,因为其开源,目前像Inter、英飞凌等不会卖IP,甚至都不公开IP,只卖成品芯片捞钱,做SoC想集成那只能拿开源不要钱的RISC-V来搞了,这就是开源的魅力。

参考:

  1. zhuanlan.zhihu.com/p/188970781…
  2. zhuanlan.zhihu.com/p/83701837
  3. zhuanlan.zhihu.com/p/644458995
  4. zhuanlan.zhihu.com/p/715815282