Was bringt uns der GT200?

Mittwoch, 18. Juni 2008
 / von aths
 

Die Eckdaten des neuen Grafikchips sind bekannt: 240 skalare Shader bei knapp 1300 MHz, 80 Textureinheiten, die jeweils pro Takt ein bilineares Samples berechnen können, bei gut 600 MHz und 1024 Mebibyte GDDR3-Speicher, die via 512-Interface angebunden sind. Außerdem bleibt es bei Direct3D 10.0. Wie das alles einzuschätzen ist, wollen wir uns heute ansehen.

Rechenkraft

Zunächst einige Zahlenspielereien: Nvidia spricht von 240 Shadercores und vergleicht das mit vier Kernen von Quadcore-CPUs. Wir erkennen lediglich 30 Shadercores im GT200, nämlich einen Triplecore pro Cluster, was bei den zehn Clustern dann die 30 "Cores" macht. Allerdings kann ein "Core" nach dieser Definition nicht nur 8, wie ein CPU-Core, sondern 16 Operationen ausführen (acht Multiplikationen plus acht Additionen).

Wenn die Leistung mit einer CPU verglichen wird, wollen wir nur noch MAD-Leistung zählen. Die MAD-Operation (Multiply-Add) ist das Maß der Dinge. Der GT200 hat – wie seine Vorgänger – pro Recheneinheit das MAD und noch ein vorgeschaltetes, zusätzliches MUL. Das bringt laut Nvidia etwa 10-15% mehr Leistung, womit wir es als nützliche Optimierung zählen und nicht die Gigaflop-Performance um 50% aufwerten wollen.

Zählen wir MAD wiederum als zwei Operationen (Multiplikation und Addition), haben wir beim 3,0-GHz-Quadcore 96 Gigaflop/s, beim G92 (9800 GTX) satte 432 Gigaflop/s und beim GT200 sogar 622 Gigaflop/s.

Dabei geht es hier nur um die allgemein verwendbare Rechenleistung. Der GT200 kann – in 32-Bit-Genauigkeit – zusätzlich 20 bilinear interpolierte Textur- (Datenfeld-) Samples berechnen. Eine bilineare Interpolation benötigt mindestens 9 Operationen, so dass bei 602 MHz die TMUs noch mal 108 Gigaflop/s beisteuern. Benötigt man lediglich eine lineare Interpolation, sind es immerhin noch 36 Gigaflop/s.

Rechengenauigkeit

In einfacher Genauigkeit ist das 32-Bit-Format (Single Precision, kurz Single) nicht vollständig implementiert. Vor allem fehlt die Fähigkeit, so genannte Denorms zu speichern. Das sind Werte nahe der Null, die beim GT200 einfach auf Null abgeschnitten werden. Der elegantere Weg wäre es, diese Werte noch (in geringerer Genauigkeit) darzustellen. Allerdings sollte man bei Rechnungen nach Möglichkeit vermeiden, überhaupt in diesen Bereich zu gelangen. Da sich die Auflösung der Zahlen im Denorm-Bereich verringert, wird die Rechenfehlerabschätzung schwierig und das Endergebnis wird wahrscheinlich einen hohen Fehler aufweisen.

Der einzige Ausweg ist dann, von vornherein in höherer Genauigkeit zu rechnen. GT200 bietet dafür das Double-Precision-Format (kurz "Double") an, also 64 Bit pro Wert. Dieses Format ist (mit Ausnahme von Flags) vollständig nach der IEEE754-Spezifikation implementiert. Double gibts beim GT200 inklusive Denorms, obwohl man bei Verwendung von Double eigentlich nie in diesen Bereich gelangt. Im Gegensatz zu Single werden auch alle vier Rundungs-Modi nach IEEE754 unterstützt. Die Ausführungsgeschwindigkeit bei Verwendung des Double-Formats beträgt ein Achtel der Single-Leistung, da jedes Array (à 8 Single-Precision-SP) nur ein Double-Precision-Rechenwerk hat. Dieses bietet auch "nur" MAD (und kein zusätzliches MUL). Der GT200 kommt so insgesamt auf knapp 78 Gigaflop/s für Double – das ist sehr viel.

