【硬件知识】从零开始认识GPU
一、GPU的发展史简介
GPU(图形处理器)的发展史是一段充满创新与变革的历程,它不仅改变了计算机图形显示的方式,还推动了高性能计算、人工智能等多个领域的发展。以下是GPU发展史的概述及其中的一些趣闻。
GPU发展史
- 早期发展阶段
起源:GPU的起源可以追溯到早期的图形显示控制器,如IBM在1981年发布的IBM 5150个人电脑中的黑白显示适配器和彩色图形适配器。这些设备虽然简单,但为后续的图形处理器发展奠定了基础。
2D图形加速:1991年,S3 Graphics推出的“S3 86C911”标志着2D图形硬件加速时代的到来,它能够进行字符、基本2D图元和矩形的绘制。
3D图形加速:1994年,3DLabs发布的Glint300SX是第一颗用于PC的3D图形加速芯片,它支持高氏着色、深度缓冲、抗锯齿等特性,开启了显卡的3D加速时代。然而,这个阶段的显卡大多没有执行统一的标准,加速功能也不尽相同。 - GPU概念的提出
GeForce 256:1999年,NVIDIA公司在发布其标志性产品GeForce 256时,首次提出了GPU的**概念。**这款GPU整合了硬件变换和光照(T&L)、立方环境材质贴图和顶点混合等特性,极大减轻了CPU的负担,标志着GPU时代的正式到来。 - 统一渲染架构的兴起
DirectX 8与Shader Model:2001年,微软发布DirectX 8,提出了渲染单元模式(Shader Model)的概念,引入了顶点着色器(Vertex Shader)和像素着色器(Pixel Shader),标志着固定管线架构的终结和可编程渲染架构的开始。 - 统一渲染架构:随着DirectX 10的推出,shader不再扮演固定的角色,每一个shader都可以处理顶点和像素,这就是统一渲染着色器(Unified Shader)。第一款采用统一渲染架构的桌面GPU是NVIDIA在2006年发布的GeForce 8800 GTX(核心代号G80),它极大提高了GPU的利用率和性能。
- GPU的广泛应用与架构创新
CUDA架构:2006年,NVIDIA发布了首个通用GPU计算架构Tesla,它采用全新的CUDA架构
,支持使用C语言进行GPU编程,使GPU从专用图形处理器转变为通用数据并行处理器。
架构演进:随后,NVIDIA推出了Fermi、Kepler、Maxwell、Pascal、Volta、Turing和Ampere等GPU架构,不断增强GPU的计算能力和程序性,推动GPU在图形渲染、人工智能和高性能计算等领域的应用。 - 趣闻
像素窃取攻击:在GPU的发展过程中,也出现了一些有趣的安全挑战。例如,研究人员发现了一种称为“像素窃取”的攻击方法,通过在恶意网站嵌入iframe标签,利用GPU的数据压缩方法跨域获取敏感数据,如用户名和密码。这一发现揭示了GPU在安全领域的新挑战。
GPU在抗疫中的应用:在2020年的新冠肺炎疫情中,GPU集群为超级计算机提供了强大的计算能力,加速了病毒研究和新药筛选的过程。例如,美国橡树岭国家实验室的研究人员利用IBM的Summit超级计算机(搭载了多个NVIDIA Volta V100 GPU)筛选出了77种可能与蛋白质结合并阻止病毒发挥作用的化合物。
GPU的发展史是一部充满创新与挑战的史诗,它不仅改变了我们的视觉体验,还推动了多个领域的技术进步。随着技术的不断发展,我们可以期待GPU在未来继续发挥更大的作用。
二、GPU主要构成
GPU(Graphics Processing Unit,图形处理单元)的内部结构相对复杂,但主要可以归纳为几个关键组成部分。以下是对GPU内部结构的一个详细概述:
-
流式多处理器(Streaming Multiprocessors, SMs)
核心组件:GPU的核心计算单元是流式多处理器(SMs),它们负责执行并行计算任务
。每个SM包含多个CUDA核心(或称为流处理器,SPs),以及控制模块、寄存器、缓存和指令流水线等部件。
并行能力:每个SM都能支持数百个线程并发执行,这些线程被组织成线程束(Warp)和线程块(Block),以实现高效的并行处理。
计算能力:随着技术的发展,SM的计算能力不断提升,包括支持更复杂的指令集和更高的浮点运算性能。 -
层级存储结构
全局内存(Global Memory):类似于CPU的内存,容量大但访问速度相对较慢。GPU和CPU都可以访问全局内存,但GPU通常具有独立的显存来存储全局内存数据。
L2缓存(L2 Cache):位于GPU芯片内部,用于缓存从全局内存读取的数据,以减少对全局内存的访问延迟。
L1缓存/共享内存(L1 Cache/Shared Memory):通常位于SM内部,存取速度比全局内存快,用于存储线程间共享的数据或临时计算结果。
寄存器(Registers):每个线程都有自己的寄存器组,用于存储操作数和中间结果,存取速度最快。 -
其他关键组件
特殊函数单元(Special Function Units, SFUs):执行特殊数学运算,如幂函数、对数函数、三角函数等。
加载/存储单元(Load/Store Units, LD/ST Units):辅助线程从全局内存、共享内存或寄存器中加载或存储数据。
纹理读取单元(Texture Units)和纹理缓存(Texture Cache):用于加速图形渲染中的纹理数据访问。 -
内部连接网络(Interconnect Network)
GPU内部各组件之间通过复杂的连接网络进行通信和数据传输,确保高效的并行计算和数据访问。 -
GPU RTX 4080结构图
-
供电模块:负责给GPU供电,保证有足够的电量驱动GPU正常工作
-
全局显存:
-
GPU核心:
-
其他模块,如1v8控制器、ARGB神光同步模块、STRIX功能单片机等
-
PCIe4.0接口:负责数据快速传输
-
三、GPU与AI的关系
AI与GPU之间存在密切的关系,这主要源于GPU在并行计算方面的卓越性能,这恰好满足了AI大模型在处理海量数据和进行复杂计算时的需求。以下详细解释为何AI与GPU有关系:
- GPU的并行计算能力
核心数量:GPU拥有成百上千的处理核心,这使得它能够同时执行多重计算任务。相比之下,CPU的核心数量较少,通常不超过100个。
计算效率:GPU的并行计算能力使得它在处理大规模数据和复杂计算任务时表现出色,尤其适合进行大量的矩阵运算和张量操作,这是AI模型训练和推理过程中的关键计算任务。 - GPU在AI中的应用
深度学习模型训练:AI大模型,如深度学习神经网络,需要进行大量的矩阵运算和数据处理。GPU通过其强大的并行计算能力,能够显著加速这些计算过程,从而缩短模型训练时间,提高训练效率。
推理加速:在模型推理阶段,GPU同样能够提供高效的计算能力,使得AI模型能够更快地处理输入数据并给出结果。 - GPU与AI的协同发展
硬件升级:随着AI技术的不断发展,对计算能力的需求也在不断增加。为了满足这些需求,GPU的性能也在不断提升,新的GPU产品不断涌现,为AI大模型提供了更加强大的计算支持。
软件优化:主流的深度学习框架,如TensorFlow和PyTorch,都进行了针对GPU的优化,以确保深度学习模型能够在GPU上高效运行。这些优化包括针对GPU架构的特定指令集、内存管理和数据流优化等。 - GPU与CPU的区别
任务类型:CPU更适合处理日常的单线程任务,如操作系统管理、文件处理等。而GPU
则更适合处理并行计算
任务,如图像处理、视频渲染和AI计算等。
计算模式:CPU通常采用串行计算模式,即按照指令顺序逐一执行。而GPU则采用并行计算模式
,能够同时处理多个计算任务。
GPU以其强大的并行计算能力成为AI大模型实现高效计算的重要工具之一。AI与GPU之间的紧密联系不仅推动了AI技术的快速发展,也促进了GPU技术的不断创新和升级。