Zum 3DCenter Forum
Inhalt




Die neuen Features im G70-Chip

26. Juni 2005 / von aths / Seite 1 von 3


   Einleitung

Die 7er Serie der GeForce-Reihe, deren erstes Modell GeForce 7800 GTX am Mittwoch vorgestellt wurde, baut im wesentlichen auf bekannter NV40-Technologie auf. Doch es gab eine Reihe sinnvoller Verbesserungen, von denen wir über die wichtigsten einen Überblick geben möchten. Dabei war unsere Hauptinformationsquelle Nvidia – dieser Artikel enthält also teilweise ungeprüfte Informationen. An einigen Stellen gab sich Nvidia bedeckt, so dass wir dann nur Vermutungen anzubieten haben. Dies ist durch die jeweilige Formulierung im Text ersichtlich.

Die 7er Serie ist wieder mal eine Zweitausgabe: Traditionell ist diese deutlich erfolgreicher als der erste Vertreter der entsprechenden Generation. So war die Riva TNT2 – im wesentlichen nur ein Takt-Upgrade der Riva TNT – ein großer Verkaufserfolg, nicht zuletzt dank der Riva TNT2 M64, die für Spieler allerdings kaum geeignet war.

Die GeForce2-Serie verkaufte sich hingegen (vor allem dank der GeForce2 MX) prächtig. Im Gegensatz zu ihrem Vorgänger hatte eine GeForce2-Pixelpipeline keine einzelne trilineare TMU mehr, sondern zwei TMUs, die allerdings jeweils pro Takt nur ein bilineares Textursample erstellen konnten. Das war ein Zugeständnis an die Tatsache, dass die Wichtigkeit von Texelfüllrate zunahm. Die GeForce256 war übrigens die einzige Nvidia-GPU mit trilinearen TMUs.

Die GeForce4 Ti hatte nicht nur Vorteile: Die Video-Eigenschaften des jetzt GeForce4 MX genannten GeForce2-MX-Upgrades wurden nicht geboten, die Geschwindigkeit bilinearer anisotroper Filterung war beschnitten. Dennoch verkaufte sie sich – im Gegensatz zur GeForce3 – wie geschnitten Brot. Die GeForceFX 5900 ging zumindest in der etwas niedriger getakteten, aber preiswerten XT-Version ganz gut, was man vom Vorgänger GeForceFX 5800 nicht behaupten kann.

Nun steht mit der GeForce 7800 GTX der GeForce-6800-Ultra-Nachfolger in den Startlöchern. Im Pixelteil fällt hauptsächlich die Erweiterung von 16 Pixelpipelines auf 24 auf. Das sind immerhin 50 Prozent mehr - von 24 auf 32 wären es im übrigen nur noch 33 Prozent mehr. Der Takt steigt von 400 auf 430 MHz, das sind nur 7,5 Prozent zusätzlich. Allerdings multiplizieren sich diese Effekte – die Pixelshaderleistung hat demnach ein Potenzial von 61 Prozent Leistungsplus.

Hinzu kommt die generell erhöhte Effizienz und Rechenkraft der Pixelpipelines. Wie hoch man diesen Leistungsvorteil ansetzen sollte, hängt von der konkreten Situation ab. Dazu werden wir gleich ausführlicher, doch auch wenn man lediglich 6 Prozent Mehrleistung ansetzt, hat man insgesamt einen rechnerischen Vorteil von über 70 Prozent im Vergleich zur GeForce 6800 Ultra.


   Gesteigerte Rechenkraft

Mit dem NV40-Chip ging Nvidia zurück zu nur einer TMU pro Pipeline. Nicht etwa, weil Texturen unwichtiger würden – die Texturierungsleistung kommt jetzt eben über die große Anzahl an Pixelpipes (16 statt 4 Pipelines berechnen 16 statt 8 Texel pro Takt). Aber im Verhältnis zu arithmetischen Rechnungen geht der Anteil der Texturleistung zurück. Sowohl Textursampling- als auch arithmetische Performance wurde gegenüber dem NV40 über die Verbreiterung von 16 auf 24 Pixelpipelines gesteigert.

