Making some tests with an FPGA, I found out the Intel 8th/9th gen CPUs are capable of 4KB read request size even though lspci shows 512B.
DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+
RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+ FLReset-
MaxPayload 256 bytes, MaxReadReq 512 bytes
Sending a MemRd TLP requesting 4096B (1024DWORDs) results in the reception of 16x 256B (MPS) TLPs.
* Why is that possible? Can I reliably use that result at least for that particular CPU? (i5-9600K)
* Is it a per CPU basis?
* The datasheet doesn't mention any maximum value: https://www.intel.com/content/dam/www/public/us/en/documents/datasheets/8th-gen-core-family-datashee...
For more complete information about compiler optimizations, see our Optimization Notice.