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 до главного контроллера прерываний (IO APIC), а также от самого главного контроллера прерываний, упрощает материнскую плату.
  • в многопроцессорных и многоядерных системах устройства, использующие несколько областей MSI, получают возможность самостоятельно выбирать процессор/ядро для обработки конкретного прерывания, причем делать это полностью на уровне аппаратуры без исполнения программного кода. Это позволяет оптимизировать работу путем размещения большей части структур драйвера устройства и связанного с ним программного обеспечения (сетевых протоколов и т.д.) в кэше конкретного процессора или же в его "ближней" NUMA-памяти.

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

MSI-X[править | править вики-текст]

MSI-X - расширенный вариант MSI, позволяющий определять до нескольких тысяч прерываний.

Примечания[править | править вики-текст]

Литература[править | править вики-текст]

  • Стандарт PCI 2.2, часть 6.8

Ссылки[править | править вики-текст]