Service-Hotline
RISC-V ist eines der heißesten Themen im Computerbereich, da diese Befehlssatzarchitektur (ISA) umfangreiche Anpassungen ermöglicht und leicht zu verstehen ist, zusätzlich zu den gesamten lizenzfreien Open-Source-Vorteilen. Es gibt sogar ein Projekt zum Entwurf einer Allzweck-GPU auf Basis der RISC-V ISA, und jetzt erleben wir die Portierung der CUDA-Softwarebibliothek von Nvidia auf die Vortex RISC-V GPGPU-Plattform.
Nvidias CUDA (Computing Unified Device Architecture) stellt eine einzigartige Computerplattform und Anwendungsprogrammierschnittstelle (API) dar, die auf der Grafikkartenreihe von Nvidia läuft. Wenn eine Anwendung für die CUDA-Unterstützung geschrieben wird, erhält das System eine starke GPU-Beschleunigung des Codes, sobald es eine CUDA-basierte GPU erkennt.
Heute untersuchten Forscher eine Möglichkeit, die Unterstützung von CUDA-Software-Toolkits für ein RISC-V-GPGPU-Projekt namens Vortex zu ermöglichen. Die Vortex RISC-V GPGPU ist darauf ausgelegt, eine systemweite RISC-V-GPU basierend auf der RV32IMF ISA bereitzustellen. Dies bedeutet, dass 32-Bit-Kerne von 1-Kern- auf 32-Kern-GPU-Designs skaliert werden können. Es unterstützt die OpenCL 1.2-Grafik-API und unterstützt heute auch einige CUDA-Operationen.
Die Forscher erklären: „...In diesem Projekt schlagen wir eine Pipeline vor und bauen sie auf, um eine durchgängige CUDA-Migration zu unterstützen: Die Pipeline akzeptiert CUDA-Quellcode als Eingabe und führt ihn auf der erweiterten RISC-V-GPU-Architektur aus. Unser The Die Pipeline besteht aus mehreren Schritten: CUDA-Quellcode in NVVM IR übersetzen, NVVM IR in SPIR-V IR konvertieren, SPIR-V IR an POCL weiterleiten, um die RISC-V-Binärdatei zu erhalten, und schließlich auf der erweiterten RISC-V GPU-Binärdateiarchitektur ausführen. "
Der Prozess ist im Bild oben dargestellt und zeigt alle Schritte, damit er funktioniert. Vereinfacht ausgedrückt wird der CUDA-Quellcode in einem Zwischendarstellungsformat (IR) namens NVVM IR dargestellt, das auf dem Open-Source-LLVM-IR basiert. Später wurde es in Standard Portable Intermediate Representation (SPIR-V) IR umgewandelt, das dann in eine portable Open-Source-Implementierung des OpenCL-Standards namens POCL weitergeleitet wurde. Da Vortex OpenCL unterstützt, stellt es unterstützten Code bereit und kann diesen problemlos ausführen.
Für weitere Einzelheiten zu diesem komplexen Prozess klicken Sie unten, um den Originalartikel zu lesen. Wichtig ist, dass Sie diesen Forschern für ihre Bemühungen danken, CUDA auf RISC-V-GPGPUs zum Laufen zu bringen. Während dies vorerst nur ein kleiner Schritt ist, könnte es der Beginn einer Ära sein, in der RISC-V zur Beschleunigung von Computeranwendungen verwendet wird, ähnlich wie heute Nvidias GPU-Reihe.
Erweiterte Lektüre: Kann RISC-V die GPU ändern?
Jeder, der sich mit der GPU-Architektur beschäftigt hat, weiß, dass es sich dabei um das SIMD-Konstrukt eines Vektorprozessors handelt. Es handelt sich um einen hocheffizienten Parallelprozessor, der für alles Mögliche verwendet wird, von der Ausführung von Simulationen und großartigen Spielen bis hin zum Unterrichten von Robotern, wie man KI erhält, und der Unterstützung kluger Köpfe bei der Manipulation des Aktienmarktes. Es überprüft sogar meine Grammatik, während ich das schreibe.
Aber das GPU-Feld ist zu einem privaten Feld geworden, und seine interne Arbeit wird von der IP erledigt und wirksam Angebote von Entwicklern wie AMD, Intel und Nvidia. Was wäre, wenn es einen neuen Satz Grafikanweisungen für 3D-Grafiken und Medienverarbeitung gäbe? Nun, vielleicht gibt es ihn.
Die neuen Anweisungen basieren auf dem RISC-V-Basisvektorbefehlssatz. Sie werden Unterstützung für neue graphspezifische Datentypen als mehrschichtige Erweiterungen im Sinne der RISC-V-Kern-ISA hinzufügen. Unterstützt Vektor-, vorherige Mathematik-, Pixel- und Textur- sowie Z/Frame-Pufferoperationen. Es könnte sich um eine verschmolzene CPU-GPU-ISA handeln. Die Gruppe „library – RISC 3D“ nennt es RV64X (Abbildung 1), da die Anweisungen 64 Bit lang sein werden (32 Bit reichen nicht aus, um eine robuste ISA zu unterstützen).
Die Gruppe gab an, dass ihre Motivation und ihr Ziel darin bestanden, ein kleines, effizientes Design mit individueller Programmierbarkeit und Erweiterbarkeit zu erstellen. Es sollte kostengünstigen Besitz und Entwicklung von geistigem Eigentum ermöglichen und nicht mit kommerziellen Produkten konkurrieren. Es kann auf FPGA- und ASIC-Zielen implementiert werden und ist kostenlos und Open Source. Das ursprüngliche Design zielt auf Mikrocontroller mit geringem Stromverbrauch ab, die mit Khronos Vulkan kompatibel sind und andere APIs (OpenGL, DirectX usw.) unterstützen.
GPU + RISC-V
Das Team sagte: „Es besteht keine Notwendigkeit, den RPC/IPC-Aufrufmechanismus zu verwenden, um 3D-API-Aufrufe an ungenutzten CPU-Speicherplatz oder ungenutzten CPU-Speicherplatz an GPU-Speicherplatz und umgekehrt zu senden.“
Der Vorteil des „fusionierten“ CPU-GPU-ISA-Ansatzes besteht darin, dass Standard-Grafikpipelines im Mikrocode verwendet werden können und benutzerdefinierte Shader unterstützt werden können. Kann sogar Raytracing-Erweiterungen enthalten.
Das Design wird im Vblock-Format vorliegen (aus einer Libre-GPU-Arbeit):
- Es ist ein bisschen wie VLIW (aber nicht wirklich).
- Den Befehlsblöcken sind Registermarkierungen vorangestellt, die zusätzlichen Kontext für skalare Befehle innerhalb dieses Blocks bereitstellen.
- Zu den Unterblöcken gehören Vektorlänge, Drehung, Vektor-/Breite-Überlagerung und Vorhersage.
- All dies wird zu skalaren Opcodes hinzugefügt!
- Es gibt keine Vektor-Opcodes (und braucht auch keine).
- In einem Vektorkontext läuft das so ab: Wenn ein skalarer Opcode ein Register verwendet und dieses Register im Vektorkontext aufgeführt ist, wird der Vektormodus aktiviert.
- Die Aktivierung führt dazu, dass die for-Schleife auf Hardwareebene mehrere aufeinanderfolgende Skalaroperationen ausgibt (statt nur einer).
- Den Implementierern steht es frei, Schleifen nach Belieben zu implementieren – SIMD, Multi-Issue, Single-Execute; So ziemlich alles.
Der RV32-V-Vektor verarbeitet 8-Bit-, 16-Bit- oder 32-Bit/Element-Vektoroperationen von 2 bis 4 Elementen. Es wird auch spezielle Anweisungen für die allgemeine 3D-Grafik-Rendering-Pipeline für 64-Bit- und 128-Bit-Fest- und Gleitkomma-XYZW-Punkte geben. 8-, 16-, 24- und 32-Bit-RGBA-Pixel; 8-Bit-, 16-Bit-UVW-Texel pro Komponente; und Licht- und Materialeinstellungen (Ia, ka, Id, kd, Is, ks usw.).
Der Attributvektor wird als 4×4-Matrix dargestellt. Das System unterstützt nativ 2×2- und 3×3-Matrizen. Die Vektorunterstützung eignet sich möglicherweise auch für numerische Simulationen mit 8-Bit-Integer-Datentypen, die in KI- und maschinellen Lernanwendungen üblich sind.
Benutzerdefinierte Rasterer wie Splines, SubDiv-Oberflächen und Patches können in das Design einbezogen werden. Diese Methode ermöglicht auch die Einbeziehung benutzerdefinierter Pipeline-Stufen, benutzerdefinierter Geometrie-/Pixel-/Framebuffer-Stufen, benutzerdefinierter Unterteiler und benutzerdefinierter Instanziierungsvorgänge.
RV64X
-
Befehls-/Daten-SRAM-Cache (32 kB)
-
Mikrocode-SRAM (8 kB)
-
Doppelfunktions-Befehlsdecoder (festverdrahtet für RV32V und X; mikrocodierter Befehlsdecoder für benutzerdefinierte ISA)
-
Quad-Vektor-ALU (32-Bit/ALU-fest/Float)
-
136-Bit-Registerdatei (1k Elemente)
-
Sonderfunktionseinheit
-
Textureinheit
-
Konfigurierbarer lokaler Framebuffer
RV64X ist eine skalierbare Architektur (Abbildung 2). Die Fusionsmethode ist neu, ebenso wie die Verwendung konfigurierbarer Register für benutzerdefinierte Datentypen. Benutzerdefinierter SRAM-basierter Mikrocode kann verwendet werden, um Erweiterungen wie benutzerdefinierte Rasterisierungsstufen, Raytracing, maschinelles Sehen und maschinelles Lernen zu implementieren. Ein einzelnes Design kann auf einen eigenständigen Grafik-Mikrocontroller oder eine Multi-Core-Lösung mit skalierbaren Shader-Einheiten angewendet werden.
Grafikerweiterungen für RISC-V befassen sich mit Skalierbarkeit und Mehrsprachigkeit. Dies ermöglicht Anwendungsfälle auf höherer Ebene, die zu mehr Innovation führen.
Was kommt als nächstes
Die RV64X-Spezifikation befindet sich noch in der frühen Entwicklung und kann sich ändern. Ein Diskussionsforum wird eingerichtet. Das unmittelbare Ziel besteht darin, mithilfe des Befehlssatzsimulators eine Beispielimplementierung zu erstellen. Dies wird die Verwendung von Quell-IP- und FPGA-Implementierungen benutzerdefinierter IP-Adressen ermöglichen, die als Open-Source-Projekte konzipiert sind.
Haftungsausschluss: Dieser Artikel ist eine Reproduktion aus „Semiconductor Industry Observation“. Dieser Artikel stellt nur die persönliche Meinung des Autors dar, nicht die Meinung von Sac Micro und der Branche. Er dient nur zum Nachdrucken und Teilen sowie zur Unterstützung. Um die Rechte an geistigem Eigentum zu schützen, geben Sie beim Nachdruck bitte die Originalquelle und den Autor an. Wenn ein Verstoß vorliegt, kontaktieren Sie uns bitte, um ihn zu löschen.




粤公网安备44030002007346号