GPU与SSD间的P2P DMA访问机制

基于PCIe(Peripheral Component Interconnect Express)总线连接CPU、独立GPU和NVMe SSD的系统架构。

在该架构中,PCIe Swicth支持GPU与SSD之间快速的点对点直接内存访问(peer-to-peer, p2p DMA)。通常情况下,外设设备间的数据传输需要通过CPU内存缓冲区作为中转站。例如,在将数据从SSD复制到GPU的过程中,CPU会先要求SSD将数据传入其本地缓冲区,再命令GPU将这些数据复制到自身的GPU内存缓冲区。

然而,通过启用p2p DMA功能,SSD可以直接将数据读写至或从GPU内存进行传输,无需经过CPU处理。这种机制如图所示,显著提升了数据传输效率。

在该系统中, PCIe BAR(Base Address Register): PCIe设备通过BAR将其控制寄存器和/或内部内存块暴露在总线上,以便由其他PCIe设备访问。BAR保存了设备寄存器和内存可以被访问的总线地址区域。

通过BAR暴露内部内存:设备可以选择通过BAR公开其内部内存,使得CPU或其他PCIe设备能够直接访问这部分内存。NVIDIA和AMD的GPU均支持此功能,分别通过GPUDirect RDMA和DirectGMA技术实现。

为了实现p2p DMA,GPU会在BAR上暴露一部分本地内存段。然后,SSD的DMA控制器就可以根据GPU BAR地址直接进行数据传输,而无需关心源或目标缓冲区的实际物理位置。因此,p2p DMA并不需要SSD提供特殊支持。

映射GPU内存到进程地址空间:GPU通过在其PCIe总线上的设备BAR上暴露部分GPU内存,使其可供CPU访问。为了允许用户态应用程序访问这部分GPU内存,NVIDIA提供了gdrcopy工具,AMD则通过OpenCL扩展实现了将GPU内存映射到进程地址空间的功能。

相关推荐

  1. NCCL P2P共享内存SHM差异

    2024-01-22 22:04:02       5 阅读
  2. 信号:进程通信异步事件处理关键机制

    2024-01-22 22:04:02       12 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-22 22:04:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-22 22:04:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-22 22:04:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-22 22:04:02       20 阅读

热门阅读

  1. C#单例模式的简单实现

    2024-01-22 22:04:02       28 阅读
  2. cfssl简单使用

    2024-01-22 22:04:02       33 阅读
  3. 探索哥德巴赫猜想:数学的未解之谜

    2024-01-22 22:04:02       31 阅读
  4. LeetCode-410.分割数组的最大值

    2024-01-22 22:04:02       35 阅读
  5. Vue3的ref和reactive

    2024-01-22 22:04:02       31 阅读
  6. 标量、向量、矩阵和张量的区别?

    2024-01-22 22:04:02       44 阅读
  7. 面试经典题---11.盛最多水的容器

    2024-01-22 22:04:02       31 阅读