AMD KFD BO设计深度剖析专栏目录: BO 多地址空间映射与转换视角
2026/6/17 14:27:58 网站建设 项目流程

第 0 章:专栏介绍

阐明本专栏以“一个 BO、多个地址空间、多个翻译器”为主线,系统分析 CPU VA、GPU VA、DMA Address、Physical Address 之间的映射与转换关系。

编号标题核心内容
1专栏介绍:AMD KFD BO设计深度剖析——解锁GPU存储核心技术专栏主线、技术范围与多地址空间分析框架介绍

第 1 章:BO 设计概览与基础

系统讲解 BO 核心定义,深入分析drm_gem_object → ttm_buffer_object → amdgpu_bo → kgd_mem四层数据结构的继承关系与各层职责划分;从 CPU VA、GPU VA、DMA Address、Physical Address 四个地址空间出发,建立“同一 BO 被不同硬件组件通过不同地址体系访问”的整体认知。配套专栏术语查阅表,帮助读者快速建立 GPU 内存管理的核心概念框架。

编号标题核心内容
1-1开篇:AMDGPU BO设计概览BO涉及 CPU VA / GPU VA / DMA Address / Physical Address 的整体架构
1-2amdgpu_bo的设计分析——GEM层和TTM层drm_gem_object → ttm_buffer_object的层次继承与各层职责
1-3amdgpu_bo的设计——AMD扩展和KFD扩展amdgpu_bokgd_mem两大核心数据结构的协作关系
专栏术语查阅表地址管理、页表、虚拟化等核心术语速查

第 2 章:BO 的分类与用途

全面梳理 AMDGPU 驱动中 BO 的分类体系,从用户空间 BO 与内核空间 BO 的创建方式与生命周期差异,到 ROCm/KFD 计算体系下kgd_mem的桥梁作用,建立对 BO 在图形渲染与高性能计算两大场景中不同角色的完整认知。

编号标题核心内容
2-1amdgpu BO的类型和用途User BO vs Kernel BO:创建方式、生命周期与使用场景差异
2-2ROCm体系下的BO——kgd_memkgd_mem作为KFD与AMDGPU间的内存管理桥梁,多进程共享与同步

第 3 章:用户态访问 BO 的 CPU VA:GEM mmap fake offset 机制

聚焦 GEM mmap 的 fake offset 机制把用户态 CPU VA 映射请求安全地绑定到对应 GEM/BO 对象,回答“CPU 进程如何访问这个 BO”。

