Zum 3DCenter Forum
Inhalt




Ein erster Blick auf die G80-Technologie

28. Dezember 2006 / von aths / Seite 1 von 5


   Einleitung

Etwa 680 Millionen Transistoren in einem 90-nm-Prozess: Der G80 (NV50) ist Nvidias dritte große Architektur-Neuheit seit dem Erscheinen der GeForce-Serie. Der seinerzeitige NV10 (GeForce 256) brachte Register-Combiner, der NV30 (GeForce FX) führte CineFX ein. Das sind jeweils grundlegend neue Ansätze – wie nun auch der G80-Chip einer ist.

Man kann sagen, dass spezialisierte 3D-Grafikchips deshalb entwickelt wurden, weil man gerne Texturen einsetzen wollte. Texturloses Rendering ließe sich auch auf CPUs noch annehmbar schnell gestalten. Sofern man jedoch Texturen sehen möchte – nach Möglichkeit auch noch gefilterte! – überfordert man jede CPU. Also wurden Grafikkarten mit 3D-Funktionen und implementierter Texturfilterung entwickelt.

Bei dem NV10 dachte man allerdings schon ein Stück weiter. Texturen aus dem Speicher zu lesen und zu filtern, um sie auf Dreicke aufzutragen, ist ja gut und schön. Aber warum dem Entwickler nicht mehr Kontrolle darüber geben, wie diese Werte – zusammen mit interpolierten Vertex-Daten – verrechnet werden? Der Register-Combiner bot seinerzeit erstaunliche Flexibilität und Rechenleistung für diese Aufgabe. Mit Loopback und einem vorgeschalteten Texture-Shader nannte man es dann ab der GeForce 3 sogar "Pixelshader".

Der NV30 brachte erheblich mehr Genauigkeit sowie Flexibilität für das Pixelshading. Dafür wurde die CineFX-Architektur entwickelt. Für die GeForce6 wurde CineFX grundlegend verbessert und kräftig aufgebohrt. Jetzt, mit dem NV50, der aber G80 heißt (Namen sind Schall und Rauch), steht uns wieder eine wirklich neue Architektur ins Haus. Gleichzeitig besinnt sich Nvidia auf einige alten Tugenden. Mit dem G80 wurde der Grundstein für die Nvidia-GPUs der nächsten Jahre gelegt.


   Unabhängige Taktungen im G80-Chip

Pixel-Pipelines bestehen prinzipiell aus mehreren Einheiten, die Hand in Hand arbeiten. Vorab zur Begriffserklärung:


Fachbegriff Funktion
Interpolator berechnet bestimmte Input-Werte für den Pixelshader
Shader-ALU führt die eigentlichen Shader-Berechnungen aus
TMU (Texture Mapping Unit) liefert gefilterte Texturwerte an die Shader-ALU
ROP (Raster Operation) führt abschließende Pixel-Arbeiten aus


Unified Shader hin oder her – natürlich sind die für die Pixel-Pipeline erforderlichen Baugruppen weiterhin vorhanden, aber können zum größten Teil auch vom Vertex- oder Geometry-Shader genutzt werden. ALUs, TMUs und ROPs sind beim G80 in gewissen Grenzen voneinander entkoppelt. Der G80 hat zwei Taktdomänen: Die Shader-ALUs (zu denen hier auch die Interpolatoren gehören) takten bei der GeForce 8800 GTX mit 1350 MHz, der Rest (zum Beispiel die Textureinheiten und ROPs) mit 575 MHz. Diese Taktraten sind unabhängig voneinander einstellbar. Während der G80 ein festes ALU/TMU-Verhältnis hat (darauf gehen wir später noch genauer ein), lässt sich die ALU/TMU-Leistung also noch über den Takt modifizieren.

In Dingen Speicherbandbreite geht Nvidia neue Wege: Die GeForce 8800 GTX bietet ein 384-Bit-DDR-Interface und 768 MiB RAM, die GeForce 8800 GTS ein 320-Bit-DDR-Interface und 640 MiB RAM. Die Architektur-Skalierbarkeit in feinen Schritten auch auf die Interface-Bandbreite zu erweitern, ist neu.

Wenn im weiteren Artikel vom G80-Chip gesprochen wird, ist die GeForce 8800 GTX gemeint. Der zum Vergleich herangezogene G71-Chip wird generell in seiner Ausführung als GeForce 7900 GTX betrachtet.


   Die neuen Pipelines

