何时在内存映射 PCIe 配置中创建 TLP 数据包?

When are TLP packets created in a memory mapped PCIe configuration?

我对 PCIe 连接有理解上的问题。在 PCIe 接口中,数据使用 TLP 数据包在设备之间传输。在内存映射配置中,如果某个软件想要将数据发送到设备,则它必须将数据写入预定义的内存位置,该位置映射到该特定设备。

何时创建 TLP 数据包?数据是否存储在内存中并且设备必须使用 TLP 数据包 "fetch" 数据(例如内存读取),或者 CPU 的 MMU 是否自动检测到这是一个映射内存区域并自动"converts" 数据到 TLP 数据包并通过接口发送?

提前致谢!

CPU 使用物理 MMIO 地址生成内存事务。根据地址,内存事务被路由到适当的根端口。到目前为止,该操作超出了 PCIe 规范的范围。根端口构建 TLP 并通过 PCIe 将其发送出去。如果操作是读取(需要响应),根端口从设备接收响应 TLP 和数据并将数据发送回适当的 CPU.