V-comp

Последовательные асинхронные порты
в терминальных и платежных системах

 
 
 












Регионы VMXON и VMCS

Технология Intel VMX определяет следующие две специальные области памяти.

VMXON Region

Размер этого блока не превышает 4KB. Точное значение размера зависит от модели процессора и может быть прочитано из битов 44-32 регистра IA32_VMX_BASIC MSR. Базовый физический адрес этого блока находится в 64-битном регистре VMXON Pointer, который загружается при выполнении инструкции VMXON, включающей режим VMX. Базовый адрес должен быть выровнен на 4KB (биты адреса 0-11 должны быть нулевые) и быть в пределах максимального физического адреса, поддерживаемого процессором.

Первое 32-битное слово этого блока должно содержать 32-битный идентификатор версии VMX (VMCS Revision Identifier). При выполнении инструкции VMXON проверяется совместимость этого идентификатора с моделью процессора. Для успешного прохождения этой проверки, перед выполнением инструкции VMXON программа должна прочитать поддерживаемый номер версии VMX из битов 31-0 регистра IA32_VMX_BASIC MSR и записать его по смещению 0 в рассматриваемом блоке. Назначение остальных полей блока зависит от модели процессора и не документировано Intel.

При работе в режиме VMX (в интервале времени от выполнения инструкции VMXON до выполнения инструкции VMXOFF) процессор использует этот блок аппаратно и программа не должна выполнять его чтение и запись. Описанная выше подготовка 32-битного идентификатора версии перед запуском режима VMX является единственной "заботой" программы о данном блоке.

VMCS Region (Virtual Machine Control Structure)

Размер этого блока зависит от модели процессора и всегда равен размеру выше описанного блока VMXON Region. Базовый физический адрес блока находится в 64-битном регистре VMCS Pointer, который загружается при выполнении инструкции VMPTRLD. Как и для блока VMXON, базовый адрес блока VMCS должен быть выровнен на 4KB, и быть в пределах максимального физического адреса, поддерживаемого процессором. Первое 32-битное слово блока VMCS должно содержать номер версии VMX. Его записывает программа в соответствии с битами 31-0 регистра IA32_VMX_BASIC MSR. Это необходимо для успешного выполнения проверки при выполнении инструкции VMPTRLD.

Следующее 32-битное слово используется как VMX Abort Indicator, процессор записывает в эту ячейку код ошибки при аварийном завершении "гостевых" программ. Форматирование остальной части блока не документировано и может различаться у процессоров разных моделей, но при этом, список переменных, хранящихся в этом блоке, документирован и фиксирован. Отметим, что для этих переменных предусмотрены инструкции чтения и записи (VMREAD, VMWRITE), которые позволяют обратиться к заданной переменной не по адресу, а по ее идентификатору. Благодаря такому методу, программа, использующая эти инструкции для работы с блоком VMCS, не требует адаптации под конкретную модель процессора. Переменные объединены в 6 логических групп:

1) Guest state area. Область сохранения данных для гостевой задачи. Состояние процессора сохраняется в эту область при операциях VM Exit (переход от виртуальной машины к супервизору) и загружается из этой области при операциях VM Entry (переход от супервизора к виртуальной машине).

2) Host state area. Область сохранения состояния для супервизора.

3) VM execution control fields. Эти поля управляют поведением процессора в режиме гостевой задачи (VMX non-root). Они определяют список возможных причин для выполнения операции VM exit, то есть, по каким причинам управление из виртуальной машины может возвращаться в супервизор.

4) VM exit control fields. Управляют выполнением операций VM exit (завершение работы виртуальной машины).

5) VM entry control fields. Управляют выполнением операций VM entry (запуск виртуальной машины).

6) VM exit information fields. Принимают информацию при VM exit. Описывают причину и тип операции VM exit. Эти поля доступны только для чтения (Read Only).

Совокупность групп 3, 4, 5 иногда называют VM Controls.


Инструкции Intel VMX


Рейтинг@Mail.ru

Copyright 2010 V-comp