编号标题核心内容
3-1用户态访问 BO 的 CPU VA的 fake offset 机制全流程解析用户态进程怎样拿到一个可以读写 BO 的 CPU 虚拟地址
3-2fake offset 的创建:BO 创建路径中的 vma_node存储fake offsetvma_nodevma_node的信息和创建时机
3-3drm_mm:fake offset 空间背后的区间分配器fake offset空间的定义与管理、fake offset区间的分配、查找、释放
3-4从 fake offset 到 CPU VA:drm_gem_mmap() 路径审核中…
3-5[page fault 后发生什么:CPU VA 最终映射到 BO backing审核中…
3-6[vm_ops:mmap 之后谁接管 CPU VA]审核中…
3-7[延伸阅读:VMA 通用设计:进程虚拟地址空间中的区间对象]审核中…
3-8[延伸阅读:VMA 应用场景:从匿名内存到 GPU BO mmap]审核中…

第 4 章:GPU BO 的虚拟地址空间——GPU VM的深度解析

聚焦 GPU VA 地址空间,深入剖析 GPU 如何“看见”一个 BO:从amdgpu_vm(VM 顶层管理器)、amdgpu_bo_va/amdgpu_vm_bo_base(BO 与 VM 关联中介)、amdgpu_bo_va_mapping(具体映射描述)三级数据结构,到amdgpu_vm_bo_map(建立 GPU VA 映射)、amdgpu_vm_bo_update(把映射写入页表)等关键流程,厘清 GPU VA 到底层物理/DMA 地址的准备过程。

编号标题核心内容
4BO的虚拟地址部分概述GPU VA 侧:amdgpu_vm : amdgpu_bo_va : amdgpu_bo_va_mapping三级层次关系总览
4-1amdgpu_vmVM顶层管理器:九大功能模块、多进程隔离、生命周期管理
4-2amdgpu_vm_bo_baseVM与BO多对多关联、状态迁移(驱逐/同步)、shared标记
4-3amdgpu_bo_va_mapping映射区间管理、红黑树组织、地址冲突检测
4-4amdgpu_vm_bo_map 实现详解映射建立全流程:参数校验→地址转换→冲突检测→状态链表协作
4-5amdgpu_vm_bo_updateGTT逐页DMA地址映射 vs VRAM批量物理地址映射的页表填充差异

第 5 章:GPU BO 的物理地址空间——BO PA的不同存储位置(按存储类型分类)

聚焦 Physical Address / 物理存储空间:解析基于 TTM 框架的物理内存分配机制,按存储类型逐一剖析 VRAM、GTT、Userptr、Doorbell、MMIO 五种 BO 的物理位置、访问路径与迁移/共享限制;分析 Userptr BO 的 DMA-BUF 导出限制与跨进程共享替代方案;介绍res_cursor迭代器等工具如何服务于页表填充与 DMA 映射。

编号标题核心内容
5BO的物理地址部分概述Physical Address 侧:ttm_resource框架、VRAM/GTT多域管理、分块(node)组织
5-1BO内存分配位置flags概述VRAM/GTT/USERPTR/DOORBELL/MMIO_REMAP 五种flags用途与选择策略
5-2BO内存分配位置flags详解各flags的物理位置、访问方式、应用场景对比分析
5-3VRAM BO的显存分配分析amdgpu_vram_mgr_newdrm_buddy_alloc_blocks伙伴算法分配流程
5-4GTT BO的内存分配分析amdgpu_gtt_mgr核心结构、GTT区间分配/释放、动态迁移机制
5-5Userptr BO的内存分配分析用户态指针映射到GPU:MMU通知器注册、用户页面获取、BO验证
5-5-1Userptr BO与DMA-BUF导出机制分析Userptr BO无法导出的技术限制,GTT BO+显式拷贝替代方案
5-6Doorbell BO的内核实现PCIe BAR2空间、Doorbell硬件原理、BO分配与内核/用户空间映射
5-7Doorbell BO的使用分析amdgpu_bo_create_kernel创建流程、io_remap_pfn_rangemmap实现
5-8res_cursor——BO物理内存资源迭代器amdgpu_res_cursor设计:统一抽象分块遍历、页表填充与DMA映射应用

第 6 章:地址转换机制之一——GART 页表

从地址转换器视角详解 GART(Graphics Address Remapping Table)机制:GART 负责把离散系统内存组织成 GPU 可访问的连续地址视图,是系统内存、DMA 地址与 GPU 访问路径之间的重要桥梁。本章重点分析从ttm_tt_bindamdgpu_gart_bindamdgpu_gart_mapamdgpu_gmc_set_pte_pde的完整 PTE 更新调用链。

编号标题核心内容
6-1GPU GART基础架构与工作原理地址转换器视角:GART硬件页表机制、VRAM中页表存储、与CPU MMU的对比
6-2GPU GART绑定机制与性能优化系统内存到GPU可访问地址:ttm_tt_bindamdgpu_gart_bindamdgpu_gart_map→ PTE更新

第 7 章:地址转换机制之二——GPUVM 页表

聚焦 GPU VA 到物理/DMA 地址的翻译过程:详解 GPUVM 四级页表组织结构(PDB2/PDB1/PDB0/PTB),覆盖页表 BO 创建与销毁、BO 到 VA 映射建立、CPU 直写 / SDMA 异步两种页表更新模式;深入分析 TLB 多级刷新机制(L1 每 CU 独立 / L2 共享、tlb_seq序列号追踪、KFDkfd_last_flushed_seq优化),以及 PTE flags 对访问权限、缓存属性和地址解释方式的影响。

编号标题核心内容
7-1AMDGPU页表机制概览分层架构、CPU/SDMA双更新模式、amdgpu_vm_manager全局管理
7-2GPUVM多级页表组织结构四级页表 PDB2→PDB1→PDB0→PTB,每级512项,48位VA空间
7-3GPUVM页表创建与销毁VM初始化、Root PD创建、页表BO内存分配策略与层级参数差异
7-4BO到VA的映射DRM_IOCTL_AMDGPU_GEM_VA接口:MAP/UNMAP/CLEAR/REPLACE操作
7-5GPU页表更新机制GPU VA 到物理/DMA地址翻译的落地:amdgpu_vm_bo_update、CPU直写 vs SDMA异步
7-6TLB管理与刷新多级TLB架构(L1/L2)、VMID关联、tlb_seq序列号追踪、KFD优化
7-7AMDGPU PTE flags分析硬件PTE标志位的语义与设置

第 8 章:地址转换机制之三:——DMA 地址空间dma_address 与 IOMMU

聚焦 DMA Address / IOVA 地址空间:深入分析 TTM 框架中dma_address的完整生命周期——从 BO 创建时分配数组内存,到ttm_tt_populate触发物理页分配和 DMA 映射(经 IOMMU 转换为设备可访问的总线地址),再到 GPU 页表更新时使用这些地址,最终解除映射时的清理操作。dma_addresspages数组共同构成系统内存类 BO 的关键地址转换基础。

编号标题核心内容
8-1amdgpu BO的dma_address使用DMA Address 侧:数组分配→populate/DMA映射→GPU页表使用→清理
8 -2amdgpu SDMA 数据搬运中的地址空间与地址转换原理与实战分析SDMA硬件单元的工作原理、使用的地址空间、计算方法

第 9 章:多地址空间综合

系统总结 BO 涉及的四大地址空间(CPU 虚拟地址、GPU 虚拟地址、DMA 总线地址、物理地址)的映射关系与转换机制;解析 TTMttm_place多候选放置机制的 FALLBACK/DESIRED 策略,理解内存压力下的优雅降级设计;还原 GTT BO 在有 IOMMU 系统中 CPU MMU → IOMMU → GPU MMU 三级硬件协同的端到端地址转换流程。

编号标题核心内容
9-1amdgpu_bo多地址空间关系汇总一个 BO 的 CPU VA / GPU VA / DMA Address / Physical Address 四大地址空间全景
9-2ttm_place多候选放置机制ttm_place/ttm_placement的FALLBACK/DESIRED策略与AMDGPU实践
9-3GTT BO在IOMMU系统中的完整地址转换CPU MMU + IOMMU + GPU MMU 三级硬件协同的端到端地址转换流程

第 10 章:多地址空间统一——SVM 子系列

SVM(共享虚拟内存)是多地址空间管理的高级形态:CPU 与 GPU 共享统一虚拟地址语义,驱动在背后协调物理页、VRAM/GTT 放置、页表更新、MMU Notifier、HMM 迁移与 IOMMU/DMA 映射。本子系列系统分析 AMDGPU KFD SVM 的设计与实现,展示多地址空间从“相互映射”走向“统一管理”的过程。

编号标题核心内容
AMD ROCm-SVM 技术的实现与应用深度分析(目录)基础篇 / 数据结构篇 / 核心功能篇 / 高阶特性篇 完整子系列索引

说明:

  1. 目录以“一个 BO 的多地址空间映射与转换”为主线组织,重点关注 CPU VA、GPU VA、DMA Address、Physical Address 四类地址及之间的关系
  2. 系列编号遵循原专栏的系列划分逻辑,上述列出约 40 篇核心文章,其余文章为各系列下的补充性、延伸性内容
  3. SVM 子系列已独立成篇,此处仅列目录入口,具体章节详见该目录页

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询