本章深入探讨 HSA Runtime 的内存区域抽象,理解不同类型的内存区域(System Memory / VRAM / LDS / Kernarg)、内存属性(Fine-grained / Coarse-grained)、一致性语义以及跨设备访问能力。
难度级别: 🟡 中级
预计阅读时间: 60-90 分钟
前置知识: 第 06-12 章,建议已经了解 HSA Agent
在 HSA Runtime 中,“内存”并不是单纯的一段虚拟地址,而是带有所有者、物理位置、访问权限、一致性模型和迁移能力的资源。CPU、GPU、SDMA、IOMMU、KFD 都会参与内存的分配、映射、访问和同步过程。理解 MemoryRegion / MemoryPool 的设计,可以帮助我们回答很多实际问题:为什么某些内存 CPU/GPU 都能访问?为什么 VRAM 访问快但 CPU 读写慢?为什么有些 SVM 访问会触发 page fault?为什么 coarse-grained 内存需要显式同步?
📋 本章学习目标
✅ 理解MemoryRegion抽象设计
✅ 掌握不同内存类型的特点和用途
✅ 了解Fine-grained和Coarse-grained内存
✅ 理解内存一致性和跨设备访问
✅ 掌握内存池管理机制
✅ 理解hsa_region_t与hsa_amd_memory_pool_t的关系