当前位置: 首页 > news >正文

第一章:DRM 子系统概述:1.1 DRM子系统演进分析

1. 概述

DRM (Direct Rendering Manager) 子系统经历了从图形显示图形渲染异构计算/AI的三阶段演进。这种演进反映了GPU硬件能力的发展和应用场景的扩展。

2. 三阶段演进时间线

2.1 第一阶段:图形显示时代 (2000-2010)

核心目标:解决多进程安全访问显卡硬件,实现基本的图形显示

关键技术:

  • KMS (Kernel Mode Setting): 内核态显示模式设置
  • Framebuffer管理: 基础显存缓冲区管理
  • CRTC/Encoder/Connector抽象: 显示硬件管道建模

特征:

  • 以显示输出为中心
  • 解决X Server的权限和稳定性问题
  • 主要处理2D显示任务
// 早期 GEM 设计:简单的显存对象structdrm_gem_object{structkrefrefcount;structdrm_device*dev;structfile*filp;// 最初就这么简单!};

2.2 第二阶段:图形渲染时代 (2010-2020)

核心目标:支持复杂的3D渲染,满足游戏和专业图形应用需求

关键技术:

  • GEM (Graphics Execution Manager): 图形内存对象管理
  • GPU调度器: 命令队列和任务调度
  • Fence/Syncobj: 跨进程GPU同步机制
  • DMA-BUF: 跨驱动/子系统的缓冲区共享

特征:

  • 以渲染性能为中心
  • 支持OpenGL/Vulkan等现代图形API
  • 引入复杂的内存管理和调度机制

2.3 第三阶段:异构计算与AI时代 (2020-至今)

核心目标:将GPU作为通用计算加速器,特别是AI/ML工作负载

关键技术与证据:

1. **GPUVM **
  • 代码文件:drm_gpuvm.c(Copyright 2022 Red Hat)
  • 用途: 管理GPU虚拟地址空间,支持现代计算API
  • 关键特性:
    • VM BIND模式支持Vulkan Sparse Memory Bindings
    • 细粒度的虚拟内存管理
    • Split/Merge算法优化内存映射操作
2.HMM集成 (Heterogeneous Memory Management)
  • 典型实现: AMD SVM (Shared Virtual Memory)
  • 功能: CPU和GPU共享统一虚拟地址空间
  • 优势: 简化异构编程模型,零拷贝数据共享
3.DRM GPU SVM 框架
  • 代码文件:drm_gpusvm.c(Copyright 2024 Intel, ~1633 lines)
  • 核心目标: 为 DRM 驱动提供统一的共享虚拟内存抽象层

设计理念:

  • CPU 和 GPU 共享统一虚拟地址空间,按需页面迁移
  • 基于 MMU Notifier + HMM 机制跟踪和管理内存
  • 使用重试循环处理竞态,避免复杂锁嵌套

核心组件:

  • Notifier: 跟踪内存区间变化(基于区间树)
  • Range: 表示 GPU 映射的内存范围(动态分配)
  • Operations: 驱动回调接口(分配、释放、失效)

解决的问题:

在此之前,每个驱动独立实现 SVM(AMD ~6000+ lines、Intel、NVIDIA 各自实现),导致代码重复、行为不一致、难以维护。

框架价值:

  • ✅ 统一抽象,代码复用
  • ✅ 标准化设计原则(migrate_to_ram 路径、锁机制)
  • ✅ 框架级性能优化惠及所有驱动

适用场景:OpenCL/SYCL USM、CUDA/HIP Unified Memory、Vulkan 系统分配器、AI/ML 零拷贝数据管道

4.面向AI的优化
  • Prefetch操作: 数据预取优化AI推理性能
  • 内存驱逐管理: 处理大模型训练中的内存超额订阅
  • 多GPU共享优化: 通过dma-resv实现高效的多卡协同
5.Vulkan计算支持

GPUVM代码中明确提到:

“required by the Vulkan API to implement Vulkan ‘Sparse Memory Bindings’”

这表明DRM已深度适配现代计算API需求。


3. 功能对比表

维度显示时代渲染时代计算/AI时代
主要应用桌面显示3D游戏/CADAI训练推理/科学计算
内存模型简单framebufferGEM对象GPUVM + HMM + GPU SVM统一地址空间
地址空间物理地址GPU虚拟地址CPU-GPU统一虚拟地址
内存管理静态分配显式BO管理按需页面迁移
同步机制简单fencedma-fence/syncobjMMU notifier + fence
调度复杂度中等高(多队列/异步执行)
API支持X11/DRIOpenGL/Vulkan图形Vulkan计算/CUDA/ROCm/SYCL
内存容量需求MB级GB级数十GB(大模型)
典型代码KMS核心GEM/调度器GPUVM/HMM/GPU SVM/Prefetch

4. 演进驱动力

1. 硬件能力提升

  • GPU从固定管线 → 可编程着色器 → 通用计算核心
  • 显存容量从MB → GB → 数十GB
  • 互连技术从AGP → PCIe → NVLink/Infinity Fabric

2. 应用需求变化

  • 2000年代:办公和基础图形
  • 2010年代:高品质游戏和专业渲染
  • 2020年代:深度学习、大语言模型、自动驾驶

3. API标准演进

  • Vulkan引入计算着色器和稀疏资源
  • ROCm/CUDA推动GPU通用计算生态
  • SYCL/OpenCL等异构编程标准

5. 结论

