17 Punkte von khwl1026 2026-01-07 | Noch keine Kommentare. | Auf WhatsApp teilen

Wir stellen basic_RV32s vor, mit dem sich die Grundlagen des RISC-V-CPU-Designs durch praktische Übungen mit 4 CPUs und 2 SoC-Designs erlernen lassen.

Zusammenfassung von basic_RV32s

  • Eine FPGA-lauffähige Softcore-RISC-V-RV32I-CPU, die während des Militärdienstes in 6 Monaten entwickelt wurde
  • Erreichte Leistung von Dhrystone 1.11 DMIPS/MHz und Coremark 1.10 Coremark/MHz
    Spitzenklasse unter in Korea entworfenen CPU-Publikationen auf RV32I-Basis.
    (Referenz auf 11 von 126 RISS-Publikationen mit enthaltenem RV32I-Benchmark, Stand zum Zeitpunkt der Erstellung)
    (Betrieb bei @50MHz)
  • Schrittweiser CPU-Designprozess und SoC-Design
    • 3 Single-Cycle-Kerne, (37F, 43F, 46F)
    • 1 5-stufiger Pipeline-Kern, (46F5SP)
    • 2 SoC-Designs mit dem Pipeline-Kern
      (46F5SP_SoC - Debug, Benchmark)
  • Intuitiv verständliche Modulabstraktion und Design auf hohem Niveau
  • Bereitstellung zahlreicher Dokumente zum Erlernen des RISC-V-CPU-Designs
    • RV32I Cheatsheet in Excel
    • Entwicklungstagebuch, Debug-Aufzeichnungen
    • Richtlinien für das Architekturdesign
    • Dokumente zur Erklärung der Logik jeder Architektur und jedes Moduls
    • Richtlinien für Bare-Metal-Portierung
      • Build-Richtlinien für die RISC-V GNU GCC Toolchain RV32I
      • Richtlinien zur Bare-Metal-Ausführung des Dhrystone-Benchmarks auf RV32I usw.
  • Bereitstellung von Code in einer Dual-Format-Struktur: Clean Code ohne Kommentare und Version mit Kommentaren
  • Bereitstellung von Architektur-Blockdiagrammen auf Signalebene
  • Zwei Studierende im 2. Jahr des Bachelorstudiums haben eigenständig eine Arbeit eingereicht und präsentieren sie auf der ISOCC 2025
  • Aufnahme in das offizielle RISC-V-Lernrepository riscv/learn
    • Learning Resources - Intermediate-Level Resource

Entwicklungshintergrund

Am 15. Dezember 2024 haben ich und ein Kamerad während des Militärdienstes ein Projekt begonnen, bei dem wir eine CPU direkt selbst bauen wollten. Vor Kurzem war bereits der erste Jahrestag!

Eine RISC-V-CPU auf Basis grundlegender Computerarchitektur zu bauen, ließ sich dank der Fülle an Theorie und Lehrbüchern vergleichsweise leicht erlernen. Doch als wir tatsächlich vor der Tastatur saßen, stellte sich das als ganz anderes Problem dar.

Es war zwar mein erstes richtiges Projekt mit dem in der Hochschule nur oberflächlich gelernten VerilogHDL, doch ich stellte fest, dass es kaum reale Open-Source-RISC-V-Beispiele gibt, die nicht nur die Implementierung, sondern auch Dokumentation, Handbücher und Richtlinien zum Bau einer RISC-V-CPU enthalten. (Nach dem Maßstab von riscv/learn - open implementations.)

Natürlich ist es eine gute Lernmethode, bereits implementierte Kerne wie NEORV32 oder DarkRISCV auseinanderzunehmen und zu analysieren. Aber bei Fragen des Designs, etwa zur Entwurfsphilosophie oder zu Entwicklungsaufzeichnungen, war es ziemlich schwierig, die genauen Gründe und Hintergründe der jeweiligen Entscheidungen zu verstehen und nachzuvollziehen.

