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
Gleich mal @SV3N aktivieren.

@TomH22 Toller Artikel! Bei Multi Issue musste ich kurz nachschlagen, mir war das nur als Superskalar bekannt, gemeint ist aber dasselbe.
Eins meiner großen Ziele ist, einen eigenen RISC-V Prozessor zu entwickeln und in einen FPGA zu gießen. Falls ich jemals was konkretes vorweisen kann, mach ich einen Leserartikel draus :D
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Zarlak, Unnu, Quaussi und 12 andere
Sehr schöner Leserartikel! Ich bin auch auf die weitere Entwicklung gespannt und hoffe, dass man bald zumindest brauchbare Raspberry-Pi-ähnliche Boards auf RISC-V-Basis sieht.

Insgesamt ist es ein weiter Weg für RISC-V im Desktop, was man auch daran erkennt, dass Intel höchstselbst gescheitert ist, einen echten x86-Nachfolger zu etablieren: Mit Itanium sollte damals, Anfang des Jahrtausends, die zu x86 inkompatible 64-Bit-Architektur IA-64 ein würdiger Nachfolger werden, doch durchgesetzt hat sich AMD64 - eine zu x86 kompatible Erweiterung vom Konkurrenten. Dabei wurde der 8086 bereits 1978 verkauft - mit 16 Bit. Wenn man heute einen x86-Rechner bootet, startet man auch mit einem modernen Prozessor aus 2021 noch im 8086-kompatiblen Real-Mode mit 16-Bit.
 
  • Gefällt mir
Reaktionen: mehmet_b_90, Rockstar85 und SVΞN
Web-Schecki schrieb:
Mit Itanium sollte damals, Anfang des Jahrtausends, die zu x86 inkompatible 64-Bit-Architektur IA-64 ein würdiger Nachfolger werden, doch durchgesetzt hat sich AMD64 - eine zu x86 kompatible Erweiterung vom Konkurrenten.
In dem verlinkten Video von David Patterson erklärt er, woran der Itanium gescheitert ist: VLIW Architekturen haben sich als Sackgasse erwiesen. Dort soll der Compiler vorab entscheiden, was parallel ausgeführt werden kann. Das hat sich aber aufgrund der Dynamik des Ausführungszustandes (z.B. wann gibt es einen Cache Miss oder Hit) als unmöglich erwiesen, zumindest für „general purpose“ Computer. In speziellen Fällen, z.B. Signalprozessoren kann es funktionieren.

CPU Design hat seine Tücken, da gibt es schon mal Fehlschläge, siehe auch AMD Bulldozer.
 
  • Gefällt mir
Reaktionen: ThePlayer, Quaussi, Termy und eine weitere Person
ghecko schrieb:
Toller Artikel! Bei Multi Issue musste ich kurz nachschlagen, mir war das nur als Superskalar bekannt, gemeint ist aber dasselbe.
Im Grunde ja, allerdings bezeichnet Multi Issue eine Implementierungsmöglichkeit von Superskalarität. SMID und Vector Units sind andere Möglichkeiten. Da enthält ja dann eine Instruktion Anweisungen für die parallele Ausführung. Ähnlich ist es beim (gescheiterten) Konzept VLIW.
ghecko schrieb:
Eins meiner großen Ziele ist, einen eigenen RISC-V Prozessor zu entwickeln und in einen FPGA zu gießen.
Ich habe das bereits erfolgreich getan, eigen war bei mir die Idee mit der eigenen CPU zuerst da, und das war gerade zu der Zeit als RISC-V öffentlich wurde. Es gibt auch eine Projekt-Website: bonfirecpu.eu

Aber besser dokumentiert und für Einsteiger am ehesten Verständlich ist neorv32 von Stephan Nolting https://stnolting.github.io/neorv32/
Extrem gut dokumentiert, gut lesbarer VHDL Code. Einziger kleiner Nachteil ist, dass es ein Multi-Cycle Design ist.
 
  • Gefällt mir
Reaktionen: ufopizza, Termy und ghecko
TomH22 schrieb:
Zustand sind die alle CPU-Register und Statusbits gemeint.
TomH22 schrieb:
ich bin nicht sehr gut im Korrekturlesen meiner eigenen Texte...

