Виртуализация x86 - x86 virtualization

редактировать

Виртуализация x86 - это использование возможностей виртуализации с аппаратной поддержкой на ЦП x86 / x86-64.

В конце 1990-х годов виртуализация x86 была достигнута с помощью сложных программных методов, необходимых для компенсации отсутствия у процессора возможностей аппаратной виртуализации при достижении разумной производительности. В 2005 и 2006 годах и Intel (VT-x), и AMD (AMD-V) представили ограниченную поддержку аппаратной виртуализации, которая позволила более простое программное обеспечение для виртуализации, но дает очень мало преимуществ в скорости. Расширенная поддержка оборудования, которая позволила существенно улучшить скорость, появилась в более поздних моделях процессоров.

Содержание

  • 1 Программная виртуализация
  • 2 Аппаратная виртуализация
    • 2.1 Центральный процессор
      • 2.1.1 Виртуальный режим 8086
      • 2.1.2 Виртуализация AMD (AMD-V)
      • 2.1.3 Виртуализация Intel (VT-x)
      • 2.1.4 Виртуализация VIA (VIA VT)
      • 2.1.5 Виртуализация прерываний (AMD AVIC и Intel APICv)
    • 2.2 Графический процессор
    • 2.3 Набор микросхем
      • 2.3.1 Виртуализация MMU ввода-вывода (AMD-Vi и Intel VT-d)
      • 2.3.2 Сетевая виртуализация (VT-c)
        • 2.3.2.1 Виртуализация ввода-вывода с одним корнем PCI-SIG (SR-IOV)
  • 3 См. Также
  • 4 Ссылки
  • 5 Внешние ссылки

Программная виртуализация

Следующее обсуждение фокусируется только на виртуализации архитектуры x86 защищенной режим.

В защищенном режиме ядро ​​операционной системы работает с более высокими привилегиями, такими как кольцо 0, и приложения с более низкими привилегиями, такими как кольцо 3. В программной виртуализации ОС хоста имеет прямой доступ к оборудованию, в то время как гостевые ОС имеют ограниченный доступ к dware, как и любое другое приложение операционной системы хоста. Один из подходов, используемых в программной виртуализации x86 для преодоления этого ограничения, называется лишением прав на кольцо, который включает запуск гостевой ОС в кольце выше (с меньшими привилегиями), чем 0.

Три метода сделали возможной виртуализацию защищенного режима:

  • Двоичная трансляция используется для перезаписи в терминах инструкций кольца 3 определенных инструкций кольца 0, таких как POPF, которые в противном случае не работали бы без уведомления или вели себя иначе при выполнении выше кольца 0, что делает классический ловушка и эмуляция виртуализации невозможны. Для повышения производительности переведенные базовые блоки необходимо кэшировать согласованным образом, который обнаруживает (например, используется в VxD ) повторное использование страниц гостевой ОС или даже самомодифицирующийся код.
  • Ряд ключевых структур данных, используемых процессором, необходимо затенять. Поскольку большинство операционных систем используют выгружаемую виртуальную память, и предоставление гостевой ОС прямого доступа к MMU означало бы потерю контроля со стороны диспетчера виртуализации, некоторые из Работа MMU x86 должна быть продублирована в программном обеспечении для гостевой ОС с использованием метода, известного как таблицы теневых страниц. Это включает в себя отказ гостевой ОС в доступе к фактическим записям таблицы страниц путем перехвата попыток доступа и их эмуляции в программном обеспечении. Архитектура x86 использует скрытое состояние для хранения дескрипторов сегментов в процессоре, поэтому после загрузки дескрипторов сегментов в процессор память, из которой они были загружены, может быть перезаписана, и невозможно получить дескрипторы обратно от процессора. Поэтому таблицы теневых дескрипторов должны использоваться для отслеживания изменений, внесенных в таблицы дескрипторов гостевой ОС.
  • Эмуляция устройства ввода-вывода: неподдерживаемые устройства в гостевой ОС должны эмулироваться с помощью эмулятора устройства, которая работает в ОС хоста.

Эти методы влекут за собой некоторые накладные расходы на производительность из-за отсутствия поддержки виртуализации MMU по сравнению с виртуальной машиной, работающей на изначально виртуализуемой архитектуре, такой как IBM System / 370.

