跳转至

02 统一内存 (UVM) 与硬件 Page Fault 机制

1. Unified Virtual Memory (UVM) 原理

统一内存允许 CPU 与 GPU 共享相同的单指针虚拟地址空间(cudaMallocManaged): - 程序无需显式执行 cudaMemcpy。 - 数据可以在 CPU 主存(Host DDR)与 GPU 显存(Device HBM)之间按需动态迁移。

sequenceDiagram
    autonumber
    participant GPU_SM as GPU SM Execution
    participant GPU_MMU as GPU MMU
    participant UVM_KMD as Linux UVM Driver (KMD)
    participant Host_DDR as Host DDR Memory
    participant GPU_HBM as GPU HBM Memory

    GPU_SM->>GPU_MMU: 发起 VA 访存请求
    GPU_MMU-->>GPU_SM: 页表项无效,触发 Hardware Page Fault 中断
    GPU_MMU->>UVM_KMD: 产生 MSI-X 中断,上报 Faulting VA 与 Context ID
    UVM_KMD->>Host_DDR: 锁定源数据页面 (Pin Pages)
    UVM_KMD->>GPU_HBM: 通过 DMA 搬运页面至 GPU 显存
    UVM_KMD->>GPU_MMU: 更新 GPU 页表项,置位 Valid 并 Flush TLB
    UVM_KMD-->>GPU_SM: 恢复 Warp 执行,重试访存成功