Ein mir wohl bekanntes Problem und meistens auch der Grund, warum ich sehr häufig, meine Texte editiere.

Ich bin schon zu frieden, wenn es innerhalb der ersten 5 Minuten passiert.

btt:

Ein sehr schöner Einblick in die aktuelle Situation und ich hoffe, dass du mit deiner Grundintention richtig liegen wirst.

Ob wir es dann "Demokratisierung" "Sozialisierung" oder "Endkapitalisierung" nennen wollen, bleibt dahin gestellt. Die Möglichkeiten, von "Nerds", ein bestehendes System deutlich zu verbessern, sind bei RISC-V jedoch größer, als bei anderen Mitbewerbern.

Ob man in nicht allzu ferner Zukunft weiterhin die Dinge fest verdrahtet, bleibt jedoch immer noch Spekulatius.

FPGA für alle und dann soll sich jeder, seine "CPU/GPU" downloaden. :heilig:

mfg
 
Danke für den Artikel

Hier mal nen Test von einem Risc-V Board
https://www.golem.de/news/sifive-hi...v-ist-gekommen-um-zu-bleiben-2110-159992.html


Board ist aktuell leider nicht zu bekommen, meine der Preis war um die 600$
https://www.mouser.de/new/sifive/sifive-hifive/

https://www.sifive.com/boards/hifive-unmatched


Spannend finde ich den Core Designer

https://www.sifive.com/core-designer


1638955691044.png



In Russlang gibt es ja noch den Elbrus.
Ich versuche ja schon länger an so einen PC zu kommen aber die Kommunikation mit den lieben Russen ist doch etwas schwer.




https://www.golem.de/news/mcst-elbrus-die-zukunft-von-russlands-eigenen-cpus-2102-154320.html
 
  • Gefällt mir
Reaktionen: dipity und [wege]mini
nuja, chips sind und bleiben wohl das, was man ein "strategisches gut" nennen könnte.
eigentlich DAS strategische gut des 21.ten jahrhunderts.
mit allen denkbaren und bekannten begleiterscheinungen und begehrlichkeiten.
und viele sind ned nur denkbar, sondern erwiesenermaßen teil der geschichte, also mindestens einmal passiert.
 
Sehr schöne und kurze Ausführung zu RiscV, vor allem die Erklärung was eine ISA ausmacht war da sehr hilfreich. :)
 
  • Gefällt mir
Reaktionen: ThePlayer
@TomH22 Vielen Dank für den aufschlussreichen Artikel.

An der Stelle vielleicht ebenfalls interessant für den ein, oder anderen: IBM hat 2019 seine POWER-ISA, die ebenfalls eine RISC-ISA ist, Open Source gemacht. Viele vermuten, dass haben sie gemacht, weil sie mit RISC-V nun eben einen direkten Konkurrenten haben.

Google baut ja für ihr eigenes RZ schon länger RISC CPUs auf POWER-ISA Basis und es kamen auch schon andere Hersteller auf die Idee entsprechende Server und Workstations zu bauen und zu verkaufen.

Grundsätzlich bin ich absolut deiner Meinung, die Zukunft der CPUs gehört Open Source Projekten.
Wie, wird sich aber noch herausstellen.
 
Web-Schecki schrieb:
Mit Itanium sollte damals, Anfang des Jahrtausends, die zu x86 inkompatible 64-Bit-Architektur IA-64 ein würdiger Nachfolger werden, doch durchgesetzt hat sich AMD64 - eine zu x86 kompatible Erweiterung vom Konkurrenten.

Auch AMD64 ist binaer inkompatibel zu IA-32, aber die Codierung ist so aehnlich, dass ein gemeinsamer Decoder verwendet werden kann (der halt den Mode als weiteren Input hat).

Wenn man heute einen x86-Rechner bootet, startet man auch mit einem modernen Prozessor aus 2021 noch im 8086-kompatiblen Real-Mode mit 16-Bit.

Da habe ich meine Zweifel; mag sein, dass beim Ausfuehren von Boot-Code eines Bootsektors einer DOS partition table dieser Modus aus Kompatibilitaetsgruenden zum Einsatz gelangt, aber da es schwierig ist, aus dem Real Mode wieder herauszukommen, werden die beim neumodischen UEFI-Bootvorgang wohl etwas moderneres gewaehlt haben.
 
