Как отправить сигнал на карту PCI?

Карта PCI может иметь некоторую связанную с ней память (отображаемую в пространство памяти или в пространство ввода-вывода).

Теперь предположим, что у нас есть карта PCI Ethernet (и она использует ввод-вывод с отображением памяти), карта Ethernet будет иметь некоторую память в качестве буфера для размещения данных для отправки по кабелю, и всякий раз, когда драйвер Ethernet хочет отправить данные вниз провод, он может попросить карту Ethernet сделать это.

Теперь я предполагаю, что часть отображаемой памяти для карты Ethernet является «регистром команд», и когда вы записываете, например, строку "send it" в этот регистр команд, карта Ethernet отправляет буфер по проводам.

Теперь мой вопрос: как карта Ethernet узнает, что память для регистра управления была записана? Опрашивает ли карта Ethernet содержимое памяти для регистра управления, или есть какой-то механизм, который используется для автоматической отправки сигнала на карту Ethernet всякий раз, когда адрес памяти для регистра управления записывается (что-то вроде прерывания, но в обратном направлении)?


person Steve    schedule 09.10.2017    source источник
comment
См. Также en.wikipedia.org/wiki/Conventional_PCI#PCI_command_codes   -  person xmojmr    schedule 09.10.2017


Ответы (2)


Диапазон адресов отображаемого в память ввода-вывода для карты PCI контролируется регистрами базового адреса (BAR) устройства PCI. Когда ЦП обращается к адресу памяти в диапазоне BAR, доступ к памяти направляется непосредственно на устройство (вместе с данными, если это операция записи), а не в память. Когда устройство PCI получает доступ к памяти, оно немедленно обновляет назначенный регистр управления. Если доступ MMIO является операцией чтения, устройство отвечает ЦП соответствующим значением.

person prl    schedule 09.10.2017

MMIO позволяет использовать инструкции загрузки и сохранения вместо инструкций IN и OUT, но устройство по-прежнему видит команды, а не только обращения к памяти.

Вот почему это MM IO, а не просто отображаемая память устройства.

person Peter Cordes    schedule 09.10.2017