我们知道,Infiniband允许RDMA -直接访问远程计算机的内存.
众所周知,PCIe(端点)设备,包括PCIe,可以通过两种方式进行通信:
但是在酒吧(MMIO)中到底显示了什么呢?(使用PCIe时):
当我使用Infiniband时,PCIe、Infiniband卡的内部缓冲区或远程计算机的RAM中有什么映射?
发布于 2013-11-22 18:31:00
HCA的MMIO空间的确切内容和使用将是供应商--也许是特定于卡的。似乎实现RDMA的简单方法是让卡及其驱动程序设置一个直接对应于远程映射内存的MMIO区域。但是,将MMIO区域视为与远程内存相同的区域,只有在一定的抽象级别上才是正确的,可能是在无限带动词库 (pdf)层或更高级别。
在该级别以下,由应用程序在主机A上发布的RDMA写入所遍历的协议栈将类似于以下内容:
在遍历IB结构之后,有效载荷遵循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/
发布于 2013-11-22 11:42:27
在PCI/PCIe卡上的BAR必须在启动时由OS (或BIOS)的PnP子系统初始化,因此它们应该指向在实际使用该卡之前很久就可以使用的内存。在此之前,内存必须在卡内。然后,PCI控制器使这些存储器区域可用于CPU的地址空间。
https://stackoverflow.com/questions/20143990
复制相似问题