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

第一章:drm子系统概述:1.3 专栏主线——以 BO 生命周期为线索

1.1节我们讲了DRM演进(Why DRM),1.2 节我们介绍本专栏覆盖范围(What),这一节我们讲下本书的主线逻辑(How organized)。这里用了“本书”,我有意把本专栏优化后作为图书出版,欢迎大家提建议和不足。

1. 为什么选择 BO 作为主线

DRM 子系统模块众多,初学者容易迷失在 KMS、GEM、TTM、dma-buf、dma-fence、scheduler 等概念的"字母汤"中。本专栏选择Buffer Object(BO)的生命周期作为贯穿全部章节的主线,原因有三:

  1. BO 是 DRM 子系统中几乎所有模块的操作对象。无论是 GEM 的对象抽象、TTM 的物理资源管理、dma-buf 的跨设备共享、dma-fence 的同步保护,还是 scheduler 的命令调度——它们最终都在围绕"这块 GPU 内存"展开工作。

  2. BO 的生命周期天然形成一条递进链路。从创建到销毁,BO 经历的每个阶段都对应着一个核心问题,而每个问题恰好由一个独立模块来回答。章节顺序即是 BO"一生"的时间线。

  3. BO 主线连接了传统模式与现代演进。从显式 BO 管理(GEM/TTM)到统一虚拟地址空间(SVM),主线的终点自然引出 DRM 内存管理的范式转变,使读者既扎根经典又面向未来。

2. BO 生命周期与章节对应关系

3. 每章在主线中的角色

章节BO 生命周期阶段核心问题
第三章 GEM创建与引用BO 怎么被创建、命名、引用计数管理?
第四章 TTM物理资源管理BO 的物理内存从哪来、放在哪、如何搬迁?
第五章 共享跨边界传递BO 怎么被安全地交给另一个进程或设备使用?
第六章 同步并发访问控制多方同时操作 BO 时,如何保证不出现数据竞争?
第七章 Scheduler命令执行调度操作 BO 的 GPU 命令,按什么策略投递到硬件?
第八章 GPUVMGPU 地址映射BO 映射到 GPU 虚拟地址空间的哪个位置?
第九章 SVM范式演进能否消除显式 BO 管理,CPU/GPU 共享同一地址空间?

4. 主线逻辑:三个递进层次

将上述链路进一步抽象,本专栏实际解答了关于 GPU 内存管理的三个递进问题

第一层:数据管理 (Ch3 GEM + Ch4 TTM + Ch5 共享) → BO 的创建、安置、共享——解决"数据在哪、归谁" 第二层:执行协调 (Ch6 同步 + Ch7 Scheduler) → 依赖跟踪、命令调度——解决"何时可用、何时执行" 第三层:地址空间演进 (Ch8 GPUVM + Ch9 SVM) → 从显式映射到统一寻址——解决"如何让 GPU 看到数据"

这三层的演进也对应了 DRM 子系统二十年的发展方向:

  • 2008–2012:第一层成熟(GEM/TTM 入主线,dma-buf 标准化)
  • 2015–2020:第二层完善(GPU scheduler 从 AMD 私有提升为公共框架,dma-fence 规则固化)
  • 2022–至今:第三层推进(drm_gpuvm 2022 合入,drm_gpusvm 2024 提出,VM_BIND 成为新一代接口标准)

5. 附录的定位

细心的读者会注意到,调试技术(DRM Print / DebugFS / Trace / KUnit)和 Linux 基础技术(进程管理、anon_inode 等)没有出现在上面的主线链路中。这是有意为之:

  • 附录 A:DRM 内核调试技术— 调试是贯穿所有章节的正交工具维度,不属于 BO 生命周期的某个阶段。将其独立为附录,读者在学习任意章节时都可以按需查阅。正文各章末尾会交叉引用附录的对应小节(例如:Ch4 TTM → 附录 A.7.2 显存监控、Ch6 同步 → 附录 A.7.4 fence 调试)。
  • 附录 B:Linux 系统基础技术汇总— 支撑 DRM 运行的底层基石(等待队列、进程控制等),按需参阅。

完整的专栏结构:

正文(BO 生命周期主线): 第一章 DRM 子系统概述(1.1 演进 / 1.2 专栏介绍 / 1.3 专栏主线) 第二章 GEM 与 TTM 概述 第三章 GEM 分析 第四章 TTM 分析 第五章 BO 的共享 第六章 异步访问的同步 第七章 GPU Scheduler — 作业调度框架 第八章 GPUVM — GPU 虚拟地址空间管理 第九章 SVM — 共享虚拟内存 附录(正交支撑,按需查阅): 附录 A DRM 内核调试技术 附录 B Linux 系统基础技术汇总

6. 如何使用本主线

  • 顺序阅读:按章节顺序即是 BO 从生到死的完整旅程,适合系统学习。
  • 按需跳转:明确自己关注 BO 生命周期的哪个阶段,直接进入对应章节。
  • 回溯理解:遇到某个模块时回顾本节的链路图,确认它在整体中的位置。
  • 调试伴读:学习每章时同步翻阅附录 A 中对应的调试手段,边学原理边掌握排查工具。

如果把 BO 比作一个快递包裹,那么 GEM 是下单建单,TTM 是仓储分拣,共享是转运交接,同步是签收确认,Scheduler 是调度派送,GPUVM 是地址路由,SVM 是"无感配送"——不用填地址,系统自动知道送到哪。而附录 A 的调试技术,就是这套物流系统的"监控大屏"——随时可以打开查看包裹到了哪一站。

http://www.cnnetsun.cn/news/2212796.html

相关文章:

  • ARM RealView Debugger项目定制与构建配置详解
  • 山东大学项目实训个人记录4
  • 如何用AEUX免费打通Figma/Sketch到After Effects的设计动画工作流
  • 01. 安卓逆向基础、环境搭建与授权
  • ClaudeClaw:面向巨量代码库的智能管理与语义搜索平台
  • 自感的物质重塑与唯物主义的本体论重构——岐金兰论AI时代“唯心恐惧症”的终结
  • ## 4 Agent 的感知层:多模态输入(文本、图像、音频、传感器)
  • Arduino Portenta H7 Lite开发板工业应用与成本优化解析
  • 保研个人陈述别再套模板了!手把手教你用STAR法则写出让导师眼前一亮的文书(附500/1000/1800字实例拆解)
  • 不只是医学影像:手把手教你用CTK Widgets库快速打造专业级Qt桌面应用
  • MinIO Windows安装踩坑实录:从环境变量失效到服务启动失败的全面解决指南
  • Bifrost AI Gateway:统一AI模型调用,实现智能路由与故障转移
  • 别再死记硬背了!用一张图搞懂嵌入式Linux启动三巨头:U-Boot、Kernel、Rootfs的协作关系
  • 深入MTK SensorHub 3.0架构:以SH3001和VC36658为例,详解传感器驱动与HAL的协作机制
  • 家庭网络“双网关”现象解析与通用桥接配置指南
  • 告别‘text/plain’:彻底搞懂Flask静态文件Content-Type与Vite打包的兼容性配置
  • 光线追踪与3D高斯渲染的GRTX架构优化实践
  • ESP32-CAM四驱遥控车DIY指南
  • ISAC系统中杂波建模与抑制技术解析
  • NVIDIA AI红队:机器学习安全攻防实战解析
  • OpenClaw Agent Templates:模块化配置快速构建专属AI助手
  • Arm Cortex-A76处理器错误分析与解决方案
  • 对比直接使用原厂 API 体验 Taotoken 聚合服务在接入便捷性上的优势
  • VeLoCity皮肤:为VLC播放器注入全新视觉体验与交互设计的界面革命
  • 大模型后训练优化:ODC架构显存与通信效率提升实践
  • 老旧电视盒子救星:手把手教你给创维H2903刷入安卓4.4.2精简固件,告别卡顿
  • 2026/03/30飞书 V7.65 功能更新详解:AI 深度融合办公场景,aily、妙搭、多维表格与妙记全面升级
  • 别再只用收盘价了!用Python实战对比Parkinson、Garman-Klass等三种高阶波动率算法(附完整代码)
  • 告别机械按键:在中颖51项目里低成本集成触摸功能(SH79F9476 Touch Key实战)
  • DDrawCompat完整指南:让经典游戏在Windows 11上焕发新生的终极解决方案