stringtranslate.com

Перевод адресов второго уровня

Трансляция адресов второго уровня (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  МБ удаляет один уровень в таблице страниц). Поскольку память обычно выделяется виртуальным машинам с грубой гранулярностью, использование больших страниц для гостевого физического перевода является очевидной оптимизацией, уменьшающей глубину поиска и требуемую память для таблиц страниц хоста.

Реализации

Быстрая индексация виртуализации

Rapid Virtualization Indexing (RVI), известная во время разработки как Nested Page Tables (NPT), представляет собой технологию аппаратной виртуализации второго поколения AMD для блока управления памятью процессора (MMU). [1] [2] RVI была представлена ​​в третьем поколении процессоров Opteron под кодовым названием Barcelona . [3]

В исследовательской работе VMware было обнаружено, что RVI обеспечивает до 42% прироста производительности по сравнению с реализацией только программного обеспечения (теневая таблица страниц). [4] Тесты, проведенные Red Hat, показали удвоение производительности для тестов OLTP . [5]

Расширенные таблицы страниц

Extended Page Tables (EPT) — это технология виртуализации второго поколения x86 от Intel для блока управления памятью (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]

Таблица страниц 2-го этапа

Поддержка таблицы страниц второго уровня присутствует в процессорах ARM, реализующих уровень исключений 2 (EL2).

Расширения

Управление выполнением на основе режима

Mode Based Execution Control ( MBEC ) — это расширение реализаций x86 SLAT, впервые появившееся в процессорах Intel Kaby Lake и AMD Zen+ (в последнем известное как Guest Mode Execute Trap или GMET ). [10] Расширение расширяет бит выполнения в расширенной таблице страниц (таблица гостевых страниц) до 2 бит — один для выполнения пользователем и один для выполнения супервизором. [11]

MBE был введен для ускорения выполнения неподписанного кода гостевого режима пользователя с обеспечением целостности кода режима ядра. В этой конфигурации неподписанные страницы кода могут быть помечены как выполняемые в режиме пользователя, но должны быть помечены как невыполняемые в режиме ядра. Для поддержания целостности путем обеспечения подписи всего исполняемого кода гостевого режима ядра даже при компрометации гостевого ядра гостевое ядро ​​не имеет разрешения на изменение бита выполнения любых страниц памяти. Изменение бита выполнения или переключение таблицы гостевых страниц, содержащей бит выполнения, делегируется более привилегированной сущности, в данном случае гипервизору хоста . Без MBE каждый вход из неподписанного выполнения пользовательского режима в подписанное выполнение режима ядра должен сопровождаться выходом виртуальной машины в гипервизор для выполнения переключения на таблицу страниц режима ядра. При обратной операции выход из подписанного режима ядра в неподписанный режим пользователя должен сопровождаться выходом виртуальной машины для выполнения другого переключения таблицы страниц. Выходы виртуальной машины существенно влияют на производительность выполнения кода. [12] [13] С MBE одна и та же таблица страниц может совместно использоваться неподписанным кодом пользовательского режима и подписанным кодом режима ядра с двумя наборами разрешений на выполнение в зависимости от контекста выполнения. Выходы из виртуальной машины больше не нужны, когда контекст выполнения переключается между неподписанным пользовательским режимом и подписанным режимом ядра.

Поддержка программного обеспечения

К гипервизорам , поддерживающим SLAT, относятся следующие:

Некоторым из вышеперечисленных гипервизоров для работы вообще (а не просто для ускорения) требуется SLAT, поскольку они не реализуют программную теневую таблицу страниц; список не полностью обновлен, чтобы отразить это.

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

