在Infiniband中,PCIe条、Infiniband卡的内部缓冲区或远程计算机';什么是公羊?

在Infiniband中,PCIe条、Infiniband卡的内部缓冲区或远程计算机';什么是公羊?,c,memory-mapping,pci-e,infiniband,rdma,C,Memory Mapping,Pci E,Infiniband,Rdma,我们知道,Infiniband允许RDMA直接访问远程计算机的内存 众所周知,PCI Express(端点)设备,包括PCIe卡Infiniband,能够以两种方式进行通信: IO端口(输入/输出)已弃用 MMIO(条形内存映射IO:mov) 但是,究竟是什么显示在酒吧(人机界面)?(使用PCIe卡Infiniband时): 它自己的内部缓冲存储卡Infiniband 远程计算机RAM的一部分(目前正在使用RDMA复制数据的RAM部分) 当我使用Infiniband时,PCIe BAR、

我们知道,Infiniband允许RDMA直接访问远程计算机的内存

众所周知,PCI Express(端点)设备,包括PCIe卡Infiniband,能够以两种方式进行通信:

  • IO端口(输入/输出)已弃用
  • MMIO(条形内存映射IO:mov)
但是,究竟是什么显示在酒吧(人机界面)?(使用PCIe卡Infiniband时):

  • 它自己的内部缓冲存储卡Infiniband
  • 远程计算机RAM的一部分(目前正在使用RDMA复制数据的RAM部分)

当我使用Infiniband时,PCIe BAR、Infiniband卡的内部缓冲区或远程计算机的RAM中的映射是什么?

PCI/PCIe卡上的BAR必须在引导时由操作系统(或BIOS)的PnP子系统初始化,因此它们应该在卡实际使用之前很久指向可用内存。因此,内存必须在卡内。然后PCI控制器使这些内存区域可用于CPU的地址空间。

HCA的MMIO空间的确切内容和使用情况将由供应商决定,可能是特定于卡的。看起来实现RDMA的简单方法是让卡及其驱动程序设置一个直接对应于远程映射内存的MMIO区域。然而,将MMIO区域视为一个与远程内存相同的区域,仅在某个抽象级别上是正确的,可能是在(pdf)层或更高级别上

低于该级别时,主机A上的应用程序向主机B发送的RDMA写操作所经过的协议堆栈将如下所示:

  • 在上执行的代码将mov转换为MMIO地址
  • A的CPU插槽上的内存管理硬件将该地址识别为PCIe MMIO和 如果HCA插入适当的插槽,则直接从CPU插槽向PCIe发送请求,或者作为数据包或类似物发送到southbridge,然后将PCIe反过来发送给HCA
  • HCA从PCIe数据包中打开RDMA有效负载,并执行其需要执行的任何操作,以处理将该信息发送到Infiniband结构。最有可能的情况是,在以IB数据包的形式发送RDMA请求之前,将有效负载缓冲在HCA本身的一些小内存中一小段时间
  • 在穿过IB结构后,有效负载遵循B上大致相反的一系列步骤:

  • B的HCA接收IB数据包并打开有效负载
  • 在构造PCIe数据包时,HCA可能会在短时间内缓冲卡本身上的有效负载
  • PCIe数据包穿过B的主板,可能在到达B的DMA控制器之前被转换为DMI或其他格式
  • B的DMA控制器仲裁将有效负载写入B的系统内存区域,该区域固定用于此类RDMA事务
  • 使RDMA比竞争技术更快的关键步骤是B4。在进行任何RDMA读取或写入之前,B上的Infiniband驱动程序和谓词库设置了一个内存区域,以便B的DMA控制器能够安全地写入,而无需任何进一步的上下文切换或操作系统或驱动程序处理。这意味着,除了有线传输增加的延迟(通常为微秒级)外,接收端的处理只会给事务增加很少的延迟。这一步骤和A上相应的MMIO映射也允许零拷贝传输,其中任何一方都不必将内核和用户空间之间的感兴趣内存复制到HCA、驱动程序和应用程序之间的中间位置

    这里有一个很好的链接,描述了如果调用IB动词,它在软件级别的表现:


    谢谢。但在运行时,我们可以通过PCI Express配置空间更改条形图(地址从/到条形图映射)的转换。那么,我们可以将远程RAM映射到本地物理地址空间吗?此外,我们可以在运行时热插拔或连接Infiniband,也就是说,比系统启动要晚得多。是的,热插拔允许启动后配置,但即使如此,当设备添加到系统中时,必须填充条,如果我已经很好地理解了RDMA的含义,并且它的工作方式与常规DMA相同,那么你就不需要在地址空间中使用远程内存。RDMA负责在两台计算机之间交换内存块,而无需CPU干预(这是DMA控制器的角色)。您总是可以看到您的本地内存,如果您需要读取或写入远程内存,您可以通过发出RDMA请求来实现。“RDMA的意思是什么,如果它的工作方式与常规DMA相同”-但对于DMA,我们需要有映射内存(任何设备的映射内存示例:以太网、图形卡等)。DMA控制器仅使用系统寻址(或x86总线寻址)将数据从CPU-RAM复制到设备的映射缓冲区(GPU-RAM)。如果我们对每个RDMA数据包使用到Infiniband卡的硬件缓冲区的临时拷贝,那么它已经不是零拷贝了。非常感谢!1.“然而,将MMIO区域视为一个与远程内存相同的区域仅在某个抽象级别上是正确的,可能是在Infiniband verbs library(pdf)层或更高级别上。”例如,我可以使用简单的指令MOV(汇编程序)写入映射到用户空间的MMIO区域,数据传输到远程服务器,Infiniband卡将使用DMA控制器将数据写入RAM,或者我必须(必须)只使用特殊指令
    ibv\u post\u send()
    ?2。“1.在上执行的代码将mov转换为MMIO地址。”映射到MMIO的是所有远程内存,还是只是其中的一小部分,或者是mappi