古いプロセッサをシミュレートできますか?


0

第三世代Intel CoreでAthlon XPまたはPentium IVプロセッサをエミュレートできるといいのですが。特に仮想マシンで実行する方法がある無効)新しいCPU機能を同じようにsse2 sse3?およびb)CPU キャッシュ

Qemu / KVMを使用しています。私がそれを起動する方法は、ゲストOSに対するCPU命令を隠しているだけです。ゲストOSのアプリケーションはまだホストマシンの新しいものにアクセスできます。

ホスト

$ 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は、Athlon XPのようなsse2が欠けているCPUでは実行されません(「不正な命令」を生成します)。意味sse2は、ゲストOSで完全に利用可能です。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()

VMをで実行すると、同じことが起こります-cpu athlon,sse2=off。たとえば、コア数、プロセッサ速度(を使用cpulimit)、またはI / O機能(qemuのスロットルパラメーターを使用)などを合理的に管理できますが、ゲストが使用できるCPU命令セットを制限することはできませんか?


1
プログラムがこれらの拡張機能を使用している場合、それを隠すと、それらのアプリケーションを実行する必要があります
-Ramhound

@Ramhoundええ、それがポイントです。vmで(非表示とは異なり)それらを無効にすると、ターゲットCPUでサポートされていないCPU機能を必要とするアプリケーションを検出できます。そして、代替案(例えば、sseのみのビルド)を見つけます。CPU命令の限られたセットでアプリケーションの動作のアイデアを得ることができます。
tuk0z

回答:


0

KVMの使用をスキップして、QEMUがすべての命令自体をエミュレートするようにして、命令が利用できなくなるようにする必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.