Вопрос PCI Express - адресация памяти и физическая память в памяти Операции чтения / записи


Я пытаюсь найти связь между БД памяти (Base Address Registers) и физической памятью в транзакциях PCI Express. В моем последнем вопрос Я начал понимать, что происходит, когда процессор читает / записывает по определенному адресу памяти, теперь мне нужно углубиться в транзакцию PCI Express.

Мне нужно понять, вовлечена ли физическая RAM в каждую транзакцию чтения / записи памяти PCI Express.

1) Ли физическая память, адресованная устройством Memory BAR, находится в самом устройстве? Или он находится в ОЗУ?

2) Когда я запускаю транзакцию чтения / записи памяти на устройство PCI Express без внутренней физической памяти, указывая адрес памяти, как устройство может обращаться к нему, если оно не отображается на внутреннюю физическую память? Когда мое устройство возвращает пакет транзакций с данными, может ли корневой комплекс предоставить данные процессору и вставить его в физическую память?


2
2018-06-14 09:24


происхождения




ответы:


Основное ОЗУ системы не имеет ничего общего с BAR. BAR просто настраивает устройство для декодирования доступа к этим адресам. Обычно устройство содержит несколько конфигурационных регистров. BAR позволяет процессору получить доступ к этим регистрам будто они были блоком барана, но там нет барана. Корневой комплекс PCIe сконфигурирован для перенаправления большого объема доступа к ОЗУ оперативной памяти и доступа к блоку адресов, обычно в области 3-4 ГБ, вместо шины PCIe. BAR в данном устройстве настраивает его для ответа на конкретный блок этих адресов.

С другой стороны, на некоторых устройствах, в первую очередь на видеокартах, на самом деле есть собственный баран на борту, к которому осуществляется доступ через BAR.


5
2018-06-14 14:41



Спасибо за ваш ответ, но что-то мне остается неясным. Когда я начинаю транзакцию записи с памятью на устройство PCIe, действительно ли я записываю в регистр внутри устройства? Или кто-то пишет внутри ОЗУ ПК? - Jacopo Reggiani
@JacopoReggiani, вы пишете на устройство. Независимо от того, является ли это регистром, или фактический барабан на борту устройства соответствует самому устройству. Как я сказал в первом предложении, это не имеет никакого отношения к основному системному RAM. - psusi
Большинство систем используют субтрактивную логику для декодирования, где маршрутизируется операция памяти. Основная системная память (DRAM) будет отображена на определенный набор диапазонов в контроллере памяти. Если адрес находится за пределами этого диапазона, он маршрутизируется на шины ввода-вывода на основе их БАР. В x86, если I / O все еще невостребован, он обычно перенаправляется на поддерживающий интерфейс DMI / Legacy. Таким образом, входы / выходы PCIe должны быть невостребованы контроллерами DRAM и перенаправлены на соответствующую шину PCIe, BAR которой перекрывается с MMIO. - Jon Brauer