DRM子系统的演进清晰地体现了三个阶段:

图形显示 (Framebuffer) ↓ 图形渲染 (GEM, Fence/Syncobj) ↓ 异构计算/AI (GPUVM, HMM, GPU SVM)

三个阶段的核心特征:

  1. 显示时代的基础设施建设(KMS/Framebuffer)

    • 解决多进程访问冲突
    • 建立显示硬件抽象
  2. 渲染时代的性能优化(GEM/调度器/同步机制)

    • 复杂的内存对象管理
    • 高效的任务调度和同步
  3. 计算/AI时代的范式转变(GPUVM/HMM/GPU SVM/统一内存)

    • CPU-GPU统一虚拟地址空间
    • 按需页面迁移和自动内存管理
    • 标准化的SVM框架减少驱动重复工作

关键技术演进标志:

  • 2004: DRM合并进Linux内核
  • 2007: Intel开发GEM框架
  • 2009: KMS子系统引入
  • 2016: Vulkan 1.0发布,推动计算图形融合
  • 2018: AMD开始HMM集成工作
  • 2022: GPUVM框架合并,标志全面转向计算时代
  • 2024: DRM GPU SVM框架引入,统一SVM抽象层

这种演进不是简单的功能堆叠,而是架构层面的适应性重构。特别是:

  • GPUVM框架:明确提到Vulkan Sparse Resources和VM BIND
  • GPU SVM框架:提供标准化的共享虚拟内存实现,避免每个驱动重复开发
  • 设计原则统一:migrate_to_ram路径、notifier锁机制、重试循环处理竞态

这充分证明DRM已从“图形显示管理器”转型为“通用GPU资源管理器”,这正是AI时代的必然要求。

从各驱动的实现规模可以看出演进的必要性:

  • AMD SVM实现:kfd_svm.c+amdgpu_hmm.c
  • Intel实现:i915_gem_userptr.c+ 正在迁移到 GPU SVM
  • 未来驱动:直接使用drm_gpusvm.c框架,大幅减少开发工作

Linux内核在积极适配GPU异构计算的新需求,这种演进仍在持续进行中。


​技术交流和投稿,欢迎加入社区:GPUers。

http://www.jsqmd.com/news/764446/

相关文章:

  • Vim插件批量操作Vundle.vim:高效管理多个插件的终极指南
  • ChanlunX:缠论技术分析从人工到算法的演进突破
  • 5步完全掌握VR视频转换:从沉浸式3D到普通2D的终极指南
  • 黑苹果硬件兼容性实战指南:从机型适配到完美驱动的完整解决方案
  • 2026届最火的AI写作方案推荐榜单
  • modern-js-cheatsheet无障碍访问:ARIA属性的JavaScript操作终极指南
  • 2026年5月盐城黄金回收排行榜:靠谱商家推荐,徐靠谱黄金回收稳居前列 - damaigeo
  • 六西格玛证书信息错了怎么改? - 众智商学院官方
  • 终极RPG Maker解密工具:5步轻松提取游戏资源完整指南
  • Mac用户狂喜!一文带你读懂PyTorch在Apple Silicon上的MPS加速引擎
  • 从社交网络到药物发现:5个真实案例看GNN和Node2Vec如何解决业务难题
  • 原神自动化脚本:从新手到高手的完整使用指南
  • 2026年四川围挡厂家优选 聚焦市政配套 注重服务与品质 兼顾质量与效率 - 深度智识库
  • 【绝密泄露】某省级政务云MCP 2026单节点吞吐量从1.2万TPS飙升至8.7万TPS的3项内核级优化(含sysctl.conf定制模板及验证脚本)
  • 视频基础模型与物理AI融合:从理论到实践
  • Functional-php核心函数详解:从Map到Reduce的完整教程
  • 0103华夏之光永存:国产光刻机突围全景:树脂单体等原料难点(B级 短期优先突破)
  • 3步快速修复TranslucentTB启动失败:终极依赖问题解决指南
  • 2026年5月东莞检测设备厂家最新推荐:试验箱、试验机、硫化仪优选指南 - 海棠依旧大
  • 2026年西部学校运动场地改造:从毒跑道焦虑到环保认证的全链路升级 - 企业名录优选推荐
  • 国内专业止水钢板供应商排行:实力与口碑双维度评测 - 奔跑123
  • BetterNCM插件管理器深度解析:从手动DLL到自动化安装的革命性升级
  • 镜像视界・2026 代际领先:室外无感定位开创者 纯视觉全域空间智能·室外动态孪生坐标技术白皮书
  • 从VSCode 1.85到2026.1:大模型插件架构演进图谱(含6大版本ABI断裂点、3类不可逆弃用API、2026 Q2强制TLSv1.3要求)
  • 2026贵阳装修公司排名完全指南:预算透明、整装一站式、口碑好的装修公司怎么找 - 年度推荐企业名录
  • TestDisk与PhotoRec数据恢复工具架构设计与实现原理深度解析
  • 免费开源窗口调整神器:3步学会强制改变任何Windows窗口尺寸
  • 2026年贵州、四川、重庆体育场地一站式建设方案:从校园塑胶跑道到硅PU球场的环保升级指南 - 企业名录优选推荐
  • 从游戏卡到计算卡:聊聊我为什么把RTX 4090涡轮版塞进了AI服务器(附散热改造心得)
  • 别再只用MNIST了!Permuted/Split MNIST数据集实战:用PyTorch搭建你的第一个连续学习评估环境