UMA架构下的GPU 显存

news/2025/3/27 20:29:16/

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),两者在性能和架构上有所不同。


http://www.ppmy.cn/news/1580654.html

相关文章

API 返回的PDF是一串字符,如何转换为PDF文档

当API返回的PDF是以一串字符的形式(通常是Base64编码的字符串),你可以将其解码为二进制数据,然后保存为PDF文件。以下是一个简单的Python示例,展示如何将Base64编码的PDF字符串转换为PDF文档: import base…

华为云虚拟化技术

‌华为云底层的虚拟化技术‌是一种将物理资源(如服务器、存储设备和网络)抽象成虚拟资源的技术。通过这种技术,用户可以将物理资源划分为多个虚拟资源,从而提高资源利用率和灵活性‌1。 华为云底层虚拟化的定义和作用 华为云底层…

k8s的存储

一 configmap 1.1 configmap的功能 configMap用于保存配置数据,以键值对形式存储。 configMap 资源提供了向 Pod 注入配置数据的方法。 镜像和配置文件解耦,以便实现镜像的可移植性和可复用性。 etcd限制了文件大小不能超过1M 1.2 configmap的使用…

MATLAB 控制系统设计与仿真 - 26

状态空间控制系统概述 状态空间描述 现代控制理论是建立在状态空间基础上的控制系统分析和设计理论,它用状态变量来刻画系统的内部特征,用‘一节微分方程组’来描述系统的动态特性。系统的状态空间模型描述了系统输入/输出与内部状态之间的关系&#x…

【Linux之Shell脚本实战】Linux服务器输出美观漂亮的html巡检报告

【Linux之Shell脚本实战】Linux服务器输出美观漂亮的html巡检报告 一、Shell脚本介绍1.1 Shell脚本简介1.2 Shell脚本特点二、脚本要求三、检查本地环境3.1 本地环境规划3.2 检查本地系统3.3 检查系统内核版本四、编辑脚本五、执行及测试脚本5.1设置定时任务5.2 执行效果六、总…

玩转python:通俗易懂掌握高级数据结构-collections模块之UserList

引言 UserList是Python中collections模块提供的一个强大工具,它是list的封装类,允许用户自定义列表的行为。通过继承UserList,开发者可以轻松扩展列表的功能,实现自定义的列表逻辑。本文将详细介绍UserList的关键用法和特性&…

使用 GetX 实现状态管理:同一页面和不同页面之间的数据变化

使用 GetX 实现状态管理:同一页面和不同页面之间的数据变化 在 Flutter 开发中,GetX 是一个轻量级、高性能的状态管理工具,能够轻松实现同一页面的数据变化和不同页面之间的数据共享与同步。本文将详细介绍如何使用 GetX 实现这两种场景的状…

Redis--渐进式遍历

目录 一、引言 二、介绍 三、命令 四、总结 一、引言 本篇文章将介绍Redis中的渐进式遍历 二、介绍 一般使用keys * 来获取所有的key,但这样的操作如果数据量很大的时候,会将服务器给卡死,所以通过渐进式遍历,就会避免这个问题…