Interested Article - Message Signaled Interrupts

Message Signaled Interrupts (MSI, Прерывания, инициируемые сообщениями ) — альтернативная форма прерываний, доступная в PCI версии 2.2 и более поздних, PCI-X , а также обязательная в PCI Express любых версий. Вместо присваивания фиксированного номера запроса на прерывание , устройству разрешается записывать сообщение по определённому адресу системной памяти, на деле отображённому на аппаратуру локального контроллера прерываний (local APIC ) процессора. Для записи сообщения используется тот же механизм захвата шины (bus mastering), что и для DMA.

Описание

Для записи сообщений каждое устройство, использующее MSI, может иметь от одной до тридцати двух уникальных областей памяти.

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

Достоинства MSI:

  • возможность полного отказа от проводников INT# от устройств и разъёмов PCI до главного контроллера прерываний ( ), а также от самого главного контроллера прерываний, что упрощает материнскую плату.
  • в многопроцессорных и многоядерных системах устройства, использующие несколько областей MSI, получают возможность самостоятельно выбирать процессор/ядро для обработки конкретного прерывания, причём делать это полностью на уровне аппаратуры без исполнения программного кода. Это позволяет оптимизировать работу путём размещения большей части структур драйвера устройства и связанного с ним программного обеспечения (сетевых протоколов и т. д.) в кэше конкретного процессора или же в его «ближней» NUMA-памяти.

MSI поддерживается в операционных системах Microsoft Windows Vista и более поздних, в ОС FreeBSD с версии 6.3, в ОС OpenBSD с версии 5.0 , а также в ядре Linux начиная с версии 2.6.8

MSI-X

MSI-X (впервые определенный в PCI 3.0) позволяет устройству выделять до 2048 прерываний. Одиночный адрес, используемый оригинальным MSI, оказался недостаточным для некоторых архитектур. В частности, он затруднял адресацию отдельных прерываний на разные процессоры, что полезно в некоторых высокоскоростных сетевых приложениях. MSI-X позволяет использовать большее количество прерываний и назначает каждому из них отдельный адрес и слово данных. Устройства с поддержкой MSI-X не обязательно поддерживают все 2048 прерываний.

Текущая реализация

Несмотря на сравнительно давнее появление MSI и MSI-X, их широкое использование до сих пор отсутствует, даже при установке самой последней версии Windows 10. Например, nVidia всё ещё не активирует поддержку прерываний MSI по умолчанию в своих драйверах из-за совместимости с устаревшим оборудованием. Кроме того, большинство драйверов, установленных в Windows, изначально не поддерживают MSI, что требует ручной активации с помощью соответствующих утилит. Отсутствие включённого MSI в работающей системе приводит к повышению задержек DPC , так как в Line-based режиме драйвера требуют больше внимания со стороны процессора.

И самое ошибочное решение в такой ситуации является отключение HPET , что на самом деле ещё больше увеличивает нагрузку на процессор из-за активации программных алгоритмов обработки таймеров вместо использования аппаратного таймера в южном мосте материнской платы. [ источник не указан 211 дней ]

Примечания

  1. . Архивировано из 3 мая 2016 года.
  2. . Архивировано из 4 июня 2012 года.
  3. PCI Express Base Specification Revision 1.0a. — PCI-SIG, April 2003.
  4. PCI Express Base Specification Revision 1.1. — PCI-SIG, March 2005.
  5. . — PCI-SIG.
  6. (амер. англ.) . guru3D Forums . Дата обращения: 5 апреля 2021. 13 апреля 2021 года.

Литература

  • Стандарт PCI 2.2, часть 6.8
  • Coleman, James. . — Intel Corporation, 2009.

Ссылки

  • // Microsoft
  • // LWN
  • // freebsd-arch, 2004
  • // Sun
Источник —

Same as Message Signaled Interrupts