TUTORIEL ALGO/METHODES 
Expliquez-moi... L'émulation
Jeux vidéo, virtualisation, tests logiciels et matériels : l'émulation est utilisée dans tous ces domaines. Elle consiste à imiter le fonctionnement interne d'un système. Mais comment ? (29/11/2005)
L'émulation est un sujet protéiforme : elle est aujourd'hui présente tant dans le domaine ludique que professionnel, et autant dans le monde du logiciel que dans celui du matériel.

En effet, il est possible d'émuler aussi bien un logiciel voire un système d'exploitation complet, que la présence d'un processeur ou d'un type de carte donnés. Citons notamment les outils d'émulation d'anciens ordinateurs et consoles (Amiga, Nintendo, Sega...) et les solutions professionnelles de virtualisation (VMWare, SAN/NAS...).

L'objectif de l'émulation est donc d'imiter le fonctionnement interne d'un système, le plus souvent de manière logicielle : toutes les fonctions doivent être présentes, de sorte qu'un logiciel, en y accédant, se comporte comme s'il était directement en contact avec le système original. L'émulation ne consiste pas à récrire un programme pour un système précis, mais à concevoir une "boîte noire" qui se charge de traiter les appels aux fonctionnalités du système émulé. Cette boîte noire peut être totalement indépendante du système cible (émulation totale), ou reposer sur les fonctionnalités de cette cible (compatibilité).

Outre le fait de pouvoir utiliser des logiciels ou matériels anciens avec les systèmes et machines d'aujourd'hui, l'émulation a démontré son utilité lors des phases de développement de produits - destinés à des processeurs encore en cours de conception, par exemple. L'émulateur tente alors de prévoir le comportement du futur système de la manière la plus précise possible, et peut être mis à jour selon l'évolution des spécifications, plus rapidement que si l'on devait fondre un nouveau processeur à chaque fois.

L'émulation est rendue possible par le modèle d'architecture Von Neumann, commune à tous les ordinateurs modernes. Ce modèle, conçu dans les années 50, impose le partage de la même mémoire par le processeur et les données. Tous les composants d'un ordinateur suivant ce modèle fonctionnent par extension sur le même principe. De fait, le fonctionnement logiciel ou matériel répond, dans sa forme la plus basique, aux mêmes caractéristiques, quel que soit le système d'origine.

Reste cependant à adapter un système pour le faire fonctionner sur un autre. Cela suppose non seulement une excellente connaissance du système d'origine (le système d'exploitation à émuler, par exemple), du système de destination (le processeur de la machine cible), et du langage de programmation utilisé pour construire l'émulateur.

Les deux langages les plus utilisés sont l'Assembleur (très rapide, mais spécifique à une machine) et le C (portable, mais potentiellement moins rapide). Il est fortement recommandé d'utiliser dans tous les cas un langage fortement typé, ou très proche du processeur, plutôt qu'un langage généraliste.

Connaître et reproduire à l'identique n'a rien de trivial : pour commencer, la documentation est rarement accessible, et le développeur devrait certainement avoir recours à la décompilation du code du système d'origine - donc en déduire son fonctionnement. Il s'agira ensuite d'émuler non seulement le système d'origine, mais également tous les composants qu'il est censé accéder : mémoire, disque, carte son, périphériques de contrôles...

  Forum

Réagissez dans les forums de JDN Développeurs

Le plus souvent, cependant, l'émulateur se "contente" de créer une couche de compatibilité entre les appels logiciels (fichier ROM, par exemple) et le système d'exploitation. Cette couche traduit ces appels en instructions cohérentes pour le système réellement en place.

Pour le logiciel faisant appel au système émulé, le résultat est le même, mais le fonctionnement interne est beaucoup plus simple qu'en cas d'une émulation complète.
 
Xavier Borderie, JDN Développeurs
 
Accueil | Haut de page
 
 





Quand achetez-vous le plus en ligne ?
Du lundi au vendredi
Le samedi
Le dimanche

Tous les sondages