Может ли кто-нибудь уточнить разницу между адресами памяти и ввода / вывода на шине PCI / PCIe?
Я понимаю, что адреса ввода-вывода являются 32-разрядными, ограничены диапазоном от 0 до 4 ГБ и не отображаются на системную память (ОЗУ), а адреса памяти являются либо 32-разрядными, либо 64-разрядными.
У меня складывается впечатление, что адресация памяти должна отображаться в доступной оперативной памяти, это правда? Если устройство PCI желает передавать данные по адресу памяти, этот адрес должен существовать в реальном системном ОЗУ (и выделяется во время конфигурации PCI), а не в виртуальной памяти.
Таким образом, если устройству PCI необходимо передавать только небольшой объем данных за раз, когда нет никакой выгоды помещать его в ОЗУ или использовать DMA, тогда адресация ввода / вывода будет хорошей (например, параллельный порт, реализованный на карте PCI),
И почему я продолжаю читать, что адресация ввода / вывода PCI / PCIe устарела в пользу адресации памяти?
Спасибо!