émulation de processeur

Définition - Que signifie l'émulation de processeur?

L'émulation de processeur est un processus et une technologie de virtualisation qui permettent à un logiciel qui a été compilé pour un processeur ou un système d'exploitation (OS) spécifique de s'exécuter sur un système différent avec un processeur et un système d'exploitation différents. Cela se fait en traduisant dynamiquement les instructions du processeur et tous les appels de système d'exploitation associés d'un programme en instructions du processeur et du système d'exploitation sur lequel il s'exécute.

Definir Tech explique l'émulation de processeur

L'émulation de processeur permet l'exécution de programmes écrits pour un processeur à exécuter sur un processeur différent avec une architecture et un jeu d'instructions différents. Un bon exemple de base est un émulateur de console de jeu, qui permet aux utilisateurs de jouer à des jeux de console tels que Nintendo Entertainment System et PlayStation sur leur PC. Le processeur utilisé par une console de jeu est très différent de celui d'un PC, donc pour pouvoir jouer à des jeux de console sur un PC, le processeur de la console de jeu doit être émulé.

L'idée de base est que chaque action et comportement individuel du programme qui doit être exécuté doit être converti en jeu d'instructions et / ou appels de système d'exploitation équivalents du système hôte. L'objectif principal est d'exécuter du code qui modifie les états du processeur et interagit avec le matériel, et cela doit être fait pour chaque instruction du programme en cours d'exécution.

Manières de gérer l'émulation du processeur:

  • Recompilation dynamique - Une liste d'opérations est créée en exécutant le code, et lorsqu'une instruction de branchement est atteinte, la liste est compilée avec le code d'instruction de la plate-forme hôte. Ceci est ensuite mis en cache pour une utilisation future. Alternativement, chaque code pourrait simplement être compilé à la volée, mais cette approche est difficile à optimiser.
  • Recompilation statique - Ceci est également connu sous le nom de traduction binaire statique où le code est d'abord converti en code de la machine ou de l'architecture cible sans exécuter le code, comme cela se fait dans la recompilation dynamique. Des problèmes peuvent survenir, cependant, puisque tous les codes cibles ne peuvent pas être déterminés par le traducteur pendant la compilation, car certains d'entre eux ne peuvent être trouvés que dans des branches indirectes, qui, à leur tour, ne peuvent être déterminées qu'au moment de l'exécution.
  • Interprétation - Chaque code est lu à partir de la mémoire à l'aide du pointeur d'instructions, puis est exécuté selon le jeu d'instructions CPU de l'ordinateur hôte. En d'autres termes, les instructions sont traduites une à une puis exécutées nativement. Le plus gros inconvénient ici est la performance.