APIC для многопроцессорных систем
В статье о прерываниях IRQ мы уже упоминали такой термин, как APIC. Возможно, читателям хотелось бы узнать чуть подробнее об этой технологии.
Сначала разберемся с тем, что же означает само это словосочетание. Аббревиатура APIC расшифровывается как Advanced Programmable Interrupt Controller (усовершенствованный программируемый контроллер прерываний).
Advanced Programmable Interrupt Controller – это контроллер прерываний, разработанный Intel и пришедший на смену ранее использовавшемуся контроллеру PIC (программируемому контроллеру прерываний).
Содержание статьи
Принцип работы контроллера
Контроллер выполнен в виде двух раздельных устройств. Одна часть контроллера размещена прямо в ядре процессора (так называемый Local APIC, или LAPIC), другая (I/O APIC) — на материнской плате.
В современных компьютерах LAPIC содержится в каждом процессорном ядре, присутствующем в системе. В первых реализациях APIC LAPIC и I/O APIC были связаны друг с другом при помощи специальной шины. В современных системах для связи обеих контроллеров служит системная шина.
Преимущества
Основное преимущество APIC по сравнению с PIC – это поддержка многопроцессорных систем. Да и разрабатывался этот контроллер преимущественно для систем с несколькими процессорами. Все дело в том, что в системах, где установлено несколько процессорных ядер, крайне важно поддерживать параллельность работы всех процессоров. А для этого нужна была такая система, которая могла бы доставлять прерывания одновременно всем процессорам. Поэтому основная обязанность APIC – это распределение прерываний между процессорами.
В однопроцессорных системах введение APIC также оказалось полезным новшеством. В частности, Advanced Programmable Interrupt Controller позволил устройствам PCI отказаться от привязки к прерываниям шины ISA, что привело к улучшению производительности систем. Сам же набор стандартных прерываний был расширен с доступных в шине ввода/вывода ISA 16 прерываний до 24.
История возникновения
APIC впервые появился в системах, основанных на процессорах 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. Введение этого контроллера позволило улучшить обработку прерываний, как в многопроцессорных, так и в однопроцессорных решениях.