Der G80 bietet im Vollausbau (GeForce 8800 GTX) acht aktive Vec16-ALUs, wobei eine ALU pro Takt MUL, ADD, und noch mal MUL ausführen kann (sprich pro skalarem Kanal drei Floating-Point-Operations, 3 Flops). MUL steht für Multiplikation, ADD für Addition. Der Großteil jeglichen Shadercodes wird nach wie vor mit MUL und ADD berechnet. Die ALUs takten mit 1350 MHz, das ergibt bei 8 × 16 × 3 Flops × 1350 MHz eine theoretische Leistung von bis zu 518 Gigaflop/s. Allerdings steht Nvidia noch einige Arbeit am Scheduler bevor: Die zweite MUL-Unit liegt derzeit brach – jedenfalls sieht es so aus.

Dazu ein kurzer Abstecher zum NV40 und G70: Dort sieht es zum Beispiel so aus, als würde beim Texturzugriff die erste Shader-ALU (beim NV40 MUL, beim G70 MAD) blockiert. Bei CineFX hat man nun eine "Durchlauf-Pipe": Alles, was in die Tex-Unit geht, die zwischen Shader-ALU 1 und 2 liegt, muss zunächst durch Shader-ALU 1. Diese übernimmt mit ihrer MUL-Einheit zudem noch einen Teil der Perspektiv-Korrektur. Auch beim G80 dürfte die Perspektiv-Korrektur nicht gänzlich Aufgabe des Interpolators, sondern wieder teilweise der anderen Shader-ALUs sein. Das erklärt aber nicht, dass sich bisher nur ein MUL pro Takt nutzen lässt. Hier hilft nur zu warten, was die Zeit bringt.

Frühere Architekturen, egal ob von Nvidia oder ATI, nutzen RGBA-Quadpipelines. Ein Quad besteht aus 2×2 Pixeln, ein Pixel hat vier Komponenten (RGBA). Entsprechend müssen die ALUs einer Quadpipe 16-fach ausgelegt sein (vier Pixel à vier Komponenten = 16 Operationen). In der Quadpipe werden pro Takt also traditionell vier Komponenten von vier Pixeln berechnet.

Der G80-Chip nutzt nun Blöcke mit jeweils vier skalaren Quadpipes. Pro Takt wird damit eine Komponente von 16 Pixeln (4 Quads) berechnet. Im Endeffekt scheint es auf die gleiche Leistung hinauszulaufen: Für ein Quad, also vier Pixel, eine Vec3+Vec1-Operation auszuführen, dauert traditionell einen Takt. Beim G80 dauert Vec3+Vec1 zwar vier Takte, dafür werden in der gleichen Zeit auch vier Quads, also 16 Pixel fertiggestellt. Allerdings gibt es viele Fälle, in denen der G80 effizienter arbeitet. Damit beschäftigen wir uns später noch genauer.



Dieses Gespann liefert ein Teraflop pro Sekunde alleine im ALU-Teil: Da sieht selbst der Cell-Prozessor blass aus. GPUs entwickeln sich auch weiterhin schneller als CPUs (Foto: Nvidia).


Theoretische ALU-Leistung
G71-Pixelshader: 125 GFlop/s ADD 125 GFlop/s MUL (250 GFlop/s)
G71-Vertexshader: 28 GFlop/s ADD 28 GFlop/s MUL (56 GFlop/s)
G80 Unified Shader: 173 GFlop/s ADD 346 GFlop/s MUL (518 GFlop/s)


Wie die Tabelle zeigt, hat der Unified Shader der GeForce 8800 GTX mehr theoretische Leistung als Pixel- und Vertexshader des G71 zusammengenommen. Aufgrund der G80-Effizienz ist die nutzbare Leistung noch mal ein gutes Stück höher als beim G71. Unsere Zahlen sind als reine Theorie-Spielerei zu verstehen, es wäre aus mehreren Gründen Unsinn, aus dem Zahlenverhältnis die Leistungssteigerung ablesen zu wollen. Außerdem gehen wir davon aus, dass in der Shader-ALU tatsächlich zwei MULs pro Takt möglich sind, was bislang in der Praxis nicht der Fall zu sein scheint.

Noch einmal: Bitte unsere Zahlen nicht verwenden, um die G80-Leistung mit der G70-Leistung zu vergleichen, da in der Praxis noch viele Dinge einen Einfluss haben, die hier unberücksichtigt geblieben sind.






Kommentare, Meinungen, Kritiken können ins Forum geschrieben werden - Registrierung ist nicht notwendig Weiter / Next

Shortcuts
nach oben