Aus Linux-Magazin 04/2023

Geschichte, Status und Zukunft des RISC-V-Projekts

© Viacheslav Lopatin / 123RF.com

Mit RISC-V hat sich eine freie und flexible Prozessorarchitektur etabliert, die sich anschickt, auf unterschiedlichen Einsatzgebieten an Bedeutung zu gewinnen.

Alles begann 2010 am Parallel Computing Laboratory der Universität von Kalifornien in Berkeley [1]. Unter der Leitung von Krste Asanovi? und David Patterson – Letzterer zählt zu den Erfindern des RISC-Prinzips – wurde dort im Rahmen eines studentischen Projekts die fünfte Iteration des RISC-Befehlssatzes entwickelt: RISC-V, lies: RISC-Five. Sie sollte als Testobjekt für die eigene Forschung über effiziente parallele Plattformen dienen.

Nachdem der Befehlssatz 2011 erstmals in einem Technical Report veröffentlicht wurde, entstand 2014 der Gedanke, ihn auch über das Ende des Projekts am Parallel Computing Laboratory hinaus weiterzuführen, zu pflegen und der Allgemeinheit als offenen Befehlssatz zur Verfügung zu stellen. Eine Veröffentlichung von Krste Asanovi? und David Patterson diskutierte die Vorteile und Herausforderungen eines offenen Befehlssatzes.

Allerdings war es nicht damit getan, den Befehlssatz einfach zu veröffentlichen. Vielmehr ging es darum, den Implementierern von Mikroprozessoren die Möglichkeit der Einflussnahme auf die Gestaltung und die Erweiterung des Befehlssatzes zu geben. Dieser Grundgedanke trug dem RISC-V-Befehlssatz anfänglich oft die Bezeichnung Open-Source-Prozessor ein. Nimmt man es genau, handelt es sich jedoch eher um einen offenen Standard, ähnlich wie Ethernet oder Wi-Fi.

Betrachtet man den Stack eines modernen Rechnersystems, fällt auf, dass dort im Lauf der Zeit auf verschiedenen Ebenen immer wieder offene Standards proprietäre Lösungen verdrängten. Die Tabelle “Beispiele für offene Standards” zeigt exemplarisch, wie sich offene Standards auf verschiedenen Ebenen durchgesetzt haben. Dabei stellten sie durch offene oder proprietäre Implementierungen ihre Vorläufer oft in den Schatten oder machen sie sogar gänzlich obsolet. RISC-V ist dabei als eine Fortsetzung näher an der Hardware zu sehen.

IT-Komponente

proprietäre Vorgänger

offener Standard

offene Implementierung

geschlossene Implementierung

Netzwerk

obsolet

Ethernet, TCP/IP

viele

Cisco, Juniper

Betriebssystem

Windows

Posix

Linux, FreeBSD

iOS, AIX

Compiler

obsolet

C

GCC, LLVM

Greenhills, IAR

Datenbanken

DB2, Oracle

SQL

MySQL, PostgreSQL

Oracle, SQL Server, DB2

Grafik

DirectX

OpenGL

Mesa3D

Nvidia, AMD, Intel

ISA

x86, ARM, IBM360

RISC-V

OpenHW Group, lowRISC

SiFive, Andes, Codasip

Asanovi? und Patterson kamen zu dem Schluss, dass die Gründe für die geschlossenen Lizenzmodelle der beiden dominierenden Befehlssätze x86 und ARM nicht technischer Natur waren, jedoch Innovationen hemmten. Den stark eingeschränkten Möglichkeiten, mit den existierenden Befehlssätzen zu arbeiten, stellten sie ihre Idee eines tatsächlich offenen Markts für Prozessordesign entgegen: RISC-V lässt sich ohne jede Lizenzzahlung als Prozessor implementieren. Ziel ist es, den Befehlssatz gemeinsam zu entwickeln und dabei nicht allein Lizenzkosten zu sparen, sondern einen umfangreichen, offenen Markt und ein lebendiges Ökosystem für Prozessorkerne zu schaffen.

