PCI Express - адресация памяти против физической памяти в памяти Операции чтения / записи
Я пытаюсь найти связь между барами памяти (регистры базовых адресов) и физической памятью в транзакциях PCI Express. В своем последнем вопросе я начал понимать, что происходит, когда процессор читает / пишет по определенному адресу памяти, теперь мне нужно углубиться в транзакцию PCI Express.
Мне нужно понять, задействовано ли физическое ОЗУ в каждой транзакции чтения / записи памяти PCI Express.
1) Находится ли физическая память, адресуемая BAR памяти устройства, в самом устройстве? Или он находится в оперативной памяти?
2) Когда я запускаю транзакцию чтения / записи памяти на устройство PCI Express без встроенной физической памяти, указывая адрес памяти, как устройство может получить к нему доступ, если оно не сопоставлено с внутренней физической памятью? Когда мое устройство возвращает пакет транзакции с данными, корневой комплекс одновременно передает данные процессору и вставляет их в физическую память?
1 ответ
Основная системная RAM не имеет ничего общего с BAR. BAR просто настраивает устройство для декодирования доступа к этим адресам. Обычно устройство содержит несколько регистров конфигурации. BAR позволяет процессору получать доступ к этим регистрам, как если бы они были блоком оперативной памяти, но на самом деле там нет оперативной памяти. Корневой комплекс PCIe сконфигурирован для маршрутизации большей части доступа к памяти в ОЗУ и доступа к блоку адресов, обычно в области 3-4 ГБ, к шине PCIe. BAR в данном устройстве настраивает его для ответа на определенный блок этих адресов.
С другой стороны, некоторые устройства, в особенности видеокарты, на самом деле имеют на борту своего собственного плунжера, доступ к которому осуществляется через BAR.