Khorina · 3月7日

02 | 芯片: GPU 怎么就成了科技界的“新宠”?

阅读之前强烈建议参考之前系列文章:

01 | 芯片: 解密汽车嵌入式芯片 CPU、MCU、SBC

在上篇文章,我们从通用的冯诺依曼架构聊到 CPU 组成架构,再到汽车嵌入式控制单元 MCU,以及多用于安全监控的基础芯片 SBC,这部分内容也是传统汽车控制单元基本的组成内容,算是旧识吧。

今天我们接着以上的话题,进一步来聊聊 GPU 相关内容,相信朋友们这几年已经听过这个概念无数遍了,这无疑是当前科技及汽车行业最炙热的内容之一,它究竟是什么,为什么这几年突然就火了!

01.GPU: AI 兴起的曙光

图形处理器(GPU, Graphics Processing Unit)最初设计用于加速图形渲染,满足计算机图形和视频游戏市场的需求。随着计算机图形学的发展,对图像处理速度和质量的要求越来越高,传统的中央处理器(CPU, Central Processing Unit)逐渐难以满足这种需求,GPU 由此出现。

那么,这几年 GPU 为什么突然爆火了呢?

除了高质量图像显示需求和技术的驱动外,这些年 GPU 的爆火实则源于 AI 的兴起,而 GPU 的应用也不再仅仅局限于图像领域,而是演变为 GPGPU(General Purpose Computing on GPU)。

在过去的十多年内,不同的机器学习和深度学习算法层出不穷,从所谓的专家系统,到不同的决策树,到支持向量机 SVM,再到深度学习,直到 Transformer 的出现,AI 人工智能终于出现质的变化,呈现新的范式。(之后找机会也会给朋友们聊聊 Transformer)

最开始的机器和深度学习算法,本质上还属于初级算法,对计算单元要求并不是很高,CPU 基本上就能实现,甚至最开始 Transformer 的训练是借助 CPU 完成的,但由于 Transformer 大量矩阵运算,且需要的训练数据巨大,CPU 串行计算的原理,使得整个训练过程非常漫长,于是大家才把目光转向了图形处理的 GPU。

Transformer 模型训练及推理过程并不涉及复杂的运算逻辑,都是基本的矩阵运算,这也是深度学习区别于传统的逻辑分支运算的最显著特征,而 GPU 强大的并行计算能力特别适合深度学习中的大规模矩阵运算,训练速度远高于 CPU。随着深度学习算法在 AI 领域的广泛应用,GPU 成为了训练和推理深度神经网络的核心硬件。

这里就不得不提起那个穿皮衣的男人,NVIDIA 的掌舵人黄仁勋(Jensen Huang),凭借其敏锐的技术嗅觉,黄仁勋带领 NVIDIA 专注 GPU 领域,尤其是高性能加速计算方法,这两年借着 AI 的兴起,二者相辅相成,成功将 NVIDIA 推向市值 3 万亿美元的公司,超过苹果,这个成长速度史无前例 👍!!

image.png

当然,黄仁勋(Jensen Huang)以及 NVIDIA 的故事也是非常精彩,期间与 ARM,Intel 各路商业混战,险境环生,也是相当精彩,有机会也可以给朋友们分享一下。

02.CPU vs. GPU

图形处理器(GPU, Graphics Processing Unit)最初设计用于加速图形渲染。

简单的来说,一张图片由不同的像素块组成,只要像素块足够多,图形显示就越清晰。那么,这么多的像素块内显示的内容,包括形状,颜色等,怎么计算并且实时更新呢? 如果让 CPU 去计算,那就得一个一个像素的串行的去计算,直到所有像素完成,我们坐在电脑前面,不知道啥时候一张图才能计算完,那怎么办呢,GPU 就出现了。

那么和 CPU 相比,CUP 和 GPU 有什么不同呢?

为了给朋友们一个直观的感受,我这里特别用两个例子做个对比图,CPU vs. GPU

例子 1: 博士生 vs. 小学生

Image

  • CPU:  好比一个博士生,性能强大,适合解决复杂的数学问题。
  • GPU: 好比一群小学生,虽个体能力一般,但胜在人多,适合解决简单的算术问题。

那么,如果博士生和一群小学生比赛算术会发生什么呢?

如果给博士生和 100 个小学生一道 100 道算术计算,如 1+1, 2+4...,那么谁算的快?肯定是 100 个小学生。

