APIC

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

APIC (англ. Advanced Programmable Interrupt Controller) — улучшенный программируемый контроллер прерываний. Он был добавлен в процессоре Pentium.

Описание[править | править вики-текст]

APIC использовался в многоядерных/многопроцессорных системах, начиная с Intel Pentium (ядро P54). Начиная с этого процессора, каждый следующий снабжался интегрированным Local APIC-ом.

Преимущества расширенного контроллера прерываний:

  • возможность реализации межпроцессорных прерываний — сигналов от одного процессора другому
  • поддержка до 256 входов IRQ, в отличие от 15 на классической IBM PC
  • крайне быстрый доступ к регистрам текущего приоритета прерывания и подтверждения прерывания. Контроллер прерываний, совместимый с IBM PC, исполнялся как устройство шины ISA с очень медленным доступом к его регистрам (порт 0x20).

APIC поддерживался в ОС Windows, начиная с Windows NT 4.0.

В настоящий момент наблюдается тенденция к отказу от IO APIC, как и проводников IRQ, и переходу на Message Signaled Interrupts.

APIC состоит из двух модулей: англ. local APIC и англ. IO APIC:

  • LOCAL APIC — располагается в ядре процессора, если система многоядерна - в каждом ядре.
  • I/O APIC — контроллер, расположенный на системной плате, обычно как часть микросхем обрамления процессора (например, микросхема Intel 82489DX).

Проводники IRQ от устройств подсоединены к IO APIC. Для общения local APIС и IO APIC, а также local APIC различных ядер друг с другом, используется передняя (frontside) шина многопроцессорной системы, также используемая для соединения процессоров и контроллера памяти. Варианты использования передней шины для общения APIC между собой — отдельные проводники, или же специальные типы транзакций — менялись от поколения к поколению процессоров Pentium и Core.

Необходимость в новом контроллере, способном заменить программируемый контроллер прерываний (PIC), возникла с появлением следующих проблем:

  • Появление многоядерных систем, требующих распределения прерываний по ядрам.
  • Резкий рост числа подключенных устройств, превышающее количество свободных IRQ процессора.
  • Скорость передачи данных устройств, превышающая скорость работы PIC.

Современные IOAPIC поддерживают 24 прерывания, хотя стандарт предусматривает поддержку большего числа устройств.

Расширенный контроллер прерываний впервые начал применяться на двухпроцессорных системных платах, из-за более сложной обработки прерываний от различных устройств (не совсем очевидно, какой из процессоров должен реагировать на прерывание). Затем расширенный контроллер прерываний начал использоваться и на однопроцессорных системах — устройствам становится доступно большее число прерываний (24 вместо 16), плюс, несколько плат расширения могут разделять между собой общее прерывание.

См. также[править | править вики-текст]

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

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