On В традиционных мэйнфреймах классический гипервизор типа 1 был автономным и не зависел от какой-либо операционной системы и не запускал никаких пользовательских приложений. Напротив, первые продукты виртуализации x86 были нацелены на компьютеры рабочих станций и запускали гостевую ОС внутри ОС хоста путем встраивания гипервизора в модуль ядра, работающий под управлением ОС хоста (гипервизор типа 2).

Там Были некоторые разногласия относительно возможности виртуализации архитектуры x86 без аппаратной поддержки, как описано Попеком и Голдбергом. Исследователи VMware указали в статье ASPLOS 2006 года, что вышеуказанные методы сделали платформу x86 виртуализируемой в смысле соответствия трем критериям Попека и Голдберга, хотя и не с помощью классической ловушки - и-эмулировать.

Другие системы, такие как Denali, L4 и Xen, выбрали другой путь, известный как паравиртуализация, который включает перенос операционных систем для работы на результирующей виртуальной машине, которая не реализует части фактического набора команд x86, которые трудно виртуализировать. Паравиртуализированный ввод-вывод имеет значительные преимущества в производительности, как показано в исходной статье SOSP '03 Xen.

Первоначальная версия x86-64 (AMD64 ) не допускал программной полной виртуализации из-за отсутствия поддержки сегментации в длинном режиме, что делало невозможной защиту памяти гипервизора, в частности, защиту обработчика прерываний. который выполняется в адресном пространстве гостевого ядра. Версия D и более поздние 64-битные процессоры AMD (как правило, производимые с длиной волны 90 нм или меньше) добавили базовую поддержку сегментации в длинном режиме, что позволило запускать 64-битные гостевые системы на 64-битных хостах посредством двоичной трансляции.. Intel не добавляла поддержку сегментации в свою реализацию x86-64 (Intel 64 ), что сделало 64-битную программную виртуализацию невозможной на процессорах Intel, но поддержка Intel VT-x делает возможной 64-битную виртуализацию с аппаратной поддержкой. на платформе Intel.

На некоторых платформах можно запустить 64-разрядную гостевую систему в 32-разрядной ОС, если базовый процессор является 64-разрядным и поддерживает необходимые расширения виртуализации.

Аппаратная виртуализация

В 2005 и 2006 годах Intel и AMD (работающие независимо) создали новые процессорные расширения к архитектуре x86. Первое поколение аппаратной виртуализации x86 решало проблему привилегированных инструкций. Проблема низкой производительности виртуализированной системной памяти была решена с помощью виртуализации MMU, которая была добавлена ​​в набор микросхем позже.

Центральный процессор

Виртуальный режим 8086

На основе болезненного опыта с 80286 защищенным режимом, который сам по себе был недостаточно подходящие для одновременного запуска приложений DOS, Intel представила виртуальный режим 8086 в своем чипе 80386, который предлагал виртуализированные процессоры 8086 на 386 и более поздних чипах. Однако аппаратная поддержка виртуализации самого защищенного режима стала доступной 20 лет спустя.

Виртуализация AMD (AMD-V)

AMD Phenom CPU

AMD разработала свои расширения виртуализации первого поколения под кодовое имя «Pacifica», и первоначально они были опубликованы как AMD Secure Virtual Machine (SVM), но позже продавались под торговой маркой AMD Virtualization, сокращенно AMD-V.

23 мая 2006 г. AMD выпустила Athlon 64 ("Orleans" ), Athlon 64 X2 ("Windsor" ) и Athlon 64 FX ( "Windsor" ) как первые процессоры AMD, поддерживающие эту технологию.

Возможности AMD-V также присутствуют в процессорах семейства Athlon 64 и Athlon 64 X2 с редакциями «F» или «G» на сокете AM2., Turion 64 X2 и Opteron 2-го и третьего поколений процессоры, Phenom и Phenom II. Процессоры APU Fusion поддерживают AMD-V. AMD-V не поддерживается процессорами Socket 939. Единственные процессоры Sempron, которые его поддерживают, - это APU и процессоры Huron, Regor, Sargas для настольных ПК.

Процессоры AMD Opteron, начиная с линейки Family 0x10 Barcelona, ​​и процессоры Phenom II, поддерживают технологию аппаратной виртуализации второго поколения под названием Rapid Virtualization Indexing (ранее называвшуюся вложенными таблицами страниц во время разработки), позже принятый Intel как Extended Page Tables (EPT).