Cuda

Generell ist Rechenleistung in der CPU höher einzuschätzen als in der Grafikkarte. Ein Rechenwerk auf der CPU ist allgemein nutzbar, direkt im Programm, ohne dass die Daten erst einem anderen Prozessor übergeben und von dort wieder abgeholt werden müssen. Die CPU ist darauf optimiert, möglichst schnell einen Strang (oder wenige Stränge) mit voneinander abhängigen Anweisungen zu bearbeiten. Das kann die GPU nicht leisten, denn sie ist auf Durchsatz optimiert. Wenn jedoch auf einen großen Datenberg pro Datum dieselben Operationen auszuführen sind, und davon viele, dann ist zu überlegen, die Rechenkraft der GPU dafür nutzbar zu machen.

Nvidia führt hierzu eine Applikation vor, die via Cuda die GPU nutzt, um Videos neu zu komprimieren. Als Vergleich wird Itunes herangezogen, welches natürlich deutlich langsamer ist. Dabei gibt es auch schnellere CPU-Codecs.

Doch mal ehrlich, wie oft gerät man in die Gelegenheit, innerhalb von 35 Minuten einen Film umwandeln zu müssen? Würde eine breite Userschicht ständig Nachschub an kleinkomprimierten Filmen benötigen, gäbe es diese längst vorkomprimiert im Handel. Woher sollen überhaupt ständig die Filme, die man umkomprimieren will, kommen, ohne Copyrights zu verletzen oder einen Kopierschutz zu umgehen? Dann wurde der GPU-Transcoder auf einer GeForce GTX 280 gezeigt – wie viel Prozent der User kaufen Highend-Karten? Wie groß ist der Zeitgewinn bei kleineren Karten à la GeForce 8600 GT? Unklar ist auch, inwieweit das GPU-transcodierte Video beim Dateigrößen-Bildqualitäts-Verhältnis mit besseren CPU-Encodern mithalten kann.

Sinnvollerweise wird auch Folding@Home für Cuda-fähige Grafikkarten (also GeForce 8, 9 und GTX 200) lauffähig gemacht.

Das Cuda-Entwicklungskit gibt es von Nvidia kostenlos. Anstatt sich mit den anderen Herstellern langwierig und mit Kompromissen auf eine gemeinsame Programmiersprache und Schnittstelle zu einigen, prescht Nvidia hier also vor. Es profitieren die Firma Nvidia, die mehr GPUs verkauft, und Anwender wie Studenten der Uni Antwerpen, welche sich aus vier GeForce-9800-GX2-Karten einen Cluster gebaut haben, mit dem sie Daten aus der Tomografie in 3D-Modelle umwandeln. Es bleibt zu hoffen, dass sich auf lange Sicht alle wichtige Hersteller von D3D10-fähigen GPUs auf eine gemeinsame Programmiersprache einigen.

SLI

Alternate Frame Rendering (AFR) ist beim Multi-GPU-Betrieb nach wie vor die erste Wahl, um eine möglicht hohe Durchschnittsframerate zu erreichen. Inwieweit das AFR-typische Mikroruckler-Problem gelöst wird, ist noch unklar, da die Erhaltung einer möglichst gleichmäßigen Frame-Verteilung auf der Zeitachse zwangsläufig die durchschnittliche Framerate drückt – was wohl alle GPU-Entwickler unter dem Druck des ständigen Gebenchmarktwerdens vermeiden möchten.

Über kurz oder lang werden wahrscheinlich die Threads selbst auf die einzelnen (noch zu entwickelnden!) GPUs verteilt werden. Dies mag zur Synchronisation der fertig berechneten Bildteile ein Frame Latenz mitsichbringen, aber eine Latenz von mindestens einem Frame hat das aktuelle AFR-Verfahren ja auch ansich.