konkretor schrieb:
aber die Kommunikation mit den lieben Russen ist doch etwas schwer.

Das ist das Problem, wenn man kein Russisch kann.

Die kyrillischen Letter sind ja schon schwer, die Sprache mit ihren 6 Fällen und die Menschen, die diese Sprache sprechen, machen es zusätzlich nicht einfacher.

Daher der alte Spruch von "uns" aus der DDR: Die Optimisten lernen Russisch, die Pessimisten Chinesisch.

Leider habe ich kein Chinesisch gelernt, werde ich in meinem Alter auch nicht mehr.

mfg

p.s.

Damit es nicht falsch rüber kommt, noch eine kurze Präzisierung. Selbst mit guten Sprachkenntnissen in Russisch ist es unfassbar schwer, mit Russen zu kommunizieren.

Ich glaube aber, du wirst eher schlecht in Russisch sein. :heilig:

Wenn man aber zwischen den Zeilen sagt, dass man mit Russen nicht reden kann, muss man das einschränken. Sonst ist man ja ein Rassist.
 
Zuletzt bearbeitet:
Sehr schöne Übersicht, danke 👍
Persönlich drücke ich RISC-V (und eigentlich uns allen) alle erdenklichen Daumen, dass es eher früher als später auch in die mehr User-Facing Bereiche vordringt. Die derzeitige Entwicklung im Desktopbereich, so langsam ARM als neuen "hot shit" anzusehen finde ich völlig bescheuert - wenn man sich schon die ganzen Problem aufhalst, die ein Architekturwechsel nach sich zieht (alte, proprietäre Software vor allem), dann ist es in meinen Augen absolut hirnrissig, sich wieder in ein ähnliches Abhängigkeitsverhältnis zu begeben, wenn es eine offene Alternative gibt...
 
  • Gefällt mir
Reaktionen: nyster, ThePlayer und ghecko
Vielen Dank für den aufschlussreichen Text. Habe ich gerne gelesen.

TomH22 schrieb:
Mit sichtbarem Zustand sind die alle CPU-Register und Statusbits gemeint.
Da ist entweder das "die" oder das "alle" zu viel.
TomH22 schrieb:
Dieser Zustand, wird auch „architectural state“ genannt, da er den Inhalt aller in der ISA definierten Register darstellt.
Hier würde ich persönlich das Komma hinter Zustand löschen.
TomH22 schrieb:
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, auch hierzu ein sehr sehenswerter Vortrag von David Patterson:
Hier würde ich 2 Sätze raus machen. Entweder nach "uralt" das Komma durch einen Punkt ersetzen oder das Komma nach dem "realisiert" durch einen Punkt ersetzen. Liest sich meiner Meinung nach dann besser.
TomH22 schrieb:
Aktuelle Anwendungsprozessoren etwas Intel Core oder AMD Ryzen haben sehr aufwändige „Multi Issue – Out of Order“ Mikroarchitekturen.
Würde ich zu "(wie) etwa Intels Core oder AMDs Ryzen" umformulieren. Das "etwas" ist aber auf jeden Fall verkehrt.
 
mae schrieb:
Auch AMD64 ist binaer inkompatibel zu IA-32
Na klar, AMD64 verwendet ja auch 64-Bit-Worte. Logischerweise können AMD64-Binaries nicht auf IA32 laufen. Umgekehrt aber schon - und zwar nativ. Bei Itanium wäre eine Emulation nötig gewesen.

mae schrieb:
aber da es schwierig ist, aus dem Real Mode wieder herauszukommen
Nein, ist es überhaupt nicht. Beim legacy-BIOS-Boot ist das seit Jahrzehnten Standard. Der Bootloader bekommt das System im Real-Mode und muss dann entsprechend den Protected-Mode oder den Long-Mode selbst initialisieren. Meines Wissens unterstützen UEFI-Systeme auch noch heute den legacy-BIOS-Boot, also das ist das dort nicht anders. Falls UEFI genutzt wird, dann kann der Protected-Mode/Long-Mode schon vorher durch UEFI initialisiert werden. Dennoch startet eine x86-kompatible CPU im Real-Mode.