Die Forschergruppe rund um RISC-V hat früh die Stiftung RISC-V Foundation (heute: RISC-V International Association [2]) zur Weiterentwicklung und Verwaltung des Befehlssatzes gegründet. Im Unterschied zu anderen offenen Befehlssätzen, die es durchaus schon früher gab, lag der Fokus dabei nicht ausschließlich auf den technischen Details: Die RISC-V-Macher sahen insbesondere eine kommerzielle Adaption als essenziell für den Erfolg der Technologie an. So gehörten zu den knapp 40 Gründungsmitgliedern der RISC-V Foundation unter anderem Google, HP, Microsoft, Nvidia, Oracle, Qualcomm und Western Digital. Diese Unternehmen hatten aus Kooperationen mit der UC Berkeley heraus bereits ein kommerzielles Interesse, manche übernahmen deshalb in der Folge RISC-V sehr zügig.

Neuer Befehlssatz

Die Designer von RISC-V hatten einen nicht unerheblichen technischen Vorteil auf ihrer Seite: Sie konnten ohne Rücksicht auf Legacy-Software einen Befehlssatz von Grund auf neu gestalten. Der war von vornherein auf 32 und 64 Bit ausgelegt, daneben reservierte er sogar Platz für einen 128-Bit-Befehlssatz. Beim Entwurf des Befehlssatzes legten die Designer Wert auf das strenge Einhalten des RISC-Prinzips, um die Implementierung unterschiedlichster Ziele zu ermöglichen, inklusive von Hochleistungs-CPU-Kernen.

Zentral sind dabei die Modularität und Erweiterbarkeit des gesamten Befehlssatzes. Die Basis bildet der Befehlssatz für Ganzzahlberechnungen, der knapp 50 grundlegende Kommandos enthält. Der Privileged-Befehlssatz ergänzt noch einige wenige Direktiven. Hinzu kommt die Definition der virtuellen Speicherverwaltung, der Architekturzustände und der Privilegierungsebenen.

Basierend auf diesen zwei Spezifikationen [3] lassen sich bereits reale Prozessoren implementieren. Darüber hinaus gibt es noch eine Reihe weiterer Befehlssatzerweiterungen, die man modular hinzufügen kann. So befinden sich Multiplikation und Division in einer eigenen Extension, kleine Mikrocontroller kann man jedoch ohne diese M-Erweiterung implementieren. Weitere Erweiterungen wie atomare Operationen, dynamische und gepackte Vektorbefehle (SIMD) finden sich in teilweise recht fein abgestuften Extensions.

Die Tabelle “RISC-V: Erweiterungen” bietet eine Übersicht über die zentralen, aktuell bereits ratifizierten Befehlssatzerweiterungen. Zwei davon, Zmmul und Zc*, zeigen, wie sich die grundlegenden Standarderweiterungen fein abgestuft noch weiter ausbauen lassen. Das erlaubt, durch optionale Extensions einen spezialisierten Prozessorkern zu entwickeln.

Extension

Beschreibung

A

Atomic-Befehle

C

kompakte Befehle (16 statt 32 Bit)

Zca, Zcf, Zcd, …

kompakte Befehle mit mehr Hardwareaufwand

F/D/Q

Single/Double/Quad Precision Floats

M

Multiplikation und Division (Ganzzahlen)

Zmmul

implementiert nur Multiplikation (Embedded)

P

SIMD-Befehle (statische Vektoren)

S

Supervisor-Befehle

V

Vektorbefehle (dynamische Größe)

Jede Ausbaustufe wird durch eine Zeichenfolge identifiziert. Dabei kennzeichnen einfache Buchstaben zentrale Erweiterungen und längere Zeichenketten speziellere Extensions. Aus der Kombination der Erweiterungen mit der Registergröße ergibt sich die Spezifikation der Features eines RISC-V-Prozessors. Abbildung 1 zeigt exemplarisch den Aufbau des entsprechenden Beschreibungs-Strings. Die Basis ergibt sich aus der Größe der Register sowie der Angabe, ob es sich um einen normalen Prozessor mit 32 Registern (I) handelt oder um eine E-CPU mit 16 Registern. Weitere Anhängsel kennzeichnen die unterstützten Erweiterungen.

