Präsentation herunterladen
Veröffentlicht von:Rudi Bogel Geändert vor über 11 Jahren
1
GPU Architectures: GeForce 8, GeForce 9 and Future
Leander Sturm Daniel Gran Hardware-Software-Co-Design Universität Erlangen-Nürnberg Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig
2
Übersicht Vorstellung der GeForce-Architektur Zukunft 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 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig
3
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 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig
4
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ß) Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig
5
Der G80 G80 GPU in GeForce 8800GTX, Quadro FX4600, TESLA C870
erste und bisher leistungsstärkste GPU Grundlage der nachfolgenden Architektur-Besprechung SCX-D4200A Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig
6
Shader-Arten Vertex-Shader Pixel-Shader Geometrie-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 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig
7
Unified Shader I Shader früher: Shader im G80: Technologietreiber:
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 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig
8
Unified Shader II Friedrich-Alexander-Universität Erlangen-Nürnberg
Frank Hannig
9
Stream Processor Aufbau eines Stream Processor Rechengenauigkeit
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 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig
10
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) Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig
11
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 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig
12
Threads II im gesamten G80: bis über 1000 Threads “idle” im 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 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig
13
G80 - Blockdiagramm Friedrich-Alexander-Universität Erlangen-Nürnberg
Frank Hannig
14
Load Balancing globaler Thread Scheduler: lokal in Shader Clustern:
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! Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig
15
Branching G80-Shader Branching ~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 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig
16
Speicher im G80 G80 pro Shader Cluster Streaming Architektur
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! Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig
17
G80: Leistungsdaten Rechenleistung Speicherbandbreite
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.) Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig
18
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 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig
19
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 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig
20
G80: Blockdiagramm Friedrich-Alexander-Universität Erlangen-Nürnberg
Frank Hannig
21
G80: Rasterizer Rendering in einem Rasterizer:
Dreieck als Grundelement zeichnet Dreieck für Dreieck Farbwert-Berechnungen für jeden Pixel im Dreieck Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig
22
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 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig
23
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 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig
24
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 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig
25
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 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig
26
Intel Larrabee II Friedrich-Alexander-Universität Erlangen-Nürnberg
Frank Hannig
27
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 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig
28
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 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig
29
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 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig
30
The End Wir sagen Danke für’s Zuhören und Eure Geduld!
Fragen offen? Jetzt fragen! Referenzen beyond3d.com Wikipedia 3dcenter.de Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig
Ähnliche Präsentationen
© 2025 SlidePlayer.org Inc.
All rights reserved.