UMA架构下的GPU 显存

时间:2025-03-20 18:20:07

GPU 显存 (Graphics Memory) 在大多数现代设备(包括 Android 手机、嵌入式设备等)上,确实是使用 DDR(Double Data Rate SDRAM) 类型的内存。

不过,具体实现方式根据硬件架构有所不同,主要分为以下两种情况:


???? 1. 共享内存架构 (Unified Memory Architecture, UMA)

移动设备嵌入式系统集成 GPU (Integrated GPU) 中,CPUGPU 共享同一片 DDR 内存。这种架构被称为 UMA,常见于 Android 设备、高通 (Qualcomm)、联发科 (MediaTek)、苹果 (Apple) 等移动平台的 SoC (System on Chip)

特点
  • 共享 DDR:GPU 和 CPU 访问同一片物理内存(DDR4/DDR5/LPDDR5)。
  • 数据交换效率高:不需要数据拷贝,CPU 和 GPU 可以直接共享缓冲区(如 gralloc 管理的 buffer)。
  • 成本和功耗低:无需额外配置独立显存,节省芯片面积和能耗。
  • 缓存一致性问题:需要严格控制 CPU 和 GPU 之间的 Cache FlushCache Invalidate,防止数据不一致。
应用场景
  • Android 设备(如手机、平板等)。
  • 一些低功耗嵌入式设备(如智能摄像头、车载系统)。
  • 采用 ARM MaliQualcomm AdrenoPowerVR 等 GPU 架构的 SoC。
示意图
      ┌───────────────────────┐
      │        DDR 内存        │
      └───────────────────────┘
               ▲      ▲
          ┌────┘      └────┐
          │ CPU           GPU │
          └───────────────────┘
     (共享物理内存,使用虚拟地址隔离)

???? 2. 独立显存架构 (Dedicated Video Memory)

独立 GPU (Discrete GPU),如 NVIDIAAMD高性能计算设备 中,GPU 拥有一块独立的高速显存,通常是 GDDR 系列(如 GDDR6X)或 HBM(高带宽内存)。

特点
  • 独立显存:GPU 使用单独的高速显存(而非共享 DDR)。
  • 性能更高:显存带宽更大,适合高吞吐量任务(如 AI 推理、4K 视频处理)。
  • 数据传输:CPU 和 GPU 之间需要通过 PCIe 等总线传输数据,速度相对较慢。
  • 数据拷贝:需要将 CPU 数据拷贝到 GPU 内存,或者使用 zero-copy 技术减少拷贝。
应用场景
  • 台式机和笔记本电脑的 独立显卡
  • 数据中心、高性能计算(HPC)、AI 训练/推理。
  • 需要高带宽的图形任务(如游戏、视频处理、深度学习)。
示意图
      ┌───────────────┐         ┌───────────────┐
      │     DDR 内存    │         │   GDDR 显存    │
      └───────────────┘         └───────────────┘
              ▲                       ▲
          ┌───┘                       └───┐
          │ CPU (主机)                 GPU │
          └────────────────────────────────┘
               通过 PCIe 进行数据传输

???? 3. Android 中的 GPU 显存管理

Android 设备通常使用 共享内存架构 (UMA),因此 GPU 显存也在 系统 DDR 中分配和使用,核心组件包括:

  1. Gralloc (Graphics Memory Allocator)

    • 用于 GPU-CPU 间共享内存缓冲区。
    • 通过 GRALLOC1_PRODUCER_USAGE_CPU_WRITEGRALLOC1_CONSUMER_USAGE_CPU_READ 控制 CPU 和 GPU 的访问权限。
  2. ION (Input-Output Memory Management Unit)

    • Android 平台通用的 内存分配机制,用于 DMA 和 GPU/ISP 的大页内存分配。
  3. DMA-BUF (Direct Memory Access Buffer)

    • Linux 和 Android 使用 DMA-BUF 在设备(如 GPU、ISP、显示控制器)之间共享物理内存。

???? 4. 总结对比

特性 共享内存 (UMA) 独立显存 (Dedicated Memory)
使用的内存 系统 DDR (如 DDR4、LPDDR5) 专用显存 (如 GDDR6、HBM)
CPU/GPU 数据共享 直接共享,无需数据拷贝 需要通过 PCIe 总线传输,需拷贝数据
性能 适中,受 DDR 带宽限制 极高,GDDR/HBM 带宽更大
适用场景 Android、嵌入式设备、手机、平板 高性能桌面 GPU、深度学习、HPC
缓存管理 需要 Cache Flush / Invalidate 独立缓存,不需要跨设备同步
数据延迟 低延迟,CPU 和 GPU 共享虚拟地址 高延迟,受 PCIe 传输速度限制

???? 简而言之:Android 和移动设备的 GPU 显存 通常使用的是 系统 DDR,而独立显卡使用的是 专用显存 (GDDR/HBM),两者在性能和架构上有所不同。