Peut-on simuler un processeur plus ancien?

0

J'aimerais pouvoir émuler un processeur Athlon XP ou Pentium IV sur un processeur Intel de troisième génération. Est - il possible d'exécuter une machine virtuelle spécifique désactiver a) les nouvelles fonctionnalités de cpu comme sse2 sse3? et b) cache cpu ?

J'utilise Qemu / KVM. La façon dont je le lance ne masque que les intructions de la CPU à l'OS invité, dont les applications ont toujours accès aux plus récentes de la machine hôte:

hôte

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

client

$ 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;

Fonctionne très bien, tout comme Palemoon et mpv, qui ne fonctionneront pas sur un processeur dépourvu de sse2 comme Athlon XP (produisant une "instruction illégale"). Cela signifie que sse2 est définitivement disponible pour le système d'exploitation invité. Seules les applications qui vérifient le CPUID échouent, par exemple:

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

La même chose se produit lorsque je lance la machine virtuelle avec -cpu athlon,sse2=off. Ainsi, bien que nous puissions prendre soin, par exemple, du nombre de cœurs, de la vitesse du processeur (utiliser cpulimit) ou des capacités d'E / S (avec le paramètre d' accélérateur de qemu ), nous ne pouvons pas limiter le jeu d'instructions CPU disponible pour l'invité, n'est-ce pas?

tuk0z
la source
1
Si un programme utilise ces extensions que vous cachez, cela signifie qu'il est nécessaire pour exécuter ces applications
Ramhound
@Ramhound ouais c'est le point. La désactivation (contrairement à leur masquage) dans une machine virtuelle permettrait de détecter toute application nécessitant des fonctionnalités de processeur non prises en charge sur le processeur cible. Et trouvez des alternatives (par exemple, des constructions sse uniquement). En plus de vous faire une idée du comportement des applications avec un nombre limité d’instructions cpu.
tuk0z

Réponses:

0

Vous devrez sauter l'utilisation de KVM et faire en sorte que QEMU émule toutes les instructions pour que ces dernières cessent d'être disponibles.

Anon
la source