Leserartikel RISC-V: Warum die Welt eine freie Instruction Set Architecture braucht

Der Sonntagsfrage (https://www.computerbase.de/2021-12...x86-wem-gehoert-die-zukunft-in-server-und-pc/) und die anschließende Diskussion brachte mich auf die Idee, diesen Leserartikel zu verfassen. Ich beschäftige mich schon länger mit RISC-V und Prozessorarchitekturen im Allgemeinen, daher hoffe ich auch Relevantes dazu sagen zu können.

Inhalt:
  1. Einleitung
  2. Was ist eine Instruction Set Architecture (ISA)?
  3. ISA vs. Mikroarchitektur
  4. Warum hat die ISA eine so zentrale Bedeutung?
  5. Warum eine freie ISA?
  6. Was bringt das?
  7. Wann gibt es ein Smartphone oder gar einen PC mit RISC-V?

Einleitung


Ich habe mir nun nicht alles, was ich hier schreibe, einfach ausgedacht, der Artikel nimmt inhaltlich teilweise Bezug auf den Vortrag „Instructions Sets want to be free“ von RISC-V Miterfinder Prof. Krste Asanović. Die Slides zu dem Vortrag gibt es u.a hier https://riscv.org/wp-content/uploads/2017/05/Mon1045-Why-RISC-V-ISAs-Want-to-be-Free.pdf. Krste Asanović und auch David Patterson haben diesen Vortrag zu unzähligen Gelegenheiten gehalten, eines der qualitativ besseren Videos davon gibt es hier:
Wer halbwegs englisch kann, sollte sich das unbedingt ansehen.


Was ist eine Instruction Set Architecture (ISA)?


Die ISA beschreibt die Maschinenbefehle und den „sichtbaren“ Zustand einer CPU bzw. eines CPU-Kerns. Mit sichtbarem Zustand sind die CPU-Register und Statusbits gemeint. Wenn die CPU Befehle ausführt, ändert sie dabei ständig diesen Zustand. Dieser Zustand wird auch „architectural state“ genannt, da er den Inhalt aller in der ISA definierten Register darstellt.

Die ISA ist damit nun das wesentliche Merkmal einer bestimmten CPU „Familie“ wie ARM, x86 oder eben RISC-V. In früheren Jahren (z.B. der Zeit des 8086 vs. 68000), als man noch viel direkt in Maschinenbefehlen programmiert hat, haben die Leute sich sehr intensiv über die Vor- und Nachteile einer bestimmten ISA gestritten.

Das hatte damals auch eine große Bedeutung, denn bei den damals recht einfach aufgebauten Prozessoren war die interne Architektur (die sogenannte Mikroarchitektur) sehr eng mit der ISA verbunden. Dass z.B. ein 8086 viel weniger ISA-CPU Register als ein 68000 hatte, machte sich direkt bemerkbar.

ISA vs. Mikroarchitektur


Grundsätzlich muss man ISA und Mikroarchitektur als getrennte Ebenen betrachten, die gleiche ISA kann man mit ganz verschiedenen Mikroarchitekturen implementieren. Und das wird natürlich auch gemacht, z.B. bei ARM, wo es ja etliche Cortex-Axx Kerne gibt.

Das Konzept, eine ISA in verschiedenen Implementierungen zu realisieren, ist übrigens uralt; IBM hat es in den frühen 60ern mit seiner IBM 360 Familie realisiert. Hierzu ein sehr sehenswerter Vortrag von David Patterson:

Über die Mikroarchitektur definieren sich auch die Unterschiede zwischen verschiedenen Prozessoren der gleichen ISA. Aktuelle Anwendungsprozessoren, wie Intel Core oder AMD Ryzen haben sehr aufwändige „Multi Issue – Out of Order“ Mikroarchitekturen.

D.h. sie können mehrere Befehle parallel ausführen (Multi Issue) und sie dabei auch umsortieren (Out of Order) um die Menge an Befehlen pro Takt (IPC – Instructions per Clock) zu optimieren. Aktuelle CPUs können dabei mehrere hundert Befehle „in-flight“ haben. Das Tückische dabei ist, dass aus Sicht der ISA die Illusion aufrechterhalten werden muss, dass die Befehle alle schön einer nach dem anderen ausgeführt werden, und sich das entsprechend auch in Änderungen des Architectural state so darstellen muss. Die ISA ist also eine Abstraktionsebene, die sicherstellt, dass sich Software in der Regel nicht um die Details der Mikroarchitektur kümmern muss.

Warum hat die ISA eine so zentrale Bedeutung?


Wie eben schon ausgeführt, ist sie der Punkt wo „Software auf Hardware“ trifft. Die CPU kann nichts anderes, als Maschinenbefehle gemäß ihrer ISA auszuführen, daher muss jeder ausführbare Code in dieser Form vorliegen. Die ISA ist der Fixpunkt, auf den sich Software- und Hardwareentwickler verlassen müssen. Auf der Softwareseite kann man jede beliebige Programmiersprache erfinden, solange man einen Compiler hat, der am Schluss Code in der ISA erzeugt. Die Hardwareentwickler ihrerseits dürfen sich auch ausdenken, was sie wollen und was sie irgendwie in einen Chip gegossen bekommen, solange dieser die ISA Befehle ausführt, ist alles in Ordnung. Die ISA ermöglicht letztendlich, dass Software und Hardware unabhängig voneinander weiterentwickelt werden können.

Nun wird heutzutage gerne argumentiert, dass ja sowieso alle Software in Hochsprachen geschrieben wird, man sie einfach nur neu kompilieren muss und daher der Wechsel der ISA ja nicht so schwer ist. Das stimmt zwar, greift aber zu kurz:


  • Software wird meistens in Binärform ausgeliefert, nicht nur bei Windows. Es macht auch unter Linux, selbst für technisch bewanderte Nutzer, einen riesigen Unterschied, ob das neue Paket nur ein „sudo apt-get install xyz“ entfernt ist oder man sich durch 10 Seiten Readme Files mit kryptischen Build-Anweisungen wühlen muss.
  • Der Anteil der Software, der abhängig von der ISA ist (neben Compilern, auch „JIT“-Engines für Javascript, Java, C#), ist zwar klein, aber wichtig für ein Ecosystem. Ohne z.B. eine Javascript-JIT Engine ist eine Plattform für Desktop und Smartphone faktisch unbrauchbar
  • Auch die Betriebssysteme selbst sind von der ISA abhängig. Auch hier ist der Anteil an direktem Assembler Codes zwar winzig, aber erhebliche Teile des Kernelcodes hängen von Datenstrukturen im Prozessor (Pagetables, Interruptvektoren, CSR-Register) ab.
Warum eine freie ISA?


Wenn man sich die IT-Welt ansieht, haben sich an verschiedenen sehr zentralen Stellen offene, herstellerunabhängige Standards durchgesetzt. Ein prominentes Beispiel ist die Internet-Protokollfamilie, also TCP/IP, und alles darum herum. Alles was er früher mal gab, wie NetBIOS, OSI, X.25, ist ausgestorben. Das gleiche gilt für den Layer-2, da hat Ethernet so Dinge wie Token Ring, ATM, usw. verdrängt.

Der Grund dafür ist ganz einfach: Weil die Standards von jedem implementiert werden können, gibt es keinen Grund mehr, verschiedene Standards parallel zu verwenden. Wichtig ist hier der Unterschied, zwischen freiem Standard und freier Implementierung. Natürlich gibt es proprietäre TCP/IP Stacks, aber der Standard selbst ist frei.

Nun ist die ISA ja, wie eben ausgeführt, auch eine zentrale Schnittstelle eines jeden Computersystems, und genau hier gab es lange keinen freien Standard. Die dominanten ISAs am Markt sind Eigentum ihrer Hersteller, und selbst in akademischen Projekten bekommt man schnell Probleme mit deren Patentanwälten.

Ein weiteres Problem der etablierten ISAs ist der historische Ballast, den sie mit sich führen. Das gilt für x86 genauso wie für ARM. Zusammen mit teilweise nicht öffentlichen Spezifikationen ist es dadurch kaum möglich, einen zu diesen ISA kompatiblen Prozessor zu bauen, unabhängig von der rechtlichen Frage. Schon allein dadurch gibt es bei Prozessoren nur ein kleines Oligopol. Die Alternative, für ein experimentelles Design wieder eine eigene ISA zu entwerfen, zieht einen Rattenschwanz an Folgen nach sich. Um einen Linux Kernel zu booten, muss man den C-Compiler (GCC), anpassen, die glibc und eben den Kernel selbst, alles keine Aufgaben, die trivial sind.

Hier kommt nun RISC-V ins Spiel. RISC-V definiert eine modulare, offen verwendbare ISA. Modular bedeutet, dass sie aus einem sehr kleinen Basis-Befehlssatz (RV32I) besteht, der um verschiedene Elemente (z.B. Floating-Point, Bit-Operationen, usw.) erweitert werden kann. Außerdem gibt es die ISA in 32- und in 64-Bit (und zukünftig auch 128-Bit).

Mit den heutzutage zur Verfügung stehenden Tools kann ein einfacher RISC-V Prozessor, der die „Basisspezifikation“ RV32I implementiert, von einem mittelmäßig begabten Computerarchitektur-Studenten im Rahmen einer Hausarbeit entwickelt werden. RV32I reicht zwar noch nicht, um Linux zu booten, aber für „Bare Metal“ C-Programme genügt es. Enorm hilfreich ist, dass es ein komplettes Toolset dafür gibt:

  • Die GNU Compiler Collection inkl. Tools wie dem gdb (Debugger)
  • Glibc und newlib als Runtime Libraries
  • Den Linux Kernel nebst angepassten Userland
  • Eine Verifikation Suite, mit der man einen Prozessor bzw. dessen Simulation auf Einhaltung der Spezifikation prüfen kann
  • Einen ISA Simulator, der das „golden Model“ der ISA darstellt, gegen das man prüfen kann.
Dazu gibt es mit RISC-V International (ehemals RISC-V „Foundation“) eine Organisation, die über das ganze „wacht“. Diese wurde mittlerweile von den USA in die Schweiz verlagert, um in einem „neutralem“ Land zu sein.

Durch dieses Toolset spart man mit RISC-V gegenüber einer „Eigenbau“ ISA enorm Zeit. Der modulare Aufbau der ISA stellt sicher, dass auch eine Simpel-CPU mit RV32I noch konform zur Spezifikation ist, und dass der GCC out-of-the-box darauf lauffähigen Code erzeugt. Man gibt einfach in der Aufrufzeile des Compilers den entsprechenden Level an (also in unserem Beispiel march=rv32i), dann wird der entsprechende Code erzeugt und auch die passende Library gelinkt.


Was bringt das?


Reicht es einem nicht, die CPU im Simulator auszuprobieren, braucht man keinen Zugriff auf eine Chipfabrik, sondern ein üblicher low-cost FPGA reicht schon, um so einen CPU in Hardware auszuprobieren. Also ungefähr das, was unzählige Mikrocontroller mit ARM Cortex-M auch tun. So ein einfacher RISC-V Prozessor entspricht dann etwa einem Cortex-M0.

Natürlich erreichen professionellere Teams mit mehr Knowhow und Ressourcen sehr viel mehr. Die offizielle Liste an RISC-V Designs https://riscv.org/exchange/cores-socs/ wird kontinuierlich länger.

Vermutlich gibt es bald für RISC-V allein mehr Designs als für alle anderen ISAs zusammen. Natürlich gibt es noch keine CPU auf dem Level eines aktuellen Performance Kerns für ARM oder X86, aber SiFive ist nicht mehr weit davon entfernt (https://www.sifive.com/cores/performance-p650)

Mit RISC-V stehen wir am Anfang einer Demokratisierung des Prozessordesigns. Das heute bestehende Oligopol an Prozessor Herstellern (bzw. im Falle von ARM–Designern) sorgt auch dafür, dass es weltweit nur relativ wenige Experten gibt, die sich mit CPU-Design auskennen. Denn Jobs gibt es ja nur bei diesen paar Firmen. Man sieht auch, dass die wenigen Experten gerne mal von einem Player zum anderen wechseln. Dabei ist CPU-Design keine Raketen-Wissenschaft; fast alle wichtigen Konzepte sind seit langem bekannt und liegen auch öffentlich vor (z.B. der Tomasulo-Algorithmus (https://de.wikipedia.org/wiki/Tomasulo-Algorithmus für das Scheduling von Instruktionen).

Es ist klar, dass man nicht durch das Lesen von ein paar Wikipedia-Artikeln einen M1-Konkurrenten in der Garage basteln kann, aber wir haben schon einmal erlebt, wie das Hobby-Projekt eines finnischen Informatik Studenten nahezu alle kommerziellen UNIX-Derivate langsam, aber sicher aus dem Markt gedrängt hat. Abgesehen von Mikrocontrollern ohne MMU und der Windows- bzw. Apple-Welt hat der Linux-Kernel heute nahezu 100% Marktdurchdringung.



Wann gibt es ein Smartphone oder gar einen PC mit RISC-V?


Das ist eine Frage, die nicht leicht zu beantworten ist (und deren Antwort ich mir auch nicht wirklich zutraue).

Die RISC-V Initiatoren sagen, mit einem gewissen Augenzwinkern, dass sie nichts Geringeres als die Weltherrschaft anstreben. Sie argumentieren dabei mit der Idee des offenen Standards: Langfristig gibt es für die meisten Marktteilnehmer keine Motivation mehr, auf einen proprietären Standard zu setzen, wenn es einen offenen Standard mit einer freien Auswahl an qualitativ hochwertigen Implementierungen gibt.

RISC-V „frisst“ sich mittlerweile langsam durch das Ecosystem: Zuerst löst es die unzähligen Inhouse Microcontroller ab, die in alle möglichen Chips (z.B. USB-SATA Bridges, usw.) stecken. Hier sind immer noch archaische 8-Bit Designs wie 8051 üblich, da diese lizenzfrei verfügbar sind. Dadurch, dass man RISC-V Cores, im Gegensatz zu ARM, beliebig anpassen und modifizieren darf, kann man auch spezielle Anforderungen damit erfüllen. So hat z.B. Western Digital einen Open Source RISC-V Core entwickelt: (https://github.com/chipsalliance/Cores-SweRV-EH2), den sie in Storage Controllern einsetzen wollen.

Drive bekommt RISC-V von Russland, China und Indien, spätestens seit dem Huawei-Bann ist chinesischen Tech-Firmen sehr klar geworden, dass sie nicht von den USA abhängig sein wollen. Ich denke, das erste Endkunden Produkt, das einen RISC-V Kern als Anwendungsprozessor einsetzen wird, wird daher in China entstehen. Erste vielversprechende CPU-Designs aus China gibt es schon. Alibaba macht es auch hier Amazon nach, und investiert in CPU-Entwicklung, aber eben RISC-V anstatt ARM. Ob das für uns in Europa eine bessere Alternative als die heutigen US-Produkte sein wird, kann man natürlich lange diskutieren.

Für einen RISC-V Desktop und Smartphone fehlen zurzeit noch ein paar wichtige Dinge (unter anderem eben ausgereifte JIT-Engines speziell für Javascript), aber an all diesen Dingen wird gearbeitet.

Aber klar, ich bin einerseits überzeugt, dass RISC-V gekommen ist, um zu bleiben, aber in welchen Marktsegmenten es sich etablieren wird, und in welchem Zeitraum, kann man ganz schwer sagen.

P.S.: Es ist mein erster Leserartikel bei CB, ich hoffe Ihr findet ihn interessant. Ich freue mich über jedes Feedback, auch bzgl. Schreibfehlern und falsch gesetzte Kommas ;)
Ich hoffe es sind nicht viele Fehler übrig geblieben, ich bin nicht sehr gut im Korrekturlesen meiner eigenen Texte...
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: McFly76, dev/random, Hannes Papesh und 145 andere
TomH22 schrieb:
Bezüglich Micro-Op and Macro-Op Fusion, etc. habe ich beim kurzen Reinsehen den Eindruck das er aus einer älteren Berkley Doktorarbeit zu dem Thema zitiert (die stammt glaube von Chris Celio, hier ist ein Video von ihm: <Video>
Insoweit denke ich das der Vortrag auch Teile der akademischen Forschung zum Thema RISC-V wiedergibt.
Danke für den Link, den Vortrag habe ich glaube schonmal gesehen, konnte es aber nicht zuordnen. Da wird wenigstens auch ein wesentlicher Teil gescheit dargestellt. Der Vergleich ist auf der Basis, dass alle ISAs keine Scalaroperationen nutzen. Das da R32C entsprechend gut abschneidet ist nicht so überraschend, an der Stelle ist die ISA ja wirklich sehr elegant.
An der Stelle wird es bei Engheim dünn, die Information liefert er nicht. Ganz im Gegenteil, er kritisiert ja aktuelle Implementierungen der ARM und x86 ISA für ihre Fülle an Operationen bzw. "Bloat". Wobei gerade diese Fülle an Instruktionen u.a. durch die ganzen Vektoroperationen zustande kommt.

RISC-V ist auf jeden Fall von Anfang an mit dem Ziel Modularität gestaltet, während andere ISAs eher historisch gewachsen sind. Deswegen geht RISC-V etwas verschwenderisch mit Opcode Space um, sodass man für Erweiterungen nicht mit Prefix-Bytes, Modes, etc. arbeiten muss. So muss man ARM zwischen Thumb und "uncompressed" Mode umschalten, während man bei RISC-V einfach die compressed Instructions als zusätzliche Opcodes hat (allerdings erhöht die Unterstützung von Compressed Instructions die Komplexität gleich erheblich, speziell weil 32 Bit Instruktionen dann unaligned sein können, und dabei auch Cache-Line und Page Grenzen überschreiten können).
Das historische Wachsen der ISAs stimmt. Wobei das bei x86 wirklich schlimm ist, ARM hat aber bei AArch64 ja ordentlich aufgeräumt. Da ist ja u.a. Thumbs(2) rausgeflogen, eben weil das Wechseln der Modi ungünstig war.
Bei der Komplexität, da sehe ich vor allem andere Ansätze. ARM und vor allem x86 erweitern ihre ISA um Befehle, die häufige Befehlskombinationen sinnvoll zusammenfassen zusammen mit Op-Fusion und Risc-V nutzt die C-Extension und Op-Fusion. Im Endeffekt erwarte ich da bei realen, gut gemachten Implementierungen das sich das nicht viel Nimmt in Sachen Durchsatz und Energieeffizienz. Mit den üblichen Extrempunkten bei einzelnen Einsatzszenarien.

Im ARM Bereich sieht es etwas besser aus, mindestens in dem Mikrocontroller Profilen gibt ISA Subsets, und ein Cortex-M0 entspricht im Großen und Ganzen RV32I. Da aber auch Cortex-M0 so Dinge wie Multi-Register Push/Pop enthält, muss eine ARM CPU immer mindestens einen einfachen Micro-Code Sequenzer enthalten, der diese Dinge implementiert.
Im "Großen und Ganzen" stimmt. Also abgesehen vom Teilset an Thumbs/Thumbs2 die der M0 beherrscht.
Ich finde den Größenvergleich von Herrn Engheim trotzdem daneben. Je nach Konfiguration eines M0s gibt ARM selbst eine Spanne von 0,0073mm² bis 0,0155mm² an in 40nm Node. Wenn man Flächenbedarf von Cores vergleichen will, braucht es halt mehr Angaben, was die Cores alles können und ob die Fertigung im selben Node mit vergleichbaren Bibliotheken erfolgte.
https://developer.arm.com/documentation/102834/latest/ (Link zum Downloadlink zu den technischen Daten)

Das macht SiFive auch gerne. Wobei man sich eben auch die Frage nach dem Wert von speziell sowas wie Jazelle stellen muss. Es ist eben das Problem der gewachsenen ISAs von x86 und ARM, das eigentlich obsolete Befehle mitgeschleppt werden, weil eben sonst manches Legacy-Binary nicht mehr läuft. Man denke nur an so Dinge wie MMX. RISC-V ist nicht davor gefeit, dass es irgendwann auch solchen "Bloat" mitschleppt, aber noch kann man es auch besser machen....
Dem werden reale Implementierungen von RISC-V auch erliegen. So geil wie Modularität ist, dafür Software zu entwickeln ist kacke. Es ist da dann halt Fluch und Segen zugleich, dass man da fixe Ziele wie verschiedener CoretexM Kerne bzw. Generationen an ARM ISA (ARMv8.6 zum Beispiel) hat.
Und Jazelle, es gab (gibt?) Siemenssteuergeräte, auf denen man direkt mit Java drauf ist. Das war gar nicht so dumm (das eine mal, wo ich es machen musste). Heutzutage hat ARMv8.2-A Erweiterungen für type conversions bekommen, die recht spezifisch für Javascript sind. Mit der derzeitigen Verbreitung von Javascript ist das sinnvoll, in ein paar Jahren vielleicht Bloat..

Es ist nichts Neues, dass, bei einem hinrechend parallisierbaren Problem, viele einfache Kerne mit niedriger IPC insgesamt effizienter (bezüglich Area und Power) sind, als wenige komplexe Kerne mit hoher IPC.
Im realen Leben sieht das ganz anders aus, das ist ja immer der Grund warum Intel sich immer wieder mit der berühmten "Brechstange" (Takt+Energie) die "Gaming-Krone" holt :)
Neu ist das nicht, aber in den Vergleichen fehlt halt oft auch der Vergleich zu Vektorprozessoren. Damit die vielen kleinen Cores besser abschneiden als so ein Vektorprozessor braucht es Probleme, die nicht nur reines Berechnen sondern auch Branching beinhalten, wobei die Branches innerhalb der lokalen Caches der kleinen Cores bzw. Core-Cluster behandelt werden können müssen. Wirklich groß ist das Feld also nicht, wo massig kleine Cores wirklich besser dastehen. Wobei "wirklich groß" ja auch so ein Ding ist, wenn das 5..10% vom HPC/AI-Markt sind, ist da immer noch gescheit wirtschaftliche Motivation dahinter.
Wobei Gaming genau so ein Ding ist. Da kommen Entscheidungsbäume vor, die ganz ungemein von großem, schnellem lokalem Speicher profitieren. Da kann man mit der Brechstange auf "schnell" setzen oder wie AMD zuletzt auf "groß" :)

Wie ich auch in meinem urspünglichen Leserartikel schrieb, hat RISC-V einen Sweetspot zur Zeit vor allem als Ablösung diverser propietärer CPU Implementierungen im Low-End Bereich.
jub
 
Piktogramm schrieb:
Also 40 + 8 + 11 + 26 + 26 + 6 + 1 = 118 Instruktionen für die 32bit Variante und etwas mehr für 64bit. Da ist dann aber auch noch keine einzige Instruktion für Vektoren, Virtualisierung, Kryptoalgorithmen, Zufallsgeneratoren und all die anderen Dinge, die das Vollprogramm an x86 und ARM liefern und die Heute einfach erwartet werden.
"Das Vollprogramm" wird eben nicht immer und überall "heute einfach erwartet", z. B. nicht bei Mikrocontrollern. RISC-V soll ja die Basis für Domain-Specific Computing sein. Der ein oder andere SSD-Controller z. B. basiert schon auf RISC-V … oder das hier finde ich recht spannend: Vortex in der Art von CUDA-Cores auf Basis von RV32IMF. (Ist allerdings ein akademisches Forschungsprojekt.)

Piktogramm schrieb:
Naja und der ganze Vortrag und viele seiner Artikel sind leider so. Die meisten Argumente sind sehr herausgesucht und klappen allenfalls, wenn man die gelebte Realität ignoriert :/
Er will Konzept-Unterschiede/-Vorteile darstellen. Ich finde, das bringen seine Beispiele gut rüber.
Dass sich der Chipflächenvorteil bei komplexen Designs relativiert, sobald große Caches/Buffers, OoO-, Speculative-Execution-Logic usw. dazukommen, erwähnt er ja auch.
Nichtsdestotrotz behauptet aber z. B. SiFive mit ihrem aktuellen P650 immerhin Cortex-A77-Performance zu erreichen bei einem "signifikanten" Performance-pro-Fläche-Vorteil. (Unabhängig überprüfen können wir das noch nicht, da das Teil bisher nur als IP-Core und Simulation existiert.)

Vielleicht macht ja irgendwer irgendwann mal einen Vortrag, warum x86-64 und/oder ARM doch das einzig Wahre im Vergleich zu RISC-V sind. ;)
(Wird passieren, wenn dessen Marktanteil weiter steigt.)

TomH22 schrieb:
Wie ich auch in meinem urspünglichen Leserartikel schrieb, hat RISC-V einen Sweetspot zur Zeit vor allem als Ablösung diverser propietärer CPU Implementierungen im Low-End Bereich.
Heute beschränkt sich das Interesse an RISC-V in der Tat immer noch vor allem auf die extremen Enden der Anwendungsbereichsskala: Embedded und HPC/AI … also simpel + hochgradig parallel
Das könnte sich aber sehr schnell ändern, sobald Google "Android on RISC-V" offiziell unterstützt.

TomH22 schrieb:
Im Applikation-Prozessor Bereich sehe ich in Zukunft vor allem China als Treiber. Da muss man auch aufpassen, das RISC-V außerhalb Chinas nicht mit schlecht gemachten (bzw. schlecht dokumentierten) Implementierungen Credibilty verspielt.
So schlimm wird's sicher nicht. Neben SiFive als RISC-V-IP-Company der ersten Stunde will jetzt z. B. auch noch Imagination Application-Processors anbieten.
Von NXP (OpenHW Group "CORE-V Chassis SoC") hat man leider schon länger nichts mehr gehört.

Bei meinem ersten RISC-V-basierten Endgerät werde ich auch drauf achten, dass es seriös "validiert" und "verifiziert" wurde.
 
Zuletzt bearbeitet:
lanse schrieb:
"Das Vollprogramm" wird eben nicht immer und überall "heute einfach erwartet", z. B. nicht bei Mikrocontrollern. RISC-V soll ja die Basis für Domain-Specific Computing sein. Der ein oder andere SSD-Controller z. B. basiert schon auf RISC-V … oder das hier finde ich recht spannend: Vortex in der Art von CUDA-Cores auf Basis von RV32IMF. (Ist allerdings ein akademisches Projekt.)
Ab CortexM4 geht es mit (optionalen) DSP/SIMD Erweiterungen los. "Überall" ist wirklich übertrieben, aber umsobald die Anforderung an Signalverarbeitung minimal höher sind, aktuelle Funktechnologie im Sicherungsschicht zum Einsatz kommen, wird es mit R32I schnell unkomfortabel.
Gerade bei den SSD-Controllern wird man mit R32I auch nicht froh. Für die Crypto brauchts da auch irgendwoher gescheiten Zufall und für das Berechnen von AES und CRC will man da eigene Funktionsblöcke oder (teils) propritäre Erweiterungen der RISC-V ISA. Insofern unterstüzt dein Beispiel eher meine Position ;).


Vielleicht macht ja irgendwer irgendwann mal einen Vortrag, warum x86-64 und/oder ARM doch das einzig Wahre im Vergleich zu RISC-V sind. ;)
(Wird passieren, wenn dessen Marktanteil weiter steigt.)
So eine Kampagne hat ARM bereits versucht und sich damit extrem blamiert. Darüber haben sich nicht nur die Techies lustig gemacht, sondern auch Medien die sich eher ans Management richten..
https://www.theregister.com/2018/07/10/arm_riscv_website/
 
@andi_sco: Will ich schon länger mal machen, komme aber dauernd nicht dazu. Ausserdem habe ich auch ein bisschen den Anschluss verloren. Vor der Pandemie bin ich, wenn es sich ergab, auch mal auf RISC-V Konferenzen gefahren, wenn sie in Europa waren - ich beschäftige mich mit RISC-V nur als Hobby, muss es also selbst zahlen. Während der Pandemie war dann ja sowieso alles online.
So ein bisschen scheint aus RISC-V die Luft draußen zu sein.

Erfolgreich ist RISC-V im Bereich FPGA Softcores, nachdem nun auch AMD/Xilinx mit Microblaze-V auf RISC-V umgestellt hat.

MCUs mit RISC-V gibt es auch einige, z.B. auch den neuen Raspberry Pico 2, der RISC-V Cores als Alternative zum Cortex M33 enthält. Allerdings ist das wohl mehr als Experiment gedacht. Trotzdem interessant, da die verwendeten Cores auf GitHub im Source vorliegen.

Aber im Bereich Application Class Cores fehlt immer noch der richtige Durchbruch.
Ergänzung ()


Piktogramm schrieb:
Ab CortexM4 geht es mit (optionalen) DSP/SIMD Erweiterungen los. "Überall" ist wirklich übertrieben, aber umsobald die Anforderung an Signalverarbeitung minimal höher sind, aktuelle Funktechnologie im Sicherungsschicht zum Einsatz kommen, wird es mit R32I schnell unkomfortabel.
Gerade bei den SSD-Controllern wird man mit R32I auch nicht froh.
RV32I ist auch nicht für den Einsatz außerhalb akademischer Anwendungen gedacht, oder ggf. für sehr spezielle Kerne, die sowieso fast alles in Custom Extensions abwickeln.

Die Hazard3 Cores im aktuellen Raspberry Pico 2 (RP2350) unterstützen die folgenden Erweiterungen:

1729807767890.png



Freilich sind die RISC-V Cores im RP2350 mehr ein Experiment und scheinbar in der Freizeit eines Raspberry Mitarbeiters entstanden. Die zwei Cortex-M33 sind leistungsfähiger und haben z.B. auch eine FPU.

Anderseits gibt es auch viele MCUs mit Cortex-M0, die können auch nicht viel mehr als RV32I.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: andi_sco
@TomH22
Sinnentstellendes Zitieren..
Dort wo du dein Zitat gefunden hast argumentiere ich ja gerade so, dass mehr als RV32I nötig ist.
 
@Piktogramm: Ich wollte Dir nicht widersprechen. Habe jetzt das Zitat verlängert, ist es so besser?
Da Dein Zitat sich aber wieder auf ein anderes Zitat bezieht, ist es schwierig.
 
Zurück
Oben