По состоянию на 2019 год все современные процессоры AMD на базе Zen поддерживают AMD-V.

Флаг ЦП для AMD-V - «svm». Это можно проверить в производных BSD через dmesg или sysctl и в Linux через / proc / cpuinfo . Инструкции в AMD-V включают VMRUN, VMLOAD, VMSAVE, CLGI, VMMCALL, INVLPGA, SKINIT и STGI.

Intel Virtualization (VT-x)

Intel Core i7 (Bloomfield) CPU

Ранее известный под кодовым названием «Vanderpool», VT-x представляет технологию Intel для виртуализации на платформе x86. 13 ноября 2005 г. Intel выпустила две модели Pentium 4 (модели 662 и 672) в качестве первых процессоров Intel, поддерживающих VT-x. Флаг ЦП для возможности VT-x - «vmx»; в Linux это можно проверить с помощью / proc / cpuinfoили в macOS с помощью sysctl machdep.cpu.features.

«VMX» означает расширения виртуальных машин, который добавляет 13 новых инструкций: VMPTRLD, VMPTRST, VMCLEAR, VMREAD, VMWRITE, VMCALL, VMLAUNCH, VMRESUME, VMXOFF, VMXON, INVEPT, INVVPID и VMFUNC. Эти инструкции позволяют войти в виртуальный режим выполнения и выйти из него, в котором гостевая ОС воспринимает себя как работающую с полными привилегиями (кольцо 0), но ОС хоста остается защищенной.

По состоянию на 2015 год почти все новые серверные, настольные и мобильные процессоры Intel поддерживают VT-x, за исключением некоторых процессоров Intel Atom в качестве основного исключения. На некоторых материнских платах пользователи должны включить функцию Intel VT-x в настройке BIOS, прежде чем приложения смогут ее использовать.

Intel начала включать Extended Таблицы страниц (EPT), технология для виртуализации таблиц страниц, начиная с архитектуры Nehalem, выпущенной в 2008 году. В 2010 году Westmere добавила поддержку прямого запуска логического процессора. в реальном режиме - функция под названием «неограниченный гость», для работы которой требуется EPT.

Начиная с микроархитектуры Haswell (анонсированной в 2013 г.), Intel начала включать VMCS shadowing как технология, ускоряющая вложенную виртуализацию VMM. Структура управления виртуальной машиной (VMCS) - это структура данных в памяти, которая существует ровно один раз на каждую виртуальную машину, пока она управляется VMM. При каждом изменении контекста выполнения между различными виртуальными машинами VMCS восстанавливается для текущей виртуальной машины, определяя состояние виртуального процессора виртуальной машины. Как только используется более одного VMM или вложенных VMM, возникает проблема, аналогичная тому, что требуется изобрести управление теневой таблицей страниц, как описано выше. В таких случаях VMCS необходимо дублировать несколько раз (в случае вложения) и частично реализовывать в программном обеспечении, если процессор не поддерживает аппаратное обеспечение. Чтобы повысить эффективность обработки теневых VMCS, Intel реализовала аппаратную поддержку теневого копирования VMCS.

Виртуализация VIA (VIA VT)

VIA Nano Процессоры серии 3000 и более поздние версии поддерживают технологию виртуализации VIA VT, совместимую с Intel VT -Икс. EPT присутствует в Zhaoxin ZX-C, потомке VIA QuadCore-E и Eden X4, аналогичном Nano C4350AL.

Прерывание виртуализации ( AMD AVIC и Intel APICv)

В 2012 году AMD анонсировала свой усовершенствованный виртуальный контроллер прерываний (AVIC), нацеленный на снижение накладных расходов на прерывания в средах виртуализации. Эта технология, как было заявлено, не поддерживает x2APIC. В 2016 году AVIC доступен на процессорах AMD семейства 15h моделей 6Xh (Carrizo) и новее.

Также в 2012 году Intel анонсировала аналогичную технологию для виртуализации прерываний и APIC, которая не использовалась иметь торговую марку во время объявления. Позже он получил название APIC virtualization (APICv) и стал коммерчески доступным в серии процессоров Intel Ivy Bridge EP, которые продаются как Xeon E5-26xx v2 (запущен в конце 2013 года) и как Xeon E5-46xx v2 (запущен в начале 2014 г.).

Графический процессор

