3

Можно ли создать виртуальную машину с конкретным процессором, который поддерживает только определенный набор инструкций.

Например, я хочу попробовать что-то на компьютере с процессором, который не поддерживает инструкции AVX или SSE. Можно ли создать виртуальную машину с процессором, который не поддерживает AVX или SSE?

2 ответа2

3

В документации VMware упоминается "маска CPUID", но я не знаю, насколько это настраиваемо.

Если вы хотите поэкспериментировать с другими VMM, QEMU может включать и отключать флаги CPUID в командной строке. Например, qemu-system-i386 -cpu n270,fpu=off приводит к созданию виртуального ЦП с функциями n270, но с отключенным флагом fpu. Полный список поддерживаемых моделей процессоров и флагов CPUID qemu-system-i386 -cpu help .

3

Вроде, как бы, что-то вроде. VMware и VirtualBox не поддерживают эмуляцию, только виртуализацию. Это означает, что вы не можете добавлять функции. Однако удаление функций не должно создавать проблем.

Эта статья содержит некоторые подробности о том, как подделать CPUID, как сообщается гостю. Имейте в виду, что это не отключает какие-либо функции.

Инструкция для продуктов VMware (цитата):

Используйте редактор (например, блокнот), откройте файл конфигурации виртуальной машины (.vmx)
Добавляем следующие строки:

cpuid.1.eax = "00000000000000110100011010101001"
cpuid.1.edx = "10111111111010111111101111111011"

Если CPUID все еще не изменен или недействителен, попробуйте добавить:

cpuid.1.ebx = "00000000000000110100011010101001"
cpuid.1.ecx = "10111111111010111111101111111011"

Сохраните файл конфигурации и запустите вашу виртуальную машину.

Инструкция для VirtualBox (цитата):

Откройте командную строку и перейдите в рабочий каталог VirtualBox.
Выполните следующую команду, чтобы изменить CPUID.

vboxmanage modifyvm  --cpuidset 1 000306a9 00100800 3d9ae3bf bfebfbff

Запустите вашу виртуальную машину.

Как вы получите эти значения CPUID, зависит от вас, вам, вероятно, придется обратиться к руководству по архитектуре набора инструкций вашего процессора.

Если вы хотите эмулировать функции, вам нужно использовать эмулятор. QEMU может выполнять как виртуализацию, так и полную эмуляцию. Он также поддерживает многие архитектуры ЦП, кроме x86/x64.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .