Трансляция адресов второго уровня (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]
Поддержка таблицы страниц второго уровня присутствует в процессорах 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, поскольку они не реализуют программную теневую таблицу страниц; список не полностью обновлен, чтобы отразить это.
элемент управления выполнением виртуальной машины "unrestricted guest" равен 1, элемент управления выполнением виртуальной машины "enable EPT" также должен быть равен 1.
{{cite web}}
: |last=
имеет общее название ( помощь )