我们可以模拟较旧的处理器吗?

我们可以模拟较旧的处理器吗?

我希望能在第三代 Intel Core 上模拟 Athlon XP 或 Pentium IV 处理器。有没有办法运行专门用于禁用a) 较新的CPU 功能比如sse2 sse3? 和 b) cpu缓存

我使用 Qemu/KVM。我启动它的方式只有隐藏对客户操作系统的 CPU 指令,其应用程序仍然可以访问主机的较新的应用程序:

主持人

$ 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 的 CPU(如 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)或 I/O 功能(使用 qemu 的风门参数),我们不能限制客户机可用的CPU指令集,可以吗?

答案1

您必须跳过 KVM 的使用并让 QEMU 自己模拟所有指令,以便指令停止可用。

相关内容