Технология intel virtualization что это
Что такое аппаратная виртуализация?
Аппаратная виртуализация – способ запуска нескольких управляющих программных сред на одной вычислительной машине. Самый яркий пример – это одновременная работа нескольких операционных систем на одном компьютере.
В отличии от программной виртуализации, аппаратная не имеет программного посредника между оборудованием и виртуальными машинами. Операционные системы пользуются аппаратными ресурсами напрямую.
Intel Virtualization Technology – это технология виртуализация от корпорации Intel.
Эта же технология есть и у AMD. Называется она Amd virtualization technology.
Включает в себя виртуализацию каждой подсистемы компьютера:
Как работает аппаратная виртуализация
Аппаратная реализация возможна благодаря внедрению в процессоры и чипсеты (начиная с 2005 года) нескольких десятков инструкций.
Активизацию режима виртуализации включает инструкция VMXON, «легковесная» программная прослойка (терминология INTEL) между оборудованием и гостевыми операционными системами. Прослойка называется – гипервизором или монитором виртуальных машин.
Гипервизор управляет прямым доступом к оборудованию для каждой гостевой ОС. Это значит что ОС разделят между собой: процессорное время, пространства постоянной и оперативной памяти и каналы и память ввода вывода.
Гостевые системы запускаются гипервизором через сигналы: VMLAUNCH и VMRESUME. Когда гипервизор отключается и завершает режим виртуализации то посылает сигнал VMXOFF.
Virtualization technology в биосе что это?
Виртуализация включается в BIOSе. Чтобы ее включить нужно найти пункт Virtualization и изменить его значение с Disable на Enable. Где находится этот пункт в БИОСах разных производителей показано на скриншотах ниже:
virtualization technology в Award BIOS
Hewlett-Packard Company BIOS:
virtualization technology в Hewlett-Packard Company BIOS
Виртуализация¹
В предыдущей части я рассказал о трёх режимах IA-32: защищённом, VM86 и SMM. Хотя их и не принято связывать с виртуализацией, они служат для создания изолированных окружений для программ, исполняемых на процессоре. В этой статье я опишу «настоящую» технологию виртуализации Intel VT-x. Я хочу показать, как теория эффективной виртуализации проявляется в каждом аспекте её практической реализации.
На КДПВ: Запущенная под управлением Ubuntu Linux программа Oracle VirtualBox, в которой запущена операционная система MS Windows XP, в которой исполняется симулятор Bochs, в котором запущена операционная система FreeDOS, в котором запущен симулятор MYZ80 для процессора Z80, в котором загружена операционная система CP/M (в полноэкранном режиме).
В 2006 году Intel представила VT-x — расширение для эффективной виртуализации архитектуры IA-32. Оно включает в себя набор инструкций VMX и два новых режима работы. Я не хочу повторять здесь всю документацию, это очень скучно как писать, так и читать. Однако я опишу некоторые особенности предложенных в ней интерфейсов.
Обойтись для виртуализации уже существующими режимами процессора было нельзя, т.к. некоторое количество существовавших к тому моменту инструкций IA-32 были служебными, но не привилегированными и, согласно теории, их невозможно было бы эффективно перехватывать и эмулировать. Новые режимы были названы root и non-root, и они, в общем-то, ортогональны всем классическим режимам (хотя тут есть особенности, см. дальше). Первый из них — для монитора виртуальных машин, второй — для гостевых окружений. По умолчанию после включения питания виртуализация недоступна. Вход в режим root происходит после исполнения новой инструкции VMXON, а последующие входы в non-root — с помощью VMLAUNCH/VMRESUME.
Ключевой процесс в любой системе аппаратной виртуализации — это сохранение текущего состояния процессора гостя и загрузка состояния монитора. В VT-x здесь всё сделано строго по упомянутой теории. Для хранения состояний как гостя, так и хозяина используется сущность под названием VMCS (англ. Virtual Machine Control Structure). Это структура должна быть своя для каждого активного гостя. На следующем рисунке, иллюстрирующем переходы между режимами root и non-root, внутри VMCS используются две области: состояние гостя (guest-state) и состояние хозяина (host-state).
На этом рисунке событие 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 — зачем все эти расширения существуют.
Виртуализация должна быть эффективной, т.е. вносить минимально возможные накладные расходы по сравнению с прямым исполнением гостя на аппаратуре. Это формулируется как «не мешать исполняться как можно большему числу операций». Общий принцип оптимизации — ускорять в первую очередь те подсистемы, что стоят на критическом пути производительности. После устранения главного узкого места нужно переходить к следующему по важности. Рассмотрим порядок важности для вычислительных систем.
Unrestricted Guest
Защищённый режим со включенными сегментацией и страничным механизмом поддерживается с самой первой редакции VT-x. Остальные режимы, в т.ч. 16-битный реальный, запускать напрямую в non-root режиме было невозможно — попытка загрузить такое гостевое состояние с помощью VMLAUNCH/VMRESUME вернулась бы с неуспехом. С одной стороны, это ограничение было разумным — большинство практически важных задач работают именно в защищённом режиме, и следовало виртуализовать его в первую очередь.
С другой стороны, при загрузке традиционной ОС процессор, прежде чем войти в защищённый режим, некоторое время всё же исполняется в других режимах. В мониторе для их поддержки приходилось иметь альтернативный механизм симуляции — интерпретатор, двоичный транслятор, возврат к VM86 или что-то подобное. Это не сказывалось положительно ни на объёме кода монитора, ни на скорости его работы. Поэтому в последующих поколениях VT-x был введён т.н. режим Unrestricted Guest — исполнение гостевых систем, не использующих защищённый режим.
Взаимодействие с SMM
Во время работы root и non-root режимов VT-x всё так же возможно возникновение прерываний #SMI, которые должны безусловным образом переводить процессор в SMM-режим. Процесс переходов в/из SMM-режима был модифицирован, чтобы учитывать специфику работы виртуализации.
К данному моменту я надеюсь, что мне удалось обрисовать мотивацию, основные идеи и направления развития Intel VTx. Здесь я мог бы закончить свой рассказ, но…
Продолжение следует
Если некоторая технология оказывается успешной, то довольно быстро её пользователи начинают придумывать совершенно неожиданные для создателей способы её использования, в т.ч. «неправильные». Не обошло это и виртуализацию. Виртуальные машины заменили физические во многих областях. Их стали объединять в облака, продавать/сдавать в аренду. А конечные пользователи стали запускать внутри выданных им систем свои виртуальные машины. И тут оказалось, что подобный сценарий вложенной (nested) виртуализации не был изначально предусмотрен создателями аппаратуры. Что было сделано для того, чтобы поддержать эффективную работу одних виртуальных машин внутри других на архитектуре Intel — об этом будет следующая часть статьи.
Что такое виртуализация процессора простыми словами и как ее включить?
Привет, на связи Алексей! Слово «виртуальный» сегодня у всех на слуху. У меня до сих пор «виртуальность» ассоциациируется с фильмом «Косильщик лужаек», который вышел в девяностые годы. С тех пор прошло много времени. У нас еще не в ходу виртуальная реальность, слава Богу. Мы пока живем и мыслим в реальном мире. А вот виртуальные компьютеры уже легко может создать любой человек у себя дома. Сделать это позволяет технология виртуализации на процессоре вашего компьютера (или ноутбука).
В сегодняшнем материале сделаю краткий обзор как это работает, и расскажу для чего бывает нужен виртуальный компьютер. Самый простой пример — у вас дома в наличии есть обычный современный настольный ПК. На нем установлена операционная система Windows 7.
Вы решили осваивать Windows 10 или другую операционной систему, например Linux Mint. Раньше было доступно только два варианта. Или поставить новую вместо старой и потом переносить туда данные. Можно установить обе системы на один компьютер и запускать их поочередно. Но это не удобно.
Для того, чтобы на одном компьютере можно было запускать сразу несколько операционных систем одновременно и была реализована технология виртуализации. Проблема эта оказывается не нова, еще в 80 г двадцатого века ее пытались решить на Западе. В домашних условиях Вы, например, можете легко научиться самостоятельно устанавливать и осваивать такие операционные системы, с какими раньше не были знакомы. А потом и научиться использовать их.
Можно тестировать работу программ в разных операционных системах. Можно играть в любимые старые игры, которые не запускаются на новых операционных системах. Что еще дает запуск нескольких операционных систем? Виртуализация была придумана для того, чтобы экономить денежные средства. В крупных организациях стоят дорогие сервера, и вместо того чтобы тратить деньги на на покупку нового «железа» можно на ОДНОМ физическом системном блоке установить к примеру два виртуальных сервера.
Один почтовый, другой DNS. Мы получаем ДВА отдельных сервера. Каждый из этих виртуальных серверов работает изолированно от друг от друга как отдельный компьютер. При этом ресурсы физического компьютера используются на полную мощность (при правильном расчете). Никакого простоя. А если мы под эти задачи купили бы два раздельных сервера, то их ресурсы использовались бы процентов на сорок или даже меньше. А это невыгодно, даже с точки зрения потребления электричества.
Для того, чтобы технология заработала на вашем ПК, нужно чтобы его процессор поддерживал ее. В чем ее суть простыми словами? Обычный процессор работает примерно так. Есть операционная система (любая) и процессор. Часть данных операционной системы обрабатывается процессором на уровне «1«. Другая важная часть команд от операционной системы работает с процессором, например только на уровне «0» и занимает эту область. Вы пытаетесь запустить виртуальную машину, а эта «нулевая» область уже занята реальной операционной системой.
Ничего не получится. Поэтому в процессоре должна быть область «-1«, которая одновременно принимала бы команды от «новой» операционной системы, и не затрагивала бы работу «старой». Нужен процессор, который умеет управлять работой двух операционных систем одновременно.
Что означает виртуализация процессора AMD?
Традиционно считается, что процессоры AMD у нас доступнее и дешевеле, чем INTEL. Это совсем не значит что они хуже. Многие домашние игровые компьютеры управляются процессорами AMD. Есть мнение, что технология виртуализации от AMD тоже проще и эффективнее, чему у Intel.
Виртуализация AMD (AMD—V™) — это набор уникальных интегрированных в чип функций, которые позволяют клиентам на базе процессоров AMD запускать несколько операционных систем и приложений на одной машине. Впервые появилась в 2008 году на процессорах Athlon x64
Что такое виртуализация в процессорах Intel Core i5?
Компания Intel объявила о своих наработках в этом направлении в 2005 году. Технология носит название Intel VT и со времен процессора Pentium4 (672) ее процессоры поддерживают эту функцию. С тех пор функционал непрерывно совершенствуется и добавляются новые возможности. На сайте компании есть краткий перечень достижений:
Что лучше — AMD или Intel — тут я думаю, что обе компании добились примерно одинаковых результатов. Теперь, когда мы познакомились с теорией, перейдем к практике. Для того, чтобы у вас заработало, нужно проверить включена ли у вас эта фукнция в настройках материнской платы.
Все современные процессоры поддерживают функцию. Ее только надо включить на материнской плате. Обычно она выключена и виртуальная машина не запустится. Для начала убеждаемся, что наш процессор поддерживает виртуализацию. Сделать это можно любым приложением, которое умеет собирать данные о вашем «железе» и выдавать ее в виде отчета.
Как проверить включена ли виртуализация на вашем ПК?
Есть утилиты которые проверяют включена ли функция на вашем процессоре, а не только ее наличие. Я пользуюсь CPU-Z, а включение проверяю в BIOS. Запустив програму переходим на вкладку «Процессор»:
У меня процессор Intel и набор инструкций должен быть AVX. На процессорах AMD соответсвенно будет AMD-V. Если у вас в наборе инструкции есть такая запись, значит нужно ее активировать в BIOS.
Включение виртуализации никак не влияет на производительность процессора если вы не запускаете никаких виртуальных машин на компьютере. Однако, если вы будете использовать виртуальную машину, то производительность возрастает.
В UEFI BIOS примерно так включается виртуализация:
На обычных BIOS включать можно так:
Теперь можно устанавливать и настраивать виртуальную машину. Об этом читаем далее.
Технология виртуализации в процессоре
Содержание
Содержание
На протяжении последних 15 лет слово «виртуальный» звучит практически из каждого утюга. Нам обещают все более реалистичные виртуальные миры или, как минимум, дополненную реальность. Виртуальная реальность, как в знаменитой трилогии «Матрица», пока в будущем. А вот виртуализация внутри процессора — реальное настоящее.
Зачем нужна виртуализация на домашнем компьютере
Вот простой пример: вы используете для работы и игр Windows, но при этом хотите изучить, например, Linux. Значит, нужно, чтобы эта операционная система находилась под рукой. Или занимаетесь программированием под Android или iOS. В этом случае постоянно требуется проверка разработанного приложения в родной среде.
Без виртуализации пришлось бы устанавливать на один компьютер две операционные системы, делать загрузчик и запускать каждую операционную систему поочередно. Или еще хуже — стирать одну ОС, устанавливать другую с переносом данных, переустановкой нужных приложений и так далее.
Так вот виртуализация позволяет обойтись без всех этих сложных процедур. Используя ее,можно запускать несколько операционных систем одновременно (одну внутри другой или две параллельно) и работать в той среде, которая нужна под конкретную задачу.
Виртуализация в бизнесе
Главная задача виртуализации — оптимальное использование производительности и мощности современной компьютерной техники в бизнес-приложениях, где используется мощное и дорогое оборудование.
Например, ваша организация собирается поставить почтовый сервер для обработки поступающей и исходящей переписки, а еще развернуть DNS и WEB-сервер. Сколько для этого нужно серверных машин? Достаточно одной. Потому что на ней, в виртуально разделенных друг от друга «песочницах», на одном и том же железе заработают как бы три отдельных компьютера, выполняющие каждый свою задачу. Так вы разместите на одном компьютере сразу три отдельных сервера и используете всю мощность и производительность техники, окупив потраченные средства.
Разумеется, так как мощность и производительность серверных систем и пропускная способность каналов связи постоянно растет, у виртуализации появляется все больше возможностей для применения. Наглядный пример из относительно недавно запущенных и находящихся у всех на слуху — сервис GeForce Now, благодаря которому можно на слабых компьютерах запускать современные игры.
Фактически это удаленные виртуальные компьютеры, выделенные сервисом под конкретного игрока. Собственная техника выступает только как терминальное устройство, для которого уже не так важна производительность процессора и видеокарты.
Основные направления развития виртуализации
В целом виртуализация как технология сейчас развивается по трем основным направлениям:
Как работает виртуализация
Мы разобрались с тем, что виртуализация — это хорошо и полезно. А что требуется для того, чтобы она заработала на вашем конкретном компьютере? Надо чтобы процессор поддерживал виртуализацию.
То есть, он должен уметь работать с несколькими системами команд одновременно – например, от одной операционной системы и от другой. А значит, выполнять инструкции, выделять адреса и место под хранение данных так, чтобы они работали только в нужной среде, да еще и взаимодействовали с интерфейсом, портами ввода-вывода, видеокартами и прочими узлами компьютера.
Такая технология есть у обоих крупных производителей процессоров для ПК: у Intel она называется Intel VT, у AMD — AMD –V.
Особенности Intel VT
Впервые о разработке технологии виртуализации компания Intel объявила еще в 2005 году. И с тех пор Intel VT постоянно совершенствуется и расширяется.
Корпорация Intel описывает Intel VT как технологию, развивающую несколько основных направлений. На сегодня это:
Особенности AMD–V
Процессоры AMD по цене доступнее Intel, но это совсем не говорит о том, что они хуже. Есть мнение, что как раз наоборот. Многие игровые платформы строятся именно на основе процессоров, чипсетов и видеокарт этой компании.
И, конечно же, у главного конкурента Intel есть свой набор функций, реализующих аналогичные процессы виртуализации. Точно также на машинах, собранных на процессоре и чипсете AMD, можно развернуть несколько операционных систем и обеспечить их работу с периферийными устройствами, сетью, памятью и пр. или, например, запустить критичное приложение в изолированной среде.
Включение виртуализации на компьютере
Непосредственный запуск виртуальных машин выполняется с помощью специальных приложений:
Но до того, как вы запустите эти программы и приступите к установке и настройке виртуальных машин, вам потребуется включить виртуализацию.
Дело в том, что по умолчанию в настройках BIOS большинства материнских плат виртуализация отключена. И ее необходимо включить в соответствующем разделе, который называется у каждого производителя по-своему, например, «Virtualization Technology» изменив значение опции с «Disabled» на «Enabled».
Если такой опции нет, то может оказаться так, что прошивка вашей материнской платы или процессор (хотя такое сейчас возможно только на старых моделях) виртуализацию не поддерживает. В этом редком, но возможном случае использовать преимущества виртуализации не получится.
Такая функция отключена в BIOS некоторых моделей ноутбуков Aser Aspire, позиционируемых производителем, как техника для домашнего использования.
Но в подавляющем большинстве случаев, вы просто включаете в BIOS виртуализацию, сохраняете настройки и после этого можете устанавливать и запускать гипервизоры или менеджеры виртуальных машин и приступать к работе с ними, управляя несколькими вычислительными процессами в разных оболочках одновременно.