APIC для многопроцессорных систем

В статье о прерываниях IRQ мы уже упоминали такой термин, как APIC. Возможно, читателям хотелось бы узнать чуть подробнее об этой технологии.

Сначала разберемся с тем, что же означает само это словосочетание. Аббревиатура APIC расшифровывается как Advanced Programmable Interrupt Controller (усовершенствованный программируемый контроллер прерываний).

APIC

Advanced Programmable Interrupt Controller – это контроллер прерываний, разработанный Intel и пришедший на смену ранее использовавшемуся контроллеру PIC (программируемому контроллеру прерываний).

Принцип работы контроллера

Контроллер выполнен в виде двух раздельных устройств. Одна часть контроллера размещена прямо в ядре процессора (так называемый Local APIC, или LAPIC), другая (I/O APIC) — на материнской плате.

Схема работы APIC
Схема работы интерфейса Ввода / Вывода APIC через системную шину с встроенными в процессор

В современных компьютерах LAPIC содержится в каждом процессорном ядре, присутствующем в системе. В первых реализациях APIC LAPIC и I/O APIC были связаны друг с другом при помощи специальной шины. В современных системах для связи обеих контроллеров служит системная шина.

Преимущества

Основное преимущество APIC по сравнению с PIC – это поддержка многопроцессорных систем. Да и разрабатывался этот контроллер преимущественно для систем с несколькими процессорами. Все дело в том, что в системах, где установлено несколько процессорных ядер, крайне важно поддерживать параллельность работы всех процессоров. А для этого нужна была такая система, которая могла бы доставлять прерывания одновременно всем процессорам. Поэтому основная обязанность APIC – это распределение прерываний между процессорами.

В однопроцессорных системах введение APIC также оказалось полезным новшеством. В частности, Advanced Programmable Interrupt Controller позволил устройствам PCI отказаться от привязки к прерываниям шины ISA, что привело к улучшению производительности систем. Сам же набор стандартных прерываний был расширен с доступных в шине ввода/вывода ISA 16 прерываний до 24.

История возникновения

APIC впервые появился в системах, основанных на процессорах 486 DX. Сначала его предполагалось использовать лишь в многопроцессорных решениях, но впоследствии он появился и в однопроцессорных.

APIC 486 DX2
Процессор 486 DX поколения

В системах, основанных на процессорах 486, а также ранних Pentium (до архитектуры P54C), контроллер LAPIC был установлен не в процессоре, а на системной плате.

Полностью поддержка контроллера на уровне ОС появилась лишь начиная с Windows XP, в Windows 2000 была доступна лишь ограниченная поддержка.

Присутствие в BIOS

Большинство пользователей компьютера может при желании включить или выключить поддержку данной технологии в программе BIOS Setup. Обычно для этой цели служит опция BIOS ACPI APIC Support. Однако стоит помнить, что отключение поддержки APIC в BIOS обычно приводит к невозможности загрузки современных операционных систем, начиная с Windows 2000. При этом многие старые ОС, такие как Windows 95, 98 и ME могут нестабильно работать с этой опцией, поскольку они разрабатывались с учетом поддержки PIC.

Также стоит учитывать, что поддержка APIC является составной частью технологии ACPI, поэтому если вы выключите в BIOS саму поддержку ACPI, то вы не сможете использовать и Advanced Programmable Interrupt Controller.

Заключение

APIC – новый, разработанный компанией Intel программируемый контроллер прерываний, впервые использовавшийся в системах, основанных на старших моделях линейки процессоров Pentium. Введение этого контроллера позволило улучшить обработку прерываний, как в многопроцессорных, так и в однопроцессорных решениях.

Порекомендуйте Друзьям статью: