1. 背景与意义
1.1 异构计算与内存管理的挑战
随着高性能计算(HPC)、人工智能(AI)、大数据等领域的快速发展,现代计算平台越来越多地采用异构架构,即 CPU 与 GPU、FPGA、AI 加速器等多种处理器协同工作。这些处理器往往拥有各自独立的物理内存(如 CPU 的 DRAM、GPU 的 HBM/显存),但又需要高效地共享和访问数据。
传统的内存管理方式下,CPU 和设备(如 GPU)各自维护独立的虚拟地址空间和物理内存,数据在 CPU 和设备间传递时需要显式拷贝(如 cudaMemcpy、clEnqueueWriteBuffer),这不仅增加了开发复杂度,还带来了性能瓶颈。
1.2 HMM 的目标
HMM(Heterogeneous Memory Management) 是 Linux 内核自 4.14 版本起引入的一个子系统,旨在为异构计算平台提供统一、高效的内存管理机制。其核心目标包括:
统一虚拟地址空间:让设备(如 GPU)能够直接访问 CPU 进程的虚拟地址空间,实现“共享虚拟内存”(SVM)。
高效页表同步:设备页表与 CPU 页表保持同步,支持设备端的 page fault(页错误)处理。
内存一致性与安全性:保证 CPU 和设备对同一虚拟地址的访问一致性,支持内存失效、迁移、回收等事件的感知和处理。</