Усовершенствованный программируемый контроллер прерываний
В вычислительной сфере усовершенствованный Intel программируемый контроллер прерываний ( APIC ) представляет собой семейство программируемых контроллеров прерываний . Как следует из названия, APIC является более продвинутым, чем программируемый контроллер прерываний Intel 8259 (PIC), что особенно позволяет создавать многопроцессорные системы. Это один из нескольких архитектурных проектов, предназначенных для решения проблем эффективности маршрутизации прерываний в многопроцессорных компьютерных системах.
APIC представляет собой конструкцию с разделенной архитектурой, в которой локальный компонент (LAPIC) обычно интегрирован в сам процессор, а дополнительный APIC ввода-вывода на системной шине. Первым APIC был 82489DX — это был дискретный чип, который функционировал как локальный APIC, так и APIC ввода-вывода. 82489DX позволял создавать симметричные многопроцессорные системы (SMP) с процессорами Intel 486 и ранними Pentium ; например, эталонная двусторонняя система 486 SMP использовала три микросхемы 82489DX, две в качестве локальных APIC и одну в качестве APIC ввода-вывода. Начиная с процессора P54C , локальная функциональность APIC была интегрирована в микросхему процессоров Intel. Первым выделенным APIC ввода-вывода был Intel 82093AA, который предназначался для PIIX3 систем на базе .
Обзор
[ редактировать ]В системе Intel APIC есть два компонента: локальный APIC (LAPIC) и APIC ввода-вывода . В каждом процессоре системы имеется один LAPIC. В самой первой реализации ( 82489DX ) LAPIC представлял собой дискретную схему, в отличие от его более поздней реализации в кремнии процессоров Intel. Обычно для каждой периферийной шины в системе имеется один APIC ввода-вывода. В исходных конструкциях систем LAPIC и APIC ввода-вывода были соединены специальной шиной APIC. Более новые системы используют системную шину для связи между всеми компонентами APIC.
Каждый APIC, будь то дискретный чип или встроенный в ЦП, имеет регистр версии, содержащий четырехбитный номер версии для конкретной реализации APIC. Например, 82489DX имеет номер версии APIC 0, тогда как версия 1 была присвоена первому поколению локальных APIC, интегрированных в процессоры Pentium 90 и 100. [ 1 ]
В системах, содержащих PIC 8259 , 8259 может быть подключен к LAPIC в загрузочном процессоре системы (BSP), одном из APIC ввода-вывода системы или к тому и другому. Однако логически 8259 подключается только один раз в любой момент времени.
Дискретный APIC
[ редактировать ]Чип Intel APIC первого поколения, 82489DX, который предназначался для использования с процессорами Intel 80486 и ранними процессорами Pentium, на самом деле представляет собой внешний локальный APIC и APIC ввода-вывода в одной схеме. В спецификации Intel MP 1.4 он называется «дискретным APIC» в отличие от «интегрированного APIC», присутствующего в большинстве процессоров Pentium. [ 2 ] У 82489DX было 16 линий прерываний; [ 3 ] у него также была особенность: он мог терять некоторые прерывания ISA. [ 4 ]
В многопроцессорной системе 486 каждый процессор должен был быть сопряжен со своим собственным 82489DX; кроме того, в качестве APIC ввода-вывода пришлось использовать дополнительный 82489DX. 82489DX не мог эмулировать 8259A (XT-PIC), поэтому их также пришлось включить в качестве физических чипов для обратной совместимости. [ 5 ] 82489DX был упакован как 132-контактный PQFP . [ 3 ]
Интегрированные локальные APIC
[ редактировать ]Локальные APIC (LAPIC) управляют всеми внешними прерываниями для определенного процессора в системе SMP. Кроме того, они могут принимать и генерировать межпроцессорные прерывания (IPI) между LAPIC. LAPIC могут поддерживать до 224 используемых векторов прерываний от APIC ввода-вывода. Номера векторов от 0 до 31 и от 0 до 255 зарезервированы для обработки исключений процессорами x86.
Все процессоры Intel, начиная с микроархитектуры P5 ( P54C ), имеют встроенный локальный APIC. [ 6 ] [ 7 ] Однако если локальный APIC отключен в процессоре P5, его нельзя повторно включить программно; это ограничение больше не существует в процессорах P6 и более поздних версиях. [ 7 ]
Функция прерываний с сигналом сообщений (MSI) спецификаций PCI 2.2 и более поздних версий не может использоваться без включения локального APIC. [ 8 ] Использование MSI устраняет необходимость в APIC ввода-вывода. Кроме того, в режиме MSI поддерживается до 224 прерываний, а совместное использование IRQ не допускается. [ 9 ]
APIC-таймер
[ редактировать ]Еще одним преимуществом локального APIC является то, что он также обеспечивает таймер высокого разрешения (порядка одной микросекунды или лучше), который можно использовать как в интервальном, так и в однократном режиме. [ 7 ]
Таймер APIC имел свои первоначальные проблемы с приемкой. В документе Microsoft от 2002 года (в котором вместо этого предлагалось использовать высокоточный таймер событий ) таймер LAPIC критиковался за «плохое разрешение» и утверждалось, что «кремниевые часы иногда очень глючат». [ 10 ] Тем не менее, таймер APIC используется, например, в Windows 7 , когда профилирование включено , и в Windows 8 при любых обстоятельствах. (До того, как Windows 8 заявила об исключительных правах на этот таймер, он также использовался некоторыми программами, такими как CPU-Z .) В Microsoft Windows таймер APIC не является общим ресурсом. [ 11 ]
Апериодические прерывания, предлагаемые таймером APIC, используются ядра Linux. бестиковым ядром особенность. Эта необязательная функция по умолчанию появилась в версии 2.6.18. При включении на компьютере с таймером APIC ядро не использует 8253 программируемый интервальный таймер для учета времени. [ 12 ] В документе VMware отмечается, что «программное обеспечение не имеет надежного способа определения своей частоты. Как правило, единственный способ определить частоту локального таймера APIC — это измерить ее с помощью таймера PIT или CMOS, что дает лишь приблизительный результат». [ 13 ]
APIC ввода-вывода
[ редактировать ]APIC ввода-вывода содержат таблицу перенаправления, которая используется для маршрутизации прерываний, получаемых от периферийных шин, на один или несколько локальных APIC. Ранние APIC ввода-вывода (например, 82489DX, SIO.A и PCEB/ESC) поддерживали только 16 линий прерываний, но более поздние, такие как 82093AA (отдельный чип для PIIX3/PIIX4), поддерживали 24 линии прерываний. [ 9 ] Он был упакован как 64-контактный PQFP . [ 14 ] 82093AA обычно подключался к PIIX3 / PIIX4 и использовал встроенные устаревшие PIC 8259. [ 14 ] ICH1 интегрировали и Intel 815 APIC ввода-вывода.
Согласно тесту Intel 2009 года с использованием Linux , APIC ввода-вывода снизил задержку прерываний почти в три раза по сравнению с эмуляцией 8259 (XT-PIC), а использование MSI снизило задержку еще больше, почти в семь раз относительно к базовой линии XT-PIC. [ 15 ]
Варианты
[ редактировать ]xAPIC микроархитектуре был представлен в Pentium 4 , а x2APIC — это последнее поколение программируемого контроллера прерываний Intel, представленное в Nehalem в ноябре 2008 года. [ 16 ] Основные улучшения x2APIC касаются количества поддерживаемых процессоров и производительности интерфейса.
x2APIC теперь использует 32 бита для адресации процессоров, что позволяет адресовать до 2 32 − 1 ЦП, использующий режим физического назначения. Режим логического назначения теперь работает по-другому и вводит кластеры; в этом режиме можно адресовать до 2 20 − 16 процессоров.
Улучшенный интерфейс уменьшает количество необходимых обращений к регистру APIC для отправки межпроцессорных прерываний (IPI). Из-за этого преимущества KVM может и действительно эмулирует x2APIC для старых процессоров, которые его физически не поддерживают, и эта поддержка предоставляется QEMU , начиная с Conroe , и даже для процессоров AMD Opteron серии G (ни один из которых изначально не поддерживает x2APIC). . [ 17 ] [ 18 ]
APICv — это торговая марка Intel для поддержки аппаратной виртуализации , направленная на снижение нагрузки на прерывания в гостевых системах. APICv был представлен в серии процессоров Ivy Bridge-EP , которая продается как Xeon E5-26xx v2 (выпущен в конце 2013 года) и как Xeon E5-46xx v2 (выпущен в начале 2014 года). [ 19 ] [ 20 ] AMD анонсировала аналогичную технологию под названием AVIC . [ 21 ] [ 22 ] Доступны модели семейства 15х, процессоры 6Xh (Carrizo) и новее. [ 23 ]
Проблемы
[ редактировать ]Существует ряд известных ошибок в реализациях систем APIC, особенно в отношении способа 8254 подключения . Неисправные BIOS могут неправильно настроить маршрутизацию прерываний или предоставлять неверные таблицы ACPI и спецификаций Intel MultiProcessor таблицы (MPS).
APIC также может быть причиной сбоя системы, если операционная система не поддерживает его должным образом. В старых операционных системах ввод-вывод и локальные APIC часто приходилось отключать. Хотя это уже невозможно из-за преобладания симметричных многопроцессорных и многоядерных систем, ошибки в прошивке и операционных системах теперь являются редким явлением.
Соревнование
[ редактировать ]AMD и Cyrix однажды предложили несколько схожую по назначению архитектуру OpenPIC , поддерживающую до 32 процессоров; [ 24 ] примерно в 1995 году у него была, по крайней мере, декларативная поддержка со стороны IBM и Compaq . [ 25 ] Однако ни одна материнская плата x86 с OpenPIC не была выпущена. [ 26 ] После провала OpenPIC на рынке x86 компания AMD лицензировала APIC Intel для своих процессоров AMD Athlon и более поздних версий.
Однако IBM разработала свой многопроцессорный контроллер прерываний (MPIC) на основе спецификаций регистров OpenPIC. [ 27 ] MPIC использовался в проектах на базе PowerPC , в том числе в проектах IBM, например, в некоторых RS/6000 . системах [ 28 ] но также и от Apple, вплоть до их Power Mac G5 . [ 29 ] [ 30 ]
См. также
[ редактировать ]- Межпроцессорное прерывание (IPI)
- Прерывать
- Обработчик прерываний
- Задержка прерывания
- Прерывания, сигнализируемые сообщениями (MSI)
- Немаскируемое прерывание (NMI)
Ссылки
[ редактировать ]- ^ Спецификация Intel MultiProcessor , версия 1.4, стр. 3-5, май 1997 г.
- ^ Спецификация Intel MultiProcessor , версия 1.4, стр. 1-4, май 1997 г.
- ^ Jump up to: а б Бадри Рам (2001). Интерфейс для современных микропроцессоров . Тата МакГроу-Хилл Образование. п. 314. ИСБН 978-0-07-043448-6 .
- ^ «Описание подсистемы ввода-вывода APIC» . freebsd.org . Проверено 14 мая 2023 г.
- ^ Спецификация Intel MultiProcessor, версия 1.4, стр. 5-3, май 1997 г.
- ^ Скотт М. Мюллер (2011). Модернизация и ремонт компьютеров (20-е изд.). Издательство Que. п. 242. ИСБН 978-0-13-268218-3 .
- ^ Jump up to: а б с Уве Вальтер, Винсент Оберле Поддержка таймера с точностью до микросекунды для ядра Linux
- ^ «Центр разработки оборудования для Windows» . msdn.microsoft.com . Июнь 2017.
- ^ Jump up to: а б Джеймс Коулман, Уменьшение задержки прерывания за счет использования прерываний, сигнализируемых сообщениями , стр. 10-11.
- ^ «Рекомендации по обеспечению поддержки мультимедийного таймера» . Майкрософт . 20 сентября 2002 г. Архивировано из оригинала 28 июля 2012 г.
- ^ «Windows 8 и таймер APIC» . Social.msdn.microsoft.com . Архивировано из оригинала 22 февраля 2014 года . Проверено 14 мая 2023 г.
- ^ «База знаний VMware» . kb.vmware.com .
- ^ Хронометраж на виртуальных машинах VMware (для VMware vSphere 5.0, Workstation 8.0, Fusion 4.0) , стр. 8
- ^ Jump up to: а б «Ресурсно-дизайнерский центр разработки Intel» . Интел .
- ^ Джеймс Коулман, Уменьшение задержки прерывания за счет использования прерываний, сигнализируемых сообщениями , стр. 19
- ^ «Intel Nehalem mit X2APIC — расширенная архитектура xAPIC (изображение 27/27) — ComputerBase» . www.computerbase.de .
- ^ «Re: [Qemu-devel] [Вопрос], почему x2apic установлен по умолчанию без поддержки хоста» . lists.gnu.org .
- ^ «[Qemu-devel] [PATCH] target-i386: включить x2apic по умолчанию при более позднем обновлении» . lists.nongnu.org .
- ^ Джун Накадзима (2012). «Обзор неиспользуемых и новых функций для виртуализации прерываний/APIC» (PDF) . Линукс . Проверено 14 мая 2023 г.
- ^ «Тестирование производительности виртуализации APIC и Iozone* — программное обеспечение Intel®» . программное обеспечение.intel.com .
- ^ Вэй Хуан, Представление усовершенствованного контроллера виртуальных прерываний AMD , XenSummit, 2012 г.
- ^ Йорг Рёдель (август 2012 г.). «Виртуализация прерываний нового поколения для KVM» (PDF) . Линукс . Проверено 14 мая 2023 г.
- ^ «[Xen-devel] [RFC PATCH 0/9] Представляем AMD SVM AVIC» . www.mail-archive.com .
- ^ «Определение OpenPIC из энциклопедии журнала PC Magazine» . Pcmag.com. 01.12.1994 . Проверено 3 ноября 2011 г.
- ^ Брук Кротерс (20 марта 1995 г.). «AMD и Cyrix предлагают альтернативную спецификацию SMP» . InfoWorld : 8. ISSN 0199-6649 .
- ^ Андре Д. Бальса, примечание, приложенное к «Бенчмаркингу Linux: Часть III - Интерпретация результатов тестирования», опубликованному в выпуске 24 Linux Gazette, январь 1998 г.
- ^ IBM Многопроцессорный контроллер прерываний . Книга данных , заархивированная 23 февраля 2014 г. в Wayback Machine.
- ^ Средство оценки TTAP Arca Systems. Распределенная система IBM Corporation RS/6000, работающая под управлением AIX версии 4.3.1. TCSEC оценил безопасность C2 , стр. 29
- ^ Сингх, Амит (13 октября 2006 г.). Взгляните внутрь двухпроцессорного Mac Power Mac на базе G5 – через базу данных InformIT.
- ^ Примечание разработчика Power Mac G5 (устаревшая версия) , стр. 26
Дальнейшее чтение
[ редактировать ]Внешние ссылки
[ редактировать ]- Спецификация архитектуры Intel 64 x2APIC (PDF)
- Дополнительную информацию об архитектуре Intel x2APIC можно найти в Intel 64 и IA-32. руководствах разработчиков программного обеспечения для архитектур