Hack Computer : fabriquer un ordinateur dans son garage

Tomer Kronik est un ingénieur chez Intel et pendant sa formation il s’est frotté à un projet baptisé Nand2tetris.

Hack Computer est un ordinateur fabriqué à partir de Nand2Tetris, un cours en ligne sous licence Creative Common qui propose de construire une machine à partir d’éléments basiques pour mieux comprendre leur fonctionnement. Des composants simples et des instructions simples pour fabriquer un ordinateur simple. Une sorte de LEGO informatique tant sur le plan logiciel que matériel qui permet de mieux appréhender les défis de ce type d’assemblage. L’ensemble est destiné à des fins éducatives et tout le monde peut s’emparer de ce projet pour se former.

Si le cours est assez touffu et les notions à aborder restent compliquées, il est également ouvert à tous et n’importe qui peut s’y intéresser. Les créateurs de Nand2Tetris l’ont voulu le plus abordable possible même si il faudra recourir à des mathématiques assez avancées et pas mal de programmation pour y parvenir. Mais attention, ne vous attendez pas à obtenir un véritable ordinateur à la fin de votre formation. Il s’agit de cours avant tout théoriques et aucun élément matériel ne sera assemblé sur un coin de bureau avec un fer à souder et beaucoup de patience. L’ensemble se base sur des simulations à l’intérieur d’un ordinateur classique. Simulation qui mettront en marche un ensemble de composants virtuels pour faire tourner un programme dans votre machine. Le  résultat sera le même qu’un vrai ordinateur mais sans tout l’aspect matériel.

C’est probablement la meilleure option quand on veut former un maximum de monde que de recourir à ce stratagème. Cela évite d’avoir à trouver des composants et à les assembler, cela évite de perdre au passage les moins doués en soudure et surtout ceux pour qui les investissements nécessaires empêcheraient tout accès à cet apprentissage. Seulement, cela a un côté frustrant. Suffisamment pour pousser Tomer Kronik à mener le projet un poil plus loin. Il a en effet décidé de construire réellement cet ordinateur virtuel… et l’a donc baptisé Hack Computer.

A l’aide de breadboards, ces éléments percés qui peuvent recevoir câbles et composants, il a fabriqué réellement une machine afin de pouvoir lui faire exécuter le code du cours.

La version FPGA par Michaël Schröder

Ce n’est pas le premier à avoir construit une machine réelle mais le précédent ordinateur de ce type a été monté sur un FPGA, autrement dit une puce programmable. Ce qui revient d’une certaine manière à construire une autre sorte de machine virtuelle.

Une partie de l’ALU du Hack Computer (Unité Arithmétique et Logique)

Ce Hack Computer est donc le premier ordinateur autour du projet Nand2Tetris à être mené à son terme. Tomer a du déjouer de nombreux pièges puisque les composants annoncés dans le cours partaient d’un postulat prédéfini pas forcément facilement traduisible dans le monde réel. Il a donc fallu créer des composants compatibles avec ces pre-requis. Deux ans de travail ont été nécessaires pour mener à bien cet engin particulier. Il fonctionne désormais à la perfection et l’ensemble des soucis rencontrés pendant cet assemblage ont été autant d’éléments formateurs pour Tomer. Notamment, les travaux autour des interfaces qui n’avaient pas lieu d’être dans le cours d’origine. Les contrôleurs vidéo et clavier n’existaient tout simplement pas dans le projet de base et il a été nécessaire de les construire de A à Z à partir des besoins de la machine.

Autre élément impressionnant de ce travail, faire correspondre la mémoire vive physique aux besoins du processeur réel. Dans le monde merveilleux de l’émulation assistée par un ordinateur tous ces éléments son gérés « magiquement » par le logiciel d’émulation mais quand il s’agit de composants réels, chaque pièce du puzzle doit parfaitement correspondre aux autres. D’autres bugs ont été rencontrés notamment à cause de soucis analogiques liés au format choisi.

Les breadboards ne sont pas spécialement des outils d’une grande stabilité électrique. Au fur et a mesure des ajouts techniques, il a donc été également nécessaire de développer des outils pour débuguer ces différents soucis.

