Можем ли мы моделировать старый процессор?

Хотел бы я подражать процессору Athlon XP или Pentium IV на Intel Core третьего поколения. Есть ли способ запустить виртуальную машину, которая специально отключить а) новые функции процессора, такие как sse2sse3? и б) кэш процессора?

Я использую Qemu/KVM. То, как я его запускаю, только скрывает вторжения ЦП в гостевую ОС, чьи приложения по-прежнему имеют доступ к более новым версиям хост-машины:

хозяин

$ qemu-system-i386 -cpu pentium3,enforce (...) -enable-kvm

гость

$ inxi -f
CPU:       Single core Pentium III (Katmai) (-UP-) cache: 16384 KB speed: 3292 MHz (max)                
CPU Flags: apic cmov cx8 de fpu fxsr hypervisor mca mce mmx msr mtrr pae pge pse
           pse36 sep sse tsc x2apic

$ firefox   # v.54 which requires sse2;

Работает просто отлично, как и Palemoon и mpv, которые не будут работать на процессоре без sse2, как Athlon XP (выдает "незаконную инструкцию"). Значение sse2 определенно доступно для гостевой ОС. Только приложения, которые проверяют CPUID, терпят неудачу, например:

$ chromium-browser                                                                                                       
# (...)
# Fatal error in ../../v8/src/ia32/assembler-ia32.cc, line 109                                      
# Check failed: cpu.has_sse2().                                                                     
#
#0 0x0000b40b9f0a base::debug::StackTrace::StackTrace()

То же самое происходит, когда я запускаю виртуальную машину с -cpu athlon,sse2=off, Таким образом, в то время как мы можем разумно позаботиться, например, о количестве ядер, скорости процессора (используя cpulimit) или возможности ввода / вывода (с параметром qemu throttle), мы не можем ограничить набор инструкций процессора, доступных гостю, не так ли?

1 ответ

Вам придется пропустить использование KVM и заставить QEMU эмулировать все инструкции самостоятельно, чтобы инструкции перестали быть доступными.

Другие вопросы по тегам