特斯拉FSD芯片详解


来源 |   汽车ECU开发
知圈 |  进“激光雷达社群”请加微信13636581676,备注激光


FSD(full self-driving)芯片的设计和规划始于2016年,当时特斯拉声称他们没有找到合适的解决自动驾驶问题的替代解决方案。


FSD芯片项目由Jim Keller和Pete Bannon以及其他架构师牵头。设计团队于2016年2月成立,开发过程历时18个月。


2017年12月第一次试产,然后对设计进行了一些修改,B0样于2018年4月投入生产,在2018年7月获得认证后不久,B0样开始全面生产,2018年12月,特斯拉开始用新的硬件和软件对员工用车进行改装。


在2019年3月,特斯拉开始在其Model S、Model X、Model 3上批量交付FSD芯片。


该芯片采用三星14nm工艺,面积为260平方毫米,封装了大约60亿个晶体管,集成了12个工作频率为2.2GHz的Cortex-A72核,一个工作频率为2GHz的Mali G71 MP12 GPU,2个工作频率为2GHz的NPU,以及各种硬件加速器,同时支持单精度和双精度浮点运算。支持以2133MHz运行的128bitLPDDR4内存,如图1所示,


特斯拉FSD芯片详解的图1

图1 FSD芯片架构


Safety System包含一个双核锁步CPU,该CPU进行执行器的最后仲裁,该CPU确定有FSD控制器上的两个FSD芯片生成的两个策略是否匹配,以及是否可以安全地驱动执行器。


在相机接口方面,FSD芯片具有一个摄像头串行接口(CSI),该接口能够进行每秒高达25亿像素的处理。


在视频编码器方面,FSD芯片集成了H.265(HEVC)视频编码器,可用于各种应用,例如备用摄像头的显示,行车记录仪和云剪辑记录等。


在图像信号处理器方面,FDS芯片集成了内部带有24bit流水线的信号处理器(ISP),该流水线旨在处理特斯拉汽车上配备的八个HDR传感器,并能够每秒处理十亿像素。而且具有降噪能力。


在神经处理单元方面,FSD芯片集成了两个定制的NPU,每个NPU都封装了32MB的SRAM,用于存储临时数据,从而减少数据存入主存储器。


总体设计相对简单。每个周期,从SRAM读取256byte字节的激活数据和另外128byte的权重数据到MAC阵列中。每个NPU拥有96x96 MAC,另外在精度方面,乘法为8x8bit,加法为32bit,两种数据类型的选择很大程度上取决于他们降功耗的努力(例如32bitFP加法器的功耗大约是32bit整数加法器的9倍)。在2GHz的工作频率下,每个NPU的算力为36.86TOPS,FSD芯片峰值算力为73.7TOPS。在点积运算之后,数据转移到激活硬件,最后写入缓存,以汇总结果。FSD支持许多激活功能,包括ReLU、SiLU和TanH。每个周期,将128byte的数据写回SRAM。所有操作同时且连续地进行,重复直到完成整个计算,如图2所示。


特斯拉FSD芯片详解的图2

图2 计算流程


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


特斯拉FSD芯片详解的图3

图3 MAC处理数据


SIMD单元是可编程的执行单元,旨在为Tesla提供一些额外的灵活性。为此,SIMD单元为诸如sigmoid, tanh, argmax和其他各种功能提供支持。它带有自己丰富的指令集。


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


在指令集(ISA)方面,NPU是具有乱序内存子系统的有序计算机。总体设计有点像是一种状态机,ISA包含最多4个具有复杂值的插槽的指令。总共只有八条指令——DMA Read,DMA Write,Convolution,Deconvolution,Inner-product,Scale,Eltwidth,Stop,NPU只是运行这些命令,直到碰到停止命令为止。有一个额外的参数slot,可以更改指令的属性(例如,卷积运算的不同变体)。有一个标志slot,用于数据依赖项处理,还有一个扩展slot,存储了整个微程序命令序列,每当有一些复杂的后处理时,这些序列就会发送到SIMD单元。因此指令从32byte到256byte不等,如图4所示。


特斯拉FSD芯片详解的图4

图4 指令组成


参考资料:

https://fuse.wikichip.org/news/2707/inside-teslas-neural-processor-in-the-fsd-chip/

https://en.wikichip.org/wiki/tesla_(car_company)/fsd_chip#Operation

特斯拉FSD芯片详解的图5

默认 最新
当前暂无评论,小编等你评论哦!
点赞 评论 收藏
关注