Ссылки

  1. ^ "Быстрая индексация виртуализации с помощью Windows Server 2008 R2 Hyper-V | Блог о виртуализации". Blogs.amd.com. 2009-03-23 ​​. Получено 2010-05-16 .
  2. ^ "AMD-V Nested Paging" (PDF) . Июль 2008. Архивировано из оригинала (PDF) 2012-09-05 . Получено 2013-12-11 .
  3. ^ "Инженер VMware хвалит вложенные таблицы страниц AMD". Searchservervirtualization.techtarget.com. 2008-07-21 . Получено 2010-05-16 .
  4. ^ ab "Оценка производительности AMD RVI Hardware Assist" (PDF) . Получено 2010-05-16 .
  5. ^ "Red Hat Magazine | Red Hat Enterprise Linux 5.1 использует вложенную подкачку страниц на процессоре AMD Barcelona для повышения производительности виртуализированных гостей". Magazine.redhat.com. 2007-11-20 . Получено 2010-05-16 .
  6. ^ "Список технологий виртуализации Intel". Ark.intel.com . Получено 2014-02-17 .
  7. ^ "Intel добавила неограниченный гостевой режим на микроархитектуре Westmere и более поздних процессорах Intel, он использует EPT для преобразования доступа к физическому адресу гостя в физический адрес хоста. В этом режиме разрешен VMEnter без включения подкачки".
  8. ^ "Руководство разработчика архитектур Intel 64 и IA-32, том 3C" (PDF) . Intel . Получено 13 декабря 2015 г. Если элемент управления выполнением виртуальной машины "unrestricted guest" равен 1, элемент управления выполнением виртуальной машины "enable EPT" также должен быть равен 1.
  9. ^ Оценка производительности Intel EPT Hardware Assist
  10. ^ Каннингем, Эндрю (2021-08-27). «Почему у Windows 11 такие строгие требования к оборудованию, по словам Microsoft». Ars Technica . Получено 2024-03-18 .
  11. ^ Малникс, Дэвид Л. «Технический обзор семейства масштабируемых процессоров Intel Xeon». Intel . Получено 3 сентября 2021 г.
  12. ^ Анализ поверхности атаки безопасности на основе виртуализации Windows 10
  13. ^ Аркли, Брент. «Потенциальное влияние Device Guard (HVCI) на производительность». Блог Borec's Legacy meets Modern Device Management . Получено 3 сентября 2021 г.
  14. ^ "AMD-V Rapid Virtualization Indexing и Windows Server 2008 R2 Hyper-V Second Level Address Translation". Doing IT Virtual . Получено 2010-05-16 .
  15. ^ Ботт, Эд (2011-12-08). «Есть ли у вашего ПК то, что нужно для запуска Hyper-V в Windows 8?». ZDNet . Получено 2014-02-17 .
  16. ^ "Поддержка и драйверы" . Получено 13 декабря 2015 г.
  17. ^ «Гипервизор | Документация для разработчиков Apple».
  18. ^ «Новички в ядре: Linux 2 6 26».
  19. ^ Шэн Ян (2008-06-12). "Расширение KVM с новой технологией виртуализации Intel" (PDF) . linux-kvm.org . Форум KVM. Архивировано из оригинала (PDF) 2014-03-27 . Получено 2013-03-17 .
  20. ^ Inc, Parallels. "KB Parallels: Что нового в Parallels Desktop 5 для Mac". kb.parallels.com . Получено 12 апреля 2016 г. {{cite web}}: |last=имеет общее название ( помощь )
  21. ^ "Changelog for VirtualBox 2.0". Архивировано из оригинала 2014-10-22.
  22. ^ liz. "VMware Workstation 14 Pro Release Notes". docs.vmware.com . Получено 2020-11-19 .
  23. ^ "Тесты: Xen 3.2.0 на AMD Quad-Core Opteron с RVI". 2008-06-15 . Получено 2011-05-13 .
  24. ^ "Список совместимого оборудования (HCL)". Qubes OS . Получено 2020-01-06 .
  25. ^ Реализация поддержки эмуляции BIOS для BHyVe: гипервизора BSD
  26. ^ "21.7. FreeBSD как хост с bhyve" . Получено 13 декабря 2015 г.
  27. ^ Скоро в OpenBSD/amd64: собственный гипервизор
  28. ^ vmm(4) — монитор виртуальной машины
  29. ^ ACRN Проектирование высокого уровня управления памятью
  30. ^ "Features/VT-d - QEMU". wiki.qemu.org . Получено 2023-11-12 .
  31. ^ "Hyper-V Enlightenments — документация QEMU". www.qemu.org . Получено 12.11.2023 .
  32. ^ "Добавить вложенную трансляцию Intel VT-d [LWN.net]". lwn.net . Получено 2023-11-12 .
  33. ^ "Виртуализация Intel: как VT-x, KVM и QEMU работают вместе". Binary Debt . 2018-10-14 . Получено 2023-11-12 .
  34. ^ "Features/KVMNestedVirtualizationTestsuite - QEMU". wiki.qemu.org . Получено 12.11.2023 .

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