Um eine Architektur gut auszunutzen, muss man für sie gut optimieren können. Von der maximalen Rechenkraft war der NV35 dem R350 überlegen – doch verschiedene Flaschenhälse verhinderten, dass das Potenzial auch nur annähernd so gut erschlossen werden kann wie beim R350 (oder R300).

Einer von mehreren Flaschenhälsen war der begrenzte Platz für temporäre Register. GeForceFX bietet – wenn noch volle Leistung geboten werden soll – Platz für genau zwei temporäre Register in voller Präzision. Dort wird das Ergebnis eines Textursampling oder das Ergbenis einer arithmetischen Zwischenrechnung gespeichert. Ein Textursample sollte also direkt nach dem Sampling verrechnet werden, damit das Register so schnell wie möglich wieder freigemacht wird. Braucht ein Shader-Programm mehr Temps gleichzeitig, wird dies mittels Verzögerung bei der Einspeisung neuer Pixel erreicht. Diese "Leerblasen", die in die Pipe geschoben werden, verringern natürlich den Pixeloutput. Details können Demirugs hervorragendem Artikel zur CineFX-Architektur entnommen werden.

NV40 bietet nun Platz für vier Temps - beim G70 bleibt dieser Wert. Wir hätten uns 6 (oder gar 8) Register gewünscht, denn je mehr Zwischenergebnisse "straflos" vorgehalten werden können, desto einfacher die Optimierung des Pixelshader-Programms. Gewaltige Leistungssprünge wären damit zwar nicht drin, doch die Architektur würde generell weniger anfällig gegen "schlechten" (oder schlecht optimierbaren) Pixelshader-Code.

Beim NV40 verwunderte uns die Multiplikationslastigkeit der Pixelpipeline (siehe NV40-Artikel). Alle GeForce-Karten vor dem NV40 konnten pro Pixelpipe und Takt zwei Skalarprodukte mit je drei Komponenten ("dp3", "dot3") berechnen, NV40 schafft pro Pipe nur ein dp3, und zwar realisiert in Shader Unit 2. Shader Unit 1 kann dann noch Multiplikationen beisteuern.

Der G70 ermöglicht nun wieder zwei dp3-Instruktionen pro Pipeline und Takt. Dies wurde erreicht, in dem die vier-kanalige Multiplikationseinheit in der Shader-Unit 1 um vier speziell verschaltete Additions-Kanäle erweitert wurde. Damit ist natürlich auch "MAD" (multiply, add) möglich, Shader Unit 2 bietet das ja ohnehin.

Lange Rede, kurzer Sinn: Durch den Einbau von Additionsrechenwerken wurde die im NV40 noch bestehende Multiplikationslastigkeit beseitigt. Die G70-Rechenwerke bieten jetzt eine ausgewogene Mischung, weshalb man auch leichter auf den G70 optimieren kann. Die dp3-Operation ist unter anderem – aber nicht nur – für pixelgenaues Shading und fürs Bumpmapping wichtig. Auch MAD-Befehle werden oft gebraucht. Der von Nvidia implizit angegebene Leistungsvorteil von bis zu 25 Prozent mehr Rechenkraft pro Takt erscheint uns nicht übertrieben, je nach Shader kann der Vorteil sogar noch deutlicher ausfallen. Die G70-Architektur ist offenbar für die Ausführung langer Pixelshader mit mindestens -zig Befehlen pro Pixel optimiert.

Eine übliche SingleCore-CPU berechnet je nach Typ pro Takt bis zu zwei MAD-Operationen in FP32-Genauigkeit. Da schafft eine einzelne "normale" Pixelpipeline schon doppelt so viel, da es ja vier Kanäle (R, G, B und A) gibt. Eine G70-Pipe bringt nun 2x MAD pro Pixelpipe und hat 24 davon – das sind 192 MADs pro Takt im Pixelshader. Die acht Vertexshader können insgesamt weitere 32 MADs beisteuern, so dass der G70 pro Takt 224 MADs berechnen kann. Das ist 112x mal mehr als eine gängige CPU. Eine DualCore-CPU müsste demnach mit über 24 GHz laufen, um die gleiche maximale MAD-Leistung wie der G70 zu bringen. Allerdings ist die CPU eben auf das Ausführen von "richtigen" Programmen optimiert, während die GPU auf das Bearbeiten von Datenströmen ausgelegt wurde. Da CPU und GPU für jeweils andere Aufgaben optimiert sind, ergibt unser Vergleich der MAD-Rechenleistung nicht ungeheuer viel Sinn.

