Les différentes approches en virtualisation / émulation
 

Virtualisation


Le but recherché étant la performance, avoir un processeur hôte similaire à celui que l'on cherche à émuler est la situation la plus favorable. Le code tourne alors nativement sur le processeur, sans traduction, seuls les appels systèmes sont traités par émulation.
Cette technique étant de plus en plus courante, un support matériel a également été inclus dans les processeurs modernes pour accèlerer la gestion de la mémoire (ex extension SSE Intel).
Sur certaine portions de code (calcul intensif), la vitesse d'émulation s'approche de 100% à fréquence d'horloge égale. Elle se situe plus généralement entre 25 et 50%.




Emulation par recompilation de code


Autre mode d'émulation performant, le code prévu pour un processeur est traduit (partiellement ou en totalité) lors du chargement pour le processeur hôte. Bien que complexe à mettre en oeuvre, cette technique donne d'excellent résultats et représente un bon compromis entre vitesse et exactitude.
Performance moyenne, 10 à 15% à fréquence d'horloge égale.



Emulation pure


Chaque instruction est traitée par le programme d'émulation, les registres internes du processeur sont stockés dans des variables. Quelques optimisations sont possibles mais la vitesse d'émulation dépasse rarement 2 à 5% à fréquence d'horloge égale.