Виртуализация графики не является частью архитектуры x86. Intel Технология виртуализации графики (GVT) обеспечивает виртуализацию графики как часть графических архитектур последнего поколения. Хотя APU AMD реализуют набор команд x86-64, они реализуют собственные графические архитектуры AMD (TeraScale, GCN и RDNA ), которые не поддерживают виртуализацию графики. Larrabee была единственной графической микроархитектурой, основанной на x86, но она, вероятно, не включала поддержку виртуализации графики.

Набор микросхем

Виртуализация памяти и ввода-вывода выполняется набором микросхем. Обычно эти функции должны быть включены в BIOS, которая должна поддерживать их, а также быть настроена на их использование.

Виртуализация MMU ввода / вывода (AMD-Vi и Intel VT-d)

Блок управления памятью ввода / вывода (IOMMU) позволяет гостевым виртуальным машинам напрямую использовать периферийные устройства, такие как Ethernet, графические карты с ускорением и контроллеры жестких дисков, посредством переназначения DMA и прерывания. Это иногда называют сквозной пересылкой PCI.

IOMMU также позволяет операционным системам исключать буферы отказов, необходимые для связи с периферийными устройствами, адресные пространства которых меньше, чем адресное пространство памяти операционной системы, с помощью адреса памяти перевод. В то же время IOMMU также позволяет операционным системам и гипервизорам предотвращать неисправное или вредоносное оборудование, ставящее под угрозу безопасность памяти.

И AMD, и Intel опубликовали свои спецификации IOMMU:

  • Технология виртуализации ввода-вывода AMD, " AMD-Vi », первоначально называвшаяся« IOMMU »
  • Intel« Технология виртуализации для направленного ввода-вывода »(VT-d), включенная в большинство высокопроизводительных (но не во все) Nehalem и более новые процессоры Intel

Помимо поддержки ЦП, требуется как материнская плата набор микросхем, так и системная прошивка (BIOS или UEFI ) чтобы полностью поддерживать функциональность виртуализации ввода-вывода IOMMU, чтобы ее можно было использовать. Таким образом можно виртуализировать только устройства PCI или PCI Express, поддерживающие сброс уровня функций (FLR), так как это требуется для переназначения различных функций устройства между виртуальными машинами.. Если назначаемое устройство не поддерживает прерывания с сигнализацией сообщений (MSI), оно не должно совместно использовать линии прерывания с другими устройствами, чтобы назначение было возможным. Все обычные устройства PCI, маршрутизируемые за мостом PCI / PCI-X -to-PCI Express, могут быть назначены гостевой виртуальной машине только одновременно; Для устройств PCI Express такого ограничения нет.

Сетевая виртуализация (VT-c)

  • Intel «Технология виртуализации для подключения» (VT-c).
PCI-SIG Single Root I / O Virtualization (SR-IOV)

PCI-SIG Single Root I / O Virtualization (SR-IOV) предоставляет набор общих (не связанных с x86) методов виртуализации ввода / вывода на основе стандартного аппаратного обеспечения PCI Express (PCIe) by PCI-SIG:

  • Службы трансляции адресов (ATS) поддерживают собственный ввод ввода-вывода через PCI Express посредством трансляции адресов. Для настройки таких трансляций требуется поддержка новых транзакций.
  • Однокорневой IOV (SR-IOV или SRIOV) поддерживает собственный IOV в существующих однокорневых сложных топологиях PCI Express. Требуется поддержка возможностей новых устройств для настройки нескольких виртуализированных пространств конфигурации.
  • Многокорневой IOV (MR-IOV) поддерживает собственный IOV в новых топологиях (например, блейд-серверах) за счет построения SR-IOV для обеспечения несколько корневых комплексов, которые имеют общую иерархию PCI Express.

В SR-IOV, наиболее распространенном из них, хост VMM настраивает поддерживаемые устройства для создания и распределения виртуальных «теней» их пространств конфигурации, чтобы гости виртуальных машин могли напрямую настраивать и получать доступ к таким ресурсам «теневого» устройства. При включенном SR-IOV виртуализированные сетевые интерфейсы напрямую доступны для гостей, что позволяет избежать вмешательства VMM и обеспечивает высокую общую производительность; например, SR-IOV обеспечивает более 95% пропускной способности сети «голое железо» в виртуализированном центре обработки данных NASA и в Amazon Public Cloud.

См. также

Ссылки

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

Последняя правка сделана 2021-06-22 06:10:49
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте