VoodooAlert Logo
Home | Forum | Kontakt | Impressum
VoodooAlert

   

Rampage

Veröffentlichung: 18.11.2002
Autor: Alexander Medvedev
Übersetzung: Norm


In diesem Artikel wollen wir die noch unveröffentlichten Projekte von 3dfx, welche kürzlich leider aufgekauft wurde, genauer unter die Lupe nehmen. Als erstes lasst uns über den lang ersehnten Rampage berichten, dessen Name schon seit geraumer Zeit im Internet rumgeistert.
Das traurige Schicksal einer unveröffentlichten und unvollständigen eingestellten 3dfx-Entwicklung. Nichtsdestotrotz haben wir Möglichkeit (durch einen kleinen Einblick hinter den Kulissen) die Überreste der Entwicklung von 3dfx's Idee und Konzeption - die sich in den zukünftigen Produktschemas von Nvidia wiederfinden werden, nachdem diese alle Patente und Technologien von 3dfx aufgekauft haben - zu diskutieren.

Wie auch immer, die hier erwähnte Entwicklung ist es auf alle Fälle Wert von uns besprochen zu werden.
Im Moment ist folgendes, nach Urheberrechten von 3dfx aufgekauft durch Nvidia, bekannt bzw. war in Entwicklung (und ist nach Entwicklungsstatus geordnet):
  1. Spectre (mit Rampage Rastereinheit und SAGE-Geometrieeinheit)
  2. Fear (Fusion von Rastereinheit und 2-fach ausgelegter SAGE-Geometrieeinheit)
  3. Mojo (kombinierte Rastereinheit und Geometrieeinheit mit aufgeteilter Architektur)
Lasst uns primär über die Rampage & SAGE als Kombination reden (Spectre), da wir über diese Variante die meisten Information haben und darüber hinaus hatte 3dfx es auch schon geschafft ein Presample zu fertigen. Um ehrlich zu sein, ist der Spectre bereit zur Massenproduktion gewesen und stand kurz vor der Auslieferung sowie finalen Tests.
Wie viele unegefähr schon gefertigt wurden? Er ist der Einzige...
3dfx behaarte strickt - was sicherlich in den Annalen der Geschichte eingehen wird - auf die Multichip-Architektur. Zu aller Erst skaliert die Geschwindigkeit der Grafikkarte mit den verwendeten Rastereinheiten (hier die Rampage) und diesmal ist die Geometrieeinheit ebenso als separater Chip vertreten; dies ist nur logisch:

Nicht jede Rastereinheit benötigt den Geometrieprozessor, daher ist es einfacher einen gemeinsamen zu teilen. Es ist möglich den Geometrieprozessor direkt zwischen einer 4xAGP-Brücke (siehe auch im Schema) und den Rastereinheiten arbeiten zu lassen, um zwei oder vier Chips simultan mit allen AGP-Fähigkeiten zu unterstützen. Durch diese spezielle Architektur ist es sehr simpel mehrere Rastereinheiten effektiv zu verbinden. Die Anwendung der (verschiedenen) Rampage mit ihren eigenen Datenbus erweitert die effektive Bandweite. Aber jedes Pro hat auch sein Contra. Natürlich ist diese Lösung eine sehr kostspielige und daher teuer für den Endverbraucher. Und zum anderen (technischen) ist es nötig für diese Zusammenarbeit die Texturen zu duplizieren für jeden GPU-RAM. Dies sind jedoch alles berücksichtigte Aspekte von 3dfx. Aber hier ist noch ein dritter (bisher in der Entwicklung nicht berücksichtigter Aspekt): es ist nicht eindeutig, wo die Geometriedaten gespeichert werden sollen. Es ist zu Verschwenderisch einen neuen Separat-Lokalen Buffer für die SAGE zu erstellen, daher wird das Problem wie folgt gelöst:

Alle Geometriedaten werden im Systemspeicher gelagert und über die AGP-Brücke wieder darauf zugegriffen und möglicherweise auch einen Großteil der Daten direkt auf dem Chip im Cache zwischenzuspeichern. Es ist ebenfalls möglich die Daten in den lokalen Speicher-Buffer (durch die Rastereinheiten) zu speichern und über den selben Weg auch wieder auszulesen.
Der letzte Punkt ist jedoch viel schwieriger zu verwirklichen und es würde Leistung von den Rastereinheiten abzweigen, außerdem würde es einen Teil des Speichers belegen und die lokale Bandweite begrenzen. Es ist leider nicht belegt, wie der Cache organisiert war aber wir wissen, dass ein Großteil der Geometriedaten im Systemspeicher abgelegt war und durch die AGP-Brücke darauf zugegriffen wurde. Der Frame-Buffer ist geteilt in lokale Rastereinheiten-Buffer und jeder von ihnen mit einem Teil der horizontalen Segmente gefüllt (wie es auch schon für die VSA100 verwendet wurde), dies erlaubt dem Cachespeicher effektiver zuzugreifen als im normalen einzelnen Baseline-basierten Buffer (wie im originalen SLI der Voodoo1/2-Serie verwendet wurde), hierzu das Architekturschema:

3dfx Rampage

Bis zu 4 Rasterchips können somit kombiniert werden ohne eine zusätzliche Brücke einzubauen, sogar ohne SAGE wäre eine Arbeit möglich. Hier die physikalische Organisation des Speichers der Rampagechips:

3dfx Rampage


Die Chips kommunizieren über einen separaten AGP-ähnlichen Bus, hier ist eine logische Organisations-Konzeption hierzu:

3dfx Rampage


Die Bandweite ist jedoch verdoppelt, genauso wie ein Teil der Texturen (konzeptionsbedingt).


Technische Spezifikationen

Technikkriterium Rampage Geforce3 NV20
Pixel Pipelines 4 4
Textureinheiten pro Pixel Pipeline 1 2
Texturen pro Pixel 1-8 1-4
Pixel Fillrate 800 Million bei 200 MHz
oder 1000 Million
800 Millionen bei 200 MHz
Texel Fillrate 800 Million 1600 Million
Speicherinterface 128-bit DDR pro Chip 128-bit DDR
DX8-shaders 1.0 (+ zusätzliche Funktionen) 1.1 (+ zusätzliche Funktionen)
Texturkompression DXT1 - DXT5 & FXT1 DXT1 - DXT5 & S3TC
kubische Einvironment Maps ja ja
YUV Texturformate ja ja
EMBM und DOT3 BM ja ja
Overbright lighting ja nein
T-Buffer AA ja nein
Multisampling Effekt AA ja ja