Insgesamt hat eine G70-Pixelpipeline etwa doppelt so viel Rechenkraft wie eine R420-Pixelpipeline. Der R420 wird vom G70 nicht nur was Features angeht, sondern auch vom Leistungsaspekt her deklassiert. Dabei sollte nicht unterschlagen werden, dass der G70 (wie NV40 und GeForceFX größtenteils auch) in FP32-Genauigkeit rechnen, während R420 im Pixelshader nur 24-Bit-Genauigkeit bietet. In Dingen Rechenleistung hat Nvidia sich einen großen Vorsprung erarbeiten können.

Auf eine Sache soll deutlich hingewiesen sein: Der G70 kann nach wie vor nicht alle Befehle in jeder der beiden Shader Units berechnen. So genannte Special Functions (SFUs) sind auf Unit 1 und 2 verteilt. Diese Funktionen werden seltener gebraucht, deshalb wäre es auch Transistorverschwendung, wenn jede der beiden Shader Units alle SFUs berechnen könnte.

Der R420 benötigt für viele SFUs mehr Takte als der NV40. Im G70 wurden die Berechnungszeit einiger SFUs im Vertexshader beschleunigt, Details dazu haben wir aber noch nicht. Im Vertexshader bietet der R420 bei einigen SFUs gegenüber R300 auch eine Beschleunigung an.

Doch zurück zum Pixel-Teil: G70 kann, wie NV40, für MAD-Operationen eine Co-Issue-Ausführung nicht nur im 3:1-Verhältnis bewerkstelligen, sondern auch 2:2-Paare bündeln. Die NRM_PP-Unit, die parallel zur Pipeline eine Normalisierung in Partial Precision berechnen kann, ist im G70 weiterhin vorhanden. Normalisierung spielt beim Bumpmapping eine wichtige Rolle.

Insgesamt, also auch unter Berücksichtigung der verbreiterten Architektur, schätzen wir damit die durchschnittliche arithmetische Pro-Takt-Rechenleistung des G70 auf mehr als drei mal so hoch wie beim R420 ein – wobei die höhere Genauigkeit des G70 noch nicht einbezogen wurde. Natürlich interessiert nicht die Pro-Takt-Leistung, sondern die arithmetische Gesamtleistung. Hier müsste der G70 den R420 dennoch um deutlich mehr als Faktor 2 voraus sein.

Die Treiber sind beim Auslieferungstermin in der Regel noch nicht ausoptimiert, trotzdem wären Shadermarks interessant – welche wir nachreichen werden. Shadermarks sind, als synthetischer Tests, natürlich überwiegend zur Architekturbeurteilung gedacht. Der Anwender möchte dagegen zumeist zuerst die Bildqualität und Performance in seinen Anwendungen wissen. Eine Auswahl an ersten Benchmarks bieten wir hier an.

Wegen CPU- oder Bandbreitenlimitierung kann der G70 seine Leistung nicht immer enfalten, wobei wir auf die Frage der möglichen Bandbreitenlimitierung in diesem Artikel nicht genauer eingehen wollen. In der Kürze nur so viel: Wird Texturkomprimierung genutzt und sind längere Pixelshader-Programme in Verwendung, ist Bandbreitenlimitierung sehr unwahrscheinlich. Bezogen auf den Zweck, für den der G70 gebaut wurde, sollte die Bandbreite ausreichen.

Wie beim NV40 können maximal 16 Pixel pro Takt ausgegeben werden, da sich im Gegensatz zur Anzahl der Pipelines die Anzahl der ROPs nicht verändert hat. Da die Berechnung eines Pixels in der Regel länger dauert als ein Takt, ist das aber kein Flaschenhals.






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

Shortcuts
nach oben