2 points par GN⁺ 2024-05-13 | 1 commentaires | Partager sur WhatsApp

Présentation de 6o6, qui virtualise un CPU 6502 avec un CPU 6502 (et sortie de The Incredible KIMplement 1.0)

  • L’auteur a officiellement publié la version 1.0 de « The Incredible KIMplement », l’un des projets de sa bucket list sur lesquels il a travaillé par intermittence pendant 20 ans
  • The Incredible KIMplement est un programme qui émule le KIM-1, un ordinateur monocarte basé sur le 6502 MOS/Commodore à 1 MHz avec 1 Ko de mémoire
    • Il fonctionne sur Commodore 64 et fournit la prise en charge TTY du KIM-1 ainsi que 16 Ko de RAM étendue
  • Plus important encore, il a implémenté sur un CPU 6502 un CPU NMOS 6502 entièrement virtualisé appelé 6o6 (6502-on-6502)
    • Il contrôle parfaitement l’exécution du code invité et abstrait les accès mémoire, ce qui permet aussi une exécution en mémoire virtuelle
    • Non seulement il réussit les tests fonctionnels, mais il peut aussi se virtualiser lui-même plusieurs fois

Motivation et conception de la virtualisation du 6502

  • Dans son enfance, l’auteur voulait créer un « système d’exploitation ultime », mais la plupart de ses tentatives n’ont pas dépassé le stade de démos primitives
  • En découvrant les systèmes multi-utilisateurs, il a compris que les utilisateurs pouvaient exécuter du code problématique
    • Un système efficace doit pouvoir empêcher les problèmes causés par le code ou y répondre
  • À cause des limites du CPU 6502, il est difficile de résoudre parfaitement cela par le seul matériel
    • Il a donc choisi une approche logicielle
  • La machine virtuelle (VM) 6o6 exécute le code invité et abstrait complètement les accès mémoire
    • Le harness sert d’interface de la VM vers la mémoire invitée et le matériel
    • Le kernel exécute la VM et gère les situations d’exception
  • Les opérations de l’ALU sont exécutées directement par le CPU 6502 hôte afin de garantir précision et performances
  • Les performances ont été optimisées grâce à des techniques comme les accès mémoire inline et l’Instruction Fusion

Validation et tests de 6o6

  • Vérification de la précision à l’aide de la suite de tests fonctionnels de Klaus Dormann
  • Mesure des performances avec l’émulateur lib6502
    • L’application des accès mémoire inline et de l’Instruction Fusion réduit de 36,5 % le nombre d’exécutions d’instructions
  • Quatre programmes de démonstration sont inclus pour Commodore 64 et Apple IIe
    • Hello World
    • Virtualisation de lui-même à plusieurs reprises
    • Commutation entre 2 tâches indépendantes
    • Émulation d’un espace d’adressage de 64 Ko à l’aide d’une cartouche geoRAM

Domaines d’usage potentiels de 6o6 et idées d’amélioration supplémentaires

  • Développement de systèmes d’exploitation personnalisés
  • Environnement sûr pour l’exécution de code téléchargé
    • Par exemple l’exécution dynamique de code dans un client Gopher
  • Prise en charge de la virtualisation sur des systèmes NMOS 6502 avec un minimum de matériel
  • Refactorisation pour permettre un fonctionnement depuis la ROM
  • Émulation des instructions CMOS 65C02
  • Optimisations de code supplémentaires

L’avis de GN⁺

  • 6o6 semble être une excellente solution de virtualisation logicielle, particulièrement utile sur les systèmes 6502 aux ressources matérielles limitées.

  • La structure modulaire du harness et du kernel est impressionnante. Elle devrait aider à prendre en charge divers matériels tout en assurant une bonne flexibilité.

  • Les techniques appliquées pour optimiser les performances de l’émulateur (accès mémoire inline, Instruction Fusion, etc.) sont intéressantes. Elles semblent être de bonnes idées à réutiliser dans d’autres projets d’émulateur.

  • La démonstration sur du matériel réel (Commodore 64, Apple II) ainsi que sur des cartouches d’extension comme geoRAM est également marquante. Elle montre bien la compatibilité logicielle et l’utilité du projet.

  • Comme il s’agit d’un projet très abouti, la publication du code source pourrait constituer une contribution utile à la communauté concernée. Les futures améliorations et cas d’usage seront intéressants à suivre.

1 commentaires

 
GN⁺ 2024-05-13
Commentaires Hacker News

Résumé :

  • L’auteur présente la première réalisation achevée d’un projet figurant sur sa bucket list, sur lequel il a travaillé par intermittence pendant 20 ans. Une bucket list assez impressionnante, semble-t-il.
  • Il est toujours fascinant de pousser l’architecture 6502, simple et limitée malgré ses 50 ans, vers de nouvelles limites. On trouve encore des cœurs 6502 dans certains SoC visant des marchés de masse à très bas coût.
  • Cela ravive des souvenirs de l’époque où l’auteur a appris pour la première fois l’assembleur 6502. À ce moment-là, un livre intitulé "The Visual Computer" était fourni avec un émulateur sur disquette, et cela avait été une vraie révélation. Un PDF du livre a été retrouvé, mais on ne sait pas si le logiciel de la disquette existe encore.
  • Le véritable point central du billet, selon le corps du message, est la manière dont le Commodore 64 émule des systèmes basés sur 6502 très différents. Cela s’appelle "6o6" ou "6502-on-6502" : un CPU NMOS 6502 entièrement virtualisé en logiciel, exécuté sur un processeur 6502. Le projet est publié en open source.
  • Il permet de contrôler complètement l’exécution du code invité, de piéger les opcodes non documentés ainsi que les opcodes de blocage, et d’abstraire totalement tous les accès mémoire, ce qui permet le remappage d’adresses, le blocage des lectures/écritures illégales et l’exécution avec une mémoire virtuelle complète.
  • Il ne se contente pas de réussir les tests fonctionnels : il est suffisamment abouti pour se virtualiser lui-même en train de se virtualiser lui-même.
  • C’est un travail stupéfiant, non seulement du point de vue du 6502, mais à tous points de vue.
  • Cela a aussi rappelé la vidéo "The Zilog Z80 has a Protected Mode", même s’il n’y avait eu aucune discussion sur HN lorsque cette vidéo y avait été publiée.
  • La lecture du texte a été si impressionnante qu’elle en a donné des frissons. Il faudra sans doute le relire encore et encore.