Schwerpunkte

Mikrocontroller

Neustart mit RISC-V

27. Februar 2020, 06:58 Uhr   |  Dr. Claus Kühnel

Neustart mit RISC-V
© SiFive

Bild 1: Entwicklungsboard SiFive HiFive 1 Rev. B im Arduino-Uno-Format. Deutlich erkennbar sind neben dem FE310-G002 (rechts oben) das darunterliegende ESP32-Modul sowie der den Debugger bildende Cortex-M4 (Mitte links).

Nur selten setzt sich eine neue Befehlssatzarchitektur durch. RISC-V hat die Anfangshürden genommen und ist auf dem Weg zum Erfolg. Welche Plattformen eignen sich zur Einarbeitung?

Reduced-Instruction-Set-Computer (RISC) wurden mit dem Ziel entwickelt, den komplexen, für die Assemblerprogrammierung komfortablen Befehlssatz eines Complex-Instruction-Set-Computers (CISC) durch einen einfach zu dekodierenden und extrem schnell auszuführenden Befehlssatz (Instruction Set) zu ersetzen. Mehr zu den Hintergründen, der Entwicklungsgeschichte und den Akteuren kann in [1] nachgelesen werden. In Embedded-Systemen sind heute neben x86-kompatiblen Controllern vor allem Controller auf Basis von ARM, MIPS und PowerPC zu finden – mit Ausnahme des x86 alles CPUs, die dem RISC-Ansatz folgen [22].

Wenn nun RISC-basierte Befehlssätze (Instruction Set Architecture – ISA) bekannt und deren Umsetzung durch zahlreiche Systeme (System-on-Chip (SoC)) am Markt verfügbar sind, worin besteht das Neue bei RISC-V? Diese Frage wird sich der eine oder andere stellen. Trotz des existierenden Hypes um RISC-V wird man im Netz auch auf kontroverse Diskussionen stoßen.

RISC-V erhebt den Anspruch, durch den Open-Source-Ansatz »die Welt des Prozessordesign zu verändern« [2]. Die 2015 gegründete RISC-V Foundation steuert als Non-Profit-Organisation die Entwicklung und treibt die Einführung der RISC-V ISA voran. Heute zählt die RISC-V Foundation mehr als 235 Mitglieder. Die Liste der Platin-, Gold- und Silber-Mitglieder liest sich wie das Branchen-Who’s-Who [3]. Es sollte also genügend Potenzial vereint sein, um RISC-V aus dem akademischen Umfeld heraus in praktisch verfügbare Chips und das zugehörige Ecosystem zu führen. Ein Schlüssel für den Erfolg von RISC-V dürfte aber darin bestehen, dass die Befehlssatz-Architektur Open-Source ist. Dass man damit noch keinen neuen Controller in den Händen hält, zeigen die folgenden Absätze.

RISC-V Befehlssatzarchitektur

David Paterson und Andrew Waterman erläutern in ihrem Buch »The RISC-V Reader: An Open Architecture Atlas« [4] die Grundlagen für die modulare RISC-V ISA. David Patterson leitete beginnend in den 1980er Jahren an der University of California Berkeley vier Generationen von RISC-Projekten (RISC-I bis RISC-IV). Der Name für das letzte RISC-Projekt aus Berkeley wurde daraus abgeleitet. Andrew Waterman ist Chef-Ingenieur von SiFive, einem Unternehmen, das von Entwicklern der RISC-V ISA gegründet wurde und mit Hard- und Software-Lösungen den Zugang zu kundenspezifischem Silizium unterstützt. RISC-V-Lösungen für IoT-, AI-, Netzwerk- und Speicheranwendungen werden dadurch gefördert.

RISC-V ist eine minimalistische und offene ISA, die Fehler früherer ISAs ausschließen soll. Letzteres Statement erwartet man zwangsläufig von einer Entwicklung, die frei von Altlasten sein kann. Inwieweit ein System als minimalistisch bezeichnet werden kann, lässt sich unter anderem am Umfang seiner Dokumentation erkennen. In Anlehnung an [4] zeigt Tabelle 1 den Umfang der Architekturdokumente, um die Komplexität verschiedener ISAs anhand ihrer Dokumentation aufzuzeigen.

ISAUmfang KBSeitenWörterLesezeitReferenzRISC-V1.151.83223676.7376 h/0,2 Wo[6a][6b]ARM18.635.6972720902.17775 h/1,9 Wo[20]x86-3225.590.82548982.264.635189 h/4,7 Wo[21]

