Virtualiser le 6502 sur un 6502 avec 6o6
(oldvcr.blogspot.com)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
Commentaires Hacker News
Résumé :