ЦП может обращаться к этой памяти, как если бы она была DRAM, посредством ввода-вывода в память.
Вы неправильно используете терминологию.
Вместо "DRAM" Вы должны использовать термин «основная память», или системная память или ОЗУ.
На современных компьютерах основная / системная память реализована с помощью некоторого типа SDRAM (синхронного динамического ОЗУ).
Сопоставление функционального термина (например,Основная память) с аппаратной реализацией (например, DDR3 SDRAM) кажется безвредным, но может привести к ложному силлогизму, что «ОЗУ изменчива» или другие недоразумения.
Отображение памяти может поместить память / память устройства PCIe в то же адресное пространство, что и основная память.
CPU может передавать порцию данных из памяти этого устройства PCIe в реальную физическую память через DMA.И тогда CPU может свободно обращаться к физической памяти.
«Реальная физическая память» является избыточной.Какие еще виды «физической памяти» существуют?Там нет "поддельной физической памяти".
Вы, похоже, имеете в виду использование буфера в основной памяти как "DMA" .
Это неверно.
DMA не требуется для использования илископировать данные в буфер в основной памяти.
Итак, вопрос в том, может ли ЦП получать доступ к памяти PCIe по картам памяти, зачем ему делать DMA?
Вы, похоже, неправильно используете терминологию.
Возможно, вы захотите изучить эту статью по PCIe .
Это потому, что шина PCIe медленная для произвольного доступа?
Доступ к данным с устройства PCIe очень медленный по сравнению с основной / системной памятью.
Это не имеет ничего общего с «произвольным доступом» .
Информация (например, извлечение данных) по шине PCIe осуществляется с помощью (высокоскоростных) пакетов (даже когда память PCIe отображается в адресное пространство процессора).
И если это так, DMA - это, по сути, один дампускорить частый произвольный доступ, а отображенный в память ввод-вывод - для случайного доступа?
Вы неправильно используете терминологию.
Если программное обеспечение написано неэффективно или необходимо использовать данные только один раз, то оно может получить доступ к памяти PCIe.
Но если программное обеспечение собирается получить доступ к данным более одного раза или считает «локальную» копию более эффективной, тогда программное обеспечение может выделить буфер в основной / системной памяти и скопировать данные из памяти PCIeв основную / системную память, используя PIO (запрограммированный ввод / вывод ЦПУ) или DMA (прямой доступ к памяти через мастер шины PCIe или системный контроллер DMA).
Использование буферов широко распространено в компьютерах.
Большая часть «вычислительного времени» тратится на буферизацию, копирование и перемещение данных.
Ввод-вывод почти всегда выполняется между устройством и буфером в основной памяти, даже если прямая передача с устройства на устройствовозможно.
Не маркируйте использование буфера как "DMA" .
Для получения дополнительной информации о DMA см. Почему драйверу необходимо отображать буферы DMA, когда dma-engine находится в устройстве?
и dma против ввода-вывода, управляемого прерыванием .