vykon VM emulatoru - was: Re: VMware & Virtual PC

Horák Daniel horak na sitmp.cz
Pondělí Listopad 10 12:39:23 CET 2003


> Existuji zhruba 3 zakladni pristupy, jak emulaci (nebo nekdy
> spis simulaci) provadet:
> 
> 1. Softwarove interpretovat kazdou jednotlivou instrukci. To 
> ma tu vyhodu,
>    ze lze napodobit prakticky libovolnou vychytavku emulovane 
> platformy
>    (vcetne kesi apod.) a to nezavisle na platforme, kde emulace bezi
>    (ta muze byt naprosto odlisna od emulovane). Nevyhodou je znacna
>    pomalost.
> 
> 2. Dynamicky prekladat strojovy kod emulovane platformy do strojoveho
>    kodu emulujici platformy. Vyhodou je, ze to pak bezi velmi 
> rychle a lze
>    to principialne pouzit, i kdyz jsou ty platformy odlisne. 
> Nekdy z toho
>    lze vymacknout jeste vic, kdyz se prelozeny kod jeste 
> optimalizuje. 
>    Nevyhodou je rezie prekladu, ktera muze byt navic dost
>    nedeterministicka.
> 
> 3. Spustit emulovany kod ve vhodnem umelem prostredi primo na CPU a
>    problematicke instrukce odchytit a vyresit softwarove. To je takove
>    nejprimocarejsi reseni, ktere je casto nejrychlejsi, ale muze byt
>    problem s vytvorenim toho prostredi (jak nacpat 4 GB emulovaneho
>    adresoveho prostoru do realnych 4 GB, aby se tam vesel jeste
>    emulator se svymi pracovnimi daty apod.) a pak samotnym odchycenim
>    problematickych instrukci (napr. na i386 je par instrukci, ktere
>    normalne odchytit nelze, ale z principu davaji odlisne vysledky
>    na "cistem" CPU a pri emulaci), take muze mit odchytavani instrukci
>    v urcitych situacich takovou rezii, ze to v konecnem dusledku bude
>    pomalejsi nez predchozi pristupy.

Abych jeste doplnil dalsi veci:
3. zpusob - plex86 (www.plex86.org), pro virtualni stroje s Linuxem bude
asi nejlepsi - nechava bezet primo vsechno, co lze, zdrojak Linuxu se
patchuje (naprosto minimalne), aby tam nebyly instrukce, ktere nelze
virtualizovat

2. zpusob - qemu, guss (http://www.nongnu.org/guss/) - prevadi instrukce
ciloveho stroje na mikro-operace, ktere jsou implementovany uz pro
hostitelsky stroj (jak qemu, tak guss pouzivaji stejny generator ;-)),
guss ma emulovano vice PC HW nez qemu

1. zpusob - napr. emulatory, ktere jsou distribuovany spolu s GDB (v
adresari sim) a mnohe dalsi - napr. pro MIPS = vmips, sulima, pro IBM
mainframe = Hercules, pro PPC =
http://www.microlib.org/G3/PowerPC750.php, ...


			Dan


Další informace o konferenci Linux