当前位置: 首页 > news >正文

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内存映射到进程地址空间的功能。

http://www.lryc.cn/news/284968.html

相关文章:

  • 未来的NAS:连接您的数字生活
  • C++ 设计模式之备忘录模式
  • 【项目搭建三】SpringBoot引入redis
  • 漫谈广告机制设计 | 听闻RTA要搞二次竞价了?牛啊!
  • 第04章_IDEA的安装与使用(下)(IDEA断点调试,IDEA常用插件)
  • HBase鉴权设计以及Kerberos鉴权方法
  • 【华为GAUSS数据库】IDEA连接GAUSS数据库方法
  • [java基础揉碎]键盘输入语句
  • Redis 面试题 | 01.精选Redis高频面试题
  • Crow:实现点击下载功能
  • 2024年华为OD机试真题-内存冷热标记-Python-OD统一考试(C卷)
  • Webpack5入门到原理9:处理字体图标资源
  • 【Docker】在Windows操作系统安装Docker前配置环境
  • Webpack5入门到原理21:提升开发体验
  • YOLOv8改进 | Conv篇 | 在线重参数化卷积OREPA助力二次创新(提高推理速度 + FPS)
  • conda国内加速
  • RabbitMQ-数据持久化
  • JS-WebAPIs-本地存储(五)
  • 了解Vue中日历插件Fullcalendar
  • Cloudreve存储策略-通过从机存储来拓展容量
  • java进阶-jvm精讲及实战
  • vue中引入sass、scss
  • Java学习笔记(八)——Lambda表达式
  • 【JavaEE】CAS
  • Linux 系统之部署 h5ai 目录列表程序
  • MySQL自增ID耗尽探究:分析与解决方案
  • 操作系统-操作系统引导(磁盘 操作系统引导过程)
  • 基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖微信小程序端(十三)
  • SAP S/4HANA 2023 Fully-Activated Appliance 虚拟机版介绍
  • 【Docker篇】详细讲解容器相关命令