Abbildung 1: Nach diesem Schema setzt sich der Spezifikations-String für einen RISC-V-Prozessor zusammen.

Abbildung 1: Nach diesem Schema setzt sich der Spezifikations-String für einen RISC-V-Prozessor zusammen.

Der populäre Open-Source-Prozessorkern RI5CY implementiert zum Beispiel RV32IMFCXpulp. Es handelt sich also um einen 32-Bit-Prozessor mit 32 Registern, der Multiplikation, Single-Precision Floating Point und kompakte Befehle unterstützt. Darüber hinaus integriert er die nicht standardisierte Erweiterung pulp, die Hardware-Loops implementiert.

Eine Reihe der möglichen Maschinenbefehle bleiben für herstellerspezifische Befehlssatzerweiterungen reserviert. So können Hersteller ihre Prozessorkerne auf spezielle Domänen oder Anwendungsfälle hin optimieren. Das erscheint gerade aus europäischer Sicht sehr interessant, und so ist die Unterstützung von Befehlssatzerweiterungen Gegenstand verschiedener Forschungsprojekte sowie der Entwurfswerkzeuge der Firma Codasip.

Die sehr ausgeprägte Modularität von RISC-V betrachten Kritiker häufig abschätzig als Fragmentierung und argumentieren, sie erschwere portable Software und stehe so dem Erfolg der Technologie im Wege. In dieser Eigenschaft unterscheidet sich RISC-V jedoch keineswegs fundamental von anderen Befehlssätzen: Auch die x86-ISA erhielt über mehrere Generationen hinweg viele Erweiterungen, deren Implementierung sich teilweise sogar bei Intel- und AMD-CPUs unterscheidet. Ebenso veränderten sich die ARM-Befehlssätze über mehrere Generationen und erhielten Erweiterungen. RISC-V hat das Konzept der Modularität lediglich zur Tugend erhoben, um so innerhalb eines definierten Spielraums verschiedenartig optimierte Implementierungen zu erlauben.

Flexibilität

Eine Vielzahl unterschiedlicher Optionen kann aber tatsächlich die Softwarekompatibilität einschränken. Zwar präsentiert das RISC-V-Softwareökosystem sich bereits sehr umfangreich; Compiler, Betriebssysteme, Tools und Frameworks erreichten in wenigen Jahren einen sehr fortgeschrittenen Stand. Wohl kein anderer Befehlssatz wies so schnell nach der Einführung einen so einen hohen Stand der Softwareunterstützung auf. Abbildung 2 zeigt exemplarisch Teile des Software-Stacks, die eine aktive Community schon früh auf RISC-V portierte.

Eine zu große Flexibilität könnte jedoch tatsächlich eine breite Adaption und das weitere Investment in das Softwareökosystem, insbesondere durch kommerzielle Softwareanbieter, stocken lassen. Daher arbeitet RISC-V International aktuell an Architekturprofilen und Systemplattformen, die sich mit den Architecture Profiles und System Architectures von ARM vergleichen lassen.

Abbildung 2: Einige Beispiele für Teile des Software-Stacks, die früh auf RISC-V portiert wurden.

Abbildung 2: Einige Beispiele für Teile des Software-Stacks, die früh auf RISC-V portiert wurden.

RISC-V-Profile gibt es derzeit für Applikationsprozessoren mit komplexen Betriebssystemen (Server und Mobile, RVA) sowie in einer Variante für Mikrocontroller (RVM). Sie definieren die grundlegenden Spezifikationen, die kompatible Prozessorkerne implementieren müssen, und definieren darüber hinaus die Freiheitsgrade für optionale Erweiterungen. So ermöglichen sie die Entwicklung portabler Software. Aus Sicht des Entwicklers findet die Übersetzung von Software für ein Profil dann – wie bei anderen Befehlssätzen auch – über Compiler-Flags statt.