Nvidia fährt erkennbar zweigleisig: Einerseits wird mit aller Kraft möglichst viel Leistung auf eine einzelne GPU gebracht, so dass man SLI möglicherweise gar nicht benötigt. Falls doch, lassen sich zwei oder gar drei Karten zusammen betreiben. Mit 3-way SLI auf der GeForce GTX 280 erhält man theoretisch reichlich 1,8 Teraflop/s Rechenleistung und 144 (!!) Gigatexel/s Texturleistung.

3D-Performance

Bereits bei Single-GPU-Betrieb im Highend-Bereich wird das Benchmarken immer sinnloser: Bis auf Crysis lastet kaum eine Anwendung eine Highend-Karte vernünftig aus. Als Ausweg werden synthetische Benchmarks wie 3DMark Vantage herangezogen oder Spiele werden bei maximalen Details in Extremauflösungen getestet, die kaum ein User zuhause fahren kann. Maximale Details zu aktivieren ist nicht immer sinnvoll, da je nach Spiel solche Settings die Framerate erheblich drücken können, ohne einen adäquaten optischen Gewinn zu bieten. Letztlich wird an der Spiele-Praxis vorbeigebencht. Wie soll die "wahre" 3D-Leistung einer Karte bestimmt werden?

Klar ist nur, dass man extrem schnelle CPUs braucht, um eine Karte wie die GeForce GTX 280 wirklich auszulasten. Auf Argumentationen wie "Die Endleistung braucht man nicht" wollen wir uns nicht einlassen, denn dies wird immer von den Leuten gesagt, die sich das nicht leisten wollen oder können. Ist die Leistung da, gibt es im großen Pool der Entwickler immer auch einige fähige Leute, die aus der Leistung was Tolles zaubern können.

Crysis wird oft vorgeworfen, für seine Performance keine genügend gute Grafik zu bieten. Hier muss aber das Gesetz des abnehmenden Grenzertrages berücksichtigt werden: Wenn wir bessere Grafik haben wollen, die wir auch bekommen werden, ist noch sehr viel mehr Leistung reinzustecken (als früher für den gleichen Optikgewinn). Unter dem Aufrüstdruck bleiben vielen Spieler offensichtlich zu wenig Euro im Portemonaie, als dass sie Spiele noch kaufen könnten – es wird schwarz kopiert, so dass uns, wenn man das weiterdenkt, in Zukunft eher Konsolenspiel-Grafik (auf Direct3D9-Niveau) mit einigen zusätzlichen Shadern erwartet, die viel Performance fressen, aber wenig Qualität bringen.

Überall sehen wir bandbreitenlastige Unschärfe- und Überstrahl-Effekte in einer Grafik, welche die Farbpalette von Orange-Braun bis Grau nutzt, was als Fotorealismus verkauft wird. Hier ist Crysis eine Ausnahme (es gibt zusätzlich Blau und Grün).

Immerhin bietet der GT200 ein Performance-Level, welches den verstärkten Einsatz von Material-Shadern ermöglicht. Die Karte bietet weiterhin die Bandbreite, hochqualitatives HDR-Rendering zusammen mit Antialiasing in Echtzeit zu erlauben. Da wir solche Karten nun haben, wollen wir hoffen, irgendwann auch die passenden Spiele zu sehen.

Ein zweiter Gesichtspunkt sind die zukünftigen kleineren Ableger, die über kurz oder lang kommen werden. Bei einer Karte mit zum Beispiel 128-Bit-Interface dürften uns dann mindestens 48 skalare Shader (SP) erwarten. Vielleicht sogar 72 SP (und dazu 24 TMUs) – aus unserer Sicht das Optimum bei 128 Bit.

Direct3D 10

