Разработчик устройства решает, использовать ли пространство ввода-вывода, пространство MMIO или и то, и другое. (Но я думаю, что спецификация PCIe может иметь некоторые требования по реализации пространства MMIO.)
Два типа операций отображаются как разные типы транзакций, когда они поступают на устройство. Это зависит от устройства, чтобы определить, как их обрабатывать. Это может не иметь никакого значения.
Операции записи в память опубликованы, то есть ответ от устройства не требуется, в то время как записи ввода / вывода не опубликованы, поэтому ответ требуется. Конечно, и чтения из памяти, и из операций ввода-вывода не публикуются. (https://paritycheck.wordpress.com/2008/01/13/pcie-posted-vs-non-posted-transactions)
Могут также быть различия в том, как процессор обрабатывает их. Например, в x86 команды ввода-вывода сериализуются (и, следовательно, медленнее).