Eine kostenlose GPU, für die keine Lizenzgebühren erforderlich sind und für die es keine Nutzungsbedingungen gibt, ist ein Traum vieler Entwickler. Nun wird ein Projekt vorgestellt , das den Beginn vieler Arbeiten zur Erstellung vollständig offener GPUs darstellt.
Dies ist ein Projekt, das von einer Gruppe von Enthusiasten zusammen mit Pixlica entwickelt wurde. Das Projekt selbst heißt RV64X. Die Hauptaufgabe des Teams besteht darin, zusätzliche Anweisungen für die Verarbeitung von 3D-Grafiken und Multimediadaten zu erstellen. Das Ergebnis sollte eine GPU sein, die basierend auf der RISC-V-Architektur frei in den Prozessor integriert werden kann.
Das Projekt wird anhand von Vektoranweisungen aus der RISC-V ISA. Sie wurden um neue Datentypen und Erweiterungen erweitert, die für die Grafikverarbeitung spezifisch sind. Insbesondere werden zusätzliche Operationen zur Verarbeitung von Pixeln (RGBA), Punkten (XYZW), Texturelementen (UVW-Texel), Vektoren (Operationen mit 2-4 Vektoren), Materialparametern, Beleuchtungsberechnung, transzendentaler Mathematik, Tiefenpuffern (Z) vorgeschlagen - Puffer) und Rahmenpuffer (Rahmenpuffer).
Der erste Prototyp ist laut den Entwicklern nur für die Verwendung in Mikrocontrollern konzipiert, sodass seine Unterstützung nur auf die Vulkan-API beschränkt ist. Mit der Zeit werden Entwickler jedoch Unterstützung für OpenGL und DirectX hinzufügen.
Die Idee hinter dem neuen Projekt ist die Flexibilität der Architektur, die es Ihnen ermöglicht, Erweiterungen zu verbinden, um verschiedene spezifische Aufgaben zu lösen, einschließlich des zweiphasigen Abschneidens von Kegeln, der Verwendung schneller Fourier-Transformationen für eine beliebige Farbtiefe und der Implementierung von Hardware-SLAM . Der RV64X kann eigene Stufen für die Rechenpipeline sowie Geometrie-, Pixel- und Rahmenpuffer implementieren. Das Projekt unterstützt auch die Erstellung eigener Tessellatoren.
Hersteller, die dieses Projekt nutzen, haben die Möglichkeit, Chips für verschiedene Aufgaben vorzubereiten. Gleichzeitig ist RV64X die Basis.
Das Konzept des Projekts ist eine hybride CPU-GPU-ISA, mit der Sie sowohl spezialisierte Grafik-Mikrocontroller als auch Multi-Core-Prozessoren erstellen können, die Rechenkerne mit Blöcken kombinieren, um Grafikoperationen auszuführen. Der in die GPU integrierte Prozessor sieht aus wie eine einzelne Einheit, ohne dass der Videoblock zugewiesen wird. Es wird unter Verwendung eines einheitlichen Satzes von 64-Bit-Anweisungen und eines SIMD-Modells programmiert, um Parallelität auf Datenebene bereitzustellen.
Wir können ein solches Merkmal der Architektur der neuen GPU auch als die Verwendung eines einzelnen Speichermodells sowohl in der CPU als auch in der GPU erwähnen, was es ermöglicht, auf zusätzliche RPC / IPC-Mechanismen für die Übersetzung von Aufrufen zwischen dem GPU-Speicher und zu verzichten die CPU bei der Verarbeitung von 3D-API-Operationen. In diesem Fall können Standardgrafikoperationen auf Mikrocode-Ebene implementiert werden. Unterstützt das Erstellen benutzerdefinierter Shader, Rasterizer und Erweiterungen zur besseren Nachverfolgung.
Bei Bedarf können Entwickler Vektoroperationen für die Arbeit mit Simulationsaufgaben, Computer Vision-Projekten und maschinellem Lernen implementieren.
Die Architekturimplementierung umfasst einen 32 KB L1-Cache für Befehle und Daten, 8 KB SRAM für Mikrocode, einen Befehlsdecoder, eine Hardwareimplementierung von RV32V- und RV64X-Befehlssätzen, einen durch Mikrocode spezifizierten erweiterten Befehlsdecoder und eine vektorarithmetische Logikeinheit (ALU) ), Eine 136-Bit-Registerdatei mit 1.024 Elementen, einer Special Function Unit (SFU), einer Texture Unit und einem konfigurierbaren lokalen Framebuffer.