Qu’est-ce qu’une machine virtuelle ?
- Une machine virtuelle (VM) est un programme qui fonctionne comme un ordinateur. Elle simule un CPU et quelques composants matériels afin d’effectuer des opérations arithmétiques, de lire et d’écrire en mémoire, et d’interagir avec des périphériques d’I/O.
- Une VM est créée pour reproduire le comportement d’un ordinateur donné ou pour faciliter le développement logiciel.
- La Java Virtual Machine (JVM) en est un exemple réussi, car elle permet d’exécuter des programmes Java, Kotlin et Clojure sur divers appareils.
Architecture LC-3
- LC-3 est une architecture informatique pédagogique qui illustre les principaux concepts utilisés dans les CPU modernes.
- LC-3 dispose de 65 536 emplacements mémoire, chacun stockant une valeur de 16 bits.
- Elle comporte 10 registres, dont 8 registres génériques, 1 compteur ordinal (PC) et 1 registre de drapeaux conditionnels (COND).
Jeu d’instructions
- Une instruction est un ordre indiquant l’opération élémentaire que le CPU doit exécuter.
- LC-3 possède 16 opcodes, et chaque instruction a une longueur de 16 bits.
- Une instruction se compose d’un opcode et des paramètres nécessaires à l’opération.
Drapeaux conditionnels
- Le registre R_COND stocke les drapeaux conditionnels indiquant le signe du calcul le plus récent.
- LC-3 utilise 3 drapeaux conditionnels pour représenter le signe du résultat d’un calcul.
Exécution du programme
- Le programme charge les instructions depuis la mémoire, incrémente le registre PC, vérifie l’opcode, puis exécute l’instruction.
- Les instructions peuvent modifier le PC pour contrôler le flux d’exécution.
Implémentation des instructions
- L’instruction ADD additionne deux nombres et stocke le résultat dans un registre.
- L’instruction LDI charge une valeur depuis la mémoire et la stocke dans un registre.
- Chaque instruction est implémentée conformément à sa spécification et doit mettre à jour les drapeaux.
Routines de trap
- LC-3 fournit des routines de trap pour effectuer des tâches courantes comme la saisie au clavier ou l’affichage de chaînes de caractères.
- Chaque routine de trap est identifiée par un code de trap et exécutée via l’instruction TRAP.
- Les routines de trap sont écrites en C, ce qui améliore les performances de la VM en tirant parti des routines d’I/O de l’OS.
1 commentaires
Commentaires sur Hacker News
Un utilisateur a raconté qu’en suivant un cours d’introduction à l’informatique dans un community college, il avait conçu un jeu d’instructions CPU simple, écrit une VM et un assembleur, puis exécuté des programmes en assembleur. Cette expérience lui a permis de mieux comprendre de nombreux aspects du fonctionnement des ordinateurs.
Après avoir regardé la série sur le CPU sur breadboard de Ben Eater, quelqu’un a exprimé l’envie de concevoir et d’émuler son propre CPU.
Liste de livres recommandés :
Certains ont estimé que des architectures pédagogiques comme la Brookshear Machine et le Little Computer diffèrent trop de la réalité et risquent de donner aux étudiants une compréhension déformée.
Certains ont fait remarquer qu’aujourd’hui, l’expression "Virtual Machine" désigne généralement un environnement utilisant des fonctions modernes de virtualisation matérielle.