RISC-V-Plattformen spezifizieren auf Basis der Profile weitere Eigenschaften der Hard- und Software für eine vollständige Ausführungsumgebung. Das umfasst unter anderem den Boot-Prozess, Standardgeräte und Erkennungsmechanismen. Eine Android-kompatible Plattformspezifikation würde auf diese Weise die Kompatibilität zwischen verschiedenen Smartphones sicherstellen.

Profile und Plattformen befinden sich aktuell noch in der Spezifikationsphase, erste Versionen enthielten noch nicht alle notwendigen Features. Als Ziel für 2023 gilt die Definition von Profilen und Plattformen für Server und für Android-Geräte. Dafür benötigte Voraussetzungen wie insbesondere eine IO-MMU werden zurzeit bereits standardisiert.

Dessen ungeachtet finden sich bereits heute RISC-V-Prozessorkerne in Milliarden von Geräten. Fast unmittelbar nach der Veröffentlichung von RISC-V im Jahr 2015 kündigten bereits mehrere Unternehmen an, RISC-V-Cores in ihre Produkte zu integrieren. Dabei standen insbesondere Prozessorkerne im Vordergrund, die keine Benutzersoftware ausführen oder einen herstellerspezifischen Befehlssatz implementieren.

Gerade in einem modernen System on Chip (SoC) bleiben die einzelnen Prozessorkerne oft tatsächlich vor dem Endanwender verborgen. Solche durch den Hersteller programmierte Cores, deren Firmware der Benutzer üblicherweise nicht ändern kann, übernehmen Aufgaben wie das Power-Management, Sicherheitsfunktionen oder auch Beschleunigungen. Es handelt sich dabei häufig um simple, von der Stange gekaufte Mikrocontroller. Alternativ kommen eigene Entwicklungen zum Einsatz, die dann einen spezifischen Befehlssatz implementieren. Auf diesem Weg können Hersteller insbesondere dann Kosten sparen, wenn sie große Stückzahlen produzieren oder die eigenen Entwicklungen häufig wiederverwenden.

Beispiele

Nvidia kündigte bereits 2015 an, die interne Falcon-Architektur durch einen hauseigenen RISC-V-Mikrocontroller zu ersetzen. Dieser Kern übernimmt in GPUs Kontrollaufgaben. Zuvor nutzte Nvidia einen proprietären Befehlssatz, der eine kostspielige Software-Toolchain voraussetzte. Bei der anstehenden Überarbeitung dieses Prozessorkerns für eine leistungsfähigere Variante setzte Nvidia auf RISC-V, da die Kosten eines eigenen Befehlssatzes zu hoch erschienen. Dass auf diesen CPUs kein Applikationscode des Benutzers läuft, erspart Probleme mit einem schnell wachsenden Softwareökosystem.

Western Digital setzte ebenfalls früh auf RISC-V, wobei es diverse Prozessorkerne in seinen Storage- und Interconnect-Produkten ins Auge fasste. 2017 kündigte das Unternehmen an, die eingekauften Prozessorkerne auf RISC-V umzustellen und innerhalb weniger Jahre eine Milliarde solcher Cores in seinen Produkten zu verbauen. Eine ähnliche Größenordnung (650 Millionen Prozessorkerne) lieferte Qualcomm aus, das RISC-V unter anderem bereits in den Snapdragon-Chips einsetzte. Ursache für den Wechsel waren in diesem Fall vermutlich die sich immer weiter hochschaukelnden Lizenzstreitigkeiten mit ARM. Daneben nennt Qualcomm aber als Grund auch die Möglichkeiten zur Anpassung und Erweiterung des Befehlssatzes.

Alle diese Anwendungsfälle betreffen durchaus leistungsfähige Mikroprozessoren. Gegner von RISC-V haben die Leistungsklasse der Prozessoren und den Effekt auf den Markt aber über lange Zeit heruntergespielt. Sie postulierten, dass RISC-V den Endanwender nie erreichen würde. Zunehmend werden sie nun aber eines Besseren belehrt.

