- Программируемый контроллер прерываний
-
Контроллер прерываний — микросхема или встроенный блок процессора, отвечающий за возможность последовательной обработки запросов на прерывание от разных устройств. Английское название — Programmable Interrupt Controller (PIC).
Как правило представляет собой электронное устройство, иногда выполненное как часть самого процессора или же сложных микросхем его обрамления, входы которого присоединены электрически к соотвествующим выходам различных устройств. Номер входа контроллера прерываний обозначается "IRQ". Следует отличать этот номер от приоритета прерывания, а также от номера входа в таблицу векторов прерываний (INT). Так, например, в IBM PC в реальном режиме работы (в этом режиме работает MS-DOS) процессора прерывание от стандартной клавиатуры использует IRQ 1 и INT 9.
В первоначальной платформе IBM PC используется очень простая схема прерываний. Контроллер прерываний представляет из себя простой счётчик, который либо последовательно перебирает сигналы разных устройств, либо сбрасывается на начало при нахождении нового прерывания. В первом случае устройства имеют равный приоритет, во втором устройства с меньшим (или большим при обратном счёте) обладают большим приоритетом.
В процессоре Pentium был добавлен расширенный контроллер прерываний (APIC). Он состоит из модуля, встроенного в сам процессор (в случае многоядерной системы - в каждое ядро), называемого локальный контроллер прерываний (local APIC), и центрального модуля, выполненного в одном экземпляре даже на многоядерном оборудовании, обычно как часть микросхем обрамления процессора (IO APIC).
Проводники IRQ от устройств подсоединены к IO APIC. Для общения local APIС и IO APIC, а также local APIC различных ядер друг с другом, используется передняя (frontside) шина многопроцессорной системы, также используемая для соединения процессоров и контроллера памяти. Варианты использования передней шины для общения APIC между собой - отдельные проводники, или же специальные типы транзакций - менялись от поколения к поколению процессоров Pentium и Core.
APIC использовался в многоядерных/многопроцессорных системах, начиная с Pentium Pro. Начиная с поколения Pentium 4 он стал широко использоваться и в наборах микросхем одноядерных систем.
Преимущества расширенного контроллера прерываний:
- возможность реализации межпроцессорных прерываний - сигналов от одного процессора другому
- поддержка до 256 входов IRQ, в отличие от 16 на классической IBM PC
- крайне быстрый доступ к регистрам текущего приоритета прерывания и подтверждения прерывания. Контроллер прерываний, совместимый с IBM PC, исполнялся как устройство шины ISA с очень медленным доступам к его регистрам (порт 0x20).
APIC поддерживался в ОС Windows, начиная с Windows NT 4.
В настоящий момент наблюдается тенденция к отказу от IO APIC, как и проводников IRQ, и переходу на Message Signaled Interrupts.
Ссылки
Wikimedia Foundation. 2010.