2年前
特斯拉车载中央计算平台由一个FSD子系统和一个带有独立GPU的高性能计算机子系统组成。该高性能计算机子系统是基于AMD Ryzen CPU而搭建的,这是一个典型的x86 CPU,具有可观的计算能力。该系统还通过PCIe互连整合了AMD RDNA2 GPU的高性能图形计算子系统。该GPU子系统有一个四通道64位GDDR,为互联网浏览、3D游戏、甚至增强现实提供强大的多媒体性能,而不会削弱AMDCPU的性能。 该车载中央计算平台还通过PCIe整合了特斯拉设计的FSD芯片。FSD通过PCIe与AMD Ryzen CPU互动,大多数自动驾驶任务都在特斯拉FSD芯片内执行。每个FSD子系统都有自己的内存,并包含双通道64位DRAM。 特斯拉的车载中央计算平台展示了一种经典的HPC架构。该平台有3个并行的子系统来执行高性能任务,各个子系统通过PCIe互连被很好地隔离。FSD子系统执行实时任务,获取摄像头传感器的原始输入数据,并将其转发给图像信号处理(ISP)电路。FSD中的AI处理器利用ISP处理后的传感器数据或原始传感器数据来执行矢量计算和SIMD操作,以进行目标检测、分割、融合等。然后在FSD的一个CPU集群中执行路径规划的任务。FSD的自动驾驶功能与AMD的CPU同时运行,避免了AMD CPU子系统性能的下降。 另一个特点是独立的GPU系统。这与入门级x86 APU或高性能智能手机SOC中的低成本共享内存GPU不同。有了四通道的64位GDDR,GPU子系统保证拥有自己的内存,而不与AMD CPU的其他内存控制器共享带宽。此外,多媒体子系统(视频CODEC、音频DSP和显示控制器)都通过四通道GDDR执行自己的任务,避免了AMD x86 CPU中高速缓存一致性互连的高额开销。 综上所述,特斯拉采用了传统的HPC架构,以较高的物料成本实现了高性能计算平台。   高通则提出了用于智能座舱的8155芯片。 8155展示了一个在智能手机SOC中常用的架构。该SOC的一个特征是采用四通道16位内存,与智能手机中使用的典型双通道32位内存形成对比。针对智能座舱中要求较低的摄像头AI功能,它包括了一个小型的NPU,其性能不如特斯拉FSD。8155的主要功能相当于AMD CPU +GPU。问题是,一个类似智能手机的架构,仅有四条16位通道,能不能在性能上与AMDCPU/GPU HPC架构竞争?   为了给自动驾驶汽车提供所需的NPU算力,高通在8155之外又设计了一个类似FSD的芯片。   高通的这款SOC功能很像特斯拉的FSD,图中显示了NPU、ISP、GPU等模块,但与高通8155不同的是,该芯片主要用于AD/ADAS的功能。 那么,我们应该如何从整体系统的角度来审视特斯拉解决方案和高通解决方案? 1)特斯拉将AI和视频/图形功能置于两个不同的子系统中,可以同时执行高要求的任务而不相互干扰。高通将视频/图形功能与主CPU整合在同一芯片上。然而,CPU和GPU争夺相同的内存带宽,导致高通的解决方案在性能上输给了特斯拉。 2)特斯拉FSD有很大一部分硅片面积分配给AI处理器(NPU)。高通Snapdragon Ride SoC并没有显示NPU消耗了多少硅面积。 3)高通 SnapdragonRide SoC包括一个显示处理单元。特斯拉FSD没有集成一个显示处理单元,显示处理单元在AMD RDNA2GPU中。由此可以断定,特斯拉系统中显示内容的生成完全是通过AMD GPU执行的。该GPU的处理能力要比高通SnapdragonRide SoC和8155内部的GPU高很多。在典型的SoC架构设计中,由于集成GPU的共享内存模型中存在内存带宽冲突,独立GPU的性能总是优于任何集成GPU。 4)高通Snapdragon Ride SoC和特斯拉FSD在系统主CPU之外都有专用CPU来执行ADAS/AD任务,如目标检测、分割、融合、路径规划等;而这些任务无需系统主CPU的参与。而且,FSD上的专用CPU集群比其系统主CPU(AMD Ryzen)还要大:FSD拥有三个CPU集群共12个内核,而AMD Ryzen只有一个4核CPU集群。目前还没有关于SnapdragonRide SoC如何分配CPU资源的公开信息。 5) 高通Snapdragon Ride SoC或特斯拉FSD是否有自己的操作系统?当一个系统包含主机系统和子系统时,并发任务执行的最大化是HPC架构的一个主要挑战。主机和子系统之间的软件通信开销导致其性能下降。无论是虚拟机还是Hypervisor都将由一个特定的主CPU来管理。当一个子系统远离主机系统时,主机和子系统之间的通信就成为提高性能的另一个挑战。想象一下,通过PCIe驱动来控制一个子系统!通信延时将成为实现高性能的障碍。 6)如果AD/ADAS在自己的操作系统下工作,对操作系统的要求是什么?它应该与主机Linux/Android系统隔离,以具有良好的安全性。这个操作系统还应该对请求做出实时的回应。特斯拉FSD显示了三个分离的CPU集群,有理由认为每个CPU集群都在自己的私有内存上工作,没有任何数据一致性的问题。它也很可能执行非对称多任务处理(ASMP),而不是传统的对称多任务处理(如AMD CPU)。有可能为这个FSD子系统配备类似QNX的实时操作系统。在QNX内部,它可以通过管理程序或虚拟机支持不同的CPU集群。 7)问题来了,FSD子系统如何与典型的Linux或Android主机系统进行通信?如果FSD或Snapdragon Ride SoC与主机进行通信,这两个子系统应被视为主机系统的设备驱动程序。其任务主要是在它们之间交换数据。应用软件被移植到主机系统,而AD/ADAS算法软件被移植到QNX子系统。 8)系统的可扩展性很重要,因为AD/ADAS算法需要更强大的计算能力。FSD和Snapdragon Ride SoC都可以通过更多的PCIe子系统来扩大算力规模。然而,PCIe互连具有较长的延迟响应。将整个任务划分给不同PCIe子系统上的不同NPU成为一个困难。例如,当三个FSD子系统通过PCIe连接在一起时,系统将如何协调以提供最终结果?在这种情况下,可能需要有三个独立的实时QNX操作系统与Linux主机一起工作,这对扩展性能来说是极大的挑战。 9)为什么FSD子系统需要3个CPU集群,总共12个CPU内核?与AMD四核Ryzen CPU相比,似乎FSD中的CPU处理能力还要更高。FSD需要一个支持CNN和SIMD处理能力的AI处理器,以及支持路径规划、收集摄像头传感器原始数据和进行图像信号处理。如果FSD采用ASMP并行处理方法,它似乎要把任务静态地分配给某个特定的CPU集群,以避免任务之间的依赖性。因此,FSD需要比主机系统更多的CPU集群。 综上所述,看上去特斯拉可以提供卓越的性能,可扩展性和NPU算法迭代能力,而不会影响到主CPU系统。但由于子系统之间的松散耦合所带来的开销,这要付出更高的代价;高通8155和Snapdragon Ride SoC试图尽可能紧密地整合各个子系统,但由于所有任务之间争夺共享资源而导致性能下降。 未来汽车电子的王牌是一个能够在紧耦合的SOC上并发执行所有任务而不存在资源竞争的系统。基于芯粒(Chiplet)技术的SOC架构似乎是一个有希望的方向。这种基于芯粒技术的SOC的关键在于:1)用于QNX/Linux并发执行的混合内存总线;2)通过具有低延迟、低引脚数和高带宽的芯片(Die-to-Die)互联技术来实现计算能力的高可扩展性。