Wie funktioniert RISC-V? Grundlagen der offenen Befehlssatzarchitektur

| Autor / Redakteur: Richard Oed / Michael Eckstein

Mit RISC-V lassen sich Cores und Prozessoren entwickeln, die genau die Befehle enthalten, die für eine bestimmte Applikation nötig sind.
Mit RISC-V lassen sich Cores und Prozessoren entwickeln, die genau die Befehle enthalten, die für eine bestimmte Applikation nötig sind. (Bild: Clipdealer)

Die offene Befehlssatzarchitektur RISC-V unterstützt Prozessorkerne mit 32-, 64- und 128-Bit und vermeidet viele Fehler herkömmlicher Cores. Nun ist sie auf bestem Weg, den Markt zu erobern. Was macht die vielversprechende Architektur so besonders?

Mit dem „Reduced Instruction Set Computer V“, kurz RISC-V, hat die University of California in Berkeley unter der Leitung von Krste Asanovic und David A. Patterson zusammen mit Industriepartnern eine offene Befehlssatzarchitektur (Instruction Set Architecture, ISA) geschaffen. Ziel war es, darauf basierende Prozessoren und Cores für möglichst viele Applikationen nutzbar zu machen. Das 2011 vorgestellte Projekt ist eine Weiterentwicklung aus einer Serie akademischer Forschungsprogramme, die sich mit dem Erstellen paralleler Soft- und Hardware beschäftigten.

Vorteil von RISC-V: nicht patentiert und daher lizenzfrei

Anders als viele Befehlssatzarchitekturen ist RISC-V unter einer BSD-Lizenz verfügbar. Diese erlaubt es jedermann, Prozessoren oder Cores auf Basis dieser Architektur ohne die Zahlung von Lizenzgebühren zu entwickeln, herzustellen und zu verkaufen. Eigene Implementationen müssen Kunden weder offengelegt noch weitergegeben werden. Eine freiwillige Weitergabe ist natürlich möglich und auch gewünscht. So können beispielsweise verschiedene Soft-Cores unentgeltlich von der GitHub-Seite von Microsemi geladen werden.

Koordiniert wird die Entwicklung der zugehörigen Spezifikationen für Kerne und Erweiterungen durch die 2015 gegründete RISC-V Foundation mit Sitz in Kalifornien. Dieser gehören derzeit mehr als 100 Mitglieder an, darunter namhafte Firmen wie AMD, Google, Microsoft, NVIDIA, Oracle, Samsung, NXP oder Western Digital.

Heute geschriebene Programme sollen auch auf zukünftigen RISC-V-Prozessoren laufen

Ziel der Entwicklung war es, eine auf einer Reduced Instruction Set Architecture (RISC) basierende, offene ISA zu schaffen, die schnelle, kleine, leistungsfähige und energieeffiziente Prozessoren möglich machen würde. Eine Implementation ist dabei sowohl für FPGAs, ASICs oder kundenspezifischen CPUs machbar. Gleichzeitig wurde die Unterstützung aller Mikroarchitekturen und möglichst vieler populärer Programmiersprachen und Software-Stacks angestrebt, und dies unter Vermeidung von Fehlern bisheriger populärer ISAs.

Wichtigster Punkt war jedoch, eine Architektur zu schaffen, die sich über die Jahre nicht verändern kann. Die jetzige Befehlssatzarchitektur ist festgeschrieben, was auf eine Lauffähigkeit heute entwickelter Programme auch auf zukünftigen Prozessorkernen hinausläuft, wenn diese auf derselben Basis-ISA und identischen Erweiterungen aufbauen.

Drei verschiedene RISC-V-Architekturen als Basis verfügbar

RISC-V stellt drei verschiedene Integer-Basis-ISAs zur Verfügung, die sich in erster Linie durch die Wortbreite unterscheiden: RV32I ist die 32-Bit Version der Architektur, RV64I die 64-Bit und RV128I die 128-Bit Version. Für Embedded Systeme gibt es noch eine Variante des RV32I mit lediglich 16 Registern, den RV32E. Festgeschrieben, und damit endgültig, sind derzeit nur die User-Level Spezifikationen der Versionen RV32I und RV64I. Die beiden anderen befindenden sich noch in der Definition, ebenso wie die Spezifikationen der Privileged-Architektur mit ihren Modi Machine-Mode für Trusted Code und Supervisor-Mode zur Unterstützung von Operationssystemen.

