本文节选自此书的第十一章:智能座舱芯片算力评估
本章目录:
座舱高算力需求
CPU算力评估
GPU算力评估
NPU算力评估
主存储器性能评估
芯片算力评估实力
本章小结
由前可知,智能座舱的显示子系统、视觉子系统、音频子系统等的性能均取决于智能座舱 SoC 的能力。当系统架构师收到智能座舱新功能的设计需求时,在系统级的整体架构下,他们需要仔细考虑座舱 SoC 是否还有充足的算力可支撑新功能。这一切工作的基础,都依赖于对芯片算力的精确评估。
对智能座舱系统而言,理论上算力资源是越多越好,因为这将为系统提供更强大的处理能力和更丰富的功能支持。然而在现实中,这种看似无限的资源只是一种理想状态。实际上,可供选择的智能座舱芯片种类相对有限,并且其选择还受到诸多商业因素的制约,如成本预算、市场成熟度以及供货稳定性等。更为复杂的是,政治因素和国际关系也可能对智能座舱 SoC的选择产生影响。因此,即使系统架构师选择了市场上性能最强的 SoC,也无法确保它能完全满足不断更新的功能需求。
在这样的背景下,如何精确评估可用的算力资源,成为系统架构师面临的一项重要挑战。为了准确评估算力资源,系统架构师需要先深入了解 SoC 的算力单元及其性能特点。这包括了解各个算力单元的处理能力、功耗效率以及它们之间的协作方式等。同时,架构师还需要对新的功能需求进行详细的算力需求分解,以确定每个功能模块对算力的具体需求。
1.1 SoC 主要算力单元
在分析座舱的系统功能时,我们需明确它必须满足的多种能力需求,如通用计算能力、多媒体音视频处理能力以及图形图像渲染能力等。观察个人计算机、智能手机以及智能座舱的发展历程,我们发现计算芯片的集成化趋势日益显著。
在个人计算机领域,其关注重点是通用计算和多媒体娱乐功能,因此常采用多芯片架构,也就是“ CPU+ 显卡 + 声卡”的组合方式。为了满足市场对高性价比的需求,显卡和声卡的功能往往被整合到主 CPU 芯片中,使得系统结构更为精简。
智能手机领域则不同,为了支持通话、上网、运行多样化的应用程序以及拍照功能,并且强调低功耗和便携性,手机厂商多选择单芯片架构。这种架构在 SoC 中融合了“ CPU+ GPU+DSP+ISP+NPU+DPU+VPU+调制解调器(Modem)”,以此满足手机的多功能需求。
而在座舱领域,因为对多屏显示、高品质车载音响、人机交互以及多模态识别等高级应用的重视,多媒体处理能力和 AI 计算的需求显著增加。虽然座舱 SoC 中包含的算力单元与智能手机 SoC 相似,但其功能和所需的算力资源更为强大和精细。
通常,只有旗舰级的智能手机 SoC 在内部算力单元的配置和性能上,才能与座舱 SoC 相提并论。简而言之,座舱芯片可以看作手机芯片的升级版。尽管两者都依赖于一些基础单元,如 CPU、GPU 和 DPU 等,但在特定方面有着明显的差异。
一般来说,手机芯片更注重低功耗设计,追求性能(Performance)、功耗(Power)和芯片 面积(Area)之间的平衡,即所谓的 PPA 权衡。这是因为手机芯片在保持良好性能的同时,还需实现较长的电池续航时间和紧凑的芯片尺寸。相比之下,座舱芯片在算力和外设接口方面有着更高的标准,同时还需要具备强大的 AI 算力,以满足复杂的智能交互需求。
为了满足座舱芯片的这些特殊需求,我们在表1 中对座舱 SoC 的主要算力单元进行了总结。
表 1 座舱 SoC 中的主要算力单元
NPU | ||
从表 1 中可以看到,除了调制解调器是用于上网和通话之外,智能座舱 SoC 已经囊括了几乎所有的关键算力单元。随着市场对座舱性能要求的持续提高,这些算力单元的处理能力也必将得到进一步的增强。
1.2 座舱算力需求分解
智能座舱在显示、视觉、音频等多个领域的主要应用依赖于座舱 SoC 中各计算单元的紧密配合与高效协作。表 2 简要总结了 SoC 的算力分解情况。
表 2 座舱 SoC 算力分解
在座舱 SoC 的所有算力单元中,CPU 无疑占据着举足轻重的地位。甚至可以说,有经验的工程师只需了解一颗 SoC 所采用的 CPU 类型,就能大致预测出这颗 SoC 的性能上限。这是因为 CPU 作为核心处理单元,对整体性能起着决定性的作用。
2.1 CPU 性能评估公式
CPU 是计算机系统的核心组件,负责运算和系统控制。它是信息处理及程序运行的关键执行单元,掌控着系统内的所有资源,如存储器、输入 / 输出通道、数据处理以及逻辑计算等。
对智能座舱用户来说,最直观的感受就是车机系统运行应用程序的响应速度。而这个响应速度,最直接的体现就是 CPU 执行程序的时间。
1. 影响 CPU 性能的因素
我们都知道,CPU 在执行任务时需要依赖时钟,时钟掌控着每条指令在 CPU 流水线中的执行节奏。因此,时钟周期的长短,或者称为“滴答数”,就显得尤为重要,通常用时钟频率来表示这一指标,其单位是 Hz,即时钟周期的倒数。例如,如果某 CPU 的时钟频率为 1GHz,那么它的时钟周期就是 1s/(1 × 10^6) ,即 1ns。
对于 CPU 执行一段程序所消耗的时间,可以使用一个公式来表示:
程序的CPU执行时间 = 程序的CPU时钟周期数×时钟周期
一段要执行的程序,首先要由编译器生成指令。所生成的总程序指令数被称为 IC(Instruction Counter,指令计数)。假设执行每条指令的时钟周期平均数为 CPI(Clock Cycle per Instruction),那么程序的 CPU 时钟周期数就可以按如下公式来进行计算:
程序的CPU时钟周期数 = IC× CPI
现在,我们可以使用 IC 和 CPI ,以及时钟周期来写出基本的性能公式:
CPU时间 = IC × CPI× 时钟周期
或者
表 3 总结了影响 CPU 性能的构成因素,以及如何测量这些关键因素。
表 3 CPU 性能因素
根据表 3 所总结的信息,我们可以用 IC、CPI 和时钟周期这三个参数来评估 CPU 的性能, 进而得出用户可感知的 CPU 执行时间。CPU 时间是衡量计算机性能的全面且可靠的指标。而 IC、CPI 和时钟周期这三个参数是相互影响的,不能单独用其中一个因素来全面衡量 CPU 的性能。
例如,如果我们修改指令集架构,使用采用了 CISC(复杂指令集)的 CPU,那么对于同一段程序而言,编译器生成的指令数可能会减少。然而,在 CPU 的微架构设计中,采用复杂指令可能会导致 CPI 和时钟频率的增加。这样一来,指令数量减少所带来的性能提升可能会被抵消,甚至可能产生负面影响。因此,我们需要综合考虑这三个参数,才能更准确地评估 CPU 的性能。
2. 影响程序性能的因素
程序的性能受到多方面因素的影响,包括算法、编程语言、编译器、指令集架构以及硬件微架构设计。表4 简要概述了这些因素是如何具体影响 CPU 性能公式中的各个参数的。
表4 影响程序性能的因素
1. DMIPS 标准
在评估 CPU算力时,大部分厂商会使用DMIPS这个衡量参数。DMIPS(DhrystoneMillion InstructionsexecutedPerSecond),意思是在CPU上运行Dhrystone测试程序,每秒能够执行的百万指令数。例如,最新的高通8295 座舱SoC,其CPU 号称可达220k DMIPS 算力,意思是每秒可以执行220 000 000 000 条Dhrystone指令。
Dhrystone 被称为合成测试基准程序,它主要用来评估处理器在执行整数和逻辑运算时的性能。Dhrystone 包含了多种整型语句和逻辑语句的循环,这些循环涉及各种赋值操作、数据类型及区域、控制流指令、过程调用、参数传递以及整数逻辑运算等。通过这些测试,可以对处理器在执行这类操作时的性能有全面了解。
然而,正因为 Dhrystone 主要关注整型和逻辑运算,所以仅凭 DMIPS 测试结果并不能表明 CPU 的整体算力。特别是当涉及浮点运算、内存访问速度、I/O 性能等其他关键因素时,Dhrystone 的测试结果就显得不够全面了。在这种情况下,有必要引入另外一种标准化的算力衡量方法。
2. 关于合成测试基准程序的说明
在《计算机体系结构:量化研究方法》一书中,两位作者 John.L.Hennessy 和 David A.Patterson 非常详细地阐述了 CPU 算力衡量的方法。
在测量计算机性能时,采用实际的应用程序进行基准测试被认为是最佳实践。这是因为简单的合成基准测试程序,如 Dhrystone,虽然易于实施和比较,但可能无法真实反映复杂应用程序的性能表现。其原因在于:
( 1 )性能隐患与合成基准测试的局限性
通常合成基准测试远比实际应用程序简单。因此,它们可能无法全面揭示处理器在处理复杂任务时的性能。编译器的编写人员和架构师可能通过优化特定程序来优化,使得计算机在执行这些简单程序时表现得更快,而这并不代表程序在实际应用中的性能。
(2)编译器的优化与专有标志的问题
为了在 Dhrystone 等基准测试中取得好成绩,编译器的编写者可能会使用专有标志对程序进行特定优化。这些优化虽然提高了测试分数,但可能引发其他程序的非法转换或性能损耗,因为其本质是服务测试,而非通用性能增强。
为了确保测试的公平性,需在测试的标准化和源代码修改方面进行约束。
1 )测试人员通常要求使用相同的编译器(如 GCC 或 LLVM)和统一的编译标志。这样做可以减少因编译器差异或优化标志不同而导致的性能测量误差。
2)允许修改源代码可能会导致测试结果的偏差,因为优化可能只针对特定测试而非实际应用场景。通常,对源代码的修改应该受到限制或完全禁止,以保持测试的公正性。
3. SPEC 基准测试程序
基准测试应用程序集(基准测试套件)是性能评估的重要工具,在设计时尽可能接近实际应用程序,以便更准确地衡量处理器在处理不同类型任务时的能力。这些套件包含了多个基准测试,每个测试都针对特定的性能方面,如 CPU 单核 / 多核计算能力、内存访问速度、I/O 性能等。通过使用这样的套件,可以获得处理器在多种应用场景下的综合性能表现。
在众多基准测试套件之中,SPEC(标准性能评估组织)的系列套件堪称典范,自 SPEC89 起不断进化到 SPEC2017。其中,用于 CPU 测试的为 SPEC CPU2017 基准测试程序。
SPEC CPU2017由43 个基准测试程序组成,分为20 个整型和23 个浮点基准测试程序。整型和浮点类基准测试程序又依据吞吐量和速度进行了细分,即将43 个测试程序分为整型吞吐量(SPECrate2017INT)、整型速度(SPECspeed2017INT)、浮点吞吐量(SPECrate2017FP)、浮点速度(SPECspeed2017FP)4 个类别。
其中,SPECspeed 类型用于 CPU单核的测试;SPECrate 类型用于 CPU 多核测试,即测试多个副本进程。测试值越大,表示时间越短,CPU 处理能力越高。表 5 和表 6 分别按整型和浮点分类标准,整理了 SPEC 2017 测试程序的说明。
表 5 SPEC 2017 整型测试程序的说明
SPECrate 2017 INT | ||||
表 6 SPEC 2017 浮点测试程序的说明
544.nab_r | ||||
从表 5 和表 6 可以看出,SPEC CPU2017 基准测试是一些实际的应用程序,它们经过简单修改就可以移植到不同架构的 CPU 上运行,并能在最大程度上降低 I/O 对性能的影响。
4. SPEC 基准测试结果
使用 SPEC基准测试程序套件,可以横向对比不同的CPU,得到可比性较强的测试结果。图1引用了AnandTech网站对Inteli9系列芯片和AMDRyzen7950x 芯片所做的评测,读者从中可以看到相关的测试结果。
图 1 SPECrate(多核测试)整型和浮点测试对比结果
图 1 采用直方图形式,可以直观地比较4 种类型CPU在多核测试条件下的各种测试表现。比如,在各种测试中,AMD公司的Ryzen7950x和Intel公司的Corei9-13900K 芯片性能相当。而Intel的Corei9-11900K的性能指标几乎总是最低的。
在智能座舱中,显示子系统特别依赖 GPU 的处理能力,同时视觉感知子系统也在一定程度上需要借助 GPU 进行计算。合理评估 GPU 的算力资源,从而判断 SoC 是否能支持座舱内各种显示屏的运作,是一项至关重要的任务。
3.1 GPU 架构原理
从本质上看,GPU是一种基于 SIMD(单指令多数据)架构的计算机系统。与 CPU 相比,GPU 配备了更多的处理单元,并具备更高的并行处理能力,因此能更迅速地处理大量的图形和 图像数据。GPU 之所以适用于并行计算,主要是因为它拥有出色的并行处理能力和丰富的计算单元。GPU 的设计初衷在于提升数据吞吐量,也就是在一次操作中处理尽可能多的数据。为此,GPU 采用了流式并行计算模式,能对每个数据行进行独立的并行计算。这种独特的设计使得 GPU 在处理大规模并发计算任务方面表现出色,例如矩阵乘法、图像处理以及深度学习等。
为了理解 GPU 的工作原理,我们首先需要探究计算机系统是如何绘制并渲染图形的。
从本质上讲,计算机所能处理的图形图像都是由一系列的顶点(Vertex)和纹理(Texture)数据组成的。这些顶点会构成多个三角形,当在这些三角形上贴合相应的纹理后,就能输出用户可见的最终图像。这一过程CPU和GPU的协同工作,以实现最高效率。图2给出了一个图形绘制的流程示意图:
图 11-2 图形绘制流程示意图
绘制过程涉及 CPU、GPU和DPU的共同参与。图形绘制和渲染的核心在于GPU管线(GPUPipeline)。这里的“管线”并非指CPU的并发流水线,而是用来比喻GPU处理图像的流程,就像物品在生产流水线上从一个环节传递到下一个环节,直到全部加工完成。在GPU管线中,图像数据经历一系列的处理步骤,最终输出我们所需的图形图像。表 7 详细列举 了 GPU 管线的主要步骤。
表 7 GPU 管线绘制步骤说明
Early-Z Test | |||
在这些操作中,光栅化(Rasterization)和像素着色器(Pixel Shader)是需要进行大量并行处理的关键步骤,要求有足够多的运算单元来执行。因此,在 GPU 的微架构中,这些处理单元被设计为多线程计算单元,以便能够同时处理多个任务,如图 3 所示。
图 3 GPU 并行计算处理单元架构
从图 3 中可以看到 GPU 内部存在一个执行队列。GPU 从这个队列中获取指令,并将其发送到 SIMD 单元执行。SIMD 单元能够调度并执行一条计算指令,同时对多路数据进行处理。计算结果通过数据缓存最终写入系统内存。显然,这种架构非常适合进行矩阵运算或大量像素的并行计算,因为它能够高效地处理批量数据,从而提升整体计算性能。
3.2 GPU 性能评估标准
在智能座舱中,GPU 最主要的用途还是负责图形计算和渲染的任务,它与桌面个人计算机,智能手机的用途一样,首先要考虑图形图像显示的流畅度与画面的精美程度。更进一步, GPU 还要承担 3D 游戏的运行任务,当 GPU 运行压力达到阈值之后,屏幕画面的卡顿、掉帧、降频等问题会严重影响座舱用户的体验。
因此,需要针对 GPU 的性能进行评估,而评估标准既是系统架构工程师选择座舱 SoC 的参考要素之一,也是改进 GPU 性能和评估座舱应用是否可行的依据。
1. GFLOPS
人们习惯使用 GFLOPS(Giga FLoating-point Operations Per Second,每秒 10 亿次浮点运算)作为 GPU 的算力评价标准。我们首先来看一下如何计算GFLOPS。
1 )获取 GPU 的核心数量:核心数量是指 GPU 中包含的核心数量,通常以个为单位。可以通过查询 GPU 的规格或使用 GPU 检测工具来获取核心数量。
2)获取每个核心的频率:每个核心的频率指的是 GPU 的时钟频率,通常 MHz(以兆赫)为单位。可以通过查询 GPU 的规格或使用 GPU 检测工具来获取每个核心的频率。
3 )获取每个核心的浮点运算能力:每个核心的浮点运算能力是指每个核心能够执行的浮点运算数量,通常以 MFLOPS(百万次浮点运算每秒)或 GFLOPS(十亿次浮点运算每秒)为单位。由于核心运行频率的不同,同一个 GPU 架构可能具有不同的峰值运算能力。可以通过查询 GPU 的规格或使用 GPU 检测工具来获取每个核心的浮点运算能力。
4)计算 GPU 的 GFLOPS:使用以下公式计算 GPU 的 GFLOPS:
GFLOPS = 每个核心的浮点运算能力× 核心数量
我们以英伟达的 GeForce 8800 Ultra 芯片为例,计算它的 GFLOPS 参数值。
在 GeForce 8800 Ultra 芯片中,每个SP( Stream Processor,流处理器)核心运行的时钟频率是 1.5GHz( 1.5 × 109 个时钟周期)。
据英伟达公开资料显示,1 个SP核心在1 个时钟周期内的双精度(FP32)的计算能力为3FLOPS,那么 1 个SP核心的峰值算力为:3FLOPS×1.5GHz=4.5GFLOPS Ultra芯片的每个SM(多线程流多处理器)包含8 个SP 核心,SM 运行的峰值算力是4.5 ×8=36 GFLOPS。
GeForce 8800 GPU 一共拥有14个SM ,GPU 的总算力为:36 × 14 = 504 GFLOPS 。
4. 其他评估参数
正如从 GFLOPS 的定义以及 GPU 架构原理中看到的那样,GFLOPS 虽然是计算能力的理论值,但并不能全面反映顶点处理、几何处理以及像素处理的能力。GPU 的实际性能会受到多种因素的影响,包括不同的 GPU 架构、驱动程序、应用程序以及显存等。
此外,还有其他一些评估参数也可用于评估 GPU 的性能。
1 )帧率:帧率是指 GPU 在处理图形渲染任务时,每秒能够输出的图像帧数。测试结果显示,较高的帧率表示 GPU 能够更快地渲染图像,提供更流畅的视觉体验。
2)像素填充率(Pixel Fill Rate):像素填充率是指 GPU 每秒能够渲染的像素数量。它与 GPU 的核心数、频率和内存带宽等因素相关。测试结果显示,较高的像素填充率表示 GPU 能够更快地渲染图像。
它可以通过以下公式来计算:
其中,每个周期的像素输出数取决于 GPU 的 ROP(渲染输出端口)的数量和每个 ROP 的吞吐量。时钟周期数是指 GPU 的时钟频率,即每秒包含的时钟周期数。
3 )纹理填充率(Texture Fill Rate):纹理填充率是指 GPU 每秒能够处理的纹理像素数量。纹理是应用于物体表面的图像,较高的纹理填充率表示 GPU 能够更快地处理纹理映射,提供更细腻的图像。
4)像素着色器性能:像素着色器是 GPU 中负责对每个像素进行颜色计算的部分。像素着色器性能与 GPU 的核心数、频率和架构等因素相关。较高的像素着色器性能表示 GPU 能够更快地进行像素级别的计算,提供更复杂的图像效果。
5)渲染分辨率:渲染分辨率是指 GPU 能够支持的最大图像分辨率。较高的渲染分辨率表示 GPU 能够处理更大尺寸的图像,提供更好的图像细节和清晰度。
6)帧缓冲带宽:帧缓冲带宽是指 GPU 与帧缓冲区之间的数据传输速度。帧缓冲区是存储渲染结果的内存区域,较高的帧缓冲带宽可以提高数据传输效率,加快渲染速度。
4. 基准测试程序
正如在 CPU 的性能基准测试中使用 SPEC CPU2017 一样,GPU 也有相关的基准测试程序。
( 1 )3D Mark 测试
3DMark 由 Futuremark 公司开发的,用于测试计算机、移动设备和智能手机等设备的图形性能和稳定性。其测试结果可以反映设备性能的高低以及是否能够运行要求高的 3D 游戏。
3DMark 的测试包括多项测试,如 CPU、GPU、物理特性、帧数等,可以帮助用户在不同设备之间进行比较,为用户选择设备提供参考。其测试基于 DirectX 、OpenGL 和 Vulkan 等图形 API 实现,模拟了现代 3D 游戏和应用程序中的复杂渲染效果。
目前主流的 3DMark 版本是 3DMark FireStrike,它包括了火焰测试段(Graphicstest)、物理计算测试段(Physicstest)和组合测试段(Combinedtest)三种测试模式。它可以适应绝大多数游戏的要求,能够对显卡的 3D 性能、CPU 的物理性能以及整机的综合性能进行测试评估。
此外,3DMark还可以评估GPU在VR 环境中的性能表现。测试基于 OpenVR API 实现,模拟了虚拟现实中的渲染和交互效果。
图4 是使用 3DMark 对智能手机 SoC 中的 GPU 进行测评的评分。
图 4 多款 GPU 的 3D Mark 基准测试结果
3D Mark 测试程序主要使用了 2 种访问 GPU 的应用程序接口进行测试,一种是 OpenGL ES,另一种是 Vulkan。
从跑分结果来看,麒麟 9000 芯片使用的 Mali-G78C24(24 核心)的分值最高。其中 Mali 系列 GPU 是由ARM 公司发布的 IP 核(知识产权核)设计,SoC 厂商可以将其集成到自己的产品中来。
OpenGL ES 是 OpenGL(三维图形应用程序)接口的子集,为手机、个人掌上数字助理和游戏主机等嵌入式设备而设计。它去除了许多不必要的特性,并增加了一些适合嵌入式系统 使用的特性。OpenGL ES 比 OpenGL 更为轻量级、高效,更适合在移动设备上运行。
Vulkan 是 Khronos Group 推出的新一代图形处理应用程序接口,旨在提供更高效的图形渲染和计算能力,特别适合移动设备。Vulkan 的设计目标是减少驱动程序的开销,并提供更直接的硬件访问能力,以提高性能和效率。
(2)曼哈顿测试
曼哈顿测试是3D图像测试中常用的基准测试软件,它是 GFXbench 的一部分。GFXbench是一款跨平台的3D基准测试软件,可精准反映设备 GPU 的图形性能。它有多种测试场景,可以充分考察设备的 OpenGL ES 的表现,并且可以进行电池续航测试。
GFXBench 的测试项目包括霸王龙(T-Rex)、曼哈顿 3.0(Manhattan)、曼哈顿 3.1、赛车(Car Chase)等。这些测试项目分别对应 OpenGL ES 2.0/3.0/3.1/3.1 标准下的性能。每个测试都会生成一个平均帧率(FPS),用以衡量测试结果的好坏。
另外,GFXbench 还提供了当屏(OnScreen)和离屏(OffScreen)两种测试。当屏即以设备屏幕原生分辨率运行测试,离屏则将分辨率统一到 1080P ,便于跨设备对比。
例如,在曼哈顿 3.0 测试中,骁龙888的GPU 达到了175帧/ 秒,而骁龙7 Gen1的GPU达到了90帧/ 秒。在功耗方面,骁龙888的功耗为8.34W,而骁龙7Gen1的功耗为5.91W。这些数据可以作为对比不同GPU性能的依据。
(3 )安兔兔测试(*现代智能座舱主要参考手机芯片重新设计,所以安兔兔测试也适用)
安兔兔测试是通过运行一系列特定的测试程序来对智能手机的 GPU 性能进行测试,根据测试结果给出一个总分。这些测试程序模拟了现实生活中的各种应用场景,如游戏、视频播 放、网页浏览等,以评估 GPU 在处理这些任务时的性能表现。
具体来说,安兔兔测试会对 GPU 的渲染能力、计算能力、图像处理能力等方面进行测试。在渲染能力方面,测试程序会模拟复杂的 3D 场景,以评估 GPU 的渲染速度和效果;在计算能力方面,测试程序会进行大量的数学运算,以评估 GPU 的计算速度和精度;在图像处理能力方面,测试程序会模拟各种图像处理任务,如降噪、锐化等,以评估 GPU 的图像处理能力。
(4)游戏测试
除了基准测试程序之外,采用实际的应用程序对 GPU 性能进行评测是一种常见方法。在 智能座舱 SoC 越来越向消费类电子性能靠近的时代,使用流行的游戏对 GPU 性能进行测试可以预测用户的直观感受。
目前智能手机上常使用的评测游戏有《原神》《王者荣耀》等。
在智能座舱的应用中,专用的 AI 推理组件在座舱 SoC 中是不可或缺的。通常情况下,为 了进行人工智能相关的模型运算,需要在座舱 SoC 中集成 NPU。
4.1 NPU 架构原理
在座舱内部的感知算法中,针对 NLP 主要运用 RNN(循环神经网络)或 LSTM(长短时记忆网络)。这些网络能处理诸如语音信号等序列数据,学习其特征和模式,并通过大量文本数据训练来提升机器理解和生成人类语言的能力。图像识别则主要采用 CNN ,CNN 通过卷积运算精准提取图像特征,实现对象的有效识别和分类。
在选择座舱 SoC中的NPU时,必须确保其能支持RNN和CNN模型。RNN模型的节点以环状方式定向连接,具备出色的记忆能力,非常适合处理任意时序的输入数据。作为专门处理二维数据的多层神经网络,CNN不仅具备出色的容错、并行处理和自学习能力,广泛应用于模式分类、物体检测与识别等领域。因此,对这两种模型的支持情况是选择NPU的重要考量因素。
1. NPU 计算原理
顾名思义,CNN 和 RNN 都属于神经网络模型,它们通常采用神经元来进行计算。神经元是神经网络中的基本单元,它接收多个输入信号,通过一定的计算产生输出信号,并将输出信号传递给其他神经元。神经元的组成公式可以表示为:
在此公式中,α 代表神经元的输出,g(·) 是激活函数,wi 是第 i 个输入信号的权重,xi 代表第 i 个输入信号,而 b 为偏置参数。从公式中可以看出,NPU 所支持的计算模式以乘法和加法为主,因此需要大量的乘加单元(MAC)来构建运算矩阵。
为了用硬件实现这种乘加的计算关系,谷歌 TPU(张量处理单元,NPU 的一种)给出的 系统架构框图如图 5 所示。
图 5 谷歌第 1 代 TPU 架构框图
从图 5 中,我们可以看到谷歌的 TPU 设计思路。
TPU 指令通过 PCIe 接口从主机(CPU)发送至 TPU 的指令缓冲区。同时,NPU 会从主存储器中读取已训练好的权重参数,并将这些数据送往矩阵乘法单元进行乘法运算。由于运算量庞大,此处的数据带宽高达 30GB/s ,以满足高速数据传输的需求。
矩阵乘法单元是 TPU 的核心组件,它包含 256×256 个乘加单元,能够对 8 位整型数进行乘加运算。每次乘加运算的结果会暂存于矩阵单元下方的累加器(Accumulator)中。 这个矩阵乘法单元的运算能力非常强大,每个周期可以输出多达 64000 个计算结果。
累加器负责处理加法运算的结果。这些结果在经过激活函数处理后,会被传输到归一化 / 池化单元进行进一步处理,并最终存储在统一缓存中。如果需要,这些中间结果还会通过脉动阵列再次进入矩阵乘法单元,参与下一轮的运算。
最终的计算结果会通过 PCIe 接口传送回主机,从而完成整个计算过程。这种高效的数据处理和传输机制使得 TPU 在处理大规模矩阵运算时具有出色的性能表现。
2. NPU 特性需求
因此,一个典型的 NPU,如果需要支持 CNN 和 RNN ,应该具备以下特点。
硬件架构:NPU 的硬件架构必须高效且灵活,能够同时满足 CNN 和 RNN 的计算需求。这意味着它不仅要支持卷积运算、池化运算、激活函数等 CNN 常用的操作,还要能够处理 RNN 特有的长序列记忆和时间维度信息传递。
数据流管理:为了有效处理图像和文本等多种类型的数据流,NPU 需要具备先进的数据流管理能力。这包括高效的内存管理和数据调度策略,以确保各种类型的数据能顺畅地进行计算和传输。优化后的数据流管理不仅能提升处理速度,还能降低功耗和延迟。
并行计算能力:为了应对复杂的计算任务,NPU 需要具备强大的并行计算能力。这包括支持多线程、多核心的计算方式,以便同时处理多个计算任务,从而提高整体计算效率。通过并行计算,NPU 能更快速地完成大规模数据处理和分析任务。
混合精度计算:在保证计算精度的前提下,为了提高计算效率,NPU 应采用混合精度计算技术。这意味着在某些场景下,可以使用低精度的整数运算来加速计算过程,而在需要高精度的场合则使用浮点运算。这种灵活的计算方式能在保持精度的同时,最大限度地提高计算速度。
数据类型优化:为了进一步提升计算效率,NPU 还应采用数据类型优化策略。例如, 可以使用定点数代替浮点数进行计算,或者使用较低精度的数据类型来替代高精度数据类型。这些优化措施能有效减少计算时间和功耗,使 NPU 在处理各种任务时更加高效和节能。
NPU 中与并行计算紧密相关的核心组件是计算单元。这些计算单元专门负责执行神经网络的各类计算任务,如卷积、激活函数处理、池化等关键操作。计算单元通常由多个 PE (Processing Element,处理单元)构成,每个 PE 都独立负责处理一部分计算任务,从而实现任务的并行处理。
在 NPU 的架构中,PE 被视为最基本的计算单元。每个 PE 能够完成单个神经元或神经元小组的计算操作,这种设计有助于提高计算的并行性和效率。为了协调各个 PE 之间的工作,它们之间通过互联网络( Interconnect Network)进行高效的数据传输和协作。这种网络确保了数据能够在不同的 PE 之间快速流动,从而支持复杂的神经网络计算任务的完成。
由于 PE 在 NPU 中扮演着至关重要的角色,其性能和数量直接决定了 NPU 的整体计算能力和处理效率。换句话说,一个具备高性能计算单元的 NPU 将能够更快速地处理神经网络任务,提升整体的系统性能。
4.2 NPU 性能评估标准
在许多 NPU 的设计实现中,PE 经常被称为 MAC(即乘加单元)。因为神经网络的基本计算过程涉及权重与输入的乘积以及这些乘积结果的累加。具体来说,每个神经元的输出是其 输入与相应权重的乘积之和,再加上一个偏置项,最后可能还会经过一个激活函数。在这个过程中,乘法和加法是两种最基本的数学运算。
NPU 的算力单位被称为TOPS(TeraOperationsPerSecond),它表示每秒可以执行的万亿次操作,是衡量NPU性能的重要指标。由于NPU的计算单元采用并行计算的方式,理论上来说,我们只需要使用乘加单元的数目,再与NPU的时钟频率相乘,就可以得到单位时间内的操作次数,也就计算出了TOPS的值。
在评估 TOPS 时,还需要考虑操作类型和操作精度。
操作类型:在神经网络计算中,常见的操作包括矩阵乘法、加法、激活函数等。这些操作在计算复杂度和资源需求上有所不同。例如,矩阵乘法可能涉及大量的乘法和加 法操作,而激活函数主要是比较和逻辑操作。
操作精度:操作精度对计算资源和时间的影响也很大。整型(如 Int8 、Int16 )和浮点型(如 FP32 、FP16)数据在计算速度、内存占用和精度方面各有优劣。 一般来说,较低精度的数据类型计算速度更快,但可能牺牲一定的准确性。
现在,我们以谷歌的 TPU 芯片为例,尝试计算它的算力标准。
1 )在谷歌 TPU 的矩阵乘法单元中,含有 256×256 个乘加单元,因此它有 64000 个 MAC 单元。
2)每个 MAC 单元在一个周期内将完成 1 次乘法和 1 次加法运算,计为 2 次操作。
3 )假设谷歌 TPU 的执行时钟频率为 1GHz,那么每秒的计算次数是 2 ×64000 × 1GHz。 要转换为 TOPS,还需要将这个数值转换为“万亿”,因此,需要除以1012。
4)在执行精度上,假设推理模型按 INT8( 8 位整型)类型的精度来计算,刚好与 TPU 的 矩阵乘法单元精度相同,因此 TPU 的算力公式为:
5)如果推理模型按 FP16( 16 位浮点数)类型的精度来计算,由于每个 MAC 单元能处理的数据量从 8bit 改为 16bit,因此需要 2 个 MAC 才能执行 1 次计算,总计算次数将减少一半。TPU 的算力公式为:
在 SoC 的性能评估中,存储器性能是一个至关重要的环节。在基于冯 ·诺伊曼架构的计算机体系中,所有的指令和数据都存储在存储器中,因此存储器的访问速度对计算机整体性能有着显著影响。举例来说,根据 CPU 的五级流水线体系,CPU 首先需要从存储器中取指令,然后取数据,最后将计算结果写回存储器。如果存储器的访问速度过慢,CPU 流水线中的指令周期将不得不与存储器的访问速度相匹配,这会大大降低计算机的整体性能。这就像水桶理论所揭示的道理一样,水桶的容量取决于最短的那块木板,而存储器的性能往往就是影响 SoC 整体性能的“短板”。因此,在 SoC 设计和性能评估中,必须充分重视存储器的性能优化。
5.1 主存储器架构原理
计算机中存储器的设计问题可以归纳为三个主要方面:容量、速度和价格。程序员往往期望存储器具有大容量、高速度和低成本,然而,实际上这三个要素往往是相互矛盾的,难以实现完美的平衡。这 3 个要素之间的关系可描述为:
存取时间越短,则平均每位的存储单元对应的存储器成本越大。
存储容量越大,平均每位对应的存储器成本越小。
存储容量越大,存取时间就越长。
现代计算机系统通常采用层次化的存储结构(如缓存、主存、辅存等),以便在不同层次上平衡容量、速度和成本。这种层次化的设计允许系统在保持足够性能的同时,也能提供足够大的存储容量。
1. 存储器层次结构
根据计算机系统结构原理,智能座舱 SoC 的架构体系中有可能使用到的存储器类型如表8 所示。
表8 座舱 SoC 所使用的存储器类型
根据表8 中列出的存储器类型,我们可以看到 CPU 内部的寄存器速度是最快的。如果能全部使用寄存器作为存储器,那么性能无疑将达到极致。然而,由于其高昂的成本,无法大规模采用。另一方面,主存或闪存虽然容量充足且成本适中,但其存取速度相对较慢,无法匹配 CPU 的处理速度。
存储器层次结构的提出,旨在构建一种存储器系统技术,该技术旨在实现每字节成本与主存和闪存相当,而速度则接近最快的寄存器或高速缓存。
在计算机系统结构的设计中,构建这样的存储器系统是切实可行的。
2. 缓存原理
缓存的工作机制是基于局域性原理设计的。局域性原理表明,程序往往会重复使用它们最近使用过的数据和指令块。这里的“最近使用”不仅包含了时间上的局域性,也包含了空间上的局域性。为了充分利用这一特性,在指令预取阶段,处理器会一次性读取一段指令和一块数据。这样,下一条待执行的指令和数据很可能就包含在这已经预先读取的指令段和数据段中。
在常规情况下,指令和数据是保存在主存储器中的。然而,如果将预取的指令和数据保存在缓存中,就可以显著提升 CPU 对存储器中数据的存取速度。这种设计思路正是存储器层次结构的核心所在。通过这种结构,我们能够有效地提升系统的整体性能。图6 展示了一个支持缓存的存储器层次结构。
从图6 可以观察到,主存储器的容量相对较大,但由于其位置离 CPU 较远,访问速度相对较慢。相比之下,缓存离 CPU 更近,尽管其容量较小,却能提供更快的访问速度。CPU 通过高速总线高效地访问存储在缓存中的指令或数据。同时,根据局域性原理,缓存通过低速总线以块传输的方式从主存储器中成批读取指令或写入数据。这样的层次结构设计使得系统仅需增加一小块缓存的成本就能显著提升存储空间的访问速度,同时保持整体存储解决方案的经济性。
图6 支持缓存的存储器层次结构
3. 缓存优化方法
缓存的设计是一门非常精妙的学问,尽管我们在此不打算深入探讨,但简要介绍其设计思路仍是有意义的。
缓存的设计初衷在于将低速主存中的指令和数据预先提取,并存储在速度更快的缓存中。 当 CPU 需要读取指令或数据时,如果这些数据能从缓存中直接获取,则称之为命中;否则,系统将启动主存预取流程,将一段指令和数据从低速主存迁移到缓存中。这个过程不可避免地会打断 CPU 的流水线操作,从而影响处理效率。因此,命中率,即 CPU 需要从缓存中读取数据时能够直接命中的比例成为了评估缓存性能的关键指标。提高命中率是缓存设计的核心目标,因为它直接关系到系统的整体性能和响应速度。
如何才能提升缓存的命中率?以下是一些可以考虑的方向。
容量:容量越大,则缓存中可存放的数据就越多, CPU 能命中的概率也就越高。
映射:缓存的容量必然不可能达到主存一样的容量大小,否则就不需要设置缓存了。 如何将容量较大的主存映射到容量小的缓存中?这里需要考虑映射算法的设计。现在 最常用的是组相联映射机制,但值得注意的是分组的大小,以及组的数目。不同的选择会带来不同的性能。
替换:一旦缓存存满,当需要装入新的块时,原来的块就需要被替换掉。采用什么样的替换算法才能最大限度地提升命中率?LRU(最近最少使用)、LFU(最不经常使用)、 FIFO(先进先出)、随机算法等,这些都是常用的替换算法可选项。
写策略:缓存中的数据是否需要被写回主存中?SMP 系统中多核如何保证缓存一致性?这些问题都需要通过写策略来进行保证。
行大小:“行”指的是缓存架构中的行,负责从主存中读取数据并存放。主存中的数据 块与缓存中的行相对应。由于局部性原理,CPU 在读取主存中的数据时,不是仅仅读取该数据本身,而是连带读取其周边区域的一整块数据。这些数据将会装入同一个行内。随着行大小的增加,命中率开始上升,但是当行大小达到临界点后,再增加反而会使得命中率降低。其原因在于,较大的行会导致被替换的可能性大大增加,这样可能不得不替换掉不久前刚写入缓存的数据。
分立缓存:最开始的缓存是将指令和数据放在一个缓存中的,这种架构也称为普林斯顿结构。但是现代 CPU 设计引入了超标量流水线架构,它需要支持执行并行指令,预取带预测的指令等功能。此时将指令缓存和数据缓存分开将有利于消除多条流水线带来的冲突。这种分立缓存的架构又被称为哈佛结构。
多级缓存:由于集成电路工艺的提高,缓存与 CPU设计在一块处理器上是非常正常的思路。即使都在一块处理器SoC内部,由于半导体晶体管的特性以及容量大小的区别,缓存的速度也是不同的。相对来说,离CPU越近,则缓存的速度越快。离CPU越远,则缓存速度越慢,但容量可以增大。现代CPU的设计已经开始引入L1、L2、L3 这种 3 级缓存设计。L1 离 CPU 最近,可以跟上处理器的高速时钟频率;L2 和 L3 容量更大,可以提升缓存命中率。
4. 多级缓存架构
根据上述分析,座舱 SoC的存储器层次结构需要综合采用这些可行的方法。由于缓存设计与CPU设计息息相关,它涉及计算机系统结构的核心策略,一般来说由提供高性能CPUIP (知识产权核)的设计公司(如ARM公司等)来提供。现代CPU设计主要采用了3 级缓存的结构,如图7 所示。
图 7 CPU 3 级缓存设计
从图7 可以看到,存储器之间的速度、容量和价格的权衡。CPU 内的寄存器无疑是速 度最快的存储器,但它的容量非常有限且价格昂贵。通常,一个处理器核心会配备十几个到 几十个这样的寄存器,以确保关键数据和指令能够迅速被 CPU 访问。
主存,通常采用 DDR(双倍速率的动态随机存储器)器件,拥有大容量但速度相对较慢。 它在存储系统中扮演着重要角色,能够存储大量的数据和程序。
在主存和 CPU 之间,设置了 3 级缓存(L1 、L2 、L3 )以提高访问速度。其中,相比 L2和 L3 ,L1 具有更快的速度,但其容量也相对较小。这种设计是为了确保 CPU 能够快速访问最近使用过的数据和指令,从而提高整体性能。
另外,缓存对程序员来说是透明的。这意味着在编写程序时,程序员无须考虑缓存的存在,系统会自动处理缓存的读写操作。这种设计使得编程更加简洁高效,对程序员更为友好。
在设计智能座舱 SoC 时,SoC 的系统架构师通常可以选择 L1 、L2 、L3 缓存的容量大小,在性能和成本之间取得平衡。只有少数自研 CPU 的设计师,才能恰当地设计满足特定需求的缓存内部架构。
5.2 主存储器性能评估标准
在对主存储器性能的评估中,存在两种主要的标准:存储器系统的速率和访问存储器的带宽。
1. 存储器速率评估
作为一个复杂系统, SoC 访问存储器的速率受多个因素的综合影响。
系统架构:不同的系统架构设计对内存访问的性能有着不同的影响。例如,在采用多级缓存的系统中,数据可能需要在不同级别的缓存之间进行传输,这会直接影响访问速度。
DDR 类型:DDR 存在多种类型,如 DDR3 、DDR4 、LPDDR 等,它们的访问速度和性能各不相同。具体来说,DDR4 的访问速度通常快于 DDR3,而 LPDDR 往往比标准 DDR 具有更快的访问速度。
内存大小:内存的大小同样会影响访问速度。一般而言,内存越大,其访问速度可能会相对较慢,这是因为更大的内存意味着控制器需要处理更多的数据位,从而可能增加访问延迟。
内存控制器的优化程度:内存控制器的优化也会对访问速度产生影响。优化不足可能导致访问速度受限,而过度优化则可能增加系统的复杂性,甚至可能影响系统的整体稳定性。
数据传输模式:数据的传输模式同样会影响访问速度。例如,采用突发传输模式可以有效地提升内存访问的效率,进而减少访问延迟。
2. 存储器带宽评估
假设座舱 SoC 采用的主存是 LPDDR5(Low Power DDR v5,第 5 代低功耗 DDR 存储器),我们按如下的条件来计算带宽理论值。
1 )DDR(Double Data Rate ,双倍数据速率)技术:DDR 是 DRAM(动态随机存储器) 的一种类型。DDR 在每个时钟周期的上升沿和下降沿都传输数据,因此每个时钟周期内实际可以传输两次数据。计算 DDR 带宽时,需将时钟频率乘以 2,以得出实际的数据传输速率。
2)等效时钟频率:LPDDR5 的标准核心时钟频率为 200MHz 。DDR 内存的预取数据位通常为 16 位,意味着在每个时钟周期内,DDR 核心会预取 16位数据到I/O缓冲区。因此,有效传输速率为200MHz × 16 = 3200Mbit/s,常用 LPDDR5@3200Mbit/s 表示等效的数据时钟频率。
3 )数据位宽:LPDDR5 的数据位宽由通道数和每通道位宽决定。常见的配置有4通道或8 通道,每通道的位宽通常为16位。因此,8通道 LPDDR5 的数据位宽为 8 × 16= 128 位。
4 )DDR 理论数据传输速率,计算公式如下。
所以,对于 3200Mbit/s 的时钟频率和 128 位的数据位宽,理论传输速率为 3200 × 128 ×2/8 = 100GB/s。注意传输速率是以字节为单位进行计算的。
综上所述,衡量 LPDDR5 带宽速率时,需考虑以下三个关键因素:等效时钟频率(例如 3200Mbit/s)、通道数(可能是 4 或 8)以及通道位宽(根据 DDR 供应链的标准,通道位宽一般都是统一的 16 位)。
DDR 是影响 SoC 性能的关键因素之一,在评估座舱的计算能力时,系统架构师会综合考虑多个方面,通常会将 CPU 、GPU 、NPU 和 DDR 带宽数据一并纳入评估范围。
在详细阐述了座舱 SoC 算力评估的基本原理之后,我们将借助一个具体的实例,深入探讨如何对座舱 SoC 的性能进行准确评估,从而判断 SoC 是否能够满足我们的实际需求。
当主机厂计划引入一颗全新的座舱 SoC 时,进行算力评估是不可或缺的一环。这种评估并非仅仅局限于静态地对比两颗芯片的算力指标,而是需要紧密结合实际使用场景,深入分析和判断新 SoC 在何种程度上能够胜任智能座舱的多元化需求。
6.1 座舱使用场景假设
我们需要对智能座舱的使用场景进行一项假设性分析。
假设在当前的项目中,我们采用的是高通公司的 SA8155 芯片作为智能座舱 SoC。为了满足新一代车型产品的市场需求和性能要求,我们需要评估是继续使用 SA8155 芯片,还是需要替换为算力更高的座舱 SoC?为得到有依据的结论,我们需要先针对新旧两代车型产品的智能座舱功能进行详细的对比分析。表9 列举了座舱的部分使用场景,以便进行评估。
表9 智能座舱使用场景范例
从表9 可以看到,新一代的智能座舱在使用场景上既增加了功能,又提升了性能。原有的座舱 SoC 算力是否能满足新的场景需求呢?让我们对使用场景进行分析。
根据表2的座舱算力分解数据来看,智能座舱在大部分使用场景中,CPU和GPU均是不可或缺的算力单元。在视觉呈现相关的任务上,借助DPU计算是必需的,而在处理多媒体音视频数据时,除了CPU和GPU外,还需要额外借助VPU的算力。此外,在涉及摄像头图像处理的任务时,ISP则成为必不可少的算力单元。因此,我们首先需要基于当前的硬件平台和应用软件层进行算力消耗情况的全面统计与分析。
6.2 座舱算力统计对比
下面我们以 SA8155 为座舱 SoC 核心的域控制器测算并统计各个座舱应用场景对 CPU 和 GPU 的具体算力需求。
1. CPU 测算
我们可以通过 Linux 系统下的 CPU 使用率统计命令 top 来进行 CPU 算力测试。图8 展示了在 Linux 的命令行调试环境中输入 top 命令之后显示的结果。
图8 Linux 命令行环境中的 top 命令运行结果
从图8中可以看到,Xorg应用对应的进程ID(PID)为 1428,它的CPU占用率为85.9%。因此,我们在智能座舱的应用场景运行的同一时间输入top命令,就可以得到该应用所占CPU的百分比。为了最大限度地模拟真实的智能座舱应用环境,我们还应该将多个场景进行并发执行。在经过实验之后,我们可以拿到当前的智能座舱SoC的CPU占用率。根据公开信息显示,高通SA8155的CPU算力为105kDMIPS。表10 列举了部分应用场景下,SA8155的CPU占用率测算结果和CPU算力消耗结果。
表10 SA8155 的 CPU 占用率和算力消耗
而针对新一代智能座舱的应用场景需求,我们可以根据 SA8155 的使用情况进行推算。 表11 总结了下一代智能座舱在功能和性能的需求升级以后对 CPU 算力消耗的估算情况。
表11 下一代智能座舱的 CPU 算力消耗估算
从表11 的数据可以看到,针对下一代智能座舱的使用场景,随着大型游戏和后排娱乐屏等功能的加入,对性能的需求也有了显著的提升。基于 SA8155 的实测数据,我们经过深入的分析和验证,得出下一代智能座舱部分应用场景的算力需求。这一需求是基于并发的应用场景进行的考量,尚未涵盖非并发的场景,但即便如此,这些场景下的总算力需求也已经高达 78.85k DMIPS。
那么,为什么在计算算力资源时,我们选择了 DMIPS作为参考依据,而不是使用SPEC CPU2017的结果呢?这主要是因为,我们是通过测量各应用场景下CPU的占用率来估算CPU 消耗的算力资源。当我们获得了CPU占用率之后,可以直接采用SoC厂家给出的DMIPS参考值来进行归一化的计算和对比。而SPECCPU2017 测试套件则更多地用于全面和客观地评估CPU的实际性能,通常用于SoC之间的对比评估。
在得到表12 中的估算值后,再考虑到还有诸多应用场景对 CPU 资源的额外消耗需求,显然 SA8155 已经无法满足下一代智能座舱的算力要求。因此,我们必须寻求具备更高性能的新的 SoC 解决方案。
2. GPU 测算
类似于测算各场景下 CPU 的占用率,我们同样需要测算各场景下 GPU 的占用率。经过查询资料,我们发现高通公司在其底层软件驱动中增加了统计 GPU 占用率的功能。通过配置相应命令,我们可以统计各进程的 GPU 占用率(每个应用场景通常由一个或多个进程来实现)。
在 SA8155 的开发板上,我们首先通过 busybox(Android 系统下的一个调试工具包)进入 SA8155 的 QNX 命令行交互界面。然后,我们输入以下命令,以启动 GPU 占用率统计功能。
// 设置 Log 层级,打开详细信息记录
echo gpu_set_log_level 4 > /dev/kgsl-control
// 统计每个应用的 GPU 占用率
echo gpu_per_process_busy 1000 > /dev/kgsl-control
在输入这些命令后,每个应用的 GPU占用率将通过系统日志(slog)进行输出。我们获取到这些GPU占用率数据后,会基于SA8155的GPU总算力资源(约为1142GFLOPS)来计算每个应用的具体消耗值。此外,我们还会根据应用场景的升级需求,以 SA8155的算力消耗为基准,进一步预测和计算下一代座舱所需的GPU算力值,并将这些数据总结在表12中。
表 12 SA8155 和下一代座舱的 GPU 占用率和算力消耗
在表12 所统计的算力需求中,我们特地将并发的应用与非并发的应用分开进行计算。 例如,在大型游戏的运行场景下,GPU的消耗相当高,可能达到 1000GFLOPS 的算力。然而, 考虑在行车途中玩游戏可能对用户的视力造成不良影响,甚至引发眩晕,我们将这类场景定义为仅在驻车模式下才允许启动。因此,在统计 GPU 的算力消耗时,这类场景的算力消耗不应计入最大并发场景的总体算力消耗中。
根据上述分析,我们认识到 SA8155 在 GPU 算力值上已无法满足下一代智能座舱的需求。在规划 GPU 的算力资源池时,我们不能仅局限于当前的应用场景需求,还必须充分考虑未来软件升级可能带来的 GPU 算力增长需求。这就要求我们在设计下一代座舱的算力系统时,必须预留出合理的算力升级空间,以应对未来可能的挑战。
6.3 其他组件性能评估
除了核心的 CPU 和 GPU 之外,座舱 SoC 还集成了多种算力子单元,每个子单元都拥有独特的功能和应用场景。在全面评估整个系统的算力时,我们必须充分考虑这些子单元的性能,确保它们能够满足各自的需求。接下来,我们将简要阐述 DPU、VPU 以及 ISP 的算力评估标准。
1. DPU 性能评估
DPU 主要负责将 GPU 渲染的图像数据传输到显示设备,因此它的性能评估标准应该是针对显示部分的各种处理能力。表13 列举了DPU的数据处理能力。
表 13 DPU 数据处理能力
DPU 的一项关键功能是协助 GPU 完成多图层合成(Overlay)的操作,这使得 Android 系统能够分别渲染多个图层,并将它们合成后统一输出到显示屏上。此外,由于座舱芯片需要支持单芯多屏的技术,因此 DPU 必须能够支持多个显示通道的输出。每个显示通道都对应着一块或多块屏幕,这就要求 DPU 能够支持多图层合成和多屏幕显示的功能,以实现多屏幕的高效处理。
2. VPU 性能评估
VPU 是专门用于处理视频数据的硬件编解码器。从本质上看,它是一个以空间换时间的硬件解决方案。在 SoC 设计之初,就需要明确所需支持的视频编解码类型及相应的处理能力,因为一旦设计确定,后期通常无法再对这些特性进行更改,除非重新设计整颗 SoC。
对于 VPU 的性能评估,关键指标包括它所支持的视频数据类型以及像素处理能力。值得注意的是,VPU 的编码和解码能力是需要分别进行设计的,以满足不同的应用需求。表14 简要列出了 SA8155 的 VPU 所支持的性能特性。
表14 SA8155 的 VPU 性能统计
3. ISP 性能评估
ISP 负责管理图像传感器的工作流程。它由一系列图像处理单元构成,这些单元在流水线中协同工作,本质上是一种通过增加硬件资源来优化处理速度的设计。在评估 ISP 的性能时,我们不仅要关注它能够连接多少个摄像头,还要着重考察其图像质量的解析能力。然而,由于 ISP 的图像质量解析能力涉及的内容广泛且复杂,在此不再详细展开,仅简要介绍 SA8155 在图像设备接入能力方面的表现。
表15 SA8155 的图像设备接入能力
针对座舱系统的算力评估需求,本章进行了全面的探讨和分析。首先,我们列举了影响座舱 SoC 的主要算力单元,并针对座舱内的主要使用场景进行了算力需求的详细分解。
在进一步的分析中,我们重点关注了 CPU 、GPU 和 NPU 这三大核心算力单元。不仅深入介绍了它们的主要架构和工作原理,还提供了具体的性能评估公式。这些公式能够帮助读者更准确地量化CPU 、GPU 和 NPU的性能表现,从而为座舱系统的设计和优化提供有力的数据支持。
此外,我们还着重讨论了影响 SoC 性能的另一个关键因素——存储器性能。存储器的读写速度和带宽对 SoC 的整体性能有着显著影响。因此,在评估 SoC 算力时,必须充分考虑存储器的性能表现。
希望读者能够通过本章内容对 SoC 的算力评估有一个全面、深入的了解。这不仅有助于读者更好地理解和选择适合的 SoC,还能为座舱系统的设计、优化和升级提供有力的技术支持。
作者介绍:
张慧敏,蔚来汽车数字架构部智能座舱架构设计师、西安交通大学硕士。深耕嵌入式软件与智能手机芯片架构设计多年,已获专利授权15项。曾任紫光展锐芯片架构设计师,主导5G手机芯片及新能源汽车智能座舱系统架构设计,拥有丰富的实战经验。同时,他积极分享专业知识,于知乎平台开设“智能座舱架构与芯片”专栏,撰写多篇科技文章,广受业界好评。