Die aus Sicht des Endanwenders wohl am deutlichsten wahrnehmbare Adaption von RISC-V: Espressif kündigte im Frühjahr 2022 an, künftig nur noch RISC-V-Prozessorkerne zu verwenden, und hat seitdem die ESP32-Serie erfolgreich darauf umgestellt. Hier kommt Espressif zugute, dass viele Endkunden das voll integrierte SDK verwenden und so vermutlich nicht einmal mitbekommen, dass in den Mikrocontrollern jetzt RISC-V die bisherigen Tensilica-Prozessorkerne ersetzt.

Insgesamt dürfte sich RISC-V zweifellos gerade auf dem Feld der leistungsfähigen IoT-Geräte auf Dauer immer mehr etablieren. Gerade bei IoT-Chips, die unter 1 Euro kosten sollen, können die Lizenzgebühren für Prozessorkerne einen signifikanten Kostenfaktor darstellen.

Open Source

Zwar ist RISC-V an sich nicht gratis, sondern zunächst einmal nur ein offener Standard. Der aber ermöglicht das Gedeihen eines offenen Markts mit verschiedenen Anbietern für entsprechende Prozessorkerne. So können die Hersteller von Chipsätzen für günstige IoT-Geräte entweder einen passenden Lieferanten wählen oder selbst in die Entwicklung eines Prozessorkerns investieren. Aktuell lässt sich im Markt beides beobachten.

Daneben hat RISC-V das Thema Open Source für Hardwarekomponenten wieder stark in den Fokus gerückt. Die Verfügbarkeit von quelloffenen Prozessorkernen wie des Rocket Chips aus Berkeley oder der Cores des Pulp-Projekts der ETH Zürich und Universität Bologna haben sicherlich eine bedeutende Rolle für den raschen Erfolg von RISC-V in einer breiteren Öffentlichkeit gespielt. Diese Prozessorkerne, die man bei Github wie ein Stück Software herunterladen kann, erlaubten es Firmen, sich mit RISC-V vertraut zu machen und erst einmal einfache Cores auszuprobieren. So wurde anfangs RISC-V zum Teil als Synonym zu Open-Source-Prozessorkernen wahrgenommen.

Um diese Open-Source-Prozessorkerne robuster zu machen und für den Einsatz in kommerziellen Produkten zu härten, nutzten zahlreiche Firmen das Potenzial von Open Source. So brachte Western Digital die von ihm entwickelten Cores in die sogenannte CHIPS Alliance ein, um andere Firmen daran teilhaben zu lassen. Auf diese Weise entstand zuletzt das Caliptra-Projekt von Nvidia, AMD, Google und Microsoft, das rund um einen dieser Cores ein quelloffenes Root-of-Trust-Element aufbaut. Analog gingen die Prozessorkerne des Pulp-Projekts zum Teil in die OpenHW Group über, in der sich eine große Gruppe von Herstellern zusammengetan hat, diese Cores weiterzuentwickeln, zu verifizieren und insgesamt auf ein höheres Technology Readiness Level zu heben.

Ausblick

Die Kombination aus einem umfangreichen Portfolio an kommerziellen und Open-Source-Prozessorkernen sowie der Möglichkeit, dank eines offenen Standards eigene Cores zu entwickeln, macht RISC-V besonders gut zugänglich. Das Softwareökosystem hat sich deutlich stabilisiert, viele Dienstleister haben ihr Angebot für RISC-V in Stellung gebracht.

Die zahlreichen möglichen Varianten zum Einsatz von RISC-V wirken wie ein Katalysator, der es erleichtert, innovative Chipdesigns zu entwickeln. Das können zum Beispiel spezialisierte Chips für AI-Anwendungen sein oder auch IoT-Sensoren. Der Ansatz, den Prozessorkern anzupassen und bei Bedarf um eigene Befehle und Funktionen zu erweitern, eröffnet vielfältige Möglichkeiten. In der Folge werden Endanwender zunehmend mehr mit RISC-V in Kontakt kommen, ohne es überhaupt zu bemerken.

