Erstellen Sie eine RISC-V-CPU von Grund auf neu

Es ist sicher Art von Juckreiz, der Menschen dazu bringt, freiwillig ihre eigene CPU zu bauen. Wir beginnen über die überarbeitete Lücke in unserem Verständnis nachzudenken, die zwischen der individuellen Funktionsweise von Logikgattern und Flip-Flops und der Steuerung eines vollständig zusammengebauten Prozessors durch Maschinencode lauert. Was genau passiert in der magischen Zone, in der festverdrahtete Schaltkreise zu der sich ständig ändernden Melodie der Software zu tanzen beginnen?

Es stellt sich heraus, dass dieser Juckreiz genug Menschen betrifft, dass es kommerzielle Kits für Hersteller gibt, die eine CPU zusammenstellen möchten, um sie zu sehen (oder zu hören), und das Web ist übersät mit selbst gebrauten 4-Bit- und 8-Bit-CPUs mit Architekturen das wäre einem Ingenieur aus den 1970er Jahren bekannt. Ich sollte es wissen – ich habe selbst einen gemacht. Aber dann begann ich mich zu fragen: Könnte ich meine eigene CPU mit einigen davon bauen? neueste Technologie? Könnte ich meine eigene vollständig kompatible 32-Bit-RISC-V-Zentraleinheit entwerfen?

RISC-V ist eine Open-Source-Architektur, die ungefähr 11 Jahre alt ist und nun in einer von den USA dominierten Welt Einzug hält x86- und ARM-CPU-Architekturen. Ich wurde durch die Arbeit von Robert Baruch auf die Möglichkeiten von RISC-V aufmerksam gemacht, der vor etwa zwei Jahren ein ähnliches Projekt startete, seinen Prozessor jedoch noch nicht fertiggestellt hat, auch weil er Komponenten, die er schon früh gebaut hatte, immer wieder neu entwerfen musste die Bedürfnisse eines sich entwickelnden Designs zu erfüllen.

Stattdessen begann ich damit, mein komplettes Design – das ich Pineapple One nannte – in Logisim Evolution, einem Logikschaltungssimulator, zu erstellen. Nach Konsultation des offiziellen RISC-V-Handbuchs und der ersten Ausgabe des Buches von David Patterson und John Hennessy Computerorganisation und -design, RISC-V Edition (Elsevier, 2017) und als ich Logisim an seine Grenzen stieß, hatte ich eine funktionierende Simulation von Pineapple One, die die Anforderungen einer grundlegenden RISC-V-CPU in sechs Monaten erfüllte.

Bei der Implementierung der RISC-V-Architektur war ich erstaunt, wie viel sinnvoller die Architektur im Vergleich zu dem herkömmlichen komplexen Befehlssatz war, den ich in meiner früheren selbstgebrauten CPU verwendet hatte. Redundanzen wurden beseitigt, und die Register des Prozessors – die Notizblöcke, auf denen der Arbeitsspeicher der CPU gespeichert ist – waren flexibler. Ein weiterer großer Vorteil war, dass RISC-V ein gut dokumentierter modularer Aufbau ist, sodass ich genau wusste, was jeder Block zu tun hatte. Mein Ziel war es, jeden Block auf meine eigene Weise zu entwerfen, aber sicherzustellen, dass er den RISC-V-Standards entspricht. (Dies diktierte, dass meine CPU 32-Bit sein muss, da RISC-V-Anweisungen per Definition mindestens so lang sind.)

Physikalisch ist die Pineapple One auf einem vertikalen Stapel von acht quadratischen Leiterplatten verteilt, die sich auf einer Seite etwa 10 Zentimeter befinden, sowie auf einer Karte, die eine VGA-Display-Schnittstelle handhabt. Es werden über 230 integrierte Schaltkreise verwendet, hauptsächlich aus der 74HCT-Reihe von Logikchips. Meine größte Herausforderung bestand darin, einen Barrel Shifter zu implementieren – eine Schaltung, die sich um einen steuerbaren Betrag um die Bits in einem Register verschieben kann. Ich habe zuerst eine schnelle Implementierung versucht, die über 80 Komponenten erfordern würde, aber wie auch immer, ich konnte nicht erreichen, dass sie auf meine Leiterplatten passt. Stattdessen habe ich mich für einen Low-Component-Ansatz entschieden, bei dem der Betrieb der restlichen CPU im Wesentlichen unterbrochen wird, bis mein Schalthebel fertig ist. Aufgrund der langen Spuren des Pineapple One im Vergleich zu einer Single-Chip-CPU hatte ich auch Probleme, die parasitäre Kapazität und Impedanz zu verwalten, was das Debuggen einiger wirklich seltsamer Verhaltensweisen bedeutete.

Ich habe jede einzelne Karte mit einem Arduino-Mikrocontroller getestet, um Eingaben vom Rest des Computers zu simulieren und die Ausgaben auf Richtigkeit zu überwachen. Ich habe ein schönes Gehäuse für den gesamten Stapel von Leiterplatten und Eingangs- / Ausgangsanschlüssen in 3D gedruckt, damit eine Tastatur und ein VGA-Display direkt an Pineapple One angeschlossen werden können. Es gibt vier universelle E / A-Ports – zwei 8-Bit-Eingänge und zwei Ausgänge.

Mein Freund Jan Vykydal hat mir geholfen, einen RISC-V-kompatiblen Compiler so einzurichten, dass er ordnungsgemäß funktioniert. Deshalb habe ich einige Systemsoftware und Demoprogramme in C geschrieben. Der Compiler erstellt Maschinencode und ich verwende ein Python-Skript, das den Code übernimmt und ihn flasht in den Speicher der CPU. Obwohl Pineapple One nur mit 500 Kilohertz läuft, ist das immer noch schnell genug, um ein einfaches Computerspiel wie dieses zu spielen Schlange in Echtzeit und die 512 Kilobyte Programmspeicher und 512 kB RAM sind ausreichend.

Letztendlich möchte ich den Prozessor ein wenig aufrüsten, damit komplexere Programme ausgeführt werden können. Ich möchte auch weitere Erweiterungskarten hinzufügen, z. B. eine Soundkarte. Auf Hackaday finden Sie Schaltpläne und eine Stückliste, aber letztendlich wäre es großartig, sie anderen als Kit anzubieten, die sich für das Verständnis des zeitgemäßen CPU-Designs interessieren.

Dieser Artikel erscheint in der Druckausgabe vom Juni 2021 als „Erstellen Sie Ihre eigene RISC-V-CPU. ”

Leave a Reply

Your email address will not be published. Required fields are marked *

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