stringtranslate.com

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

В вычислительной сфере усовершенствованный программируемый контроллер прерываний 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] доступны модели семейства 15h, 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]

Смотрите также

Рекомендации

  1. ^ Спецификация Intel MultiProcessor, версия 1.4, стр. 3-5, май 1997 г.
  2. ^ Спецификация Intel MultiProcessor, версия 1.4, стр. 1-4, май 1997 г.
  3. ^ аб Бадри Рам (2001). Интерфейс для современных микропроцессоров. Тата МакГроу-Хилл Образование. п. 314. ИСБН 978-0-07-043448-6.
  4. ^ «Описание подсистемы ввода-вывода APIC». freebsd.org . Проверено 14 мая 2023 г.
  5. ^ Спецификация Intel MultiProcessor, версия 1.4, стр. 5-3, май 1997 г.
  6. ^ Скотт М. Мюллер (2011). Модернизация и ремонт компьютеров (20-е изд.). Издательство Que. п. 242. ИСБН 978-0-13-268218-3.
  7. ^ abc Уве Вальтер, Винсент Оберле Поддержка таймера с точностью до микросекунды для ядра Linux
  8. ^ «Центр разработки оборудования для Windows» . msdn.microsoft.com . Июнь 2017.
  9. ^ ab Джеймс Коулман, Уменьшение задержки прерывания за счет использования прерываний, сигнализируемых сообщениями, стр. 10-11.
  10. ^ «Рекомендации по обеспечению поддержки мультимедийного таймера» . Майкрософт . 20 сентября 2002 г. Архивировано из оригинала 28 июля 2012 г.
  11. ^ «Windows 8 и таймер APIC» . Social.msdn.microsoft.com . Архивировано из оригинала 22 февраля 2014 года . Проверено 14 мая 2023 г.
  12. ^ «База знаний VMware». kb.vmware.com .
  13. ^ Хронометраж на виртуальных машинах VMware (для VMware vSphere 5.0, Workstation 8.0, Fusion 4.0), стр. 8
  14. ^ ab «Центр ресурсов и дизайна для разработок Intel». Интел .
  15. ^ Джеймс Коулман, Уменьшение задержки прерывания за счет использования прерываний, сигнализируемых сообщениями, стр. 19
  16. ^ «Intel Nehalem mit X2APIC — Расширенная архитектура xAPIC (изображение 27/27) — ComputerBase» . www.computerbase.de .
  17. ^ «Re: [Qemu-devel] [Вопрос], почему x2apic установлен по умолчанию без поддержки хоста» . lists.gnu.org .
  18. ^ «[Qemu-devel] [PATCH] target-i386: включить x2apic по умолчанию при более поздних обновлениях» . lists.nongnu.org .
  19. ^ Джун Накадзима (2012). «Обзор неиспользуемых и новых функций виртуализации прерываний/APIC» (PDF) . Линукс . Проверено 14 мая 2023 г.
  20. ^ «Тестирование производительности виртуализации APIC и Iozone * — программное обеспечение Intel®» . программное обеспечение.intel.com .
  21. ^ Вэй Хуан, Представление усовершенствованного контроллера виртуальных прерываний AMD, XenSummit 2012
  22. ^ Йорг Рёдель (август 2012 г.). «Виртуализация прерываний нового поколения для KVM» (PDF) . Линукс . Проверено 14 мая 2023 г.
  23. ^ «[Xen-devel] [RFC PATCH 0/9] Представляем AMD SVM AVIC» . www.mail-archive.com .
  24. ^ «Определение OpenPIC из энциклопедии журнала PC Magazine» . Pcmag.com. 01.12.1994 . Проверено 3 ноября 2011 г.
  25. Брук Кротерс (20 марта 1995 г.). «AMD и Cyrix предлагают альтернативную спецификацию SMP» . InfoWorld : 8. ISSN  0199-6649.
  26. ^ Андре Д. Бальса, примечание, приложенное к «Бенчмаркингу Linux: Часть III - Интерпретация результатов тестирования», опубликованному в выпуске 24 Linux Gazette, январь 1998 г.
  27. ^ Многопроцессорный контроллер прерываний IBM. Книга данных, заархивированная 23 февраля 2014 г. в Wayback Machine.
  28. ^ Средство оценки TTAP Arca Systems. Распределенная система IBM Corporation RS/6000, работающая под управлением AIX версии 4.3.1. Оценка безопасности C2 TCSEC, стр. 29
  29. Сингх, Амит (13 октября 2006 г.). Взгляните внутрь двухпроцессорного Mac Power Mac на базе G5 – через базу данных InformIT.
  30. ^ Примечание разработчика Power Mac G5 (устаревшая версия), стр. 26

дальнейшее чтение

Внешние ссылки