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

Содержание

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

После входа в UEFI или BIOS нужно найти и включить функцию виртуализации. Во многих случаях она находится в разделе «Дополнительные параметрами» (Advanced Settings), в настройках конфигурации процессора (CPU Configuration). В некоторых случаях она размещена на вкладке разгона (ОС).

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

Для того, чтобы войти в профиль, или зарегистрироваться, нужно согласие на обработку персональных данных

Intel vPro: что, когда и как

В арсенале решений Intel прочное место занял набор технологий vPro. Его компоненты отвечают за безопасность ПК (включая защиту ОС при загрузке), виртуализацию (наборы инструкций для ускорения работы виртуальных машин, ВМ), администрирование и сервисные возможности в корпоративной среде. Основой концепции vPro является аппаратная реализация функций. Это дает много возможностей, повышает надежность и защищенность систем.

Наличие на устройстве стикера vPro означает, что в ПК или ноутбуке имеются технологии VT, TXT, AMT, Turbo Boost, XD-Bit, WiDi, Wireless Docking (последние две – при наличии беспроводного адаптера WiFi). Расскажем о каждой из них.

Intel VT

Intel ® VT (Intel Virtualization Technology) – специальный набор инструкций процессора, позволяющий существенно ускорить работу виртуальной машины (ВМ) за счет аппаратной реализации виртуализации, которая предполагает работу на реальном процессоре, а не с помощью бинарной трансляции команд ВМ в инструкции процессора.

При создании ВМ в памяти компьютера эмулируется аппаратная платформа, на которой запускается виртуальная ОС, а в ней – приложения, которые выполняются в памяти ВМ. Долгое время «узким местом» виртуальных машин была их низкая производительность, во многом обусловленная тем, что приходилось транслировать команды виртуального процессора в команды реального. Сейчас ВМ создаются и управляются самим процессором с помощью инструкций Intel ® VT-x, которые позволяют работать с процессором напрямую, существенно сократить задержки и избежать потери производительности.

Для решения похожих задач предназначена технология Intel ® EPT, позволяющая гостевым ОС управлять страницами памяти без участия монитора виртуальных машин (VMM). Наконец, технология Intel ® VT-d, предназначенная для «проброса» устройств в виртуальную среду, позволяет гостевой ОС получать прямой доступ к ресурсам других физических устройств (видеокарты, контроллеров в портах расширения и т.д.).

