gpt4 book ai didi

c - 在Infiniband中,PCIe-BAR、Infiniband卡的内部缓冲区或远程计算机的RAM中有什么映射?

转载 作者:太空狗 更新时间:2023-10-29 15:32:55 26 4
gpt4 key购买 nike

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

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

  • IO 端口(输入/输出) 已弃用
  • MMIO(BAR - 内存映射 IO:mov)

但是 BAR (MMIO) 中究竟显示了什么? (使用 PCIe 卡 Infiniband 时):

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

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

最佳答案

HCA 的 MMIO 空间的确切内容和用途将因供应商而异,也可能因卡而异。看起来这确实是一种实现 RDMA 的简单方法,让卡及其驱动程序设置一个直接对应于远程映射内存的 MMIO 区域。然而,将该 MMIO 区域视为与远程内存相同且相同的想法仅在特定的抽象级别上是正确的,可能在 Infiniband verbs library 处。 (pdf) 层或以上。

在该级别以下,由主机 A 上的应用程序发布到主机 B 的 RDMA 写入所遍历的协议(protocol)栈将类似于:

  1. 在 A 上执行的代码将移动到 MMIO 地址。
  2. A 的 CPU 插槽上的内存管理硬件将该地址识别为 PCIe MMIO 并且如果 HCA 插入适当的插槽,则将请求直接从 CPU 插槽发送到 PCIe,或者作为 DMI 发送到南桥。数据包或类似数据包,然后将 PCIe 转交给 HCA。
  3. HCA 从 PCIe 数据包中解开 RDMA 有效载荷,并做任何它需要做的事情来处理将该信息发送到 Infiniband 结构。这很可能涉及在 IB 数据包中发送 RDMA 请求之前,在 HCA 本身的一些小内存中缓冲有效载荷一小段时间。

在遍历 IB 结构后,有效负载在 B 上遵循大致相反的一系列步骤:

  1. B 的 HCA 接收 IB 数据包并解包负载。
  2. 在构建 PCIe 数据包时,HCA 可能会在卡本身上缓冲有效载荷一小段时间。
  3. PCIe 数据包遍历 B 的主板,在到达 B 的 DMA Controller 之前可能会沿途被转换为 DMI 或其他格式。
  4. B 的 DMA Controller 仲裁将有效负载写入为此类 RDMA 事务固定的 B 系统内存区域。

使 RDMA 比竞争技术更快的关键步骤是 B4。在发生任何 RDMA 读取或写入之前,B 上的 Infiniband 驱动程序和动词库会设置一个内存区域,以便 B 的 DMA Controller 能够安全地写入该区域,而无需任何进一步的上下文切换或操作系统或驱动程序处理。这意味着除了有线传输增加的延迟(通常为微秒数量级)之外,接收端的处理对交易增加的延迟非常小。此步骤和 A 上相应的 MMIO 映射也允许零拷贝传输,其中任何一方都不必将内核和用户空间之间感兴趣的内存复制到 HCA、驱动程序和应用程序之间。

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

http://thegeekinthecorner.wordpress.com/2010/09/28/rdma-read-and-write-with-ib-verbs/

关于c - 在Infiniband中,PCIe-BAR、Infiniband卡的内部缓冲区或远程计算机的RAM中有什么映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20143990/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com