Трансляция адресов второго уровня
Трансляция адресов второго уровня (SLAT) , также известная как вложенный пейджинг , представляет собой технологию аппаратной виртуализации , которая позволяет избежать накладных расходов, связанных с программно-управляемыми теневыми таблицами страниц .
AMD поддерживает SLAT посредством технологии Rapid Virtualization Indexing (RVI) с момента выпуска процессоров Opteron третьего поколения (кодовое название Barcelona). микроархитектуре Реализация SLAT от Intel, известная как Extended Page Table (EPT), была представлена в Nehalem , используемой в некоторых Core i7 , Core i5 и Core i3 процессорах .
Расширения виртуализации ARM поддерживают SLAT, известный как таблицы страниц Stage-2, предоставляемые MMU Stage-2 . Гость использует MMU Stage-1. Поддержка была добавлена как необязательная в архитектуре ARMv7ve, а также поддерживается в архитектурах ARMv8 (32-битной и 64-битной).
Обзор
[ редактировать ]Введение защищенного режима в архитектуре x86 с процессором Intel 80286 привнесло концепции физической памяти и виртуальной памяти в основные архитектуры. Когда процессы используют виртуальные адреса и инструкция запрашивает доступ к памяти, процессор преобразует виртуальный адрес в физический адрес, используя таблицу страниц или буфер преобразования (TLB). При запуске виртуальной системы выделяется виртуальная память хост-системы, которая служит физической памятью для гостевой системы, и тот же процесс трансляции адресов происходит и внутри гостевой системы. Это увеличивает стоимость доступа к памяти, поскольку преобразование адресов необходимо выполнять дважды — один раз внутри гостевой системы (с использованием программно-эмулируемой таблицы гостевых страниц) и один раз внутри хост-системы (с использованием физической карты [pmap]).
Чтобы сделать этот перевод эффективным, инженеры-программисты реализовали программную таблицу теневых страниц. Таблица теневых страниц преобразует гостевую виртуальную память непосредственно в адрес физической памяти хоста. Каждая виртуальная машина имеет отдельную таблицу теневых страниц, и за управление ими отвечает гипервизор. Но затраты очень высоки, поскольку каждый раз, когда гость обновляет свою таблицу страниц, гипервизор запускает управление распределением таблицы страниц и ее изменениями.
Чтобы сделать этот перевод более эффективным, производители процессоров внедрили технологию, обычно называемую SLAT. Рассматривая каждый физический адрес гостя как виртуальный адрес хоста, небольшое расширение аппаратного обеспечения, используемого для обхода невиртуализированной таблицы страниц (теперь таблица гостевых страниц), может проходить по таблице страниц хоста. При использовании многоуровневых таблиц страниц таблицу хост-страниц концептуально можно рассматривать как вложенную в таблицу гостевых страниц. Аппаратный обход таблицы страниц может обрабатывать дополнительный уровень трансляции почти как добавление уровней в таблицу страниц.
При использовании SLAT и многоуровневых таблиц страниц количество уровней, которые необходимо пройти, чтобы найти перевод, удваивается, когда гостевой физический адрес имеет тот же размер, что и гостевой виртуальный адрес, и используются страницы того же размера. Это повышает важность кэширования значений промежуточных уровней таблиц хост- и гостевых страниц. Также полезно использовать большие страницы в таблицах страниц хоста, чтобы уменьшить количество уровней (например, в x86-64 использование страниц размером 2 МБ удаляет один уровень в таблице страниц). Поскольку память обычно выделяется виртуальным машинам с грубой степенью детализации, использование больших страниц для гостевой физической трансляции является очевидной оптимизацией, уменьшающей глубину поиска и объем памяти, необходимой для таблиц страниц хоста.
Реализации
[ редактировать ]Быстрое индексирование виртуализации
[ редактировать ]Индексация быстрой виртуализации (RVI), известная во время разработки как вложенные таблицы страниц (NPT), представляет собой AMD второго поколения аппаратную технологию виртуализации процессора для блока управления памятью (MMU). [1] [2] RVI был представлен в третьем поколении Opteron процессоров под кодовым названием Barcelona . [3]
Исследование VMware показало, что RVI обеспечивает прирост производительности до 42% по сравнению с чисто программной реализацией (теневая таблица страниц). [4] Тесты, проведенные Red Hat, показали удвоение производительности в тестах OLTP . [5]
Расширенные таблицы страниц
[ редактировать ]второго поколения Расширенные таблицы страниц (EPT) — это технология виртуализации Intel x86 для блока управления памятью (MMU). Поддержка EPT имеется Intel Core i3 , Core i5 , Core i7 и Core i9 . , среди прочего, в процессорах [6] Он также встречается в некоторых новых процессорах VIA . EPT необходим для запуска логического процессора непосредственно в реальном режиме — функция, называемая на жаргоне Intel «неограниченным гостем» и введенная в микроархитектуру Westmere . [7] [8]
Согласно оценочному документу VMware, «EPT обеспечивает прирост производительности до 48% для тестов с интенсивным использованием MMU и до 600% для микротестов с интенсивным использованием MMU», хотя на самом деле в некоторых случаях это может привести к тому, что код будет работать медленнее, чем программная реализация. случаи . [9]
Таблицы страниц Stage-2
[ редактировать ]Поддержка таблиц страниц Stage-2 присутствует в процессорах ARM, реализующих уровень исключений 2 (EL2).
Расширения
[ редактировать ]Управление выполнением на основе режима
[ редактировать ]Управление выполнением на основе режима ( MBEC ) — это расширение реализаций SLAT x86, впервые доступных в процессорах Intel Kaby Lake и AMD Zen+ (известных на последних как Guest Mode Execute Trap или GMET ). [10] Расширение расширяет бит выполнения в расширенной таблице страниц (таблица гостевых страниц) на 2 бита — один для выполнения пользователем и один для выполнения супервизора. [11]
MBE был введен для ускорения выполнения неподписанного кода в гостевом пользовательском режиме с обеспечением целостности кода в режиме ядра. В этой конфигурации неподписанные кодовые страницы могут быть помечены как исполняемые в режиме пользователя, но должны быть помечены как неисполняемые в режиме ядра. Чтобы поддерживать целостность, гарантируя, что весь исполняемый код режима гостевого ядра подписан, даже если гостевое ядро скомпрометировано, гостевое ядро не имеет разрешения на изменение бита выполнения каких-либо страниц памяти. Изменение бита выполнения или переключение таблицы гостевых страниц, которая содержит бит выполнения, делегируется объекту с более высокими привилегиями, в данном случае гипервизору хоста . Без MBE каждый переход от выполнения беззнакового режима пользователя к выполнению в подписанном режиме ядра должен сопровождаться выходом виртуальной машины в гипервизор для выполнения переключения на таблицу страниц режима ядра. При обратной операции выход из подписанного режима ядра в беззнаковый режим пользователя должен сопровождаться выходом виртуальной машины для выполнения другого переключения таблицы страниц. Выходы виртуальной машины существенно влияют на производительность выполнения кода. [12] [13] С помощью MBE одна и та же таблица страниц может использоваться совместно неподписанным кодом пользовательского режима и подписанным кодом режима ядра с двумя наборами разрешений на выполнение в зависимости от контекста выполнения. Выходы из виртуальной машины больше не нужны, когда контекст выполнения переключается между беззнаковым пользовательским режимом и подписанным режимом ядра.
Поддержка в программном обеспечении
[ редактировать ]Гипервизоры , поддерживающие SLAT, включают следующее:
- Hyper-V для Windows Server 2008 R2 , Windows 8 и более поздних версий. [14] Для Windows 8 (и более поздних версий Microsoft Windows) Hyper-V требуется SLAT. [15] [16]
- Hypervisor.framework, собственный гипервизор macOS , доступный начиная с macOS 10.10. [17]
- KVM , начиная с версии 2.6.26 основной ветки ядра Linux. [18] [19]
- Parallels Desktop для Mac , начиная с версии 5 [20]
- VirtualBox , начиная с версии 2.0.0 [21]
- VMware ESX , начиная с версии 3.5. [4]
- Рабочая станция VMware . Для VMware Workstation 14 (и более поздних версий VMware Workstation) требуется SLAT. [22]
- Ксен , начиная с версии 3.2.0 [23]
- Qubes OS — SLAT обязателен [24]
- бхайв [25] [26] — SLAT обязателен и останется обязательным
- vmm, собственный гипервизор для OpenBSD — SLAT обязателен [27] [28]
- ACRN — легкий гипервизор с открытым исходным кодом, созданный с учетом требований реального времени и критичности безопасности, оптимизированный для использования в Интернете вещей и Edge . [29]
- QEMU — встраиваемый гипервизор и эмулятор чипсета с открытым исходным кодом. [30] [31] [32] [33] [34]
Некоторым из вышеперечисленных гипервизоров для работы вообще требуется SLAT (а не только быстрее), поскольку они не реализуют программную таблицу теневых страниц; список не полностью обновлен, чтобы отразить это.
См. также
[ редактировать ]- AMD-V (кодовое название Pacifica) — поддержка аппаратной виртуализации AMD первого поколения.
- Таблица страниц
- VT-х
Ссылки
[ редактировать ]- ^ «Быстрое индексирование виртуализации с помощью Windows Server 2008 R2 Hyper-V | Блог о виртуализации» . Блоги.amd.com. 23 марта 2009 г. Проверено 16 мая 2010 г.
- ^ «Вложенный пейджинг AMD-V» (PDF) . Июль 2008 г. Архивировано из оригинала (PDF) 5 сентября 2012 г. Проверено 11 декабря 2013 г.
- ^ «Инженер VMware хвалит вложенные таблицы страниц AMD» . Searchservervirtualization.techtarget.com. 21 июля 2008 г. Проверено 16 мая 2010 г.
- ^ Перейти обратно: а б «Оценка производительности аппаратного обеспечения AMD RVI» (PDF) . Проверено 16 мая 2010 г.
- ^ «Журнал Red Hat | Red Hat Enterprise Linux 5.1 использует вложенную подкачку на процессоре AMD Barcelona для повышения производительности виртуализированных гостей» . Журнал.redhat.com. 20 ноября 2007 г. Проверено 16 мая 2010 г.
- ^ «Список технологий виртуализации Intel» . Ark.intel.com . Проверено 17 февраля 2014 г.
- ^ «Intel добавила неограниченный гостевой режим в микроархитектуру Westmere и более поздние процессоры Intel. Она использует EPT для преобразования доступа к физическому адресу гостя в физический адрес хоста. В этом режиме разрешен VMEnter без включения пейджинга».
- ^ «Руководство разработчика архитектур Intel 64 и IA-32, том 3C» (PDF) . Интел . Проверено 13 декабря 2015 г.
Если элемент управления выполнением виртуальной машины «неограниченный гость» равен 1, элемент управления выполнением виртуальной машины «включить EPT» также должен быть равен 1.
- ^ Оценка производительности Intel EPT Hardware Assist
- ^ Каннингем, Эндрю (27 августа 2021 г.). «Почему Windows 11 предъявляет такие строгие требования к оборудованию, по мнению Microsoft» . Арс Техника . Проверено 18 марта 2024 г.
- ^ Малникс, Дэвид Л. «Технический обзор семейства масштабируемых процессоров Intel Xeon» . информация . Проверено 3 сентября 2021 г.
- ^ Анализ поверхности атаки системы безопасности на основе виртуализации Windows 10.
- ^ Аркли, Брент. «Потенциальное влияние Device Guard (HVCI) на производительность» . Legacy Borec встречает блог современного управления устройствами . Проверено 3 сентября 2021 г.
- ^ «Быстрое индексирование виртуализации AMD-V и преобразование адресов второго уровня Windows Server 2008 R2 Hyper-V» . Делаем IT виртуальным . Проверено 16 мая 2010 г.
- ^ Ботт, Эд (08 декабря 2011 г.). «Есть ли на вашем компьютере все необходимое для запуска Hyper-V в Windows 8?» . ЗДНет . Проверено 17 февраля 2014 г.
- ^ «Поддержка и драйверы» . Проверено 13 декабря 2015 г.
- ^ «Гипервизор | Документация разработчика Apple» .
- ^ «Новички в ядре: Linux 2 6 26» .
- ^ Шэн Ян (12 июня 2008 г.). «Расширение KVM с помощью новой технологии виртуализации Intel» (PDF) . Linux-kvm.org . КВМ-форум. Архивировано из оригинала (PDF) 27 марта 2014 г. Проверено 17 марта 2013 г.
- ^ Инк, Параллельс. «КБ Parallels: что нового в Parallels Desktop 5 для Mac» . kb.parallels.com . Проверено 12 апреля 2016 г.
{{cite web}}
:|last=
имеет общее имя ( справка ) - ^ «Журнал изменений для VirtualBox 2.0» . Архивировано из оригинала 22 октября 2014 г.
- ^ Лиз. «Примечания к выпуску VMware Workstation 14 Pro» . docs.vmware.com . Проверено 19 ноября 2020 г.
- ^ «Тестирование: Xen 3.2.0 на четырехъядерном процессоре AMD Opteron с RVI» . 15 июня 2008 г. Проверено 13 мая 2011 г.
- ^ «Список совместимого оборудования (HCL)» . ОС Qubes . Проверено 6 января 2020 г.
- ^ Реализация поддержки эмуляции BIOS для BHyVe: гипервизор BSD.
- ^ «21.7. FreeBSD как хост с bhyve» . Проверено 13 декабря 2015 г.
- ^ Скоро выйдет в OpenBSD/amd64: собственный гипервизор
- ^ vmm(4) — монитор виртуальной машины
- ^ Проект высокого уровня управления памятью ACRN
- ^ «Функции/VT-d - QEMU» . wiki.qemu.org . Проверено 12 ноября 2023 г.
- ^ «Улучшения Hyper-V — документация QEMU» . www.qemu.org . Проверено 12 ноября 2023 г.
- ^ «Добавить вложенный перевод Intel VT-d [LWN.net]» . lwn.net . Проверено 12 ноября 2023 г.
- ^ «Виртуализация Intel: как VT-x, KVM и QEMU работают вместе» . Бинарный долг . 14 октября 2018 г. Проверено 12 ноября 2023 г.
- ^ «Функции/KVMNestedVirtualizationTestsuite — QEMU» . wiki.qemu.org . Проверено 12 ноября 2023 г.