M1 kündigt den Aufstieg von RISC-V an
(medium.com/@erik-engheim)"M1 wird RISC-V bei einem Paradigmenwechsel helfen, aber nicht auf die Weise, die du denkst"
Ein Folgeartikel des Ingenieurs, der "Warum ist der M1-Chip so schnell?" geschrieben hat. Eine interessante Perspektive auf die Zukunft von RISC-V.
Die Gründe für die Leistung des M1 sind:
-
viele Decoder und Out-of-Order-Ausführung (OoO)
-
mehrere dedizierte Chips wie GPU, NPU und DSP
Dieser Artikel geht detaillierter auf Punkt 2 ein: Heterogeneous Computing.
Dedizierte Chips kann man auf verschiedene Arten bezeichnen; hier werden sie einheitlich als Coprocessor (Hilfsprozessor) zusammengefasst (man kann sie auch Accelerator nennen).
-
Coprozessoren sind kein völlig neuer Trend.
-
Schon der Amiga 1000 von 1985 hatte Coprozessoren für Audio und Grafik, und auch die GPU ist ein Coprozessor.
Auch Googles TPU (Tensor Processing Unit) ist ein auf Machine Learning optimierter Coprozessor.
[ Was ist ein Coprocessor? ]
-
Anders als eine CPU kann er nicht allein existieren. Ein Computer wird nicht dadurch zu einem Computer, dass man nur einen Coprozessor einbaut; er ist einfach ein Spezialprozessor, der eine bestimmte Aufgabe besonders gut beherrscht.
-
Ein frühes Beispiel ist Intels 8087 Floating Point Unit (FPU). Intels 8086 war gut bei Integer-Berechnungen, aber nicht bei Floating-Point-Operationen.
-
Floating-Point-Berechnungen lassen sich auch mit Integer-Arithmetik emulieren, aber das war langsam. Das ist ähnlich wie bei frühen Mikroprozessoren, die Addieren und Subtrahieren konnten, aber nicht Multiplizieren, sodass Multiplikation durch wiederholte Addition umgesetzt wurde.
-
Anders gesagt: "Komplexe mathematische Berechnungen lassen sich durch Wiederholung einfacher Operationen ausführen."
-
Genau das tun letztlich alle Coprozessoren. Die Arbeit eines Coprozessors könnte auch von der CPU erledigt werden — man müsste nur einfache Operationen oft genug wiederholen.
-
Ein Grund, warum man anfangs GPUs brauchte, war, dass die CPU sehr lange gebraucht hätte, um dieselben Berechnungen für Millionen von Polygonen oder Pixeln immer wieder auszuführen.
[ Wie gelangen Daten in einen Coprozessor hinein und wieder heraus? ]
-
Alle Coprozessoren — einschließlich Maus, Tastatur und Bildschirm ebenso wie GPU, FPU und Neural Engine — greifen im Grunde auf bestimmten Speicher zu, um Daten zu lesen und zu schreiben.
-
Diese Aufgaben werden von Device-Treibern erledigt, deshalb kommen normale Softwareentwickler damit meist nicht direkt in Berührung.
→ Das ist die Aufgabe von Dingen wie DMA-Controllern (Direct Memory Access).
-
In der DOS-Zeit konnte man in C/C++ über Pointer direkt auf Video-Speicheradressen zugreifen und so Pixel verändern.
-
Coprozessoren arbeiten auf ähnliche Weise: NPU, GPU, T1 usw. besitzen jeweils Adressen, über die mit ihnen kommuniziert wird, und diese Kommunikation kann asynchron erfolgen.
-
Die CPU legt die vollständigen Befehle, die an Neural Engine oder GPU geschickt werden sollen, im Speicher ab und teilt diesen Adressbereich dann der Neural Engine/GPU mit.
-
Die CPU muss nicht warten, während der Coprozessor diese Befehle und Daten verarbeitet; deshalb werden an dieser Stelle Interrupts wichtig.
[ Wie Interrupts funktionieren ]
-
Grafik- und Netzwerkkarten werden in den PC gesteckt und haben eine zugewiesene Interrupt-Leitung.
-
Diese verhält sich wie eine direkt mit der CPU verbundene Leitung: Wird sie aktiviert, unterbricht die CPU ihre aktuelle Arbeit und bearbeitet den Interrupt.
-
In der Praxis werden dabei die aktuelle Position und die Register im Speicher gesichert, damit später dorthin zurückgekehrt werden kann.
-
Danach wird in der Interrupt-Tabelle nachgeschlagen, welche Aufgabe auszuführen ist. Dort steht die Adresse des Programms, das beim Auslösen des Interrupts gestartet werden soll.
-
Für Programmierer ist all das unsichtbar und wirkt eher wie eine Callback-Funktion, die für ein bestimmtes Ereignis registriert ist. Der Device-Treiber kümmert sich auf niedriger Ebene um diese Verarbeitung.
-
Der Grund für diese Erklärung ist, dass man verstehen muss, was bei der Nutzung eines Coprozessors tatsächlich passiert, um zu wissen, was bei der realen Kommunikation damit einhergeht.
-
Durch Interrupts können viele Dinge parallel passieren.
→ Während die CPU etwa durch die Maus unterbrochen wird, kann eine Anwendung bereits ein Bild von der Netzwerkkarte holen; wenn die Maus bewegt wurde, erhält die CPU die neuen Koordinaten und schickt sie an die GPU, damit diese den Mauszeiger an der neuen Position zeichnet. Während die GPU den Mauszeiger zeichnet, kann die CPU bereits mit der Verarbeitung des aus dem Netzwerk geholten Bildes beginnen.
- Über solche Interrupts kann man auch komplexe Machine-Learning-Aufgaben an die Neural Engine des M1 schicken, um etwa Gesichter von der Webcam zu erkennen. Da die Neural Engine die Bilddaten verarbeitet, können Computer und CPU in der Zwischenzeit andere Aufgaben erledigen und weiterhin auf den Nutzer reagieren.
[ The Rise of RISC-V ]
-
2010 entwickelte sich das Parallel Computing Lab der UC Berkeley in Richtung eines stärkeren Einsatzes von Coprozessoren.
-
Man erkannte das Ende von Moores Gesetz daran, dass sich die Leistung aus allgemeinen CPU-Kernen nicht mehr so einfach weiter herauspressen ließ.
→ Es wurden spezialisierte Hardware-Coprozessoren nötig.
- Die Taktfrequenz lässt sich wegen Wärmeentwicklung und Stromverbrauch nicht einfach weiter erhöhen.
→ Ein Ansatz sind viele Decoder und Out-of-Order-Ausführung (OoO).
→ Siehe dazu auch den Artikel "Warum ist der M1-Chip so schnell?" https://de.news.hada.io/topic?id=3315
[ Soll das Transistorbudget für CPU-Kerne oder für Coprocessor verwendet werden? ]
-
Ein Ausbau auf 128 Kerne macht ein Desktop-System nicht automatisch effizienter.
-
Anfang der 1980er reichte bei einem Transistorbudget von 20.000 oft aus, 15.000 davon in die CPU zu stecken.
-
Wenn eine CPU 100 verschiedene Aufgaben erledigt und ein Coprozessor für nur eine dieser Aufgaben 1.000 Transistoren benötigt, dann würden Coprozessoren für alle Aufgaben zusammen 100.000 Transistoren brauchen und damit das Budget überschreiten.
[ Mit mehr Transistoren ändert sich die Strategie ]
-
Frühe Entwürfe mussten sich auf General-Purpose-Computing konzentrieren, aber heute stehen so viele Transistoren zur Verfügung, dass man oft gar nicht weiß, was man mit ihnen anfangen soll.
-
Deshalb ist das Design von Coprozessoren zu einer großen Aufgabe geworden. Es gibt viel Forschung zur Entwicklung verschiedenster neuer Coprozessoren.
-
In vielen Fällen muss diese Forschung bei einem eher primitiven Accelerator ganz von vorne beginnen.
-
Anders als eine CPU lesen und verarbeiten sie nicht jede Phase von Befehlen und wissen daher nicht automatisch, wie sie auf Speicher zugreifen oder Daten organisieren sollen.
-
Eine einfache Lösung dafür ist, eine kleine CPU als Controller zu verwenden.
-
Das heißt: Ein vollständiger Coprozessor besteht aus speziellen Accelerator-Schaltungen, die von einer einfachen CPU gesteuert werden und für die Beschleunigung bestimmter Aufgaben ausgelegt sind.
→ Ein Chip wie die Neural Engine oder eine Tensor Processing Unit kann beispielsweise große Register manipulieren, in denen Matrizen gespeichert werden.
[ RISC-V ist maßgeschneidert für die Steuerung von Accelerators ]
-
Genau dafür wurde RISC-V entworfen.
-
Es besitzt einen minimalen Befehlssatz von 40 bis 50 Instruktionen für allgemeine CPU-Aufgaben.
→ Eine x86-CPU hat 1.500 Instruktionen im Befehlssatz.
-
Statt eines großen festen Befehlssatzes wurde RISC-V rund um das Konzept von Erweiterungen entwickelt.
-
Da alle Coprozessoren unterschiedlich sind, lässt sich RISC-V so konfigurieren, dass es einen Kern-Befehlssatz und die zusätzlichen Erweiterungsinstruktionen enthält, die ein bestimmter Coprozessor benötigt.
Darum geht es in diesem Artikel.
-
Apples M1 wird die gesamte Branche in eine Zukunft treiben, die von Coprozessoren dominiert wird.
-
Und um diese Coprozessoren zu bauen, wird "RISC-V ein wichtiger Teil des Puzzles" sein.
[ Vorteile beim Bau von Coprocessor mit RISC-V ]
-
Chips zu entwickeln ist komplex und teuer.
-
Schon der Aufbau von Werkzeugen für die Chip-Verifikation, das Ausführen von Testprogrammen, Diagnose und viele andere Dinge erfordert enormen Aufwand.
-
Das ist heute ein Teil des Werts von ARM. Wegen des großen Ökosystems kann man Designs verifizieren und testen.
-
Deshalb ist es keine gute Idee, einen ganz eigenen Befehlssatz zu haben.
-
Für RISC-V gibt es Standards, auf deren Basis verschiedene Unternehmen Werkzeuge entwickeln können, und durch das entstehende Ökosystem können sich mehrere Firmen die Last teilen.
-
Warum nicht einfach das bereits existierende ARM verwenden? ARM wurde als General-Purpose-CPU entworfen und besitzt einen großen festen Befehlssatz.
-
Wegen Kundenwünschen und der Konkurrenz durch RISC-V hat auch ARM 2019 einen erweiterbaren Befehlssatz vorgestellt.
-
Das grundlegende Problem bleibt jedoch, dass ARM nicht von Anfang an für diesen Zweck entworfen wurde.
→ Die gesamte ARM-Toolchain geht davon aus, dass der große ARM-Befehlssatz implementiert ist.
→ Coprozessoren wollen oder brauchen aber keinen großen Befehlssatz.
→ Coprozessoren wollen ein Tool-Ökosystem, das auf der Idee eines minimalen festen Basis-Befehlssatzes mit Erweiterungen aufbaut.
- Warum das nützlich ist, lässt sich an Nvidias Einsatz von RISC-V erkennen.
→ Große GPUs benötigen eine Art General-Purpose-CPU als Controller.
→ Dafür wurde ein Chip namens FALCON : FAst Logic CONtroller entwickelt und verwendet.
→ kostengünstig und hocheffizient
-
Weil RISC-V einen kleinen und einfachen Befehlssatz hat, übertrifft es ARM und alle anderen Konkurrenzprodukte.
-
Durch die Wahl von RISC-V konnte Nvidia kleinere Chips mit minimalem Stromverbrauch realisieren.
-
Mit dem Erweiterungsmechanismus lassen sich nur die Instruktionen hinzufügen, die für die benötigte Aufgabe erforderlich sind.
[ ARM wird das neue x86 werden ]
-
Ironischerweise könnte uns eine Zukunft erwarten, in der Macs und PCs mit ARM betrieben werden.
-
Die sie umgebende Custom-Hardware wird jedoch von Coprozessoren dominiert sein, die auf RISC-V basieren.
-
Je populärer Coprozessoren werden, desto mehr RISC-V-Chips wird es auf SoCs geben als ARM-Chips.
-
Die Zukunft ist nicht ARM or RISC-V, sondern ARM and RISC-V.
[ ARM wird eine Armee von RISC-V-Coprozessoren befehligen ]
-
General-Purpose-ARM-Prozessoren werden im Zentrum stehen, zusammen mit einer Armee von RISC-V-Coprozessoren für Grafik, Verschlüsselung, Videokompression, Machine Learning und Signalverarbeitung.
-
Professor David Patterson von der UC Berkeley und sein Team sahen, dass diese Zukunft kommt, und richteten RISC-V passend darauf aus.
-
Alle Arten spezialisierter Hardware und Mikrocontroller zeigen großes Interesse an RISC-V, und viele Bereiche, die heute von ARM dominiert werden, werden zu RISC-V wechseln.
[ Warum nicht RISC-V als Haupt-CPU verwenden? ]
-
Viele Menschen fragen sich, ob man ARM nicht vollständig durch RISC-V ersetzen könnte.
-
Manche meinen, der zu einfache Befehlssatz von RISC-V könne nicht die hohe Leistung liefern, die ARM und x86 bieten.
-
Tatsächlich kann RISC-V sehr wohl als Hauptprozessor verwendet werden, und die Leistung ist nicht das Problem.
→ Man braucht nur jemanden, der High-Performance-RISC-V in derselben Größenordnung wie ARM baut.
→ Mit anderen Worten: Es ist möglich, aber die Frage ist das Momentum. macOS und Windows laufen bereits auf ARM.
→ Kurzfristig werden weder Microsoft noch Apple wohl noch einmal den Aufwand für einen weiteren Hardware-Wechsel betreiben
8 Kommentare
Interessant. Danke für die gute Zusammenfassung.
Jetzt kommt wohl der Tag, an dem man selbst an Schulen Architekturunterricht nicht mehr auf Basis von x86 oder amd64, sondern von arm oder risc-v geben wird..
Früher wurde hier einmal ein Beitrag gepostet, in dem ein ehemaliger ARM-Ingenieur RISC-V kritisierte.
https://de.news.hada.io/topic?id=3137
Wenn das so ist, wie im obigen Inhalt beschrieben, dann ist die zunehmende Vielfalt von Chips, die RISC-V übernehmen, wohl beabsichtigt.
Es wird immer spannender.
Ich bin gespannt, wie Intel und AMD darauf reagieren.
Soweit ich weiß, setzt China fast schon alles auf RISC-V … Wie die Zukunft wirklich aussehen wird, kann ich mir gar nicht vorstellen.
Daran musste ich auch denken, nämlich an China. Was würde wohl passieren, wenn Huawei, das weiterhin von den USA ausgebremst wird, voranginge und versuchen würde, daraus eine Haupt-CPU zu machen? :)
Huawei kann nicht nur ARM, sondern auch TSMC nicht nutzen, daher kann man wohl davon ausgehen, dass die Entwicklung leistungsstarker CPUs ohnehin gescheitert ist. Vielleicht gilt das höchstens noch für die eigenen Netzwerkgeräte, die weniger Leistung erfordern.
Da jedoch viele andere Unternehmen RISC-V nutzen, dürften wohl von diesen Firmen Ergebnisse kommen.
Ah, ich hatte nicht bedacht, dass TSMC selbst blockiert ist. Es dürfte wohl schwierig sein, solange SMIC keinen Prozess entwickelt, der über 7 nm hinausgeht und bis 5 nm reicht.
Dieser Mensch schreibt wirklich hervorragend. Das hier habe ich ebenfalls mit viel Interesse gelesen.
Es gab viele Prognosen, dass RISC-V eine weitere Alternative werden könnte,
aber ich hatte noch nie aus dieser Perspektive darüber nachgedacht, dass es sich auf diese Weise als der beste Chip für Coprozessoren eignen könnte.