Deshalb habe ich beschlossen, dieses Projekt nicht nur als Implementierung einer Open-Source-RISC-V-CPU zu veröffentlichen, sondern zu einem vollständigen Open-Source-Leitfaden für den Bau einer RISC-V RV32I CPU zu erweitern. Ich dachte, dass die Aufzeichnung des Wachstums eines Anfängers für die nächsten Anfänger ein guter Wegweiser sein könnte.

basic_RV32s im Überblick

Wie in der obigen Zusammenfassung erwähnt, enthält das Projekt Entwicklungslogs, Dokumente zum Kerndesign und eine Art Fehlernotiz zum Bau einer RISC-V-CPU und richtet sich auf Basis einer Architektur nach der Patterson-Hennessy-Methodik an Einsteiger in das RISC-V-Hardwaredesign wie mich.

Das Kerndesign beginnt mit der 37F-Architektur, die in RV32I 37 Befehle unterstützt, und wird dann schrittweise wie folgt erweitert.

  • 37F : Basisarchitektur, Single-Cycle
  • 43F : Unterstützung für 6 Zicsr-Erweiterungsbefehle
  • 46F : Unterstützung für die Befehle EBREAK, ECALL und mret
  • 46F5SP : 5-stufige Pipeline-Erweiterung mit Data Forwarding und einem dynamischen 2-Bit-FSM-Branch-Predictor

Um den Kern auf FPGA zu implementieren, wurde das 46F5SP_SoC entworfen, und zwar in zwei Versionen.

  • Debug-Version
    Beim Debuggen von Befehlen lässt sich der Ausführungsprozess Schritt für Schritt per Tastendruck über UART-Kommunikation verfolgen.
  • Benchmark-Version
    Dhrystone oder Coremark können ausgeführt werden, und die Ergebnisse lassen sich direkt über UART abrufen.

Das kürzlich aktualisierte 46F5SP_MMIO_SoC implementiert MMIO mit Unterstützung für UART-Ausgabe und ermöglicht dadurch printf. Wenn dieses SoC mit passenden BSP-Dateien wie Linker-, Boot-Skripten und syscall korrekt kompiliert wird, lassen sich die Ergebnisse verschiedener C-Programme wie Dhrystone 2.1 oder Coremark direkt abrufen.

Zum Schluss

Wir hoffen, dass unsere Begeisterung für RISC-V Anfängern beim Einstieg hilft. Und der wichtigste Punkt ist, dass das gesamte Projekt Open Source ist!
Das bedeutet, dass mit diesem Projekt bessere Lern-Tutorials, Dokumentationen und Prozessordesigns für die RISC-V-Community erstellt werden können und jeder frei dazu beitragen kann.

Ich habe das Gefühl, dass für dieses Ziel noch mehr nötig ist. Während des Projekts habe ich gelernt, dass Verifikation kein Ende kennt, und da ich kein Experte bin, könnten noch viele mir unbekannte Fehler enthalten sein, einschließlich verschiedener Hazards. Deshalb wurde das Repository nicht eingefroren und bleibt weiterhin offen! Es wäre eine große Hilfe, wenn erfahrene Leute sich unsere Arbeit ansehen und Feedback geben würden. Nicht nur für uns, sondern auch für alle, die dieses Projekt zum Lernen nutzen.

Danach

Inzwischen haben wir nach RV32I auch die Erweiterung auf RV64I abgeschlossen und arbeiten weiter auf das Ziel hin, RV64IM auszubauen und schließlich den ursprünglichen Traum zu verwirklichen: eine universelle CPU für Korea (RVA23) zu entwickeln. Derzeit konzentrieren wir uns im Repository ima_make_rv64 auf die Entwicklung bis zur RV64IMA-Erweiterung. Wir würden uns sehr freuen, wenn ihr das weiter verfolgt.

Noch keine Kommentare.

Noch keine Kommentare.