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

2996
Jacopo Reggiani

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

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

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

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

2

1 ответ на вопрос

5
psusi

Main system RAM has nothing to do with a BAR. The BAR simply configures the device to decode access to those addresses. Normally the device contains a number of configuration registers. The BAR allows the CPU to access these registers as if they were a block of ram, but there isn't actually ram there. The PCIe root complex is configured to route most memory access to RAM, and access to a block of addresses, typically in the 3-4 GB area, to the PCIe bus instead. The BAR in a given device configures it to respond to a specific block of those addresses.

On the other hand, some devices, most notably video cards, actually do have their own ram on board that is accessed via the BAR.

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

Похожие вопросы