I have an understanding problem when it comes to PCIe connections. In the PCIe interface data is transferred between devices using TLP packets. In a memory mapped configuration if a piece of software wants to send data to a device, then it must write the data to a predefined memory location, which is mapped to this specific device.
When are the TLP packets created? Is the data stored in memory and the device has to "fetch" the data using TLP packets (e.g. memory read), or does the MMU of the CPU automatically detect, that this is a mapped memory region and automatically "converts" the data to TLP packets and sends them over the interface?
Thank you in advance!