Message Signaled Interrupts ( MSI, Message-Initiated Interrupts ) är en alternativ form av avbrott som finns tillgänglig i PCI version 2.2 och senare, PCI-X , och även obligatorisk i alla versioner av PCI Express . Istället för att tilldelas ett fast avbrottsbegärannummer tillåts enheten skriva ett meddelande till en specifik systemminnesadress, faktiskt mappad till processorns lokala avbrottsstyrenhet (lokal APIC ) hårdvara. För att skriva ett meddelande används samma busmastering-mekanism som för DMA.
För att skriva meddelanden kan varje enhet som använder MSI ha från ett till trettiotvå unika minnesområden.
Alla PCI Express-bussavbrott levereras alltid som MSI, även när traditionell emulering av avbrottstrådsnummer används.
Fördelar med MSI:
MSI stöds på Microsoft Windows Vista och senare operativsystem, på FreeBSD sedan version 6.3, på OpenBSD sedan version 5.0 [1] och i Linux-kärnan sedan version 2.6.8 [2]
MSI-X är en utökad version av MSI som låter dig definiera upp till flera tusen avbrott.
Trots utseendet av MSI och MSI-X för relativt länge sedan, är den verkliga utbredda användningen fortfarande inte närvarande, även om den senaste versionen av Windows 10 är installerad. Till exempel, nVidia, för att vara kompatibel med mycket gammal hårdvara, gör det inte aktivera stöd för MSI-avbrott på standard i sina drivrutiner. Och de flesta drivrutiner som är installerade i Windows ger inte MSI-stöd initialt, vilket kräver att du aktiverar det själv och för vilka det finns lämpliga verktyg. [1] Avsaknaden av en aktiverad MSI i ett körande system leder till en ökning av DPC-latens [3] , eftersom drivrutiner kräver mer uppmärksamhet från processorn i linjebaserat läge. Och det mest felaktiga beslutet i en sådan situation är att stänga av HPET , vilket faktiskt ökar belastningen på processorn ännu mer på grund av aktiveringen av mjukvarutimerbearbetningsalgoritmer istället för att använda en hårdvarutimer i sydbryggan på moderkortet.