Список инструкций по виртуализации x86
![]() | Эта статья может быть слишком технической для понимания большинства читателей . ( Июль 2024 г. ) |
Часть серии о |
списки инструкций x86 |
---|
|
Расширения набора команд, добавленные к x86 набору команд для поддержки аппаратной виртуализации . Эти расширения предоставляют инструкции для входа и выхода из виртуализированного контекста выполнения, а также для загрузки структур управления виртуальной машиной (VMCS), которые хранят состояние гостя и хоста, а также поля, которые управляют поведением процессора внутри виртуальной машины.
AMD-V Инструкции
[ редактировать ]Инструкция | Код операции | Инструкция Описание | Используется | Добавлено в |
---|---|---|---|---|
Основные инструкции SVM (безопасная виртуальная машина) [ 1 ] | ||||
INVLPGA rAX,ECX [ а ] |
0F 01 DF |
Недействительные сопоставления TLB для виртуальной страницы, указанной в rAX, и ASID (идентификатор адресного пространства), указанного в ECX. | ВММ | К8 [ б ] |
VMRUN rAX [ а ] |
0F 01 D8 |
Запустите виртуальную машину, управляемую VMCB (блоком управления виртуальной машиной), указанным по физическому адресу в rAX. | ||
VMLOAD rAX [ а ] |
0F 01 DA |
Загрузите определенное подмножество состояния процессора из VMCB, указанного физическим адресом в регистре rAX. [ с ] | Обычно ВММ [ д ] | |
VMSAVE rAX [ а ] |
0F 01 DB |
Сохраните определенное подмножество состояния процессора в VMCB, указанном по физическому адресу в регистре rAX. [ с ] | ||
STGI |
0F 01 DC |
Установите GIF (глобальный флаг прерывания). | Обычно ВММ [ и ] | |
CLGI |
0F 01 DD |
Очистить GIF. | ||
VMMCALL |
NFx 0F 01 D9 |
Вызов монитора виртуальной машины из гостя, вызвав VMEXIT. | Гость | |
SKINIT EAX |
0F 01 DE |
Защитите инициализацию и переход с помощью аттестации. Инициализирует ЦП до известного состояния, назначает область памяти размером 64 Кбайт, указанную EAX, в качестве SLB («Блок безопасного загрузчика»), отправляет копию области памяти в TPM системы для проверки с использованием цифровой подписи , затем переходит в SLB. |
ВММ | Турион «Лев» , [ 2 ] Оптерон «Шанхай» , Феном II |
Безопасная зашифрованная виртуализация (SEV): инструкции зашифрованного состояния (SEV-ES) | ||||
VMGEXIT |
F2/F3 0F 01 D9 |
SEV-ES Выход в VMM. Явная связь с VMM для виртуальных машин SEV-ES. [ ж ] |
Гость | Это был 1 |
Безопасный вложенный пейджинг (SEV-SNP): инструкции таблицы обратного отображения (RMP) | ||||
PSMASH |
F3 0F 01 FF |
Page Smash: расширяет запись RMP на странице размером 2 МБ в соответствующий набор смежных записей RMP на странице размером 4 КБ. Системный физический адрес страницы размером 2 МБ указан в регистре RAX. | ВММ | Это было 3 |
RMPUPDATE |
F2 0F 01 FE |
Напишите новую запись RMP. Системный физический адрес страницы, запись RMP которой изменена, указывается в регистре RAX. Регистр RCX предоставляет эффективный адрес 16-байтовой структуры данных, которая содержит новое состояние RMP. | ||
PVALIDATE |
F2 0F 01 FF |
Подтвердить или отменить проверку записи RMP гостевой страницы. Гостевой виртуальный адрес указывается в операнде регистра rAX. [ а ] | Гость | |
RMPADJUST |
F3 0F 01 FE |
Настройте разрешения RMP для гостевой страницы. Гостевой виртуальный адрес указывается в регистре RAX. Размер страницы указан в RCX[0]. Целевой VMPL (уровень привилегий виртуальной машины) и его разрешения указаны в регистре RDX. | ||
RMPQUERY |
F3 0F 01 FD |
Считывает маску разрешений RMP для гостевой страницы. Гостевой виртуальный адрес указывается в регистре RAX. Целевой VMPL указан в RDX[7:0]. Разрешения RMP для указанного VMPL возвращаются в RDX[63:8] и регистре RCX. | Гость | Это было 4 |
RMPREAD |
F2 0F 01 FD |
Прочитайте запись RMP. Системный физический адрес страницы, запись RMP которой должна быть прочитана, указывается в регистре RAX. Регистр RCX предоставляет эффективный адрес 16-байтовой структуры данных, в которую будет записана запись RMP. | ВММ | ( Дзен 5 ) |
- ^ Перейти обратно: а б с д и Для аргумента rAX в
VMRUN
,VMLOAD
,VMSAVE
,INVLPGA
иPVALIDATE
инструкции, выбор AX/EAX/RAX зависит от размера адреса, который можно переопределить с помощью префикса 67h. - ^ Поддержка AMD-V была добавлена на этапе F AMD K8 и недоступна на более ранних стадиях.
- ^ Перейти обратно: а б The
VMRUN
инструкция загрузит только ограниченное подмножество состояний процессора -VMLOAD
должен быть запущен раньшеVMRUN
для загрузки дополнительного состояния.
Аналогично, #VMEXIT сохранит в VMCB только ограниченное количество гостевого состояния.VMSAVE
необходим для хранения дополнительного состояния.
Для простых условий перехвата, когда VMM не нужно использовать элементы состояния, обрабатываемыеVMSAVE
/VMLOAD
, VMM может улучшить производительность, воздерживаясь от выполненияVMSAVE
/VMLOAD
перед повторным входом в виртуальную машину с помощьюVMRUN
. - ^ На процессорах, поддерживающих виртуализацию VMLOAD/VMSAVE ( Excavator и более поздние версии),
VMLOAD
иVMSAVE
инструкции также могут выполняться в гостевом режиме. - ^ На процессорах, поддерживающих Virtual GIF ( Excavator и более поздние версии),
STGI
иCLGI
инструкции также могут выполняться в гостевом режиме. - ^
VMGEXIT
выполняется какVMMCALL
если не выполняется гостем SEV-ES.
Интел VT-x инструкции
[ редактировать ]Интел инструкции по виртуализации. VT-x также поддерживается некоторыми процессорами VIA и Zhaoxin.
Инструкция | Код операции | Инструкция Описание | Используется [ а ] | Добавлено в |
---|---|---|---|---|
Базовые инструкции VMX (расширения виртуальных машин) | ||||
VMXON m64 [ б ] |
F3 0F C7 /6 |
Enter VMX Operation – вход в среду виртуализации, поддерживаемую аппаратным обеспечением. [ с ] | ВММ | Прескотт 2М , Иона , Центртон , Нано 3000 |
VMXOFF |
NP 0F 01 C4 |
Выйти из работы VMX — останавливает аппаратно поддерживаемую среду виртуализации. | ||
VMPTRLD m64 [ б ] |
NP 0F C7 /6 |
Загрузите указатель на структуру управления виртуальной машиной (VMCS) из памяти и отметьте его действительным. | ||
VMPTRST m64 [ б ] |
NP 0F C7 /7 |
Сохраните указатель на текущую VMCS в памяти. | ||
VMCLEAR m64 [ б ] |
66 0F C7 /6 |
Сбросить данные VMCS из ЦП в область VMCS в памяти. Если указанная VMCS является текущей VMCS, то текущая VMCS помечается как недействительная. | ||
VMLAUNCH |
NP 0F 01 C2 |
Запустите виртуальную машину, управляемую текущей VMCS. | ||
VMRESUME |
NP 0F 01 C3 |
Возобновить работу виртуальной машины, управляемой текущей VMCS. | ||
VMREAD r/m,reg |
NP 0F 78 /r |
Считайте указанное поле из текущей VMCS. reg аргумент указывает, какое поле читать – результат сохраняется в r/m . |
Обычно ВММ [ д ] | |
VMWRITE reg,r/m |
NP 0F 79 /r |
Запись в указанное поле текущего VMCS. reg Аргумент указывает, какое поле следует записывать, а аргумент r/m предоставляет элемент данных для записи в поле.
| ||
VMCALL |
NP 0F 01 C1 |
Вызов монитора виртуальной машины из гостя, вызвав VMEXIT. | Обычно гость [ и ] | |
Инструкции по расширенным таблицам страниц (EPT) | ||||
INVEPT reg,m128 |
66 0F 38 80 /r |
Делает недействительными записи, производные от EPT, в TLB и кэшах структуры подкачки. reg аргумент указывает тип недействительности, аргумент памяти указывает 128-битный дескриптор. [ ж ]
|
ВММ | Нехалем , Центртон , [ 3 ] ЧжанЦзян |
INVVPID reg,m128 |
66 0F 38 81 /r |
Делает недействительными записи в TLB и кэшах структуры подкачки на основе VPID (идентификатор виртуального процессора). reg аргумент указывает тип недействительности, аргумент памяти указывает 128-битный дескриптор. [ г ]
| ||
VMFUNC |
NP 0F 01 D4 |
Вызов функции виртуальной машины, указанной в EAX. [ ч ] | Гость | Хасуэлл , Сильвермонт , ЛуЦзяЗуй |
Расширения доверительного домена (TDX): инструкции по режиму безопасного арбитража (SEAM) [ 5 ] | ||||
SEAMOPS |
66 0F 01 CE |
Вызов определенных операций SEAM. Операция, которую необходимо выполнить, указана в RAX. [ я ] | ШОВ корень |
( Сапфировые пороги [ 6 ] ), Изумрудные пороги [ 7 ] |
SEAMRET |
66 0F 01 CD |
Вернитесь к устаревшей корневой операции VMX из корневой операции SEAM VMX. | ||
SEAMCALL |
66 0F 01 CF |
Вызов корневой операции SEAM VMX из устаревшей корневой операции VMX. | ВММ | |
TDCALL |
66 0F 01 CC |
Вызов монитора виртуальной машины из гостя TD, вызвав VMEXIT. | ТД Гость |
- ^ Выполнение любой из инструкций VT-x VMM в гостевой виртуальной машине приведет к VMEXIT.
Если операция VMX не была введена черезVMXON
, то все инструкции VT-x (кромеVMXON
) вызовет #UD. - ^ Перейти обратно: а б с д Аргумент m64 для
VMPTRLD
,VMPTRST
,VMCLEAR
иVMXON
представляет собой 64-битный физический адрес. - ^ Аргумент m64 для
VMXON
— это 64-битный физический адрес «региона VMXON», который представляет собой регион размером 4 КБ, который должен быть выровнен по 4 КБ. Эта область может использоваться процессором для поддержки работы VMX в зависимости от реализации и никогда не должна быть доступна программному обеспечению до тех пор, пока процессор не прекратит работу VMX черезVMXOFF
инструкция. - ^ Если включено «VMCS Shadowing» (доступно на Haswell и более поздних версиях),
VMREAD
иVMWRITE
Инструкции также могут быть выполнены гостем. - ^
VMCALL
Инструкция также может быть выполнена VMM — это вызовет специальный выход из виртуальной машины SMM. - ^ Типы аннулирования, доступные для
reg
аргументINVEPT
являются:Ценить Функция 1 Аннулирование одного контекста: аннулирование всех сопоставлений, связанных с указателем EPT в битах 63:0 дескриптора. 2 Глобальная аннулирование: аннулирование всех сопоставлений, связанных со всеми указателями EPT. - ^ Типы аннулирования, доступные для
reg
аргументINVVPID
являются:Ценить Функция 0 Недопустимое сопоставление линейного адреса и VPID, указанных в дескрипторе.
(В отличие отINVLPG
,INVVPID
завершится ошибкой при использовании с неканоническими адресами. [ 4 ] )1 Сделайте недействительными все сопоставления для VPID, указанного в дескрипторе. 2 Недействительность всех контекстов: делает недействительными все сопоставления для всех VPID, кроме VPID 0. 3 Сделайте недействительными все сопоставления для VPID, указанного в дескрипторе, за исключением глобальных преобразований. - ^ Функции, доступные для
VMFUNC
в регистре EAX находятся:ЕАХ Функция 0 Переключение EPTP: переключение указателя расширенной таблицы страниц на один из 512 указателей таблиц, заранее подготовленных хостом виртуальной машины.
ECX указывает, какой из 512 указателей использовать.1-63 (Зарезервировано, вызовет VMEXIT) ≥64 Недействительно, приведет к #UD. - ^ Операции, доступные для
SEAMOPS
в регистре RAX находятся:РАКС Операция 0 (ВОЗМОЖНОСТИ) Возвращаемое растровое изображение поддерживаемых SEAMOPS уходит в RAX. 1 (ОТЧЕТ ПО ШВАМ) Создайте структуру SEAMREPORT. Любое неподдерживаемое значение в RAX вызовет исключение #GP(0).
Ссылки
[ редактировать ]- ^ AMD, Технология виртуализации AMD64 под кодовым названием «Pacifica» , публикация №. 33407, ред. 3.01, май 2005 г. Архивировано 13 июня 2011 г.
- ^ CPU-World, CPUID для AMD Turion 64 X2 RM-75 , 05 марта 2022 г. Архивировано 19 апреля 2023 г.
- ^ Intel, Семейство процессоров Intel® Atom™ S1200 для микросерверов. Техническое описание, том 1 из 2 , номер для заказа. 328194-001, декабрь 2012 г., стр. 44
- ^ Vulners, VMX: проблема перехвата INVLPG по неканоническому адресу , 20 января 2016 г.
- ^ Intel, Архитектурные расширения ЦП Trust Domain , номер заказа. 343754-002, май 2021 г.
- ^ SecurityWeek, Intel добавляет TDX в портфель конфиденциальных вычислений с выпуском процессоров Xeon 4-го поколения , 10 января 2023 г.
- ^ Intel, Какие процессоры Intel Xeon поддерживают расширения домена Intel Trust (Intel TDX)? , 11 июня 2024 г. — указывает на общую доступность TDX на рынке для процессоров Emerald Rapids, но ограниченную доступность для процессоров Sapphire Rapids. Архивировано 13 июня 2024 г.