Tabelle 1: Umfang der Dokumentation verschiedener ISAs.

Die angegebenen Werte für die Zeitdauer zum Lesen der Dokumentationen gehen von einer Leserate von 200 Wörtern pro Minute für 40 Stunden pro Woche aus. Die RISC-V ISA verspricht hier deutlich weniger Komplexität, was der Auseinandersetzung mit dieser neuen Technologie sehr dienlich sein dürfte.

32-Bit-Integer-Befehle: RV32I

RISC-V kommt der spätere Start der Entwicklung zugute, die es möglich macht, gute Ideen vorangegangener ISAs aufzugreifen und deren Fehler nicht zu wiederholen. In [4] werden die Fehler der ISAs für ARM-32 (1986), MIPS (1986) und x86-32 (1978) den »Lessons learned« für RV32I (2011) gegenübergestellt. Diese recht umfangreiche Tabelle kann hier nicht wiedergegeben werden. An deren Stelle zeige ich die charakteristischen Merkmale des RV32I in Originalform:

  • 32 bit byte-addressable address space,
  • all instructions are 32 bit long,
  • 31 registers, all 32 bits wide, with register 0 hardwired to zero,
  • all operations are between registers (none are register-to-memory),
  • load/store word plus signed and unsigned load/store byte and half word,
  • immediate option for all arithmetic, logical, and shift instructions,
  • immediates always sign-extend,
  • one data addressing mode (register + immediate) and PC-relative branching,
  • no multiply and divide instructions,
  • an instruction to load a wide immediate into the upper part of register so that a 32-bit-constant takes only two instructions.

Die 32 Register haben die durch das RISC-V Application-Binary-Interface (ABI) definierten Standardfunktionen (Tabelle 2). Mit den oben angegebenen Vorgaben ergeben sich für das Base-Integer-Instruction-Set RV32I die in Tabelle 3 gezeigten Instruktionen als Auszug aus der RISC-V-Reference-Card.

RegisterABI NameBeschreibungSaverx0zeroHard-wired zero–x1raReturn addressCallerx2spStack pointerCalleex3gpGlobal pointer–x4tpThread pointer–x5-7t0-2TemporariesCallerx8s0/fpSaved register/Frame pointerCalleex9s1Saved registerCalleex10-11a0-1Function arguments/return valuesCallerx12-17a2-7Function argumentsCallerx18-27s2-11Saved registerCalleex28-31t3-6TemporariesCaller

Tabelle 2: RISC-V-Register.

Dr. Claus Kühnel
© Dr. Claus Kühnel

Tabelle 3: Basic Integer Instructions RV32I – Auszug aus der RISC-V Reference Card.

Auf dieser Grundlage wird ein überschaubares Standard-Basic-Instruction-Set definiert, welches durch entsprechende Extensions erweitert werden kann. Tabelle 4 zeigt den RISC-V Base & Extensions-Status. Verschiedene Extensions werde ich im folgenden Abschnitt kurz betrachten.

BaseVersionDraft Frozen?RV32I2.0yRV32E1.9nRV64I2.0yRV128I1.7nExtensionVersionFrozen?M2.0yA2.0yF2.0yD2.0yQ2.0yL0.0nC2.0yB0.0nJ0.0nT0.0nP0.1nV0.2nN1.1n

Tabelle 4: RISC-V Base & Extensions Status [6a].

RISC-V Extensions

Jede Implementierung eines RISC-V-Prozessors muss eine Basic-ISA unterstützen (heute RV32I oder RV64I). Zusätzlich kann eine Implementierung eine oder mehrere Extensions unterstützen. Extensions gliedern sich in Standard- und Non-Standard-Extensions.

Eine Standard-Extension ist eine Erweiterung, die allgemein von Nutzen ist und mit keiner Standard-Extension in Konflikt stehen darf. Die in Tabelle 5 und Tabelle 6 grau hinterlegten Extensions sind bestehende oder geplante Standard-Extensions.Eine Non-Standard-Extension kann hoch spezialisiert sein und darf Konflikte mit anderen Extensions aufweisen.