Umgekehrt ist es jedoch meines Wissens nicht möglich, zurück in den Real-Mode zu gelangen. Es gibt jedoch den Virtual 8086-Mode, um Zugriff auf die BIOS-Funktionen zu haben, allerdings läuft auch dieser "protected".
 
  • Gefällt mir
Reaktionen: cbtestarossa und hurcos
Uff, Grüße von Pinky und Brain 😁
Aller Anfang ist schwer und Gut will Weile haben. Kennen wir 👍🏼
Danke für den tollen Artikel @TomH22. Sehr verständlich geschrieben und verschiedene Aspekte gebündelt. Bitte weiter so und mehr davon ✌🏼😅
 
Esp32-c3 wäre ein Beispiel für einen SoC mit dem schon jetzt spielen kann. Wobei aus Entwickler Sicht kein Unterschied zu den Xtensa Varianten besteht - zumindest nicht auf dem esp-idf Level
 
  • Gefällt mir
Reaktionen: 4nanai
TomH22 schrieb:
CPU Design hat seine Tücken, da gibt es schon mal Fehlschläge, siehe auch AMD Bulldozer.
Eben, und darum sehe ich eine OpenSource CPU generell als problematisch. Man kann ja an Linux sehen, was hier leidlich funktioniert und was nicht.

Es gab so viele gute Ideen und Ansätze, die man beobachten konnte
  • Transmeta
  • MIPS
  • Dec Alpha
  • Transputer
  • Cell
  • :
Es scheitert dann doch letztlich an vielen Dingen:
  • Ressourcen bei der Chipentwicklung
  • Marktmacht und Einfluß
  • daraus resultierend entsprechende Tools und Unterstützung
  • usw.
Selbst Intel mit der Marktmacht ist ja mit Itanium gescheitert, obwohl die Idee dahinter an sich gut war, und endlich mit Little und BigEndian programmieren konnte. Ich durfte damals als einer der ersten bei uns auf einem Itanium System von HP entwickeln. Auch bei der GPU tut sich Intel auch schwer, und sind nun schon im 4.Anlauf. PowerPC war ein Gemeinschaftsprojekt, was gut begann, aber doch dann wieder nur (fast) in der Hand von IBM landete.

Will sagen, CPU Design ist komplex, und zu viele Köche verderben den Brei oder hier die CPU. Daher, ich glaube anhand der vergangen Erfahrungen nicht, das RISC-V irgendwie eine Chance hat. Man muß hier einen zentralen und potenten Treiber hinter dem Thema haben, der gut zentralisiert und aussortiert. ARM hat das mit ihrem Konzept prima hinbekommen. Aber die sind auch mittlerweile bald 40 Jahre im Geschäft.

Und nun sind es die Großen wie Google (TPU), Apple (ARM-Basis), Amazon (ARM-Basis), die ihre eigenen CPUs designen, weil sie gleich eigene Anwendungen dafür haben. Und sie sind deshalb erfolgreich, weil sie einerseits die finanziellen Ressourcen haben, etabliert im Markt sind, und sich die Dinger so bauen, wie sie die CPUs selbst brauchen können. Damit schaffen sie sich gleich ein riesiges Test- und Anwendungsfeld, wo man gleich sehen kann, wie gut und was nicht so gut funktioniert.

Diese Basis hat RISC-V nicht, und wird sie so absehbar nicht bekommen. Oder ein Land wie China investiert hier entsprechen massiv rein, dann könnte das Ding auch was werden, aber mit roter Flagge. Und das wir heute die politischen Dimensionen (leider) nicht außer acht lassen können, sehen wir ja bei Kaspersky und Huawei deutlich.

Von Problemen wie Spectre, Meltdown und Co., die sich erst nach Jahrzehnten als Sicherheitslücke im CPU-Design entpuppen, will ich noch gar nicht anfangen. Wie wollte da ein OpenSource Produkt jemals einen Fehler mit der Marktmacht beseitigen, wie es Intel, IBM, ARM und Co. machten?
 
Zuletzt bearbeitet:
PHuV schrieb:
aber doch dann wieder nur in der Hand von IBM landete.
Dem war mal so, siehe oben.
Es gibt mittlerweile viele POWER Designs, die nicht von IBM sind und die Liste der Mitglieder der Open POWER Foundation ist sehr lang.

