300 likes | 410 Views
GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design Universität Erlangen-Nürnberg leander.sturm@mb.stud.uni-erlangen.de daniel.gran@gmx.de. Übersicht. Vorstellung der GeForce-Architektur Einführung: - GeForce, Quadro, Tesla
E N D
GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design Universität Erlangen-Nürnberg leander.sturm@mb.stud.uni-erlangen.de daniel.gran@gmx.de
Übersicht • Vorstellung der GeForce-Architektur • Einführung: - GeForce, Quadro, Tesla • Architektur - Shader, Threads, Speicher - Allgemeines, Leistungsdaten • Zukunft • Raytracing als alternativer Renderer - Vor- und Nachteile - Intel Larrabee • Weiterentwicklung der GeForce-Serie
Die verschiedenen GPU-Familien • GeForce • Grafikkarte für Desktop-PCs • Standard-Schnittstellen: Direct3D, OpenGL, CUDA* • Quadro • Grafikkarte für CAD-Workstations • Unterstützung einzelner CAD-Programme, -Features • TESLA • keine Monitor-/Video-Ausgänge • über PCIe an System angebunden • ausschliesslich für CUDA
Gemeinsamkeiten der GPU-Familien • Geforce 8800GTX • Grundstein für alle aktuellen NVIDIA-GPUs • Einführung einer komplett neuen Architektur • bis heute Grundlage für alle GPUs: • GeForce 8, GeForce 9 • Quadro, Tesla • Skalierung der Leistung über: • Anzahl und Konfiguration der Funktionseinheiten • Lokaler Speicher • Größe • Bit-Breite der Anbindung • Taktfrequenzen • (Herstellungsprozeß)
Der G80 • G80 • GPU in GeForce 8800GTX, Quadro FX4600, TESLA C870 • erste und bisher leistungsstärkste GPU • Grundlage der nachfolgenden Architektur-Besprechung SCX-D4200A
Shader-Arten • Vertex-Shader • Operationen auf Vertex-Koordinaten • Pixel-Shader • Operationen auf Pixel-Werten und neu in Direct3D 10 enthalten und somit auch im G80: • Geometrie-Shader • Modifikation der Geometrie • Vertices hinzufügen/entfernen • Tesselation, Subdivision
Unified Shader I • Shader früher: • entwickelt aus der klassischen “Rendering Pipeline” • Vertex- und Pixel-Shader getrennt und hintereinander • Shader im G80: • ein Rechenwerk für Vertex-, Geometrie- und Pixel-Operationen: Unified Shader • bei nVidia: Stream Processor • Technologietreiber: • Direct3D 10 (Windows Vista) • Geometrie-Shader • “Unified Shader”-Programmiermodell
Stream Processor • Aufbau eines Stream Processor • ALU für Standard-Operationen • MAD (Multiplikation + Addition) • Shader-Operationen • nachgeschaltete Special Functions Unit • komplexe Befehle (div, sin, rec, pow, ...) in 4+ Takten • alternativ ein Mul pro Takt • Rechengenauigkeit • single precision: 32bit float • gemäß IEEE754
Shader Cluster - G80 • Shader Cluster • zwei Multiprozessoren aus je 8 Stream-Prozessoren • lokaler Speicher/Cache • eigenes Register-File • asynchrone Einheiten: • Daten-Port (Speicher lesen/schreiben) • branching-Einheit • vier Textur-Einheiten (Texturdaten laden und filtern)
Threads I • ein Thread pro Multiprozessor • 8 Stream-Prozessoren führen gleichzeitig den gleichen Befehl aus • Threads sind einem Shader Cluster zugeordnet • OP-Code in FIFO, Operanden in Register-File • Thread-Wechsel pro Takt möglich • Verdecken von Latenzen bei Speicherzugriffen und branching • >100 Threads pro Shader Cluster
Threads II • im gesamten G80: • 8 Shader Cluster => 16 Threads simultan aktiv • globaler FIFO-Puffer für Threads • globaler Thread Scheduler: verteilt Threads auf die Shader Cluster • bis über 1000 Threads “idle” im G80! • Verdecken von Speicher- und anderen Latenzen
Load Balancing • globaler Thread Scheduler: • Verteilen der Threads auf die Shader Cluster • lokal in Shader Clustern: • lokale Thread Scheduler in Shader Clustern • FIFO-Buffer und Register File • sofortiger Thread-Wechsel, wenn Daten fehlen • Reduktion der Thread-Anzahl, wenn Register File voll • G80: Load Balancing in Hardware!
Branching • G80-Shader • ~10-stufige Pipeline • aber keine branch prediction! • Branching • kostet 4 Takte bzw. 32 Operationen • entspricht Granularität von 16 Vertex- bzw. 32 Pixel-Objekten • Vergleich G70: 880 Objekte! • die Vorteile des G80: • asynchrone branching unit • thread-Wechsel pro Takt möglich • getrennte shader cluster
Speicher im G80 • G80 • schneller lokaler Speicher: sechs 64-bit Controller • globaler Cache • globaler Textur- und Konstanten-Puffer (read only) • pro Shader Cluster • lokaler Cache • lokales Register File • Streaming Architektur • extrem schnelle Busse und Interfaces • weniger Puffer – mehr Rechen-Einheiten => gezielte Programmierung nötig für gute Effizienz!
G80: Leistungsdaten • Rechenleistung • 128 Streamprozessoren * 3 Operationen * 1,35 GHz = 518 GFlops • 2x Cell/PS3 (256 GFlops in 8 SPEs) • in realen Applikationen >300 GFlops erreichbar! • Speicherbandbreite • 384 bit * 1,8 GHz = 86,4 GByte/s • 3x Cell/PS3 (25,6 Gbyte/sec.)
Grafik-spezifische Funktionen I • 24 ROPs • Render Output Unit • Lesen und Schreiben in Bild-Puffern • Pixel Blending zwischen allen Int- und float-Formaten • Anti-Aliasing (8x Multisampling auf 4bit Subpixel-Gitter) • “depth check”: ignoriert verdeckte Pixel • jeweils fest an einen der Speicher-Controllern gebunden
Grafik-spezifische Funktionen II • Texture Units • an Shader-Cluster gebunden • Textur-Adressierung • Textur-Filterung: bilinear, trilinear, anisotrop • NVIO • separater Chip beim G80, später integriert • enthält • RAMDAC: Bildwandler • DVI, Video-I/O • Video-Engine: Decoder, Skalierung, Filterung • SLI-Koppelung zu weiteren GPUs
G80: Rasterizer • Rendering in einem Rasterizer: • Dreieck als Grundelement • zeichnet Dreieck für Dreieck • Farbwert-Berechnungen für jeden Pixel im Dreieck
Raytracing I • Raytracing als Renderer • ray: Lichtstrahl, tracing: Verfolgung -> “Lichstrahlverfolgung” • Lichtstrahl vom Bildschirmpixel ins Auge des Betrachters • Rückwärtsverfolgung in zu zeichnende 3D-Szenerie • Reflektion – Weiterverfolgung • Refraktion zu Lichtquellen – globale Beleuchtung
Raytracing II • Einschränkungen und Nachteile • 3D-Geometriedaten für Pixelberechnung nötig • schlechte Partitionierbarkeit der Szene (Lichtstrahl kann überallhin reflektiert werden) • erzeugt globale Beleuchtung, aber: • nur theoretisch optimal • praktisch nahezu optimal, aber nur mit sehr hohem Aufwand • es existiert derzeit kein sinnvoller Ansatz für realtime-taugliche globale Beleuchtung! • selbst Pixar verwendet nur partiell Raytracing
Raytracing III • Raytracing für Echtzeit-3D • nach Aussagen vieler Fachleute als alleiniger Renderer ungeeignet • Probleme mit bewegten/interagierenden Objekten • Probleme mit Anti-Aliasing • mögliche Entwicklung: Mischform mit Rasterizern • verwendet z.B. von Pixar (“Toy Story”) • hier sind laut Fachleuten tatsächliche Vorteile zu erwarten
Intel Larrabee I • Larrabee: Codename der derzeit entwickelten Intel-GPU • erscheint 2009 • einzige zukünftige GPU, deren Daten ein bißchen bekannt sind • Eigenschaften: • 16 oder mehr Kerne mit IA-Befehlssatz (ähnlich x86) • in-order • 4 Threads • 256bit AVX-Vektoreinheiten • Nachfolger des SSE-Befehlssatzes: auch in zukünftigen Intel-CPU’s • drei-Operanden-Synthax • vier double-Operationen pro Takt • maskierter/geordneter Speicherzugriff
Intel Larrabee III • besser geeignet für Raytracing • mehr gleichzeitige Threads • besser bei skalarem Code: • Raytracing: je nur 1 Strahl • G80: 8 parallele Befehle pro Thread wären nötig für gute Auslastung • besser geeignet für: • Misch-Renderer • Physik-Berechnung grafischer Objekte • GPGPU
Zukunft der GeForce-Architektur I • GT200 im Juni • gleicher Architektur-Ansatz wie G80: • 16 Streamprozessoren pro Shader Cluster • 16 Shader Cluster • leistungsgesteigerte Shader • > 2x Leistung der G80: Teraflop! • double precision: 64bit float
Zukunft der GeForce-Architektur II • längerfristig: leider nichts bekannt! • nVidia allgemein: • schon immer möglichst direkte Direct3D-Implementierungen • Direct3D 11: “compute shader” CUDA-artige herstellerunabhängige Schnittstelle? • vorstellbare Entwicklungsrichtung: • leistungsfähiger bei skalarem Code • besseres branching mit prediction -> Physik, Raytracing, flexibleres GPGPU • allgemein weiter gesteigerte Programmierbarkeit • Flexibilität, Zukunfts- und Investitionssicherheit • Unsicherheit bezüglich kommender Rendering-Verfahren
The End • Wir sagen Danke für’s Zuhören und Eure Geduld! • Fragen offen? Jetzt fragen! • Referenzen • beyond3d.com • Wikipedia • 3dcenter.de