那个如果考试难度直接上升,分别给他们一道微积分计算,博士生很快算出来了,但 100 个小学生,知识超纲,束手无策。

例子 2: CPU 和 GPU 画蒙娜丽莎

Image

NVIDIA 在很多年前,在 GPU 产品发布会上,用两台机器分别代表 CPU 和 GPU,来绘画蒙娜丽莎,虽然带点夸张的成分,但这个视频很好地反映了二者的工作原理。

这个就是 CPU 和 GPU 工作方式的区别!

那么从技术角度来讲,怎么来理解这个不同呢?

这块内容相对比较偏技术了,我一直在想,怎么用相对比较通俗的文字,让朋友们对 GPU 的工作原理有个基本的了解。接下来,我主要针对芯片架构,计算原理,内存,能耗等主要方面对二者进行一个对比,尽可能让朋友们理解其本质。

2.1  特殊的架构和奇怪的计算原理

虽然 CPU 和 GPU 本质上都还是基于冯诺依曼架构,二者由运算器,控制器,存储器构成,但二者架构存在显著差异。

从具体的技术细节来看的话,CPU 和 GPU 的架构如下图所示:

Image

从图片中,可以明显看出 CPU 和 GPU 在在处理核心(Core)数量与架构的本质区别:

  • CPU:具有少量高性能核心(2-18 个 core),每个核心都设计为处理复杂的任务,支持多任务处理和多线程技术。
  • GPU:拥有大量低功耗核心(几千个 core),这些核心更简单,专为大规模并行计算设计,适合处理重复性高的数据密集型任务。

从 GPU 工作原理上来说:

GPU 拥有非常多的核心(Core),而物理上每个核心通常执行一个线程,而所有核心都采用了 SIMT(Single Instruction Multiple Thread,即单指令多线程)架构的编程方式。

通俗易懂地说就是,这种编程模型意味着 GPU 所有的计算核心(Core)在同一时间内都在执行相同的指令,或者一条指令可以同时在多个线程上操作,例如,不同的线程都在执行 A+B 的操作,只是每个线程中 A 和 B 的数据在发生变化。这种并行执行的特性大大提高了计算效率,这也就是所谓的 GPU 的并行计算(Parallel computing)的原理,所有线程同时计算,强调时间上的同步进行,简单粗暴,大力出奇迹 😝!

而 CPU 中的计算核心(Core)则进行并发计算(Concurrent computing),虽然在同一时间段有很多任务被同时处理,但每个时刻只有一个任务在被执行,所有任务被轮流处理。就好比一个工厂,有很多订单同时被处理,但只有一个工人。当然为了提高 CPU 计算速度,目前很多 CPU 也是多核架构,核与核之间也是并行关系。

在 SIMT 架构下,GPU 将任务分割成许多小的并行线程组,这些线程组被称为“线程块”(Thread Blocks)。每个线程块包含多个线程,这些线程在硬件调度单元(如 Warp)中执行,确保在同一时间执行相同的指令。这样,GPU 能够处理大量的并行任务,尤其适用于需要大规模数据处理的应用场景,例如图像处理、科学计算和深度学习。

从 GPU 处理数据的能力上来说:

GPU 的 core 只能做一些最简单的浮点运算,例如 multiply-add(MAD,就是加法运算)或者 fused multiply-add(FMA,就是乘法和加法复合运算)指令。但为了适配深度学习计算的需求,现代 GPU 的结构已经远远超越了执行简单的 FMA(乘加运算)操作的能力。如今,GPU 核心不仅可以处理基本的数学计算,还能够执行各种复杂的运算,例如专为混合精度训练设计的张量运算(Tensor Core),这使得它们在多个领域中表现得更加出色。

针对 GPU,这里不得不提一个概念,张量(Tensor)和张量计算。

所谓的张量计算,本质就是多维数组的计算,一维张量为我们熟悉的一位向量,二维张量为二维矩阵,为了表示多维数组,张量这个概念由此引入。张量的计算就是多维矩阵的运算。

Image

其中,张量核心(Tensor Core)是现代 GPU 的一项重要创新。这些核心专门设计用于处理张量(Tensor,张量简单的解释就多维数组)运算,极大地提高了深度学习和人工智能应用的计算效率。张量核心能够以极高的速度执行矩阵乘法和加法操作,这对于训练和推理神经网络至关重要。通过并行处理大量数据,张量核心显著加速了机器学习任务,使得复杂的模型训练和实时推理成为可能。

