Message Signaled Interrupts

Message Signaled Interrupts

Message Signaled Interrupts, in PCI 2.2 and later in PCI Express, are an alternative way of generating an interrupt. Traditionally, a device has an interrupt pin which it asserts when it wants to interrupt the host CPU. While PCI Express does not have separate interrupt pins, it has special messages to allow it to emulate a pin assertion or deassertion. Message Signaled Interrupts allow the device to write a small amount of data to a special address in memory space. The chipset will deliver the corresponding interrupt to a CPU.

A common misconception with Message Signaled Interrupts is that they allow the device to send data to the CPU as part of the interrupt. The data that is sent as part of the write is used by the chipset to determine which interrupt to trigger on which CPU; it is not available for the device to communicate additional information to the interrupt handler.

Some non-PCI architectures also use Message Signaled Interrupts. For example, HP GSC devices do not have interrupt pins and can only interrupt by writing directly to the processor's interrupt register in memory space.

Advantages over pin-based interrupts

While more complex to implement in a device, MSI has some significant advantages.

On the mechanical side, fewer pins makes for a simpler, cheaper, and more reliable connector. While this is no advantage to the standard PCI connector, PCI Express takes advantage of these savings.

MSI increases the number of interrupts that are possible. While conventional PCI was limited to 4 interrupts per card (and, because they were shared among all cards, most used just 1), message signaled interrupts allow dozens of interrupts per card, when that is useful.

There is also a slight performance advantage. In software, a pin-based interrupt could race with a posted write to memory. That is, the PCI device would write data to memory and then send an interrupt to indicate the DMA write was complete. However, a PCI bridge or memory controller might buffer the write in order to not interfere with some other memory use. The interrupt could arrive before the DMA write was complete, and the processor could read stale data from memory. To prevent this race, interrupt handlers were required to read from the device to ensure that the DMA write had finished. This read had a moderate performance penalty. An MSI write cannot pass a DMA write, so the race is eliminated.

MSI types

PCI defines two optional extensions to support Message Signaled Interrupts, MSI and MSI-X. While PCIe is software compatible with legacy interrupts it requires MSI or MSI-X.

MSI

MSI (first defined in PCI 2.2) permits a device to allocate 1, 2, 4, 8, 16 or 32 interrupts. The device is programmed with an address to write to (generally a control register in an interrupt controller), and a 16-bit data word to identify it. The interrupt number is added to the data word to identify the interrupt. Some platforms such as Windows do not use all 32 interrupts but only use up to 16 interrupts.[citation needed]

MSI-X

MSI-X (first defined in PCI 3.0) permits a device to allocate up to 2048 interrupts. The single address used by original MSI was found to be restrictive for some architectures. In particular, it made it difficult to target individual interrupts to different processors, which is helpful in some high-speed networking applications. MSI-X allows a larger number of interrupts and gives each one a separate target address and data word. Devices with MSI-X do not necessarily support 2048 interrupts but at least 64 which is double than the maximum MSI interrupts.

Optional features in MSI (64-bit addressing and interrupt masking) are also mandatory with MSI-X.

References

  • PCI Local Bus Specification Revision 2.2, section 6.8 (MSI)
  • PCI Local Bus Specification Revision 2.3, section 6.8 (MSI)
  • PCI Local Bus Specification Revision 3.0, section 6.8 (MSI & MSI-X)
  • PCI Express Base Specification Revision 1.0a, section 6.1 (MSI & MSI-X)
  • PCI Express Base Specification Revision 1.1, section 6.1 (MSI & MSI-X)
  • The MSI-X definition, freely available from the PCI SIG (also includes information on MSI)

External links


Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Look at other dictionaries:

  • Message-Signaled Interrupts — (MSI) sind eine Art von Interrupts, verfügbar in Computersystemen mit PCI 2.2 und höher. Dabei fordern die MSI fähigen Geräte eine Behandlung nicht über ein elektronisches Signal an, sondern über Nachrichten, die über den PCI Bus an eine… …   Deutsch Wikipedia

  • Message Signaled Interrupts — (MSI, Прерывания, инициируемые сообщениями) в PCI версии 2.2 и более поздних, PCI X, а также в PCI Express альтернативная форма прерываний: вместо присваивания номера запроса на прерывание, устройству разрешается записывать сообщение по… …   Википедия

  • Interrupt — This article is about computer interrupts. For the study of the effect of disruptions on job performance, see Interruption science. In computing, an interrupt is an asynchronous signal indicating the need for attention or a synchronous event in… …   Wikipedia

  • Conventional PCI — PCI Local Bus Three 5 volt 32 bit PCI expansion slots on a motherboard (PC bracket on left side) …   Wikipedia

  • APIC — Der Advanced Programmable Interrupt Controller (APIC, nicht zu verwechseln mit ACPI) sorgt für die Verteilung von Interrupts in x86 und Itanium basierenden Computersystemen. Der APIC besteht im Gegensatz zum PIC aus zwei Komponenten, dem Local… …   Deutsch Wikipedia

  • Apic — Der Advanced Programmable Interrupt Controller (APIC, nicht zu verwechseln mit ACPI) sorgt für die Verteilung von Interrupts in x86 und Itanium basierenden Computersystemen. Der APIC besteht im Gegensatz zum PIC aus zwei Komponenten, dem Local… …   Deutsch Wikipedia

  • LAPIC — Der Advanced Programmable Interrupt Controller (APIC, nicht zu verwechseln mit ACPI) sorgt für die Verteilung von Interrupts in x86 und Itanium basierenden Computersystemen. Der APIC besteht im Gegensatz zum PIC aus zwei Komponenten, dem Local… …   Deutsch Wikipedia

  • Advanced Programmable Interrupt Controller — Der Advanced Programmable Interrupt Controller (APIC, nicht zu verwechseln mit ACPI) sorgt für die Verteilung von Interrupts in x86 und Itanium basierenden Computersystemen. Der APIC besteht im Gegensatz zum PIC aus zwei Komponenten, dem Local… …   Deutsch Wikipedia

  • Intel APIC Architecture — The Intel APIC Architecture is a system of Advanced Programmable Interrupt Controllers (APICs) designed by Intel for use in Symmetric Multi Processor (SMP) computer systems. It was originally implemented by the Intel 82093AA and 82489DX, and is… …   Wikipedia

  • Программируемый контроллер прерываний — Контроллер прерываний  микросхема или встроенный блок процессора, отвечающий за возможность последовательной обработки запросов на прерывание от разных устройств. Английское название  Programmable Interrupt Controller (PIC). Как правило… …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”