Friedrich-Alexander-Universität Erlangen-NürnbergFrank Hannig 1
GPU Architectures: GeForce 8, GeForce 9 and FutureLeander Sturm
Daniel Gran
Hardware-Software-Co-Design
Universität Erlangen-Nürnberg
Friedrich-Alexander-Universität Erlangen-NürnbergFrank Hannig 2
Ü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
Friedrich-Alexander-Universität Erlangen-NürnbergFrank 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ürnbergFrank 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ürnbergFrank Hannig 5
Der G80
SCX-D4200A
G80 GPU in GeForce 8800GTX, Quadro FX4600, TESLA C870 erste und bisher leistungsstärkste GPU Grundlage der nachfolgenden Architektur-Besprechung
Friedrich-Alexander-Universität Erlangen-NürnbergFrank Hannig 6
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
Friedrich-Alexander-Universität Erlangen-NürnbergFrank Hannig 7
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
Friedrich-Alexander-Universität Erlangen-NürnbergFrank Hannig 8
Unified Shader II
Friedrich-Alexander-Universität Erlangen-NürnbergFrank Hannig 9
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
Friedrich-Alexander-Universität Erlangen-NürnbergFrank 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ürnbergFrank 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ürnbergFrank Hannig 12
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
Friedrich-Alexander-Universität Erlangen-NürnbergFrank Hannig 13
G80 - Blockdiagramm
Friedrich-Alexander-Universität Erlangen-NürnbergFrank Hannig 14
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!
Friedrich-Alexander-Universität Erlangen-NürnbergFrank Hannig 15
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
Friedrich-Alexander-Universität Erlangen-NürnbergFrank Hannig 16
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!
Friedrich-Alexander-Universität Erlangen-NürnbergFrank Hannig 17
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.)
Friedrich-Alexander-Universität Erlangen-NürnbergFrank 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ürnbergFrank 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ürnbergFrank Hannig 20
G80: Blockdiagramm
Friedrich-Alexander-Universität Erlangen-NürnbergFrank 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ürnbergFrank 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ürnbergFrank 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ürnbergFrank 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ürnbergFrank 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ürnbergFrank Hannig 26
Intel Larrabee II
Friedrich-Alexander-Universität Erlangen-NürnbergFrank 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ürnbergFrank 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ürnbergFrank 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ürnbergFrank 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