除了张量核心,现代 GPU 还集成了许多其他先进的硬件功能。例如,流处理器(Streaming Multiprocessors, SM)可以并行执行大量线程,从而提高整体计算效率;显存控制器(Memory Controllers)优化了数据的传输速度和带宽,确保 GPU 能够快速访问所需的数据。

2.2 缓存层级:

CPU:多级缓存系统

CPU 追求实时响应,对每个线程计算速度要求高,这样才能紧接着处理下一个线程,但 CPU 的 ALU 计算速度很快,每次都得等待数据加载进来,为了减少这个等待时间,CPU 通常具有三级缓存系统,分别为 L1 缓存、L2 缓存和 L3 缓存。

  • L1 缓存:容量较小(通常为 64KB),但速度最快,直接与处理器核心相连,主要用于存储最常用的指令和数据。
  • L2 缓存:容量适中(通常为 256KB),比 L1 缓存稍慢,仍然非常接近处理器核心,用于存储较为频繁访问的数据。
  • L3 缓存:容量较大(通常为 4MB),速度相对较慢,但比主存(DRAM)快得多,共享于多个处理器核心之间。

可以明显看出,缓存越靠近处理器核心,其访问速度越快,由于空间限制,且高速缓存使用的是 SRAM(静态随机存取存储器),其速度比 DRAM 快,成本也高,所以一般缓存空间都比较小。通过这些缓存,提前把数据准备好,这样就可以减少 CPU 数据访问的延迟,提高指令执行的效率,从而优化 CPU 的性能。

GPU:高带宽显存

  • 较少的缓存层级:相比 CPU,GPU 对单线程计算速度要求不高,缓存的增加也会减少能放置 ALU 的数量,所以 GPU 缓存层级较少,通常只有一级或二级缓存,主要用于临时数据存储和指令缓存。
  • 高带宽显存:GPU 更多地依赖于高带宽的显存(VRAM)来处理大量数据。显存的设计旨在提供极高的吞吐量(Throughout),以满足 GPU 在并行处理大量图形和计算任务时的需求。
  • 大规模并行处理:由于 GPU 需要同时处理成千上万的线程,其架构更倾向于通过高带宽显存来提供数据,而不是通过多级缓存系统。

2.3. 功耗与散热:

CPU:设计为能效优化,适应各种工作负载,功耗相对较低。

GPU:高功耗高散热设计,主要用于高性能计算和大规模数据处理,这也是目前 GPU 发展需要解决的重要问题。

随着人工智能大模型的迅猛发展,GPU 算力集群的能源消耗成为行业关注的热点。截至 2023 年底,全球 GPU 算力集群的年电力消耗约为 29 太瓦时(1 TWh = 10 亿度电),占全球总电力消耗的 0.1%。预计到 2024 年底,全球 GPU 算力集群的年电力消耗将增至约 85 太瓦时,占全球电力消耗的 0.3%,相较于 2023 年的比例增长了三倍。

在汽车领域,自动驾驶汽车配备了多种传感器,如摄像头、雷达、激光雷达(LiDAR)和超声波传感器,这些传感器生成大量的原始数据,需要采取深度学习模型,对其进行训练及推理,最终实现实时图像分类,目标检测和后续的规划控制。

不管是分层式的自动驾驶,将整个系统分为感知,规划,决策,分而治之,还是目前比较火的基于数据的端到端自动驾驶技术,GPU 作为深度学习算法的硬件基础必不可缺,二者相辅相成,在自动驾驶系统中发挥着至关重要的作用。

在当前集中式控制架构下,一般 GPU 和其他控制单元集成在一起,形成所谓的 SoC(System on Chip),这部分内容我们下篇接着聊。

写在最后:

芯片系列,解密汽车处理器 GPU 相关的内容我们就聊完了,希望能够给朋友们对其带来更多理解。

END

文章来源:AUTO世代

推荐阅读

更多物联网安全,PSA 等技术干货请关注平台安全架构(PSA)专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入PSA 技术交流群,请备注研究方向。
推荐阅读
关注数
4574
内容数
210
Arm发布的PSA旨在为物联网安全提供一套全面的安全指导方针,使从芯片制造商到设备开发商等价值链中的每位成员都能成功实现安全运行。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息