Одним словом да. Первоначально (в 8086 году) он назывался DMA, или Прямой доступ к памяти. В то время существовал специальный чип контроллера DMA, который ЦПУ должен был запрограммировать для передачи данных между оперативной памятью и периферийными устройствами, но, по крайней мере, еще в первые дни PCI (и я думаю, что на оригинальной шине ISA тоже, но я не известно о любых устройствах, которые это сделали), сами периферийные устройства также могут быть мастерами шины и передавать данные сами.
Как правило, они по-прежнему требуют, чтобы процессор сообщал им, к каким частям памяти они должны обращаться, но некоторые устройства с плохим поведением, такие как контроллеры firewire, открывают доступ DMA ко всему оперативной памяти системы по указанию какого-либо внешнего устройства на шине firewire. Некоторые современные системы PCIe имеют интеллектуальные мосты PCIe, которые можно запрограммировать на выполнение трансляции адресов и ограничений доступа, поэтому ЦП может запретить подключенным к ним устройствам доступ к памяти, которого они не должны, но в настоящее время это кажется ограниченным для материнских плат большого типа сервера, а не для вашего рабочий стол.
Что касается того, как шина PCI(e) позволяет любому устройству выполнять чтение / запись по любому адресу, будь то в основной системной памяти (как правило, управляется непосредственно ЦП в эти дни) или на каком-либо другом устройстве на шине. Таким образом, одно устройство PCI(e) может напрямую обращаться к памяти или регистрам другого устройства PCI(e) или оперативной памяти основной системы, независимо от того, где оно находится. Мосты PCI(e) направляют запрос к соответствующему устройству, так как они настроены (микропрограммой / BIOS системы и, возможно, позже ядром ОС), чтобы знать, какие диапазоны адресов "принадлежат" какому-либо устройству.