GPU(Graphics Processing Unit,图形处理单元)是一种专门用于并行处理图形数据的处理器,每帧对像素和顶点执行数百万次计算。与针对低延迟顺序任务优化的CPU不同,GPU包含数千个低功耗核心用于大规模数学运算。根据NVIDIA开发者博客(2025年),现代移动GPU包含多达1024个核心,在计算负载下达到2 TFLOPS的性能。开发者将GPU用于渲染、后处理和设备上的机器学习。
要点
GPU(图形处理单元)是一种专为大规模并行性设计的专用微芯片。最早的GPU出现在1990年代末,作为台式电脑的3D图形加速器。此后,其架构从固定流水线发展到可编程着色器和通用计算块。
GPU的主要用途 — 光栅化:将几何数据(顶点、三角形)转换为屏幕上的像素。该过程包括顶点变换、隐藏表面裁剪、纹理映射和颜色混合。所有这些操作同时对数千个元素并行执行。
根据Jon Peddie Research(2025年)的数据,移动GPU市场占图形处理器总量的58%,超过了个人电脑和服务器的独立解决方案。每部智能手机至少包含一个GPU,与CPU、DSP和神经处理器一起集成在系统级芯片(SoC)中。
现代GPU分为两种类型:集成式(嵌入SoC,与CPU共享内存)和独立式(带有自己的显存的独立显卡)。在移动开发中,仅使用集成GPU — Qualcomm Adreno、ARM Mali、Apple GPU和Imagination PowerVR。
GPU的演进经历了三个阶段:固定流水线(1999–2006年)、统一着色器(2006–2016年)和可编程计算核心(2016年至今)。第一阶段定义了固定的操作顺序 — 变换、光照、纹理映射。开发者无法干预流水线。
随着统一着色器的出现,GPU获得了执行任意程序的能力 — 用HLSL或GLSL编写的着色器。这为GPGPU打开了大门 — 将GPU用于非图形任务。第三阶段增加了用于机器学习的张量核心和实时光线追踪。
在移动GPU中,关键的里程碑是引入了基于图块的延迟渲染(TBDR)——一种将帧分割为图块(16x16像素)并在快速本地内存中处理的架构。与桌面GPU典型的立即模式渲染相比,这将能耗降低了3–5倍。
GPU架构与CPU有着根本的不同。GPU不是几个带有大缓存的高性能核心,而是包含数百或数千个针对SIMD(单指令多数据)优化的简单计算块 — 一条指令对多个数据元素执行。
GPU的基本块 — 着色器核心(NVIDIA术语)或执行单元(Intel)。多个这样的块组合成计算单元(AMD)或流式多处理器(NVIDIA)。每个块包含用于算术运算的ALU、寄存器文件和warp调度器(线程组)。
移动GPU在架构上不同于桌面GPU。Qualcomm Adreno使用具有可编程着色器处理器和专用光栅化块的架构。ARM Mali基于Bifrost或Valhall架构 — 具有四元组warp处理的架构。Apple GPU自2017年以来拥有自己的设计,支持Metal和统一内存。
| 制造商 | GPU系列 | 架构 | API |
|---|---|---|---|
| Qualcomm | Adreno 6xx/7xx/8xx | 可编程着色器处理器 | Vulkan, OpenGL ES |
| ARM | Mali-G系列 | Bifrost / Valhall | Vulkan, OpenGL ES |
| Apple | Apple GPU (A13–A18) | 自有设计 | Metal |
| Imagination | PowerVR IMG | Furian / B-Series | Vulkan, OpenGL ES |
移动GPU的关键特性 — 统一内存架构(UMA)。GPU和CPU使用共享的RAM,没有独立的显存。这减少了数据交换的延迟并简化了编程,但在密集计算中限制了带宽。
CPU专为最小延迟的顺序任务而设计。它包含4–12个高性能核心,带有大型L1/L2/L3缓存、分支预测器和推测执行。GPU则相反,为了带宽而牺牲延迟 — 数千个核心以高延迟但巨大的总体性能处理数据。
差异体现在FLOPS(每秒浮点运算次数)上。2025年最好的移动SoC:CPU — 200 GFLOPS,GPU — 2400 GFLOPS。在允许并行化的任务中,GPU比CPU快12倍。然而,对于顺序算法,CPU仍然更快,因为线程管理的开销更小。
在实践中,开发者将CPU用于应用程序逻辑、UI和IO,而将GPU用于渲染、图像处理、物理模拟和神经网络推理。根据Google Android性能模式(2025年),移动应用中GPU的最佳负载为60–80% — 过载会导致频率降低和过热。
// CPU — 顺序处理
for (int i = 0; i < N; i++) {
result[i] = data[i] * 2.0f;
}
// GPU — 并行处理(GLSL计算着色器)
#version 300 es
layout(local_size_x = 256) in;
void main() {
uint idx = gl_GlobalInvocationID.x;
result[idx] = data[idx] * 2.0f;
}
CPU上的代码顺序地为每个元素执行乘法。GPU版本并行启动256个线程,每个线程乘以其自身的元素。当N=100万时,GPU将比单个核心上的CPU快100–1000倍完成该任务。
移动GPU在严格的散热和功耗限制下工作。移动GPU的典型TDP为2–8W,而桌面同类产品为150–450W。这需要专注于能效而非峰值性能的特殊架构。
主要的节能技术 — 基于图块的渲染。帧被分割为16x16或32x32像素的图块。每个图块在快速的SRAM内存(图块内存)中完整处理,然后写入外部DRAM。与立即模式相比,这将内存访问减少了4–10倍。
Qualcomm Adreno — 最流行的移动GPU。Adreno 750(Snapdragon 8 Gen 3)包含12个着色器处理器,具有共享寄存器池。支持Vulkan 1.3、OpenGL ES 3.2、OpenCL 3.0和核心级光线追踪。根据Qualcomm(2025年),Adreno在保持功耗的同时,每代性能提升45%。
ARM Mali — Android设备中第二流行的GPU。Mali-G720基于第五代Valhall架构,支持可变速率着色和ASTC HDR。Mali的特点是四元组处理:四个线程合并为一个warp,以更好地利用ALU。
Apple GPU专为Metal API设计。从A13 Bionic开始,Apple使用自己的GPU设计,支持Metal 3、光线追踪和网格着色器。Apple GPU架构的特点是在M4 Ultra上具有高达800 GB/s带宽的统一内存。
GPU降频 — 过热时降低频率 — 是移动游戏的主要问题。在长时间负载下,SoC温度达到85–95°C,GPU将频率降低30–50%。根据AnandTech(2025年),Qualcomm Adreno 750在运行《原神》15分钟后性能损失高达35%。
开发者可以通过优化draw调用、降低渲染分辨率和使用注视点渲染来缓解降频。iOS上的Metal性能着色器和Android上的Android帧率同步API有助于将负载与设备的热预算同步。
GPGPU(通用GPU计算)—— 将图形处理器用于非图形计算。这个想法诞生于2000年代中期,当时开发者注意到着色器可以适配用于矩阵运算、密码学和物理模拟。
如今,GPGPU是处理需要大规模并行性的任务的标准工具:机器学习(神经网络的训练和推理)、密码学(哈希、加密)、图像和视频处理(滤镜、编解码器)、科学模拟(流体力学、量子化学)。
在移动设备上,GPGPU通过计算着色器应用——没有图形输出的着色器,仅处理数据。计算着色器启动一个由工作组组成的网格,每个组包含多个线程。内存访问——通过缓冲区和纹理,不绑定到屏幕。
#version 310 es
layout(local_size_x = 16, local_size_y = 16) in;
layout(binding = 0) buffer Input { float data[]; };
layout(binding = 1) buffer Output { float result[]; };
void main() {
uvec2 idx = gl_GlobalInvocationID.xy;
uint offset = idx.y * gl_NumWorkGroups.x * gl_WorkGroupSize.x + idx.x;
result[offset] = sqrt(data[offset]) + 1.0;
}
计算着色器的例子是计算数组中每个元素的平方根。16x16的工作组同时处理256个元素。现代移动GPU支持多达1024个工作组和数百万个全局线程。
GPU访问API决定了开发者如何向图形处理器发送命令和数据。在移动平台上使用三个主要的API:Vulkan、Metal和OpenGL ES。每个都有其影响性能和兼容性的优点和局限性。
Vulkan — Khronos Group的低级跨平台API,OpenGL的继承者。Vulkan为开发者提供了对GPU内存、命令队列和同步的直接控制。根据Khronos(2025年),通过减少驱动开销,Vulkan比OpenGL ES性能提升30–60%。
在Android上,从Android 7.0(API 24)开始Vulkan是强制性的,但所有现代SoC都支持Vulkan 1.3。Vulkan内存分配器和SPIR-V作为中间代码允许用GLSL、HLSL或Rust GPU编写着色器。
Metal — Apple在其生态系统的所有设备上专有的GPU API:iPhone、iPad、Mac、Apple TV。Metal确保最小的开销和可预测的命令执行时间。根据Apple开发者文档(2025年),Metal每帧处理多达10万次draw调用而不会导致FPS下降。
关键特性 — 基于C++的Metal着色语言(MSL)。着色器与应用程序一起编译为机器代码,消除了Vulkan典型的JIT编译。Metal支持网格着色器、光线追踪和用于在运行时加载着色器的动态库。
OpenGL ES — OpenGL的简化版本,用于嵌入式系统。用于较旧的设备和向后兼容性。根据Android Studio(2025年),OpenGL ES 3.2在94%的Android设备上受支持。对于新项目,Google推荐使用Vulkan代替OpenGL ES。
WebGL — OpenGL ES的浏览器对应物,Web上3D图形的基础。WebGL 2.0(对应OpenGL ES 3.0)在92%的移动浏览器上受支持。WebGPU — 下一代,架构接近Vulkan和Metal。
常见问题
移动GPU工作在2–8W的热封装中,使用基于图块的渲染以节省能源,并通过UMA与CPU共享内存。桌面GPU功耗150–450W,有独立的显存(GDDR),并使用立即模式渲染。
M4 Ultra和A18 Pro芯片中的Apple GPU — 移动GPU中每瓦性能的领导者。在Android设备中,领先的是Snapdragon 8 Gen 4中的Qualcomm Adreno 850和MediaTek Dimensity 9500中的ARM Mali-G925。
是的,GPU通过iOS上的Core ML和Android上的TensorFlow Lite / NNAPI被广泛用于神经网络推理。根据Google(2025年),GPU加速比CPU提供3–10倍的速度提升。
降频是由于热预算超限造成的。在长时间负载下,SoC温度达到85–95°C,GPU降低频率以保护芯片。解决方案 — 优化渲染和使用FPS限制(30–45 FPS)。
Vulkan — 新项目的主要选择。OpenGL ES — 用于与旧设备的向后兼容。Metal — iOS必备。对于跨平台开发,使用Unity、Unreal Engine或Filament等框架。
总结
我们将开发一款交钥匙移动应用程序
IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。