Die Befehle des RV32I basieren auf sechs Grundformaten: Register-zu-Register Operationen (R-Type), Short Immediates und Ladebefehle (I-Type), Instruktionen zum Abspeichern von Datenworten (S-Type), bedingte Verzweigungen (B-Type), Befehle für Long Immediates (U-Type) und unbedingte Sprünge (J-Type). Aufbauend auf diesen Grundformen wurden die Instruktionen für Integer-Berechnungen, zur Programmsteuerung, für Lade- und Speichervorgange, für Statusregistermanipulationen und für das Debugging festgelegt. Alle diese Instruktionen sind beim RV32I 32 Bit breit und werden typischerweise in einem Taktzyklus ausgeführt. Dies unterscheidet die RISC-V Architektur von anderen bekannten ISAs. So verfügen sowohl die ARM-32- als auch die x86-32-ISA über Befehle, die mehrere Zyklen zur Abarbeitung benötigen.

Flexible Befehlssatzerweiterungen sind die Stärke der RISC-V-Architektur

Der RV64I fügt neben 64-Bit Worten, -Adressen und -Registern einige Befehle hinzu und manche Basisbefehle werden leicht unterschiedlich ausgeführt. Details der RV128I-Architektur sind außer der Wortlänge derzeit noch nicht festgelegt.

Eine wesentliche Stärke der RISC-V-Architektur ist ihre Modularität und Erweiterbarkeit. Dies ermöglicht es, Prozessoren mit einem genau auf die jeweilige Anwendung zugeschnittenen Funktionsumfang zu entwickeln. Damit fallen diese nicht größer als unbedingt notwendig aus, was eine kostengünstige Fertigung von RISC-V-Cores ermöglicht.

Das RISC-V Technical Committee hat bereits eine Reihe von Standard-Extensions festgelegt:

  • M (Multiply): Erweitert die ISA um Befehle zur Multiplikation und Division.
  • A (Atomic): Erweitert die ISA um Befehle zum geschützten Lesen, Modifizieren und Schreiben von Speicherwerten zur Synchronisation mehrerer RISC-V CPUs, die im selben Speicherbereich laufen.
  • F (Floating Point): Für Single-Precision Gleitkommaoperationen (32-Bit) nach IEEE 754-2008.
  • D (Double Precision Floating Point): Für Double-Precision Gleitkommaoperationen nach IEEE 754-2008. Erweitert die 32-Bit-Gleitkommaregister auf 64 Bit.
  • Q (Quad-Precision Floating Point): Für Quad-Precision Gleitkommaoperationen nach IEEE 754-2008. Erweitert die 32-Bit Gleitkommaregister auf 128 Bit.
  • C (Compressed Instructions): Reduziert die Programmgröße durch das Bereitstellen von nur 16 Bit langen Befehlen für häufige Operationen.

Weitere Befehlssatz-Extensions für RISC-V sind bereits geplant

Weitere geplante Erweiterungen dienen der Unterstützung von dezimalen Gleitkommazahlen (L), Bitmanipulation (B), dynamisch übersetzten Sprachen (J), Transactional Memory (T), Packed-SIMD-Befehlen (P), Vektor-Operationen (V) und User-Level-Interrupts (N). Zusätzlich ist für den Privileged Mode eine Hypervisor-Erweiterung (H) in Entwicklung.

Die Abkürzungen für die verwendeten Extensions werden dabei an den Namen der Basisarchitektur angehängt. Ein RISC-V-Prozessor mit einer Multiplikationseinheit und Unterstützung für Single-Precision Gleitkommazahlen würde also als RV32IMF bezeichnet. Als Besonderheit werden die häufig zusammen verwendeten Erweiterungen IMAFD im Allgemeinen als „G“ für General Purpose abgekürzt. Ein RV32G ist also ein RV32IMAFD.

Inhalt des Artikels:

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 45362701 / RISC-V)