5

Я абсолютный новичок, начинающий понимать протокол PCI Express, и мне нужны некоторые пояснения о его механике.

Я понял, что конечное устройство PCI Express может иметь некоторый бар памяти, отображенный в системной памяти (всегда ли это оперативная память, о которой мы говорим?). Мне нужно понять, что происходит, когда я отправляю из CPU на устройство (A) запрос чтения памяти, обращаясь к определенному адресу памяти (первая строка памяти, смещение 0).

Давайте предположим, что мое устройство не имеет встроенной памяти.

Корневой комплекс от имени CPU создает TLP и пересылает его на устройство (A), поскольку адрес памяти назначения назначен (A).

A получает TLP, распаковывает его и создает TLP завершения, содержащий данные, поступающие из его внутренней логики приложения.

Теперь TLP перемещается назад к корневому комплексу, который распаковывает его, собирает интересные данные и возвращает их в ЦП.

Какова роль системной памяти во время этого общения? Никто?

Связывается ли корневой комплекс (в данном случае) с физической памятью системы, кроме отправки и получения пакетов в / из конечной точки?

Для некоторых людей это может показаться глупым вопросом, но для меня очень важно понять связь между физической памятью и адресными полосами памяти, назначенными каждому устройству PCI Express.

1 ответ1

1

Когда процессор обращается к адресу памяти, это не RAM, который должен ответить. Это может быть устройство ввода-вывода. На самом деле вы можете думать о ОЗУ как о «специализированном устройстве ввода-вывода с отображением в памяти», задачей которого является просто сохранять и возвращать данные, хотя с современными современными процессорами, которые имеют кеширование и тому подобное, это не просто физически.

Я не слишком заинтересован в деталях низкого уровня PCIe, но вам, кажется, интересно, как шина PCIe взаимодействует с процессором. Это так же, как и все, что связано с процессором:

  • Отображение памяти - то есть устройство "сопоставляется", когда чтение и запись по диапазону адресов идет не в ОЗУ, а в устройство или контроллер.
  • DMA - внешнее устройство или контроллер читает / записывает раздел оперативной памяти, при этом процессор вообще не подключается.
  • Порты ввода / вывода - это просто еще одно адресное пространство (особенность семейства процессоров Intel x86), которое исторически было выделено для устройств ввода / вывода. Вы никогда не найдете ОЗУ здесь, но это работает как отображение памяти. Основное различие между портами ввода-вывода и отображением памяти состоит в том, что инструкции порта ввода-вывода всегда работают последовательно, здесь не будет происходить "неупорядоченный" или "переупорядочивание" операций, в отличие от попыток ЦП сделать это с доступом к основному объем памяти.
  • IRQ - внешнее устройство отправляет прерывание на процессор

Бары и тому подобное "отображаются" в памяти и заменяют любую оперативную память, которая может быть "под ней". Я считаю, что с MMU можно "переназначить" оперативную память под другим физическим адресом.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .