4 ms·
The TLP header has the destination device's address (in the PCIe tree), so switches just switch. The BARs are related to the host memory map, which has no inher
by angry_octet 10y ago
The TLP header has the destination device's address (in the PCIe tree), so switches just switch. The BARs are related to the host memory map, which has no inherent meaning to devices. nVidia GPU direct introduces a virtual memory region that maps device memory, but I'm not sure if they internally have an IOMMU. For transfers to a device on another bus on the same system the remote device can't be addressed, so it has to ping-pong through system memory, but a device in a different node can be addressed.
The device could query the root complex (the OS) to find the bus address of the device with a particular host memory address but I don't know if that is a common idiom.
(How this works with Multi-Root IO Virtualisation I'm not sure and it gives me a headache.)