Et tout cela pourquoi faire à la fin me direz vous ? Deux ans d’efforts et de travail acharné pour construire un ordinateur et des composants entiers pour… faire tourner des programmes basiques dont… cette version de Pong en vidéo. Evidemment, on pourrait trouver une console pour quelques euros pour parvenir au même résultat ou même se contenter d’un téléchargement d’une des multiples versions du jeu disponibles gratuitement en ligne. Mais, encore une fois, dans ce type d’apprentissage le résultat est loin d’être le plus important du processus. Le plus important c’est bel et bien le cheminement. Parvenir à aller au bout de ce Hack Computer et contourner les problèmes qui se dressent au fur et à mesure que l’on avance. Voilà qui force le respect.

Pour plus d’infos : le billet sur HackADay – Le projet Nand2Tetris

Merci au petit Mika pour l’info.

Faites découvrir le site en le partageant


Soutenez Minimachines avec un don mensuel : C'est la solution la plus souple et la plus intéressante pour moi. Vous pouvez participer via un abonnement mensuel en cliquant sur un lien ci dessous.
2,5€ par mois 5€ par mois 10€ par mois Le montant de votre choix

Gérez votre abonnement

11 commentaires sur ce sujet.
  • 13 juin 2022 - 20 h 51 min

    Très impressionnant ! C’est dingue de se dire qu’aujourd’hui un particulier avec peu de moyens peut fabriquer un ordinateur (minimaliste certes mais quand même) !

    Répondre
  • 13 juin 2022 - 21 h 38 min

    Un travail capital, car en informatique qui pourrait de nos jours remonter la chaine technologique depuis l’invention de la route en cas de disparition des machines capables de fabriquer d’autres machines ?

    Répondre
  • 13 juin 2022 - 23 h 02 min
  • 14 juin 2022 - 9 h 14 min

    En école d’ingé il y a 30 ans on se faisait encore des cartes à l’aide de circuits logiques élémentaires avec la technique du wrapping:
    https://fr.wikipedia.org/wiki/Wrapper_(%C3%A9lectronique)

    Et on ne touchait pas un assembleur (et encore moins un compilateur!) avant d’avoir réalisé un programme de gestion d’automate en assemblant ses opcodes à la main (sur un microprocesseur certes simple comparé aux actuels, mais il en existe encore, utilisés dans des applications IoT etc…).

    Pas certain que cela se fasse encore, mais même sans aller vers ce type de réalisation plus complexe c’est une approche qui a le mérite de fixer les idées quand on doit pour une raison ou une autre (errata processeur non encore documenté, bug compilateur/assembleur…) descendre au ras des pâquerettes.

    Répondre
  • Luc
    14 juin 2022 - 16 h 24 min

    Encore une belle découverte. Merci Minimachines.

    C’est juste extra: que ce soit le cours ou l’espèce d’engin présenté ici, je trouve tout cela très inspirant.

    Un tel cablage doit pouvoir être rassemblé assez facilement sur un PCB dédié avec apparemment que des composants traversants à souder.

    Je m’en vais regarder ça de plus près :-)

    Répondre
  • 14 juin 2022 - 22 h 22 min

    Super article!
    Je ne peux que conseiller le jeu ‘Turing Complete’ à ceux qui souhaiteraient comprendre le fonctionnement d’un ordinateur avec une approche vulgarisé.

    Répondre
  • 16 juin 2022 - 8 h 03 min
  • Luc
    2 août 2022 - 23 h 30 min

    Je déterre quelque peu le sujet, mais je viens de trouver ça:

    https://www.megaprocessor.com/

    40 000 transistors dans un volume de 2 mètres cubes, 500 kg : un beau bébé arrivé à terme en 2016.

    Répondre
  • 2 août 2022 - 23 h 48 min
  • Luc
    3 août 2022 - 0 h 24 min

    @Pierre Lecourt: oups

    La prochaine fois j’irai explorer les archives de Minimachines ;-)

    Répondre
  • 3 août 2022 - 1 h 09 min

    @Luc: Non mais les rappels c’est bien :D

    Répondre
  • LAISSER UN COMMENTAIRE

    *

    *