作者 |Jessie
出品 | 焉知
知圈 |进“底盘社群”请加微yanzhi-6,备注 底盘
当前快速发展的智能汽车在布局高端车型上,通常会以高算力作为一个竞争要点,如果考虑到集AI算力、逻辑算力于一体的超异构芯片而言,英伟达绝对算得上是各家车企都十分青睐一家芯片公司。相比于前面文章介绍的TI系列TDA4X芯片不同之处在于,英伟达通常倾向于高算力、高级程度、高功能安全的角度来满足客户定制化需求。而且市场上做的比较出色的这类芯片,除了ME就属英伟达了,因为英伟达Orin卖点就是算力。即便是在各家车企对算力认知越来越清晰的前提下(即他们更关注算力利用率、性价比的前提下,对于芯片算力的看法将更加看重非稀疏化的情况下收敛后的真实算力),这款系列芯片目前是在各家车企中被疯抢的。国内对英伟达的玩家就包括蔚来ET7、小鹏G9 SUV、小马智行Robotaxi这类造车新势力。另外,比亚迪也开始利用各种资源在其自研平台上采用英伟达芯片了。
英伟达在其芯片布局上,智能汽车芯片目前还不是其主力营收板块。但是这个板块的布局正在加强,主要体现在通过提供完整的硬件和软件栈实现各类高收入pipeline。逐渐构建了强大的生态系统,并且在以往的以智能座舱域为主的信息娱乐端开始逐渐转向智能驾驶端。并且,在自动驾驶、软件定义汽车以及新软件及服务上开始发力。
本文将从各个方面对英伟达芯片进行全面解析,主要是针对其智驾芯片发展史,对主流Xavier及Orin系列芯片进行详细介绍。意在帮助读者从不同的方面更加了解这款芯片,并且知道如何应用这款芯片用于自动驾驶系统系统开发及设计。
英伟达系列主流智驾芯片的发展史
英伟达在推出真正的芯片之前,在2010年开发完成了第一个完整的GPU架构Fermi。该计算核心由16个流线处理器SM组成,每个SM中有两个线束(每个线束包含16个CUDA核)、16个存储加载单元(LD/ST)、4个特殊函数单元SFU组成。而在2012年升级发布的Kepler和Maxwell架构,增加了CUDA CORE用于提供专门对浮点数单元FPU和逻辑运算单元ALU的计算能力。
英伟达设计开发的第一款芯片是从2016年推出的,主要是面向AI和自动驾驶系统的产品。而对于单纯地图形处理器而言可以追溯到2006年的CUDA(Compute Unified Device Architecture)架构。这一架构也是后续自动驾驶系统架构芯片开发的软件架构基础。
对于自动驾驶而言,比较关心的几个关键节点是基于其对处理能力的架构和软件模块的依赖来讲解的。
2016年发布的Pascal架构对深度学习研究方向进行了深层次研究。
2017年发布了完全以深度学习为核心的Volta架构,该架构主体是引入了英伟达芯片的核心软件模块架构Tensor Core模块,可用于执行融合乘法加减法(即既包括浮点数FP32/FP64,又增加了INT32的整型计算核),其算力是Pascal架构的5倍。
2018年,英伟达又相继发布的Turning架构升级了Tensor Core,主要增加了对整数型数据的计算能力。
在2020年,英伟达发布最新的Ampere 架构,其特性是支持更高级别的数据格式TF32\BF16两种数据格式及稀疏矩阵的运算能力。
英伟达芯片在结构上的拆解分析
1、GPU
GPU的首次完整搭载是在2010年的Fermi架构中,其在运算上最大的优势是将计算核上更多的晶体管资源用于数值计算,而不是像CPU一样需要花费大量的资源进行数据存取和流量控制。也就是说每个阵列的一行通常会有多个计算核来承担计算控制和缓存。并且同一时刻可以执行多个核(并行几千个线程)的计算能力,此时,对内存访问的延时可以忽略不计。
更多的晶体管介入进来意味着GPU在运算过程中需要消耗更多的电量资源和带宽资源,也就是说GPU的发热功率更大。基于这一特性当想要将GPU运用于自动驾驶系统感知场景的边缘/极端场景的大量训练计算模型时,就需要针对性的基于GPU的发热功率进行高效的降温处理。
如下图表示了英伟达GPU典型加速模型架构。
英伟达系列芯片中的GPU加速库包含了四大主要的并行架构:深度学习模块、信号&图像处理、线性代数计算、并行算法库。不同的计算库可以针对不同的计算场景发挥不同的效用。
2、TensorRT & Tensor Core
GPU中的深度学习引擎是图中被称之为TensorRT的完整工具,可以实现各类深度学习相关模型的优化与编译。该工具链引入了张量核Tensor Core模块,用于执行融合乘法加法(即Volta架构中实现FP16半精度浮点矩阵以及INT8整数的累加矩阵乘法和累加单元)。这样可以很好的加速密集线性代数计算、信号处理和深度学习推理,也可以很好的避免量化过程中精度和计算范围的溢出,很好的解决数据量化过程中产生的数据溢出和精度不足问题。
TensorRT可支持芯片通过英伟达Drive AGX平台部署深度学习接口,使用编译器和运行时最大化延迟关键应用程序的吞吐量,使用 int8 部署响应式和内存高效的应用程序,优化卷积神经网络 (CNN) 层和操作并降低张量核心的精度,通过ONNX支持和原生 TensorRT 集成加速每个框架,使用容器化推理服务在一个节点上运行多个模型。
如上图表示了如何将模型导入到TensorRT中后进行相应的处理过程,TensorRT的处理过程包括对前端训练的神经网络进行模型量化、内核节点融合、数据层优化选择等一系列优化措施来提升对GPU内存和带宽的使用效率,最终形成了不同的深度学习运行时引擎Runtime Engine。
在深度学习的训练和推理中十分常见的是对运算输入矩阵设置半精度,而乘积结果却要求全精度输出,因为在Tensor Core的特性是增加了浮点计算的计算模式且参照了标准算术逻辑单元ALU的运算模式,可以更加适配矩阵运算。因此,可以说Tensor Core很好的混合使用单精度和半精度数据格式,这样就可以解决不同精度的数据对其运算,提升计算速度,从而很好的压缩整个计算模型的大小。这也是英伟达GPU模型的最核心优势体现。
3、CUDA
GPU中另一个比较核心的软件栈是指的位于线性代数计算模块中的CUDA平台。CUDA核全称Compute Unified Device Architecture,是指通用计算并行架构。通过构建可用的硬件平台,可以在多线程设计的GPU上运行通用并行计算,专门用于解决GPU编程的复杂性问题。此外,作为软件栈的集合,CUDA还可以有效的进行设备驱动和SDK。通常深度学习的标准配置是将CUDA所开辟的灵活的开发接口(如OpenCL、OpenGL等API)运算辅助GPU基础软件栈,从而实现针对不同数据的运算过程。如下图表示了CUDA核在密集并行计算的计算模型。通过下载CUDA核编程算法,可以从软件部署、域特征库、决策执行行为、开发社区、标准汇编等几个方向为CUDA的各个开发者提供帮助。
与TensorRT Core不同,CUDA Core是在每一个GPU时钟执行一次值乘法,而Tensor Core会在每个GPU时钟执行一次矩阵乘法。
4、DLA
对于传统的CNN深度学习来说,如果不能做到较好的加速器设置,那么在实时性要求高的自动驾驶行业内,将不能很好的用在实时检测中。因此,英伟达基于这样的需求,专门在Xavier上开发了一款深度学习加速器DLA(Deep Learning Accelerator),用于涵盖整个CNN神经网络的计算过程。该加速器的核心是可以配置多个MAC阵列来支持211个Int8、210个Int16和FP16数据的调度和运算。
如下图表示了简单的DLA加速器整个原理架构图。
图中主要包含几大部分:数据输入部分、数据预处理部分、数据计算部分、数据后处理部分。其中数据输入部分是整个模块需要从芯片的Memory中取出,并进行压缩后形成数据权重信息Weight和激活信息Activation存储到统一的缓存Buffer中。然后Tensor Execution Micro-Controller来稀疏化权重并解压缩、Winograd变换后进行卷积运算优化。其中,Winograd卷积法可以针对尺寸较小的卷积核,节省一半的乘法器数量与功耗。数据计算部分实际是进行MAC运算,即对3x3 的Kernel卷积核进行变换,通过不同的方式(如脉动方式、广播方式、多播方式、NOC等)控制数据流动。后处理部分则是进行常规的全链接、函数激活、池化、卷积等操作,然后将结果写回内存DMA区域。
英伟达针对DLA技术分别在Xvaier和Orin升级了不同的产品特性。意在新一代DLA增加本地缓冲技术,提高效率减少DRAM带宽。此外,提升结构化稀疏过程中的深度卷积处理器和硬件调度器的性能。因此,升级版DLA在INT8下的稀疏算力可以最高达105 TOPS。
5、cuDNN
cuDNN是英伟达系列芯片的深度神经网络库,这一库函数是是英伟达专门用于GPU加速设计的。从底层逻辑上优化了传统神经网络中的全链接、池化、卷积等操作。并且开发过程需要确保与主流深度学习框架相适配。
6、CPU
英伟达系列芯片内部的CPU具备如下特性:
其CPU内部架构采用了12个ARM公司Cortex-A78内核,每8个CPU核(每4个CPU内核组成一个CPU簇)并均分到4个集群,具备独立的时钟管理面,且共享2MB的二级缓存,最大支持2.2GHz的CPU频率。具备超标量,可变长度,无序流水线特性;具有分支目标缓冲区的动态分支预测和使用先前分支历史的分支方向预测器、返回堆栈、静态预测器和间接预测器。
7、视频编解码
英伟达系列芯片的视频编解码是通过两大技术模块来实现的。即视频加速器PVA和视频成像合成器VIC,这两大模块可以正常实现视频图像的基础ISP处理。且对于开发人员来说也可以通过其单独定义的视觉编程接口进行统一开发。
8、操作系统Drive OS
其中Drive OS是其对应的操作系统,由实时运行操作系统RTOS、CUDA、TensorRT等模块组成,可提供启动、服务、防火墙和软件升级等应用服务和实时运行环境。在Drive OS上是一个中间件框架DriveWorks,他是一个由软件库、应用程序、工具链包组成的具备高内聚、低耦合,可用于进行模块化开发的软件架构。
最后,为了从顶层进行自动驾驶应用软件开发,应为还配置了Drive IX和Drive AV分别从感知和规控两个方面提供给主机厂或Tier1进行设计开发。对于感知模型来说,需要在自动驾驶汽车高性能车端AI平台上部署有效的深度学习网络模型和算法,因此英伟达也在其芯片系统架构上采用了Drive Sim云计算平台,可以为自动驾驶系统设计开发提供各类不同场景的仿真场景条件,并通过硬件在环的方式进行测试和AI算法校验。这样运行在Drive AGX上的AI模型就可以进行实时的自动驾驶功能道路仿真测试和有效性测验了,最终这类基础服务可以很好的打通数据采集、标注、训练、仿真这一系列在数据闭环中比较经典的算法流水线了。
英伟达的各个自动驾驶芯片对比分析
现在被各家主机厂广泛采用的两类英伟达芯片分别是Xavier和Orin系列两款。其中,Xavier的性能适合搭载在L2+级以下的自动驾驶系统车型中,Orin系列的性能适合搭载在L3级以上的自动驾驶系统车型中,Xavier在国内的首搭项目是小鹏P7的高阶智驾功能上。
1、Xavier
Xavier是一款采用12nm工艺,总体INT8峰值算力为30TOPS和750Gbps I/O数据交换带宽的一款专为自动驾驶设计的芯片。英伟达首次在Xavier上采用了CPU+GPU+ASIC芯片混合技术路线。GPU包含Volta架构的512颗CUDA Core,占比最重;CPU为NVIDIA自研8核ARM64架构(代号Carmel),占比次之。其中,搭载的两个专用ASIC,即深度学习加速模块DLA模块用于推理计算和向量处理单元PVA用于传统视觉算法加速。
如下图表示了典型的Xavier在当前智驾开发模型中的典型系统架构。
此外,Xavier包含了16GB 256位LPDDR4x、高清视频编解码器、128Gbps专用摄像头摄取和16通道PCIe Gen 4扩展,256位接口上的内存带宽为137GB/s。
基于以上优势分析,Xavier可以用于处理智能汽车的视觉里程测量、传感器融合、定位和映射、障碍物检测、路径规划等众多场景。
2、Orin系列
英伟达在2019推出的Orin系列芯片由最高算力(Orin-x)达到254TOPS。目前在自动驾驶的高端领域,很多主机厂在布局自动驾驶系统域控架构的时候通常会考虑利用英伟达的Orin系列芯片进行算力布局。其中,Orin的硬件和软件架构,包括新一代Ampere架构的GPU、ARM Hercules CPU、第二代深度学习加速器DLA,第二代视觉加速器PVA、视频编解码器、宽动态范围的ISP以及基于Orin的软件栈,都是提升英伟达端到端解决方案的关键架构设计要素。
另外,Orin系列还从功能安全的角度出发引入了车规级的功能安全岛设计,这里我们会针对性的进行架构拆解分析。
总结
由于英伟达系列芯片的宗旨就是在错综复杂的自动驾驶领域,不断优化神经网络方面的计算复杂度,提升CPU的逻辑计算力,能够释放更多的GPU资源来进行AI计算。对于GPU而言,其上的高精度向量由CUDA Core中的32/64位浮点数进行运算,而低精度浮点运算整型数据或16位以下浮点数,则通过Tensor Core 进行运算。以便确保其动态任务能够适配上更多的自动驾驶算力、算法、软件协议栈等模型。目前,应为系列系列芯片在国内的各家供应商之间已经处于疯抢的状态。那么,从开发的角度他真的能够如所预期那样从各项指标上满足整体需求么?下文将从其芯片的核心软硬件角度进行分析。
特别声明
本文仅代表作者观点,不代表本站立场,本站仅提供信息存储服务。