1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8,...

30
Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig 1 GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design Universität Erlangen-Nürnberg [email protected] [email protected]

Transcript of 1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8,...

Page 1: 1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design.

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

[email protected]

[email protected]

Page 2: 1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design.

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

Page 3: 1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design.

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

Page 4: 1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design.

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ß)

Page 5: 1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design.

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

Page 6: 1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design.

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

Page 7: 1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design.

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

Page 8: 1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design.

Friedrich-Alexander-Universität Erlangen-NürnbergFrank Hannig 8

Unified Shader II

Page 9: 1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design.

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

Page 10: 1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design.

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)

Page 11: 1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design.

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

Page 12: 1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design.

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

Page 13: 1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design.

Friedrich-Alexander-Universität Erlangen-NürnbergFrank Hannig 13

G80 - Blockdiagramm

Page 14: 1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design.

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!

Page 15: 1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design.

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

Page 16: 1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design.

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!

Page 17: 1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design.

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.)

Page 18: 1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design.

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

Page 19: 1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design.

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

Page 20: 1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design.

Friedrich-Alexander-Universität Erlangen-NürnbergFrank Hannig 20

G80: Blockdiagramm

Page 21: 1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design.

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

Page 22: 1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design.

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

Page 23: 1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design.

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

Page 24: 1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design.

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

Page 25: 1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design.

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

Page 26: 1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design.

Friedrich-Alexander-Universität Erlangen-NürnbergFrank Hannig 26

Intel Larrabee II

Page 27: 1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design.

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

Page 28: 1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design.

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

Page 29: 1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design.

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

Page 30: 1 Friedrich-Alexander-Universität Erlangen-Nürnberg Frank Hannig GPU Architectures: GeForce 8, GeForce 9 and Future Leander Sturm Daniel Gran Hardware-Software-Co-Design.

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