3 points par GN⁺ 2024-12-28 | 1 commentaires | Partager sur WhatsApp

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

 
GN⁺ 2024-12-28
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.

    • Il a eu le sentiment qu’on pouvait ainsi apprendre toutes les étapes de l’informatique, depuis la conception d’un véritable CPU pour FPGA jusqu’à l’écriture d’un OS simple et de programmes.
    • Si l’on n’a pas besoin des performances et de la sécurité de l’informatique moderne, ce processus est étonnamment simple.
  • 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.

    • Il a indiqué qu’il aimerait prendre le temps de s’y consacrer.
  • Liste de livres recommandés :

    • "Virtual Machines: Versatile Platforms for Systems and Processes" de Smith et Nair — semble être une vue d’ensemble complète du sujet
    • "Virtual Machines" de Iain Craig — semble être un ouvrage pratique sur les langages et les VM
    • "Virtual Machine Design and Implementation in C/C++" de Bill Blunden — semble être un guide d’implémentation pratique
    • Il a été mentionné que ce serait utile si quelqu’un ayant lu ces livres pouvait ajouter son avis.
  • 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.

    • Ils ont suggéré que ceux qui veulent apprendre comment fonctionne un ordinateur auraient davantage intérêt à suivre un cours sur les systèmes d’exploitation.
    • Pour un tutoriel court, ils recommandent "Writing my own bootloader".
    • L’idée n’est pas de dire que le tutoriel "Write your own VM" est mauvais, mais plutôt que d’autres sujets peuvent être plus utiles.
  • 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.

    • Ils ont expliqué la différence entre un émulateur et une VM, en ajoutant que si le terme était ambigu par le passé, il est désormais plus clairement défini.