Основной ответ
Многие устройства имеют некоторую память, используемую для связи с другими устройствами или процессором.
Оперативная память - это не только память на вашем компьютере. Это просто "память общего назначения".
Контроллер жесткого диска имеет некоторую память, используемую в качестве буфера. Если вы сохраняете файл - ваш процессор помещает данные в память контроллера жесткого диска, помещает данные в управляющие регистры, и контроллер диска начинает работать с ним. CPU просто помещает данные в память контроллера диска и больше не занят.
Аналогично с видеокартами, звуковыми картами, сетевыми картами. У них должна быть память, чтобы работать.
Допустим, мы создаем очень простую "графическую карту" для PCI, которая поддерживает 1-пиксельный "экран", и этот пиксель является просто светодиодом с 8-битной регулировкой яркости (0-255). Мы подключаем этот диод к некоторому микроконтроллеру и добавляем 1-байтовую память снаружи. Мы подключаем эту память к PCI и микроконтроллеру.
Наш микроконтроллер считывает память каждый кадр и управляет нашим светодиодом в соответствии с данными, считанными из памяти. Со стороны компьютера - мы просто используем команду записи в память PCI и записываем 0-255 чисел в эту память.
Вот как работают простые устройства PCI. Вся информация выше очень упрощена для лучшего понимания.
Более сложный ответ (если вы уже что-то знаете об оборудовании ПК)
В PCI мало адресных мест.
Адреса памяти имеют ширину 32 бита (есть также 64-битный PCI-X / не PCI Express!), Поддерживают кэширование и могут быть пакетными транзакциями.
Существуют также адреса ввода-вывода, и они являются адресным пространством портов ввода-вывода архитектуры Intel x86.