Prozessorkerne, auf denen Entwickler oder Anwender beliebige Software ausführen können, stellen in Bezug auf das Softwareökosystem höhere Ansprüche. Neben Portabilität und Stabilität spielen hier die Verfügbarkeit von Werkzeugen, Bibliotheken und Betriebssystemen eine tragende Rolle. Zwar genoss RISC-V schon früh eine umfangreiche Softwareunterstützung, doch erwies sich in den letzten Jahren als Hemmschuh, dass die Spezifikationen der diversen Befehlssatzerweiterungen noch nicht finalisiert waren. Stabile, vollständige Spezifikationen sind aber eine Voraussetzung für den Erfolg von RISC-V in Märkten wie Servern oder mobilen Endgeräten.

In der Folge wurden allein 2021 nicht weniger als 16 Spezifikationen ratifiziert [4]. Die bereits beschriebenen Profile und Plattformen erreichen damit nun einen Zustand, in dem sie alle notwendigen Features enthalten. Parallel dazu wurden in den USA diverse Startups gegründet, die RISC-V-basierte Server-Chips für Rechenzentren oder AI-Workloads entwickeln. Dank der Stabilisierung der Spezifikationen und den Möglichkeiten von RISC-V kann man getrost davon ausgehen, in naher Zukunft erste RISC-V-Server zu sehen.

Auch bei den Single-Board-Computern gab es in den letzten Jahren erste Gehversuche. Dabei lag der Fokus jedoch eher auf der Softwareentwicklung im Kernel-Bereich als auf einer Raspberry-Pi-Alternative. Mit dem Mango Pi und ähnlichen Plattformen, die auf dem D1-Chip von Alibaba/Allwinner basieren, gibt es mittlerweile bereits RISC-V-basierte SBCs, wenn auch in überschaubaren Mengen. Hier steht ebenfalls zu erwarten, dass in den nächsten Monaten weitere Boards angekündigt werden.

In den letzten Jahren hat sich zudem im Bereich der mobilen Endgeräte viel getan. Insbesondere der Druck durch Handelsbeschränkungen motivierte Anbieter aus der Volksrepublik China, sich nach Prozessoralternativen umzusehen. So hat zum Beispiel Alibaba signifikant zum Android-Port von RISC-V beigetragen. Auch Google kündigte bereits offiziell Unterstützung für RISC-V an und benannte dabei die aus seiner Sicht noch vorhandenen Lücken in den RISC-V-Spezifikationen. Vom Umfang und der aktuellen Geschwindigkeit der Spezifikation her kann man vermuten, dass diese spätestens 2024 gefüllt sind, sodass dann auch Smartphones mit RISC-V möglich werden.

Für eine massenhafte Verbreitung stellt momentan allerdings die Verfügbarkeit von Chips mit RISC-V den limitierenden Faktor dar. Infolge der Fortschritte in der Standardisierung dürfte aber sowohl Hard- als auch Software für Applikationsprozessoren im Laufe der nächsten drei Jahre einen Schub erfahren.

Fazit

Was erwartet uns mit RISC-V also? Ganz sicher wird die Technologie im IoT-Bereich immer größere Marktanteile erzielen. In den letzten Jahren hat zudem auch in anderen Technologiefeldern die Erkenntnis um sich gegriffen, dass die Diversität der Supply Chain und ein robuster, offener Markt von besonderer Bedeutung sind. Dazu trugen nicht zuletzt die Chipkrise, die geplatzte ARM-Übernahme durch Nvidia sowie diverse Handelsbeschränkungen bei.

RISC-V bietet dabei den offenen Standard, der solche Schwierigkeiten in Zukunft aus dem Weg räumen könnte. Es stellt sich allerdings die Frage, wie nachhaltig diese Erkenntnis greift und wie erfolgreich die Marktteilnehmer zusammenarbeiten. Der Markt für proprietäre Alternativen zum offenen Ethernet-Standard ist in den letzten 30 Jahren verschwunden. Es könnte durchaus sein, dass RISC-V für Befehlssätze einen ähnlichen Effekt hat. (jcb/jlu)

Infos

  1. Geschichte von RISC-V: https://riscv.org/about/history/
  2. RISC-V International Association: https://riscv.org
  3. RISC-V-Spezifikationen: https://riscv.org/technical/specifications/
  4. Status der Spezifikationen: https://wiki.riscv.org/display/HOME/Specification+Status
DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben