Как настроены PCI / PCIe BAR для доступа к памяти на устройстве?

В моем предыдущем вопросе я установил, что адрес памяти, используемый устройствами PCI / PCIe, не должен отображаться в системную память, но может также ссылаться на память «на устройстве», например, RAM или регистры.

Но как создаются БАР в этом случае?

Это просто случай (который во время настройки):

  • Устройство объявляет, что оно хочет разоблачить, например 16 МБ памяти,
  • BAR получает базовый адрес,
  • После этого устройство отображает смещения во внутреннюю память?

Чем это отличается от того, когда устройство хочет получить доступ к 16 МБ системной памяти (т. Е. Устройство не имеет собственной памяти?)

Благодаря!

EDIT: как различается адресация:
О. Устройство не имеет собственной памяти, например видеоадаптера, использующего общую память.
B: Устройство имеет память и делится ею с системой (например, гипотетический адаптер жесткого диска с буферами RAM).

В обоих случаях BAR, назначенные ОС и занимающие адресную память?

Это различие важно в системе, полностью занятой оперативной памятью (например, 32-разрядная система с установленной 4 ГБ оперативной памятью сможет поддерживать видеоадаптер с общей емкостью 2 ГБ [ситуация (A)]. Но в той же системе нет Адресное пространство осталось для гипотетического адаптера жесткого диска с бортовым 2 ГБ оперативной памяти [ситуация (B)]?

Ваша интерпретация настройки BAR верна.

Тогда как он отличается.

Память / регистры на борту устройства обычно представляют собой специальную оперативную память, это может быть двухпортовая ОЗУ (когда в каждой ячейке есть два порта, один из которых подключен к главной шине, другой – к внутренней шине устройства, это обеспечивает более быстрый и параллельный доступ от обоих Сторон), это могут быть регистры или даже непосредственно некоторые входы или выходы некоторого FPGA – программируемого массива ворот, который управляет некоторой логикой устройства.

Основное системное ОЗУ, к которому устройство может обращаться с помощью DMA, чаще всего имеет совершенно другое обозначение. В большинстве случаев он используется в качестве источника данных или назначения данных для устройства. Например, в случае с дисководом, к которому памяти будет обращаться устройство, чтобы считывать данные или записывать эти данные на носитель. Местоположение таких источников и мест назначения не ограничено системными буферами. Например, поисковый вызов (свопинг в виртуальной памяти и из него) выполняется непосредственно на / из адреса физической страницы рассматриваемой страницы.

Другим возможным видом доступа DMA является то, что устройство запрашивает у системы некоторую область памяти для своих нужд. Одним из примеров является встроенный видеоадаптер, который обычно не имеет собственного ОЗУ, чтобы двоичное представление изображения отображалось на экране. Однако этот случай очень похож на операцию записи на диск. Разница лишь в том, что она непрерывна.

Устройства PCI (e) не могут запрашивать выделенный буфер системной памяти, по крайней мере, не используя стандартные методы конфигурации PCI (e) (BAR). Единственными устройствами, которые обычно это делают, являются встроенные графические процессоры, и у них есть специальная поддержка в наборе микросхем материнской платы, который резервирует буфер памяти, но это только понимается и устанавливается системным BIOS.

БАР не используются для буферов устройств в системном ОЗУ, и устройство не запрашивает такие буферы через БАР.

Скорее, драйвер хоста выделит буфер из системной памяти и сообщит устройству, где он находится, возможно, просто записав адрес в регистр устройства, возможно, как часть более сложного протокола. Затем устройство обращается к буферу ОЗУ системы так же, как и к буферам доступа, связанным с операциями ввода-вывода, путем инициирования операций чтения и записи памяти, направленных в буфер.

  • Я подключил 8-контактный кабель EPS (CPU) к порту PCI-E графического процессора. Это повреждено?
  • PCIe 16x в 1x слот
  • Должна ли работать карта 2.0 на 1.0 слот PCI Express?
  • PCI-E SATA-контроллер
  • Могу ли я разместить 8x PCIe 2.0 Promise EX8760T в слот 16x PCIe 2.0 на моем Asus P7H55-M / CSM?
  • Какой интерфейс мне нужен для моей видеокарты?
  • Что такое PCI-Express Lane?
  • Видеокарта PCI Express 3.0 в слот PCI-E 1.0 x16
  • Понимание чипсетов PCI-Express
  • Несколько (3) мониторов с использованием видеокарты Intel iGPU + PCI-e
  • Сетевая карта PCIe отключает выход DVI (но не выход VGA) на Shuttle SG41J1 +
  • Давайте будем гением компьютера.