Construire un CPU RISC-V à partir de zéro

C’est un certain sorte de démangeaison qui pousse les gens à construire volontairement leur propre processeur. Nous commençons à réfléchir à l’écart papier dans notre compréhension, celui qui se cache entre la façon dont les portes logiques et les bascules fonctionnent individuellement et la façon dont le code machine contrôle un processeur entièrement assemblé. Quoi exactement se passe-t-il dans la zone magique où les circuits câblés commencent à danser sur la mélodie en constante évolution du logiciel?

Il s’avère que cette démangeaison afflige suffisamment de gens pour qu’il existe des kits commerciaux pour les fabricants qui souhaitent assembler un processeur pour le voir (ou l’entendre) tiquer, et le Web est jonché de processeurs 4 et 8 bits fabriqués à la maison avec des architectures. cela serait familier à un ingénieur des années 1970. Je devrais le savoir – j’en ai fait un moi-même. Mais ensuite, j’ai commencé à me demander: pourrais-je construire mon propre processeur avec certains des dernier La technologie? Puis-je concevoir ma propre unité centrale de traitement RISC-V 32 bits entièrement conforme?

RISC-V est une architecture open-source qui a environ 11 ans, et commence maintenant à faire des incursions dans un monde dominé par le X86 et architectures CPU ARM. J’ai été alerté des possibilités du RISC-V par le travail de Robert Baruch, qui a lancé un projet similaire il y a environ deux ans mais n’a pas encore terminé son processeur, en partie parce qu’il a dû continuer à repenser les composants qu’il avait construits au début pour répondre aux besoins d’une conception évolutive.

Au lieu de cela, j’ai commencé par construire ma conception complète – que j’ai baptisée Pineapple One – dans Logisim Evolution, un simulateur de circuit logique. Après avoir consulté le manuel officiel RISC-V et la première édition du livre de David Patterson et John Hennessy Organisation et conception informatiques, édition RISC-V (Elsevier, 2017), et poussant Logisim à ses limites, j’ai eu une simulation de travail de Pineapple One qui répondait aux exigences d’un processeur RISC-V de base en six mois.

En implémentant l’architecture RISC-V, j’ai été étonné de voir à quel point l’architecture avait plus de sens par rapport au jeu d’instructions complexe conventionnel que j’avais utilisé dans mon ancien processeur maison. Les redondances avaient été éliminées et les registres du processeur – les blocs-notes qui stockaient la mémoire de travail du processeur – étaient plus flexibles. Un autre gros avantage était que RISC-V est une conception modulaire bien documentée, donc je savais exactement ce que chaque bloc avait à faire. Mon objectif était de concevoir chaque bloc à ma manière, mais assurez-vous qu’il fonctionne conformément aux normes RISC-V. (Cela a dicté que mon processeur soit 32 bits, car les instructions RISC-V sont au moins aussi longues par définition.)

Physiquement, le Pineapple One est réparti sur une pile verticale de huit cartes de circuits imprimés carrées d’environ 10 centimètres de côté, plus une carte qui gère une interface d’affichage VGA. Il utilise plus de 230 circuits intégrés, principalement de la série 74HCT de puces logiques. Mon plus grand défi consistait à mettre en œuvre un shifter baril – un circuit qui peut déplacer les bits d’un registre d’une quantité contrôlable. J’ai d’abord essayé une implémentation rapide qui nécessiterait plus de 80 composants, mais autant que je puisse le faire, je n’ai pas pu l’adapter à mes PCB. Donc, à la place, j’ai opté pour une approche à faible composant qui suspend essentiellement le fonctionnement du reste du processeur jusqu’à ce que mon levier de vitesses finisse de démarrer. En raison des longues traces de Pineapple One, par rapport à un processeur à puce unique, j’ai également eu du mal à gérer la capacité et l’impédance parasites, ce qui impliquait de déboguer des comportements vraiment étranges.

J’ai testé chaque carte individuelle en utilisant un microcontrôleur Arduino pour simuler les entrées du reste de l’ordinateur et pour surveiller l’exactitude des sorties. J’ai imprimé en 3D un joli boîtier pour contenir toute la pile de PCB et de connecteurs d’entrée / sortie, de sorte qu’il soit possible de connecter un clavier et un écran VGA directement au Pineapple One. Il existe quatre ports d’E / S à usage général: deux entrées 8 bits et deux sorties.

Mon ami Jan Vykydal m’a aidé à configurer un compilateur compatible RISC-V pour qu’il fonctionne correctement, j’ai donc écrit des logiciels système et des programmes de démonstration en C.Le compilateur produit du code machine, et j’utilise un script Python qui prend le code et le fait clignoter dans la mémoire du CPU. Même si Pineapple One ne pèse que 500 kilohertz, c’est encore assez rapide pour jouer à un simple jeu d’ordinateur comme Serpent en temps réel, et les 512 kilo-octets de mémoire programme et 512 ko de RAM sont amplement suffisants.

En fin de compte, j’aimerais mettre un peu à niveau le processeur afin qu’il puisse exécuter des programmes plus complexes. J’aimerais également ajouter plus de cartes d’extension, comme une carte son. Vous pouvez trouver des schémas et une nomenclature sur Hackaday, mais en fin de compte, ce serait formidable de l’offrir sous forme de kit à d’autres personnes intéressées par la conception de processeurs contemporains.

Cet article apparaît dans le numéro de juin 2021 sous la forme “Construisez votre propre processeur RISC-V. »

Lire aussi  Microsoft va désactiver les macros à l'ancienne pour protéger les utilisateurs des attaques

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Recent News

Editor's Pick