难度: 🟡 进阶
预计学习时间: 1-1.5 小时
前置知识: Linux 驱动基础、前两章内容
📋 概述
在深入 SVM 实现细节之前,我们需要理解 AMDGPU 驱动的整体架构。AMDGPU 是一个复杂的驱动系统,包含显卡驱动(AMDGPU)和计算驱动(KFD)两大部分。SVM 功能主要在 KFD 中实现,但与 AMDGPU 的其他组件紧密协作。
本章将介绍驱动的层次结构、关键组件以及 SVM 在其中的位置。
3.1 AMDGPU 驱动整体架构
AMD GPU 驱动实际上包含两个主要部分:
┌─────────────────────────────────────────┐
│ 用户空间应用 │
│ [OpenGL] [Vulkan] [OpenCL] [HIP] │
└─────────────────────────────────────────┘
↓ ↓ ↓
┌────────┐ ┌─────────┐ ┌─────────┐
│Mesa/驱动│ │libdrm │ │ROCm RT │
└────────┘ └─────────┘ └─────────┘
↓ ↓ ======================================
内核空间 ======================================
↓ ↓
┌──────────┐ ┌──────────┐
│ AMDGPU │ │ KFD │
│ (DRM) │ ←──────→ │ (Compute)│
│ 图形驱动 │ │ 计算驱动 │
└──────────┘ └──────────┘
↓ ↓
┌────────────────────────────┐
│ GPU 硬件 │
│ [GFX] [Compute] [SDMA] │
└────────────────────────────┘
AMDGPU 驱动
- 位置:
drivers/gpu/drm/amd/amdgpu/ - 作用:
- 图形渲染支持
- 显示输出(DisplayPort, HDMI 等)
- GPU 内存管理(TTM)
- GPU 电源管理
- 基础硬件抽象
KFD 驱动(Kernel Fusion Driver)
- 位置:
drivers/gpu/drm/amd/amdkfd/ - 作用:
- HSA 支持(Heterogeneous System Architecture)
- 计算队列管理
- 进程管理
- SVM 实现 ← 我们关注的重点
- 调试支持
目录结构
drivers/gpu/drm/amd/
├── amdgpu/ # AMDGPU 核心驱动
│ ├── amdgpu_vm.c # 虚拟内存管理
│ ├── amdgpu_ttm.c # TTM 内存管理
│ ├── amdgpu_device.c # 设备初始化
│ └── ...
├── amdkfd/ # KFD 计算驱动 ★ SVM 在这里
│ ├── kfd_module.c
│ ├── kfd_device.c
│ ├── kfd_process.c
│ ├── kfd_svm.c
│ ├── kfd_svm.h
│ ├── kfd_migrate.c
│ └── ...
├── include/
│ └── kgd_kfd_interface.h
└── ...


