PCIe 对等通信

Ap.*_*ole 3 pci-bus pci-e

两个独立的设备(端点)能否在不涉及 PCIe 的 Root Complex 的情况下相互通信(根据 PCIe 规范是的,但如何)?

在内存和 IO 事务的情况下,一个端点如何知道另一个端点的地址?

交换机如何在两个下游端口之间路由数据包?

感谢致敬

小智 5

对的,这是可能的。

正如您所说,内存写入事务需要接收方的“有效”地址,数据和内存读取事务需要创建写入或读取请求所需的“有效”地址和数据“大小”。

对于来自下游端口的请求,交换机通过与其“基本和限制”寄存器进行比较,负责路由到任何上游(根)或下游(点对点)。

交换机路由:

  1. 先在它自己的bar上查看地址,如果匹配,就会消费。每个开关中都有两个条。

  2. 如果不是,则根据请求类型检查其 IO/P-MMIO/NP-MMIO Base 和 Limit Register 对。

  3. 如果 TLP 传输到上游端口,并且与它的基本寄存器和限制寄存器匹配,则它将在辅助接口上作为“不支持的请求”进行处理。(它会再次传递到下游端口,而不是它接收到的端口,因为它可能是对等通信)。

  4. 如果在任何接口处不匹配,它将转发到其主接口,因为它不匹配网桥和该网桥下的任何功能。