Und nochmals: 4 Pixel Pipelines liefern bis zu 4 Dreieckpunkte pro Durchgang, genauso wie bei der Geforce3. Aber egal, die Rampage hat nur einen Texturblock für jede Pipeline zur Verfügung, dennoch sollten wir nicht voreilig sein mit Schlussfolgerungen, denn die TMUs können sich unterscheiden; denn wenn ein TMU einen trilinearen Filter innerhalb eines Durchgangs schafft, so ist deren Speicherbandbreite äquivalent zu einem TMU mit nur ein oder zweifach bilinearen Filter pro Durchgang (deren TMU-Anzahl jedoch größer ist). Und die Rampage hat die Fähigkeit ein Filtering von trilinearen Texturen pro Durchgang durchzuführen, sie können auch komplexer Filteringmethoden durchführen (bis zu 128-tap adaptives Anisotropische Filtering), sie wurde dafür gebaut dermaßen Produktiv zu sein: Linear und Trilinear sind 1 Einheit pro Durchgang. Adaptives Anisotropisches Filtering hat verschieden Qualitätseinstellungen (daher auch adaptiv), nämlich 8-taps pro Durchgang; 16-taps (für 2 Durchgänge) ... bis zum Maximum von 128-taps bei 8 Durchgängen. Die Fähigkeit dieser Texturkombinationen sind originell (wenn auch die Geforce3 ähnliche Rudimente des selben Prozesses verwendet aber nichtsdestotrotz hat es 2 parallele TMUs um den Nachteil des nur bilinearen Filterings pro Durchgang auszugleichen). Die Texturen in der Rampage können sequentiell bis zu 8 Mal berechnet werden, jedes mit einem eigenen Filteringprozess (vom primitiven Punktfilter bis zum adaptiven Anisotropischen Filter mit 128-taps als Limit). Sicherlich steckt ein flexibler Mechanismus hinter den kalkulierbaren Texturkombinationen. Im Moment können bis zu 8 RGBASTW (Farben, Transparenz und 3 Texturkoordinaten) berechnet und gespeichert werden. Diese resultierenden Punktfarben können berechnet werden, indem alle diese Parameter und einem flexiblen Schema benutzt werden. Aber das ist noch längst nicht alles! Die zuvor genutzte Einträge können bis zu 4 Mal zur Definition von relativen oder absoluten Texturkoordinaten benutzt werden. Als Ergebnis davon ist es Möglich nun bestimmte "Mauerstruktur Effekte" zu ermöglichen (wie EMBM zum Beispiel) und noch viele weitere und auch die so genannten prozeduralen Texturen, welche aus bestimmten Formeln bestehen, worin die verschiedenen Werte der Punkte berechnet werden. Die Mauer könnte zum Beispiel in einem Winkel von 2° gezeichnet sein:

Texturkoordinate: = berechneteKoordinate + Displacement Dies verlagert die Komplexität des Ausdrucks, berechnet für 8 kombinierte Ebenen, ist wirklich ungeheuerlich - bis zu 8 verschiedene Operationen sind erlaubt zwischen den Texturen und deren interpolierten Einträgen der Attributen des Scheitelpunktes eines gezeichneten Dreiecks. Als Beispiel ist es möglich folgende Formel zu verwenden:

Pixel := (((A+B) * (C+D)) * E+F) * (G*H)/2
Beobachtet man die letzten Entwicklungen im Felde der 3D-Graphiken, so erkennt man, dass eine Tendenz des Übergangs von parallelen Berechnungen (durch Nutzung mehrere TMUs) - mit den daraus folgenden fixierten Kombinationen, welche in einem Durchgang erzeugt werden, - zu sequentiell auf eine willkürlich Anzahl an Texturen in einem Block mit einer flexiblen Kombination basierend auf so genannte Shaders. Die Rampage unterstützt nicht nur den Pixelshader der Version 1.0 sondern auch verschiedene zusätzliche Funktionen, welche in 1.0 nicht vorhanden sind. Und die dadurch gewonnenen Flexibilität der Texturen ist höher als die einer Geforce3. Wie wir bereits erwähnten, werden beide Texturkoordinaten und -Tiefen gespeichert, dies eröffnet die Möglichkeit - wobei die finale Punktberechnung, das daraus resultierende Ergebnis ist, - eine kombinierte Textur zu berechnen auf der Basis eines, sicher streng abgesteckten, mathematischen Ausdrucks.

Zum Beispiel:
Alpha := (CS+CT) * const
Pixel := A(RGB) * Alpha + B(RGB) * (1-Alpha)
S und T sind die Koordinaten der Oberfläche der Textur.
Es ist möglich die Einträge und deren Modifikation (X, -X, 1-X, X-0.5) überall zu benutzen.
Es gibt sogar die Möglichkeit einer konventionellen Nutzung wie hier:

Pixel := (A(A)+B((A))? C(RGB)/ D(RGB) Die Zwischenfarbe (R+G+B) kombiniert ist wichtig für das Skalarprodukt von Vektor und Matrize (Punktprodukt), deren Berechnungen somit auch möglich wären und unterstützt sind. Sie werden benutzt in verschieden Methoden der Pixelgenauen-Beleuchtung, die auch in verschieden Technologiedemos für die Geforce3 bereits zu sehen waren, also punktgenaue Beleuchtung! Aber selbst das ist nicht das Ende der Fahnenstange. Alle intermediären Farbwerte und Transparentwerte sind nicht nur berechnet sondern auch gespeichert in 13-Bit Genauigkeit (bedeutend sind mindestens 12 Bits). Dies erlaubt es sehr dunkle Szenerien zu vermeiden, durch die dynamische Reichweite und das Erhalten von qualitative guter Bildqualität mit sogar 8 Texturkombinationen. Auf Grund dieser immensen Genauigkeit im Speichern und Berechnen der intermediären Farbwerte (56 Bits pro Farbe); die Lumineszenz des Vertex-lighting ist die Summe aller Lichtquellen, diese kann variieren zwischen 0 bis 16.0, anstatt wie üblich 0 bis 1.0 (0 bis 4095 anstatt wie üblich 0 bis 255 in Integer ausgedrückt). Dies erlaubt nun das so genannten Overbright Ligthning, welcher in offenen Arealen mit unterschiedliche hellen Lichtquellen, im speziellen Fall die Sonne, umgehen kann und diesen dadurch mehr Realismus einverleibt. Es ist möglich die multiplen Werte bei einem Winkel in Zweierschritten (um die willkürliche Anzahl der Bits zu verlagern) ohne Leistungsverluste zu bearbeiten:

Pixel := (A(RGB) <<2) *(B(RGB) <<3)
Das Textur-chroma-Schlüssel-Verfahren erlaubt es zu entscheiden, welche Texturwerte in Betracht gezogen werden müssen und was bei nichtexistierenden (komplett transparenten Texturen) zu beachten ist. Und es ist möglich den exakten Schlüsselwert zu definieren (z.B.: 0, 13 oder 255) und deren Reichweite. Diese Feature kann immer genutzt werden für transparente Texturen aber zugleich auch für die Einsparung an Speicher und erlaubt das Programmieren von natürlicheren Effekten. Zum Bsp.: Wesentliches einsparen an Shader-Befehlen, welche auf einen bestimmt Anzahl limitiert sind. Es ist möglich 3 wesentliche Dinge zu machen mit den Werten, die dem Schlüssel-Verfahren entsprechen: Sie können mit schwarz ausgetauscht werden (mit dem Wert 0 für Schwarz); Sie können mit einer beliebigen Konstanten ausgetauscht werden; Oder sie können mit einem bestimmten fixierten Prozentsatz verrechnet werden (um es zu skalieren). Die Hauptfrage, die einem bei dem Anblick der Raster-Parameter sofort durch den Kopf schießt, ist: "Warum so viele Texturen?". Die Antwort ist simpel - eine äquivalente Anzahl an Texturen erlaubt gleichzeitig präzisere physikalische Algorithmen, analog zur Oberflächenbeleuchtung, präzise berechnete Werte für jeden einzelnen Punkt anstatt eine grobe Annäherung an einer Dreiecksoberfläche. Zum Bsp. können wir sehr leicht ein (genug physikalisch korrektes) Hardware-Modell (in dieser oder jener Form, wie es schon heutzutage in den Softwarerenderen von realistischen 3D-Graphikern eingesetzt wird) mit Pixelgenauigkeit darstellen:

Pixel := Umgebungskoordinate * Umgebungslichtfarbe * Umgebungstexturfarbe + Diffusekoordinate * Diffusetexturfarbe * Summe(Diffuselichtmaptexturfarbe[n], n) + Specularkoordinate * Speculartexturfarbe * Summe(Specualtlichmaptexturfarbe[n] << Specularkraft, n)

Im Falle von 3 Lichtquellen können wir dies alles in einem Durchgang Hochschätzen! Dies würde uns eine Bildqualität liefern, vergleichbar mit einem Bild von einer realzeit-software gerenderten Bild von unglaublicher Komplexität. Wenn wir nur 2 Lichtquellen in Betracht ziehen, so könnten wir den dadurch freigewordenen Texturspeicher für Umgebungs-reflektierende Mappings nutzen, zum Beispiel.
Um nun ein Relief oder eine Refraktion (Strahlenbrechung) auf diese Oberfläche zu projizieren (wohlmöglich durch verschieden diffuse und fleckenhafte Komponenten) oder durch das Auftragen einer Refraktionsmap (diese Gebiet ist jedoch zur Zeit noch nicht erforscht aber ich vermute, dass Konzepte hierzu für die 3D-Graphiker bereits existieren). Ja, in nächster Zukunft werden wir unzweifelhafte in Quantensprung vollziehen in der Darstellung von Bildqualität mit überzeugendem Realismus. Die Doom3-Schöpfer und genauso auch die neuen Spezifikationen der Grafikkarten sind diesbezüglich eindeutig. Die Situation mit dem T-Buffer bleibt beim selben, deren Unterstützung wird komplett wie der des VSA-100 sein. Aber es gibt noch Neuigkeiten aus dem Bereich des Multisamplings. Die Rampage unterstützt den so genannten M-Buffer und das dadurch mögliche Multisampling AA, welches Texturspeicher spart. Genauso wie bei der Geforce3 wird ein Texturfarbenwert für das effektive edge antialiasing benutzt in 2- oder 4-facher Ausführung in unterschiedlich rotierten Ebenen.

Lasst uns nun einen tieferen Einblick in den SAGE-Geometrieeinheit und die AGP-Brücke nehmen. Die Funktionalität der AGP-Brücke wird 2- und 4-fach ausgelegte Chips auf der Graphikkarte ermöglichen im AGP-Modus (sogar unter Win2000). Der externe Geometrieprozessor ist eine stark kontradiktorische Angelegenheit. Wir haben bereits darüber gesprochen, über den unklaren Weg, den die SAGE bestreitet um die Geometriedaten zu speichern. Aber es wirft sich noch eine weitere Frage auf: "Wird es wirklich volle AGP-Funktionalitäten gewährleisten können, oder sind die Rastereinheiten wieder um das AGP-Texturing beschnitten worden (wie bei VSA100)?" Um ehrlich zu sein, das AGP-Texturing wird heutzutage nicht genutzt ... Ein weiteres Problem erscheint dadurch, wenn wir hier über Zahlen diskutieren. Die Bandweite der Rampages sind 20 Millionen Dreiecke pro Block. Das Maximum sind 25 Millionen mit einer Übertaktung auf 250 MHz. Und die SAGE kann - laut den offiziellen Spezifikationen - weit mehr als 50 Millionen Dreiecke verarbeiten als Maximum. Ja, einige von diesen Dreiecken werden wohl wegfallen (da sie verdeckt werden) in dem Prozess und nicht übermittelt zur Rampage. Aber deren Anzahl ist voraussichtlich geringer als 50% bei einer normalen Spielszene. Also ist die Geometrieleistung der Grafikkarte basierend auf dieser Ansicht limitiert in aller Hinsicht auf die Rasterchips (Rampages in diesem Fall). Aber die 20 bis 30 Millionen der SAGE's möglichen theoretischen Dreiecke schneiden sich sehr stark mit der aktuellen Geforce3-Leistung. Und die separate Implikation durch 3dfx und deren guten & alten Ansichten in Bezug auf aussagekräftige Zahlen wird Folge geleistet, daraus lässt sich hoffen, dass vergleichbare Geometrieleistungen in den aktuellen Tests und Anwendungen zum Vorschein kommen.
Die SAGE unterstützt den Vertexshader 1.0 (aber dessen Effizienz ist nicht bekannt), dies beinhaltet alle Features im Bereich von Lichtberechnungen und Texturkoordinatenberechnung. Die SAGE (genauso wie die Geforce3) ist dazu befähigt hardwarebeschleunigte rechtwinklige und dreieckige Tesselation durchzuführen (für geglättete Oberflächen). Die 50 Million (oder 20 ohne die Beschränkung) Dreiecke sind mehr als ausreichend zu bezeichnen. Die Frage ist, ob die SAGE es auch in aktuellen Tests so bestätigen könnte. Nebenbei, im Falle einer geglätteten Oberfläche ist die verfügbare Anzahl an Dreiecken erhöht, also ist das 50:25 Verhältnis nur gerecht.

Drei Grafikkarten wurde geplant auf Basis der Kombination mit Rampage und SAGE.
  1. 1 x Rampage
    als kostengünstige Variante mit softwareberechneter Geometrie (T&L). Diese Karte ist vergleichbar mit der kompletten Geforce2 aber ist voraussichtlich langsamer als eine Geforce3, besonders in heutzutage verwendeten Spiele Engines. Aber es sollte in Erinnerung behalten werden, dass das Fehlen eine HW T&L in bestimmten Situationen nachteilig sich auswirken kann auf zukünftige Spiele. Egal, es ist eine Budgetkarte.

  2. 1 x Rampage + 1 x SAGE
    ist die angestrebte Massenvariante. Schneller als eine Geforce2 und wohlmöglich etwas langsamer als eine Geforce3. Aber in bestimmten Fällen mit der erhöhten Texturkombination kann es die Geforce3 sehr leicht überholen, während diese einen weiteren Texturdurchgang benötigt.

  3. 2 x Rampage + 1 x SAGE
    ist eine sehr kostspielige Variante, die die Geforce3 in der Leistung und auch im Preis wohl mit Sicherheit überholen würde. Der einzige, bereits oben gezeigte Nachteil sind die Bandweitenlimitierungen im Bereich der Dreiecke aber dies ist nicht so gewichtig. Spiele mit mehr als 50 Million Polygonen pro Sekunden wird es wohl in Naher Zukunft und im Laufe der Lebensspanne der Grafikkarte wohl nicht geben. Diese Zahlen basieren aber nur auf synthetischen Tests.


Alle diese drei Varianten sollten unter dem Namen Spectre erscheinen, plus der zugehörigen Modellnummer. Der Preis ist unbekannt, er wäre stark abhängig vom Preis der Speicherbausteine und der Prozentzahl verkaufter Einheiten.

Was die nächsten zwei Produkte betrifft, die in Planung waren:
Die Fear-Variante, welche die Weiterentwicklung der Spectre darstellte. Mit der selben SAGE-Einheit jedoch mit erhöhter Leistungsfähigkeit und der Fusion von einer erweiterten (im weitesten Sinne des Wortes) Variante der Rampage. Keine technologischen Neuerungen waren geplant, nur eine ganz normale evolutionäre Entwicklung - höher Taktfrequenzen, mehr Pipelines usw.
Aber dies ist nicht alles. Die Mojo, eine sensationelle Entwicklung mit einer aufgeteilten Architektur, welche kurze Zeit später erscheinen sollte war schon in Entwicklung. Es gab schon Gründe, warum 3dfx Gigapixel Technologies aufgekauft hatte.
Die Mojo hatte einige essentielle Innovationen, zum einen eine Implikation von einem Hardware-Filtering, welcher jeden Abschnitt des Bildschirms, der im Buffer gespeichert ist, nicht nur im Bereich der Punktfarben sondern auch über die Information, welche primitiven Objekte es berührt (innere Architektur). Zum Beispiel, wenn Dreiecke zur Grafikkarte gesendet werden, würde die Hardware sie sortieren und direkt auf dem Weg diesen eine Sektion im Bild laut deren Definition zuordnen. Nebenbei war die Mojo das erste 16-Bit-Floating Format für Farbelemente, sowie deren Berechnung als auch Speicherung.

Es konnte dadurch sehr präzise 64-BIT-Floating Farben produzieren und deren dynamische Reichweite bestimmen. Und vielleicht sogar noch mehr, wer weiß das schon. Die Zukunft gehört wahrscheinlich dieser "aufgeteilten Architektur" und die folgenden Nvidia-Produkte (30 - 40 Serie), werden unzweifelhaft einige grundlegende Funktionen der Mojo aufgreifen.




Home | Forum | Kontakt | Impressum
© VoodooAlert 2001 - 2024