In Dingen DirectX-Features hat sich beim neuen Chip leider gar nichts getan. Schon der G80 unterstützt einige, aber nicht alle Direct3D-10.1-Features – womit auf offiziellem Wege nur die Direct3D-10.0-Features genutzt werden können.

Uns erinnert die Lage an damit an GeForce 4 Ti vs. Radeon 8500. Ersteres war zwar die schnellere Karte, aber sie konnte – im Gegensatz zur Radeon 8500 – bei Max Payne 2 nicht alle Effekte darstellen. Nun ist Direct3D 10.1 im Vergleich zu Direct3D 10.0 nicht für neue Effekte gedacht, sondern für bestimmte Effekte in höherer Qualität oder mit besserer Performance. Zumindest verkaufspsychologisch wird sich Direct3D 10.1 aber immer besser machen als Direct3D 10.0. Die diffuse Furcht, dereinst mit der Karte nicht mehr alle Regler auf Max ziehen zu können, wohingegen der Kollege mit seiner 85-Euro-Officekarte das tun kann (wenn auch bei deutlich geringerer Performance), ist nicht zu unterschätzen.

Die Einordnung des GT200

Der GT200 ist praktisch der "richtige" Refresh vom G80. Alle GPUs nach dem G80 (G84, G86, G92, G94) haben den Video Prozessor 2 (VP2) und die leicht verbesserte TMU-Architektur; ab G92 gibt es eine verbesserte verlustfreie Komprimierung (wobei unklar ist, ob nur die Z-Werte häufiger komprimiert werden können oder auch die Farbkomprimierung profitiert). Das sind kleine Verbesserungen, die sich ohne allzugroßen Aufwand realisieren ließen.

Mit dem GT200 gibt es nun mehr Einheiten – 10 Cluster statt 8, 24 SP pro Cluster statt 16 – und ein breiteres Speicherinterface (8 statt 4 ROP-Partitionen à 64 Bit Speicheranbindung.) Die Anzahl der Alphablender wurde dabei pro ROP-Partition von 2 auf 4 erhöht. Der Pixel-Output ohne Blending bleibt bei 4. Außerdem wurde die Zahl der Z-Tests erhöht, es gibt nun bei aktivem 8x Multisampling 32 Z-Tests pro ROP-Partition (mit Farbe). Inwieweit das den Einbruch bei 8x Multisampling gegenüber 4x abmildert, müssen Tests zeigen.

Es gibt eine Reihe weiterer wichtiger Verbesserungen, so wurde das Registerfile in seiner Größe verdoppelt. Damit sind mehr und längere Shader gleichzeitig ausführbar, ohne dass ein Thread warten muss (weil für ihn keine Registerplätze mehr frei sind). Der Geometry-Shader wurde beschleunigt, indem interne Daten-Puffer vergrößert wurden – diese Schwäche bisheriger GeForce-Karten ist damit endlich ausgemerzt. Ein weiterer Schwachpunkt bisheriger D3D10-fähiger GeForce-Karten war die Leistungsaufnahme im Idle-Modus. Der neue Chip kann den Strombedarf endlich je nach Last deutlich herunterregeln.

Betrachtet man die Taktraten (1296 MHz für die Shader statt 1688 wie beim G92, 602 MHz für den Rest statt 675 wie beim G92) wird klar, dass uns noch ein Refresh vom Refresh erwartet. Wir vergleichen das in etwa mit dem G70 (GeForce 7800) im Verhältnis zum NV40 (GeForce 6800): Der G70 brachte bereits ein starkes Performance-Plus, der G71 (GeForce 7900) erlaubte noch mal eine spürbare Performanceverbesserung über den Takt.

Am Ende bleibt die bislang leistungsstärkste Spiele-Grafikkarte, die neben reiner Rohleistung auch Effizienzverbesserungen bringt, wobei das Featurelevel jedoch nicht mehr auf dem neuesten Stand der Technik ist.