В последних поколениях процессоров Intel удалось существенно снизить издержки производительности при виртуализации , так что сейчас скорость работы виртуальных машин и реальных систем сопоставимы. В тестовой лаборатории iXBT.com проводили исследование потерь производительности в ВМ, с результатами которого можно ознакомиться здесь (хост-ОС – Windows http://www.ixbt.com/cpu/virtual2015-winwin.shtml ) и здесь ( хост-ОС – Linux http://www.ixbt.com/cpu/virtual2015-linuxwin.shtml ). В первой части также затрагивается вопрос преимуществ виртуализации.

Intel TXT

Intel ® TXT (Intel Trusted Execution Technology) — технология «доверенной загрузки». Она обеспечивает безопасность кода, выполняемого в защищенной среде, и позволяет отследить и отсечь его несанкционированные изменения. Intel ® TXT позволяет бороться с вирусами и шпионским ПО, в том числе, так называемыми руткитами, которые интегрируются в систему на ранних этапах загрузки. Особенно важна ее работа при старте системы, когда загружаются основные модули ОС.

Intel ® ТХТ использует модули TPM (Trusted Platform Module) — отдельный чип с функциями аппаратного шифрования и (иногда) защищенного хранилища, где система и приложения могут хранить секретные коды, ключи и пр. Чип работает через BIOS. Он может быть интегрирован в материнскую плату либо располагаться в виде отдельного блока в специальном разъеме.

К сожалению, из-за действующих ограничений на технологии аппаратного шифрования в России до сих пор не преодолены сложности с сертификацией чипов ТРМ. Это усугубляется еще и тем, что ТРМ везде разные и отличаются по функциональности Поэтому в корпоративных системах, поставляемых в Россию, ТРМ либо нет, либо они заблокированы, и функциональные возможности ТХТ у нас ограничены.

Intel AMT

Intel ® AMT (Intel Active Management Technology) позволяет удаленно управлять ПК или ноутбуком, причем, даже в том случае, когда ОС не установлена или неработоспособна, когда отсутствуют драйверы сетевого интерфейса или компьютер вообще выключен.

АМТ реализована на аппаратном уровне в некоторых версиях процессоров и системной логики Intel. Работает она через проводное сетевое подключение (для работы через беспроводное все же понадобится ОС и сетевые драйвера), создавая отдельный независимый канал обмена данными. Для обеспечения конфиденциальности используется шифрование. Прошивка Intel ® AMT находится обычно на той же микросхеме, что и BIOS, и обновляется вместе с ним.

АМТ существенно упрощает жизнь подразделениям техподдержки, т.к. позволяет решать программные проблемы компьютера (включая перенастройку BIOS) без физического доступа к рабочему месту сотрудника. AMT дает возможность включить и выключить компьютер, что полезно дежурному администратору при обновлении ОС или ПО после окончания рабочего дня.

Intel Turbo Boost

Intel ® Turbo Boost — технология автоматического разгона процессора, которая позволяет увеличивать тактовую частоту его работы при краткосрочной нагрузке, выходя за рамки, разрешенные теплопакетом (TDP).

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

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

Таким образом, короткие, но интенсивные задачи процессор будет выполнять быстрее, создавая позитивное впечатление у пользователя о более высокой «отзывчивости» системы. Если же нагрузка длительная, то через некоторое время частота опускается до уровня, на котором система охлаждения справляется с отводом тепла.

Эффективность работы Turbo Boost зависит в первую очередь от системы охлаждения: при наличии мощного вентилятора и радиатора процессор может работать на максимальной частоте неограниченно долго. В последних поколениях Intel позволяет производителям самостоятельно указывать TDP для своих систем, т.е. одна и та же модель процессора будет вести себя по-разному в зависимости от возможностей конкретного устройства.

Intel XD-Bit

Intel ® XD-Bit (Intel Execute Disable Bit) — технология, предназначенная для предотвращения переполнения буфера с помощью «бита запрета на исполнение».

Современные процессоры работают с памятью в так называемом страничном режиме. Страница памяти может содержать либо программный код, либо данные. Intel ® XD-Bit, добавляет к каждой странице данных атрибут запрета, то есть запрещает процессору выполнять код. Это не дает возможности допускать «переполнения буфера», который предполагает перезапись области памяти одной программы другой программой с последующим выполнением программного кода с перезаписанной области с правами суперпользователя. Иными словами: если в программе не реализована проверка длины вводимых данных в буфер, то при вводе бесконечно длинной последовательности данных происходит перезапись области памяти, находящейся за буфером.

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

Intel ® XD-Bit позволяет обезопасить ПК от вирусов, использующие «переполнение буфера», на аппаратном уровне.

Intel WiDi

Intel ® WiDi позволяет подключаться к внешнему экрану (монитору, телевизору или проектору) по беспроводному каналу связи – фактически, по отдельному каналу WiFi. Подключение к внешнему экрану или проектору – например, на конференции — становится гораздо проще, а пользователь избавляется от проводов (длины которых может и не хватить).

Для подключения оба устройства должны соответствовать определенным требованиям. У ПК или ноутбука должна быть платформа Intel и адаптер WiFi Intel определенной модели, позволяющий создать две независимые беспроводные сети, у второго устройства – специальный чип. Сейчас на рынке уже есть устройства (телевизоры и проекторы), поддерживающие WiDi, если же поддержки нет, можно воспользоваться внешней приставкой, которая стоит относительно недорого (около $100 ).

Основная сфера применения технологии – проведение презентаций, т.к. она позволяет практически мгновенно подключиться к экрану в чужом офисе и не зависеть от проводов.

Intel Wireless Docking

Эта технология является логическим развитием WiDi и позволяет подключаться по беспроводному каналу не только к монитору (кстати говоря, FullHD-поток можно передать на несколько дисплеев), но и к любой другой периферии. Поэтому ее удобно использовать и на своем рабочем месте: Wireless docking позволяет мгновенно получить доступ ко всей периферии (клавиатура, мышь, внешний монитор и пр.), но при этом не нужно подключать к устройству провода. Поскольку в основе технологии лежит 128-битное AES-шифрование, обеспечивается достаточно высокая безопасность.

У этой технологии большое будущее, т.к. она позволяет просто и очень быстро подключить не только ноутбук, но и мобильное устройство – планшет или даже смартфон, и работать на нем, как на обычном ПК, с помощью клавиатуры и мыши. И при это не нужно возиться с проводными подключениями и делать на устройстве сложные интерфейсы для док-станции.

Заключение

Intel ® vPro объединяет ряд технологий, которые делают жизнь работника и компании проще: одни облегчают обслуживание, другие обеспечивают безопасность, третьи повышают производительность систем. Присутствие логотипа vPro гарантирует, что устройство поддерживает ряд технологий, важных для работы в корпоративной среде.

Выигрыш от vPro ощутим и в малом бизнесе: АМТ, VT и другие технологии принесут немало пользы небольшим предприятиям. Правда, тут есть важный момент: необходимо заранее, при приобретении техники, выбрать системы и компоненты с поддержкой vPro. То есть осознанно принять решение об использовании этих технологий и быть готовым к тому, что техника с их поддержкой будет стоить дороже.

Использование технологий vPro способно сэкономить немало времени и денег. Дело за малым: начать их использовать.

Как включить аппаратную виртуализацию в настройках UEFI и BIOS

Виртуализация нужна для создания виртуальной машины с собственной операционной системой, которую можно запустить в окне текущей ОС. Что делать, если опция в настройках BIOS/UEFI отключена. Узнаем подробнее, как можно включить виртуализацию на базе процессоров Intel и AMD.

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

Включение технологии аппаратной виртуализации

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

Технологии аппаратного ускорения, встроенные в процессоры AMD и Intel, известны как «AMD-V» и «Intel VT-X». Во многих случаях виртуализация по умолчанию отключена. При попытке включить виртуальную машину функция выбрасывает предупреждение об ошибке, информирующее пользователя о том, что для работы программного обеспечения требуется аппаратное ускорение, которое в текущий момент отключено.

Функцию виртуализации можно включить или отключить по желанию и все, что нужно сделать, — это получить доступ в BIOS или UEFI.

Шаг 1: Вход в настройки UEFI или BIOS

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

Процедура включения немного отличается от установленного интерфейса ввода-вывода.
Если установлен Windows 10, то самый простой способ – использовать встроенную опцию запуска прошивки UEFI из среды восстановления.

Раскройте меню Пуск и нажмите на кнопку Питания. Удерживая клавишу Shift, нажмите на кнопку «Перезагрузка».

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

Откроется синий экран с вариантами выбора действия. Перейдите по пути:

Поиск и устранение неисправностей – Дополнительные параметры – Параметры встроенного ПО UEFI .

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

После перезагрузки откроется экран UEFI.

Если нет этой опции в Windows 10 или установлена предыдущая операционная система, то можно войти в настройки нажатием на соответствующую клавишу после включения компьютера. В большинстве случаев это клавиши Del, F2, F10, F11 или F12. Она отображается на первой экране внизу в тексте «Press _ enter to Setup». Также ее можно узнать по запросу в интернете, указав модель материнской платы.

Шаг 2: Включение виртуализации в опциях процессора Intel / AMD

После входа в UEFI или BIOS нужно найти и включить функцию виртуализации. Во многих случаях она находится в разделе «Дополнительные параметрами» (Advanced Settings), в настройках конфигурации процессора (CPU Configuration). В некоторых случаях она размещена на вкладке разгона (ОС).

Для процессоров Intel аппаратная виртуализация активируется опцией Intel Virtualization Technology.

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

Если установлен процессор AMD нужно включить SVM Mode или SVM Support.

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

Чтобы включить параметр, измените значение с «Disabled» на «Enabled». Сохраните изменения и выйдите из настроек, компьютер загрузится в обычном режиме.

Как включить виртуализацию в Windows 10

Виртуализация¹

В предыдущей части я рассказал о трёх режимах IA-32: защищённом, VM86 и SMM. Хотя их и не принято связывать с виртуализацией, они служат для создания изолированных окружений для программ, исполняемых на процессоре. В этой статье я опишу «настоящую» технологию виртуализации Intel VT-x. Я хочу показать, как теория эффективной виртуализации проявляется в каждом аспекте её практической реализации.

СДЕЛАЙ ЭТО. Как включить аппаратную виртуализацию в bluestacks ▶ Как включить виртуализацию в биос

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

На КДПВ: Запущенная под управлением Ubuntu Linux программа Oracle VirtualBox, в которой запущена операционная система MS Windows XP, в которой исполняется симулятор Bochs, в котором запущена операционная система FreeDOS, в котором запущен симулятор MYZ80 для процессора Z80, в котором загружена операционная система CP/M (в полноэкранном режиме).

VT-x

В 2006 году Intel представила VT-x — расширение для эффективной виртуализации архитектуры IA-32. Оно включает в себя набор инструкций VMX и два новых режима работы. Я не хочу повторять здесь всю документацию, это очень скучно как писать, так и читать. Однако я опишу некоторые особенности предложенных в ней интерфейсов.

Обойтись для виртуализации уже существующими режимами процессора было нельзя, т.к. некоторое количество существовавших к тому моменту инструкций IA-32 были служебными, но не привилегированными и, согласно теории, их невозможно было бы эффективно перехватывать и эмулировать. Новые режимы были названы root и non-root, и они, в общем-то, ортогональны всем классическим режимам (хотя тут есть особенности, см. дальше). Первый из них — для монитора виртуальных машин, второй — для гостевых окружений. По умолчанию после включения питания виртуализация недоступна.

Вход в режим root происходит после исполнения новой инструкции VMXON, а последующие входы в non-root — с помощью VMLAUNCH/VMRESUME.

VMCS

Ключевой процесс в любой системе аппаратной виртуализации — это сохранение текущего состояния процессора гостя и загрузка состояния монитора. В VT-x здесь всё сделано строго по упомянутой теории. Для хранения состояний как гостя, так и хозяина используется сущность под названием VMCS (англ. Virtual Machine Control Structure).

Это структура должна быть своя для каждого активного гостя. На следующем рисунке, иллюстрирующем переходы между режимами root и non-root, внутри VMCS используются две области: состояние гостя (guest-state) и состояние хозяина (host-state).

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

На этом рисунке событие VM-Entry — это одна из двух инструкций: VMLAUNCH или VMRESUME, — а VM-Exit — одно из множества синхронных и асинхронных событий, объявленных привилегированными в контексте VT-x non-root и потому требующих перехвата монитором. Детали того, что и как загружать при переходе из root в non-root и обратно, также хранятся в VMCS в т.н. VM-entry и VM-exit controls, «параметры входа и выхода». Области сохранения разбиты на поля, каждое из которых хранит в себе регистр или другую архитектурную информацию процессора.

Работа с VMCS

Я хочу показать, как тщательно подошли создатели VT-x к обеспечению версионности и обратной совместимости с будущими реализациями. Ключевой элемент дизайна здесь — это удивительная (учитывая его низкоуровневость) абстрактность предлагаемого интерфейса. Вместо того, чтобы описать раскладку структуры VMCS в памяти и разрешить работать с ней с помощью обычных инструкций LOAD и STORE, были введены две новые инструкции: VMREAD и VMWRITE. И оперируют они не смещениями байт внутри структуры, а кодировками отдельных полей.

Более того, не гарантируется даже, что все поля в памяти хранят актуальные значения. Процессор может кэшировать некоторые из них, ускоряя тем самым процесс переключения режимов — данные не приходится подгружать из медленной памяти. Он обязан выгрузить всё в память только при исполнении VMCLEAR.
В результате введения такого уровня косвенности создатели будущих вариантов VT-x не будут привязаны требованиями совместимости раскладки VMCS в памяти с существующими реализациями.
Для сравнения данного метода с альтернативами посмотрите на то, как описывается работа инструкций XSAVE и XRSTOR [1], используемых для сохранения и восстановления векторных регистров. Так как векторные регистры после сохранения хранятся в памяти, смещения для них можно использовать в обычных операциях с ней. А вот для раскладка полей в памяти описана в отдельном листе данных, возвращаемых инструкцией CPUID.

Индикация доступной функциональности

Продолжу рассказ об особенностях VT-x, который удивили меня своей продуманностью (не обо всех расширениях наборов инструкций можно такое сказать). Многие из них касаются идентификации поддержки существующих, а также будущих расширений этой технологии.

Вместо того, чтобы поместить информацию о VT-x в вывод инструкции CPUID, были добавлены новые регистры группы Model-specific register или MSR. Это вполне оправдано — MSRы можно читать только из привилегированного режима, пользовательским приложениям незачем знать об особенностях поддержки виртуализации текущего процессора. О том, что виртуализация поддерживается, сообщает единственный бит CPUID.1.ECX[5].

Версионность и индикация расширений

Описанию механизма индикации поддерживаемых расширений VT-x посвящено приложение A из Intel SDM [1]. Возможность эволюции проходит через все представленные в документации MSRы.

Так, регистр IA32_VMX_BASIC разбит на несколько полей. Одно из них содержит ревизию структуры VMCS. Равенство ревизий двух реализаций VMCS означает равенство размеров областей памяти для их хранения. Выставленный в этом регистре бит 55 означает, что ряд элементов конфигурации, которые в первой редакции VT-x имели жёстко зафиксированные значения (только вкл. или только выкл.), в этой реализации уже могут быть переключены в отличное от первоначального состояние.

Полный список MSRов, описывающих возможности, включает в себя регистры IA32_VMX_(TRUE_)PINBASED_CTLS, IA32_VMX_(TRUE_)PROCBASED_CTLS, IA32_VMX_PROCBSAED_CTLS2, IA32_VMX_(TRUE_)EXIT_CTLS, IA32_VMX_(TRUE_)ENTRY_CTLS. В сумме они определяют, какие архитектурные события могут вызвать VM-exit, что допустимо загружать при VM-entry. Изначально заведённого в первой ревизии VT-x набора регистров оказалось недостаточно, поэтому появились «TRUE»-варианты некоторых из них. По этой же причине PROCBASED_CTLS был расширен с помощью PROCBASED_CTLS2.
В отличие от традиционного подхода, когда под каждую новую фичу заводится один бит в регистре, который означает, поддерживается ли она или нет, в VT-x имеется по два бита на каждое расширение архитектуры. Первый бит означает возможность включения некоторой функциональности, а второй — её выключения. Влияет это на то, какие биты в составе управляющих полей VMCS монитор может модифицировать. Так, например, может оказаться так, что в некоторых процессорах будет нельзя выключить генерацию VT-exit по инструкции RDRAND, а в других, наоборот, нельзя такой выход включить.
Для тех полей, которые могут находиться в любом из двух состояний, программе-монитору разрешается настраивать их под свои возможности и использовать только те, которые были заложены в его логику, даже если монитор запущен на более современном процессоре, предлагающем более эффективные техники.
Данное решение создаёт простор для эволюции как процессоров, так и программ-мониторов виртуальных машин. Первые могут бросить поддержку старых фич, просто обозначив, что они не могут быть включены, а вторые могут детектировать и использовать только ту функциональность аппаратуры, на которую они запрограммированы. Тем самым сохраняется обратная совместимость и обеспечивается прямая совместимость.

Эволюция VT-x

Раз столько усилий было потрачено на поддержку расширений VT-x, таких расширений, наверное, должно быть много. Я расскажу о некоторых из них в этой статье, а остальные попридержу на потом, когда осмысленность их введения станет более понятной.
Но сперва хочется подумать об общем векторе развития VT-x — зачем все эти расширения существуют.
Виртуализация должна быть эффективной, т.е. вносить минимально возможные накладные расходы по сравнению с прямым исполнением гостя на аппаратуре. Это формулируется как «не мешать исполняться как можно большему числу операций». Общий принцип оптимизации — ускорять в первую очередь те подсистемы, что стоят на критическом пути производительности. После устранения главного узкого места нужно переходить к следующему по важности.

Рассмотрим порядок важности для вычислительных систем.

  1. Инструкции процессора. Самый важный ресурс — это ЦПУ, и именно на исполнение большинства инструкций без замедления была направлены самая первая версия VT-x. Последующие улучшения в этом направлении были направлены на то, чтобы ещё меньшее число инструкций вызывали VM-exit, а также чтобы все режимы процессора могли быть виртуализованы (см. секции про Unrestricted Guest и SMM далее в этой статье).
  2. Работа с памятью. Здесь частая, но потенциально медленная операция — это трансляция линейных адресов в физические. Её детали и решение описаны в моей предыдущей статье, так что не буду повторяться. В IA-32 соответствующее расширение названо Intel EPT (англ. Extended Page Translation), и оно работает согласно теории. Такой ресурс, как TLB, также требовал виртуализации, и она была обеспечена с введением VPID — техники ассоциации его записей с отдельными гостями.
  3. Виртуальный APIC (англ. Advanced Programmable Interrupt Controller). Контроллер прерываний может оказаться узким местом в производительности монитора, так как нагрузка на него с ростом числа одновременно работающих виртуальных машин (и интенсивности прерываний в системе) растёт. Поэтому было сделано несколько расширений VT-x для виртуализации функций APIC: виртуальная страница памяти для регистров APIC, TPR shadow, CR8 load exiting, virtualize x2APIC mode.
  4. Периферийные устройства, требующие широкой полосы пропускания для своей работы, например, графические ускорители. Для этих устройств требуется эффективно преобразовывать адреса в памяти для DMA, а также обрабатывать прерывания, в обоих случаях делая это с минимальным участием монитора. За эту функциональность отвечает уже не спецификация Intel VT-x, а Intel VT-d [2].
Unrestricted Guest

Защищённый режим со включенными сегментацией и страничным механизмом поддерживается с самой первой редакции VT-x. Остальные режимы, в т.ч. 16-битный реальный, запускать напрямую в non-root режиме было невозможно — попытка загрузить такое гостевое состояние с помощью VMLAUNCH/VMRESUME вернулась бы с неуспехом. С одной стороны, это ограничение было разумным — большинство практически важных задач работают именно в защищённом режиме, и следовало виртуализовать его в первую очередь.
С другой стороны, при загрузке традиционной ОС процессор, прежде чем войти в защищённый режим, некоторое время всё же исполняется в других режимах. В мониторе для их поддержки приходилось иметь альтернативный механизм симуляции — интерпретатор, двоичный транслятор, возврат к VM86 или что-то подобное. Это не сказывалось положительно ни на объёме кода монитора, ни на скорости его работы. Поэтому в последующих поколениях VT-x был введён т.н. режим Unrestricted Guest — исполнение гостевых систем, не использующих защищённый режим.

Взаимодействие с SMM

Во время работы root и non-root режимов VT-x всё так же возможно возникновение прерываний #SMI, которые должны безусловным образом переводить процессор в SMM-режим. Процесс переходов в/из SMM-режима был модифицирован, чтобы учитывать специфику работы виртуализации.

  • За переход в SMM отвечает особенный вид VM-exit, названный SMM VM exit. Процессы, которые происходят при этом, имеют некоторые отличия от обычных событий VM-exit.
  • SMM VM exit — единственный вид выхода, который может случиться внутри root-режима, т.е. во время работы монитора виртуальных машин. Обычные VM-exit могут случится только при работе гостей.
  • Для хранения состояния и управления переходами SMM VM-exit выделяется отдельная VMCS.
  • Если в классическом случае для окончания работы в SMM-режиме использовалась инструкция RSM, то при включенной виртуализации для этого используется обычный VM-entry, которые возвращается или в монитор (если выход был из root-режима), или в гостевое окружение (в non-root).
  • Вход в SMM возможен явным образом из root-режима, с помощью инструкции VMCALL, а не только по прерыванию #SMI.

К данному моменту я надеюсь, что мне удалось обрисовать мотивацию, основные идеи и направления развития Intel VTx. Здесь я мог бы закончить свой рассказ, но…

Продолжение следует

Если некоторая технология оказывается успешной, то довольно быстро её пользователи начинают придумывать совершенно неожиданные для создателей способы её использования, в т.ч. «неправильные». Не обошло это и виртуализацию. Виртуальные машины заменили физические во многих областях. Их стали объединять в облака, продавать/сдавать в аренду. А конечные пользователи стали запускать внутри выданных им систем свои виртуальные машины. И тут оказалось, что подобный сценарий вложенной (nested) виртуализации не был изначально предусмотрен создателями аппаратуры.

Что было сделано для того, чтобы поддержать эффективную работу одних виртуальных машин внутри других на архитектуре Intel — об этом будет следующая часть статьи.

Литература
  1. Intel Corporation. Intel 64 and IA-32 Architectures Software Developer’s Manual. Volumes 1–3, 2014. www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html
  2. Intel Corporation. Intel Virtualization Technology for Directed I/O Architecture Specification. 2013. www.intel.com/content/www/us/en/intelligent-systems/intel-technology/vt-directed-io-spec.html
Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Что будем искать? Например,Человек

Мы в социальных сетях