在线咨询 400-826-1668
回到顶部
ARTICLE DETAIL

资讯详情

深耕国风建站与运营引流的一线实战洞察。

深入理解 amdgpu SDMA 引擎专栏目录

深入理解 amdgpu SDMA 引擎专栏目录 本专栏以“SDMA 引擎如何被 amdgpu 抽象、驱动与使用”为主线从硬件的 ring / 指针 / doorbell 出发逐层深入到驱动的数据结构、函数指针分层、IP 生命周期与中断最终落到 TTM 迁移、VM 页表更新、SVM 按需迁移三大上层用例。主线硬件版本为SDMA v4.0VegaGFX9——注释完整、结构经典其它硬件代v5/v6/v7、LSDMA的演进差异在第 5 章横向展开。所有内容均基于本仓库 drivers/gpu/drm/amd/amdgpu/ 下的实际源码。该专栏是2026年08月月度专栏每周一、三、四、五各放送两篇。已放送的文章会点亮链接欢迎订阅关注不迷路。第一部分硬件基础建立 SDMA 硬件侧的最小心智模型它是 GPU 里的异步搬运工只认“命令流”。本部分讲清 ring buffer 的生产者/消费者模型、RPTR/WPTR 双指针分工、doorbell 通知机制、“一实例两队列”与多实例的由来以及命令packet的统一骨架——这些是理解后续所有软件代码的物理基础。章标题内容简介1[SDMA 是什么GPU 里的异步搬运工]建立“SDMA 是什么、为什么需要它、到底干哪几件事”的直觉能用一句话讲清它的定位2[SDMA 硬件模型队列、指针与 doorbell]ring buffer 工作原理、RPTR/WPTR 双指针分工、doorbell 敲门通知、“一实例两队列”与多实例/分区的由来3[SDMA 指令集Packet 格式速览]header opcode sub-opcode 参数的统一骨架用真实 emit 函数拆解 WRITE/INDIRECT/FENCE/TRAP/POLL_REGMEM第二部分软件抽象层把硬件概念映射到驱动的 C 数据结构并揭示 amdgpu 应对“十几代硬件”的核心武器——分层 函数指针。本部分厘清amdgpu_sdma/amdgpu_sdma_instance/amdgpu_ring的层次解释四张函数指针表如何屏蔽代际差异并把 SDMA 放回通用的 ring / IB / 调度器提交框架里看。章标题内容简介4[数据结构总览SDMA 在驱动里的实体]amdgpu_sdma/amdgpu_sdma_instance/amdgpu_ring三者的包含关系及每个关键字段对应硬件的什么5[通用层与 per-IP 层函数指针解耦硬件差异兼看各代演进对比]分层 函数指针的解耦机制并以此为尺标横向对比 v4→v5→v6→v7、LSDMA 各代的实际差异6[SDMA 如何融入 ring / IB / 调度器体系]SDMA 与 GFX/Compute 共用 ring/IB/job/scheduler/fence 基础设施区别只在最终 emit 的 packet第三部分驱动实现以 v4.0 为主线走进 SDMA 的具体驱动实现。本部分跟踪 SDMA 作为一个 amdgpu IP block 的生命周期两条 ring 何时被创建与启动、逐项拆开 ring_funcs 的每个 emit 到底写了哪些 dword并补齐固件加载与中断这两块让引擎“会干活”“能闭环”的拼图。章标题内容简介7[IP 生命周期从 early_init 到 hw_fini]SDMA 作为 amdgpu IP block 的生命周期重点看两条 ring 在哪一步、如何被创建和启动8[Ring 操作实现指针、发包与自检]逐项拆开sdma_v4_0_ring_funcs看每个emit_*/ 指针操作到底写了哪些 dword9[固件与中断处理]microcode 让引擎会干活、中断让完成能闭环通知兼述 RAS/ECC 与引擎复位为调试打底第四部分上层如何使用 SDMASDMA 存在的意义在于服务上层。本部分先讲一个承上启下的TTM 搬运服务层把一次搬运封装成带 GART 窗口的可复用凭证amdgpu_ttm_buffer_entity再落到 SDMA 的三大本职用途——BO 搬运 / TTM 迁移、VM 页表更新、SVM 按需迁移其中 SVM 是本系列的核心落点。章标题内容简介10[TTM 缓冲搬运服务层amdgpu_ttm_buffer_entity]比buffer_funcs裸原语高一层的服务层把“一次 SDMA 搬运”封装成可复用、可并发、带 GART 窗口的执行凭证11[SDMA 用于 Buffer 搬运与 TTM 迁移]buffer_funcs如何被 TTM 显存管理调用完成 system memory ↔ VRAM 之间的迁移12[SDMA 用于 VM 页表更新]vm_pte_funcscopy/write/set_pte_pde与amdgpu_vm_sdma如何把一次页表变更编排成 SDMA job13[SDMA 与 SVM按需迁移的执行引擎]“SVM 换页/预取/缺页恢复 → VM 页表更新 → SDMA 执行”完整链路SDMA 同时充当搬运与页表引擎第五部分进阶与实战从“看得懂机制”走向“排得了故障”并为整个系列收官。本部分给出 SDMA 排障的实战手段再用一张全景图把全栈串成整体提炼三大设计哲学与“读懂任意 SDMA 版本”的通用方法论。章标题内容简介14[调试与观测]ip_dump 寄存器快照、RPTR/WPTR 判读、fence 超时与 guilty 队列、SDMA 中断、固件核对、trace 观测15[总结与全景图]一张全景图串起全栈、贯穿始终的三大设计哲学、以及读懂任意一代 SDMA 代码的通用方法论附录一份速查手册把三张随手要查的表放在一处源码文件索引、opcode 速查、IP 版本与芯片对照。编号标题内容简介附录[SDMA 速查手册源码文件 · opcode · 版本对照]A. SDMA 相关源码文件及职责索引B. 常见 opcode/sub-opcode 速查GFX9/v4.0 命名C. SDMA IP 版本、GFX 世代/代表芯片、PAGE 队列特征对照说明目录以“SDMA 从硬件到上层用例”为主线组织主线硬件为 SDMA v4.0VegaGFX9各代硬件差异集中在第 5 章横向对比。阅读建议硬件三章1–3建立直觉即可软件三章4–6是理解一切的骨架务必读懂“双 ring 函数指针”实现三章7–9以 v4.0 为主线精读上层四章10–13是落地用例。三份附录为速查性内容可随用随查无需按顺序通读。
返回列表