AMD KFD BO设计深度剖析专栏目录: BO 多地址空间映射与转换视角

📅 2026/6/17 14:28:07
AMD KFD BO设计深度剖析专栏目录: BO 多地址空间映射与转换视角
第 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_bo与kgd_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 VAGEM 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 offset的vma_node、vma_node的信息和创建时机3-3drm_mmfake offset 空间背后的区间分配器fake offset空间的定义与管理、fake offset区间的分配、查找、释放3-4从 fake offset 到 CPU VAdrm_gem_mmap() 路径审核中…3-5[page fault 后发生什么CPU VA 最终映射到 BO backing审核中…3-6[vm_opsmmap 之后谁接管 CPU VA]审核中…3-7[延伸阅读VMA 通用设计进程虚拟地址空间中的区间对象]审核中…3-8[延伸阅读VMA 应用场景从匿名内存到 GPU BO mmap]审核中…第 4 章GPU BO 的虚拟地址空间——GPU VM的深度解析聚焦 GPU VA 地址空间深入剖析 GPU 如何“看见”一个 BO从amdgpu_vmVM 顶层管理器、amdgpu_bo_va/amdgpu_vm_bo_baseBO 与 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_new→drm_buddy_alloc_blocks伙伴算法分配流程5-4GTT BO的内存分配分析amdgpu_gtt_mgr核心结构、GTT区间分配/释放、动态迁移机制5-5Userptr BO的内存分配分析用户态指针映射到GPUMMU通知器注册、用户页面获取、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 页表从地址转换器视角详解 GARTGraphics Address Remapping Table机制GART 负责把离散系统内存组织成 GPU 可访问的连续地址视图是系统内存、DMA 地址与 GPU 访问路径之间的重要桥梁。本章重点分析从ttm_tt_bind到amdgpu_gart_bind→amdgpu_gart_map→amdgpu_gmc_set_pte_pde的完整 PTE 更新调用链。编号标题核心内容6-1GPU GART基础架构与工作原理地址转换器视角GART硬件页表机制、VRAM中页表存储、与CPU MMU的对比6-2GPU GART绑定机制与性能优化系统内存到GPU可访问地址ttm_tt_bind→amdgpu_gart_bind→amdgpu_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_address与pages数组共同构成系统内存类 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 技术的实现与应用深度分析目录基础篇 / 数据结构篇 / 核心功能篇 / 高阶特性篇 完整子系列索引说明目录以“一个 BO 的多地址空间映射与转换”为主线组织重点关注 CPU VA、GPU VA、DMA Address、Physical Address 四类地址及之间的关系系列编号遵循原专栏的系列划分逻辑上述列出约 40 篇核心文章其余文章为各系列下的补充性、延伸性内容SVM 子系列已独立成篇此处仅列目录入口具体章节详见该目录页