首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Infiniband中,PCIe、Infiniband卡的内部缓冲区或远程计算机的RAM中有什么映射?

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

Stack Overflow用户
提问于 2013-11-22 11:37:10
回答 2查看 1.2K关注 0票数 4

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

众所周知,PCIe(端点)设备,包括PCIe,可以通过两种方式进行通信:

  • IO端口(入/出)废弃的
  • 条形存储器映射IO: mov

但是在酒吧(MMIO)中到底显示了什么呢?(使用PCIe时):

  • 它自己的内部缓冲记忆卡无限带?
  • 远程计算机RAM的一部分( RAM的一部分目前正在用RDMA复制数据)?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-22 18:31:00

HCA的MMIO空间的确切内容和使用将是供应商--也许是特定于卡的。似乎实现RDMA的简单方法是让卡及其驱动程序设置一个直接对应于远程映射内存的MMIO区域。但是,将MMIO区域视为与远程内存相同的区域,只有在一定的抽象级别上才是正确的,可能是在无限带动词库 (pdf)层或更高级别。

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

  1. 在A上执行的代码会将mov转换为MMIO地址。
  2. A的CPU套接字上的内存管理硬件将地址识别为PCIe MMIO,并将请求直接从CPU套接字发送到PCIe (如果插入了适当的插槽),或者以DMI数据包或类似的方式发送到DMI桥,然后将PCIe发送给HCA。
  3. HCA从PCIe数据包中释放RDMA有效负载,并做它需要做的任何事情来处理将该信息发送到Infiniband fabric。最有可能的情况是,在将RDMA请求发送到IB数据包之前,在HCA本身的一些小内存中缓冲有效负载很短的时间。

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

  1. B的HCA接收IB包并打开有效载荷。
  2. 在构造PCIe数据包时,HCA可能会将卡本身的有效负载缓冲一段时间。
  3. PCIe数据包穿越B的主板,在到达B的DMA控制器之前,可能会被转换成DMI或其他格式。
  4. B的DMA控制器将将有效负载写入为此类RDMA事务而固定的B系统内存区域进行仲裁。

使RDMA比竞争技术更快的关键步骤是B4。在进行任何RDMA读写之前,B上的Infiniband驱动程序和谓词库设置一个内存区域,以便B的DMA控制器能够安全地向其写入,而无需任何上下文切换、操作系统或驱动程序处理。这意味着,除了有线传输所增加的延迟(通常以微秒为单位)外,接收端的处理为事务增加了很少的延迟。这个步骤和A上相应的MMIO映射还允许零拷贝传输,其中任何一方都必须将内核和用户空间之间感兴趣的内存复制到HCA、驱动程序和应用程序之间的中间层。

这里有一个很好的链接,描述在调用IB谓词时软件级别的情况:

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

票数 4
EN

Stack Overflow用户

发布于 2013-11-22 11:42:27

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20143990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档