Selbst bevor POWER open source wurde, haben bspw. Google die POWER-ISA lizensiert, um damit ihre eigenen CPU-Designs gebaut. Das ist bei Google auch alles gut und öffentlich dokumentiert.
 
  • Gefällt mir
Reaktionen: PHuV
TomH22 schrieb:
CPU Design hat seine Tücken, da gibt es schon mal Fehlschläge, siehe auch AMD Bulldozer.
Bei Bulldozer bin ich mir nie einig, ob der Fehlschlag bereits die Idee war oder die Umsetzung durch die schmalen INT-Kerne, die nur 2-fach Skalar ausgelegt waren, während Phenom davor 3-fach und Intel eben auf 4-fach ging.

Nimmt man es da genau, dann war bei Intel ein Kern von der Skalarität damals sobreit wie ein Modul bei Bulldozer.
TomH22 schrieb:
Ähnlich ist es beim (gescheiterten) Konzept VLIW.
Also wenn ich jetzt nicht ganz falsch liege: Gab es nicht vor einiger Zeit mal ein Bericht, dass da die Russen an einer VLIW noch arbeiten? Ich weiß das Erebus da die Entwickler von Intel übernommen wurden.

Oder sind es aktuell die Chinesen, die da ihre eigene ISA drauf aufbauen wollen?
mae schrieb:
Auch AMD64 ist binaer inkompatibel zu IA-32, aber die Codierung ist so aehnlich, dass ein gemeinsamer Decoder verwendet werden kann (der halt den Mode als weiteren Input hat).
Was ja auch wenig verwunderlich ist, wenn man bedenkt, dass das Datenwort in dem Fall 64 Bit, statt 32 Bit hat.
Web-Schecki schrieb:
Bei Itanium wäre eine Emulation nötig gewesen.
Und die Emulation hat Intel ja auch eingebaut, war nur furchrbar langsam.

Dazu kam das Problem und das hat @TomH22 auch schon ausgeführt: dem Compiler wäre im Programm sehr viel Arbeit zugekommen die Befehle bereits passend zu sortieren und zusammen zufassen. VLIW/EPIC ist für Compilerbauer quasi das Masterlevel bei der Entwicklung.

Auch einer der Gründe, warum AMD bei ihren GPUs VLIW hat fallen lassen. Wobei eine VLIW-Architektur bei GPUs sogar noch existieren dürfte, ich bin mir da bei Qualcomm nicht sicher, ob die nicht heute noch auf VLIW aufbauen, als sie von ATi/AMD die Mobile-GPU-Sparte übernommen haben.

PHuV schrieb:
Selbst Intel mit der Marktmacht ist ja mit Itanium gescheitert, obwohl die Idee dahinter an sich gut war, und endlich mit Little und BigEndian programmieren konnte. Ich durfte damals als einer der ersten bei uns auf einem Itanium System von HP entwickeln. Auch bei der GPU tut sich Intel auch schwer, und sind nun schon im 4.Anlauf. PowerPC war ein Gemeinschaftsprojekt, was gut begann, aber doch dann wieder nur (fast) in der Hand von IBM landete.
War bei PowerPC nicht auch Apple damals maßgeblich beteiligt, weil sie da ein Nachfolger für den 68k suchten?
PHuV schrieb:
Und nun sind es die Großen wie Google (TPU)
Wobei Google - auch jetzt in den Smartphones - ARM verwendet als ISA - und auch einen Standardkern. Googles TPUs sind ja keine CPUs sondern eher als Beschleuniger wie GPUs zu verstehen.
PHuV schrieb:
Daher, ich glaube anhand der vergangen Erfahrungen nicht, das RISC-V irgendwie eine Chance hat.
Es steht und fällt alles mit der Softwarekompatiblität und das man möglichst schnell alle wichtigen Bibliotheken auch lauffähig hat und ebenso, dass auch die Hersteller bereit sind Standardsoftware für die entsprechende Architektur anzupassen/zu compilieren.

Aber wird spannend werden, RISC-V hat bereits seine Nische gefunden, ob es darüber hinaus geht, wird sich jetzt zeigen.
 
Zurück
Oben