IInteger instructionsInteger Instruktionen gemäß Abschnitt 2.1EReduced number of registersRV32E ist eine reduzierte Version des RV32I für Embedded Systems. Die Anzahl der Register ist auf 16 reduziert.MMultiplication and DivisionInteger-Multiplikation und -Division.AAtomic instructionsAtomare Instruktionen (read-modify-write memory) zur Unter-stützung der Synchronisation mehrerer RISC-V Cores im glei-chen Speicherbereich.FSingle-Precision Floating-PointGleitkommaoperationen einfacher Genauigkeit gemäß IEEE 754-2008.D
Double-Precision Floating-PointGleitkommaoperationen doppelter Genauigkeit gemäß IEEE 754-2008.GGeneralExtensions IMAFD zusammengefasstQQuad-Precision Floating-PointGleitkommaoperationen vierfacher Genauigkeit gemäß IEEE 754-2008.CCompressed InstructionsDiese Extension reduziert die Codegröße durch Hinzufügen von 16-Bit Instruktionen für bestimmte Operationen. Typischerweise können 50-60 % der RISC-V-Instruktionen eines Programms mit RVC-Instruktionen ersetzt werden, wodurch der Code um 25-30 % reduziert werden kann. XNon-Standard-ExtensionsCode Space für eigene Erweiterungen

Tabelle 5: RISC-V Base & Extensions.

LDecimal Floating-Point (IEEE 754-2008)Dezimal-Gleitkommaoperationen gemäß IEEE 754-2008 (derzeit Platzhalter).BBit-ManipulationInstruktionen zur Bit-Manipulation (derzeit Platzhalter).TTransactional MemoryBereitstellung von Transactional Memory Operations (derzeit Platzhalter).PPacked-SIMDUnterstützung von SIMD (Single instruction, multiple data) (der-zeit Platzhalter).J

Dynamically Translated Languages

Populäre Sprachen werden normalerweise über dynamische Übersetzung implementiert, einschließlich Java und JavaScript. Diese Sprachen können von der zusätzlichen ISA-Unterstützung für dynamische Prüfungen und Garbage Collection profitieren.VVector OperationsAllgemeine Unterstützung für die datenparallele Ausführung von Vektoroperationen innerhalb des 32-Bit-Codebereichs, wobei spätere Vektorerweiterungen eine umfangreichere Funktionalität für bestimmte Domänen unterstützen.HHypervisorVirtualisierung der Supervisor-Level Architektur, um Guest-OS laufen lassen zu können.NUser-Level InterruptsVorschlag für das RISC-V User-Level Interrupt und Exception Handling.

Tabelle 6: RISC-V Extensions in Entwicklung.

Im Zuge der Entwicklung wird eine Vielzahl solcher Erweiterungen erwartet und möglicherweise auch irgendwann in die Standard-Extensions aufgenommen.

RISC-V verwendet die folgende Standard-Namenskonvention zur Beschreibung einer ISA-Implementierung.

ISA Namensformat: RV[###][abc…xyz]

  • RV ist die Abkürzung für RISC-V,
  • [###] – kennzeichnet die Größe der Integer-Register und der User-Adressen {32, 64, 128},
  • [abc…xyz] – beschreibt das Set an verwendeten Extensions.

Beispiele:

  • RV32IMA – RV32I mit M- und A-Extension,
  • RV64GC – RV64I mit M-, A, F-, D- und C-Extension.

64- und 128-Bit-Befehle

Das Fehlen von Bits zur Adressierung großer Speicherbereiche ist ein ernstes Problem in der Computer-Architektur. So gibt es von zahlreichen CPUs mittlerweile neben den 32-Bit-Varianten auch welche mit 64 Bit. Die RV64I ISA weist alle Instruktionen der RV32I ISA und darüber hinaus viel Raum für die Implementierung eigener Erweiterungen auf. Die Registerbreite ist generell auf 64 Bit erweitert.

Ursprünglich als interner Joke der RISC-V-Architekten gedacht, um die Möglichkeit einer 128-Bit-Implementierung aufzuzeigen, steht nun mit RV128I auch eine 128-Bit-RISC-V ISA zur Verfügung.

Seite 1 von 2

1. Neustart mit RISC-V
2. RISC-V Cores

Auf Facebook teilenAuf Twitter teilenAuf Linkedin teilenVia Mail teilen

Das könnte Sie auch interessieren

Neue CEO kommt von IBM
RISC-V für alle
RISC-V bricht alle Rekorde
Bis 2025 werden 62,4 Milliarden RISC-V-CPU-Kerne genutzt
Trace-Spezifikationen ratifiziert
RISC-V-Unterstützung für Sysgos PikeOS

Verwandte Artikel

Dr. Claus Kühnel, RISC-V Foundation