Grundsätzliche Verteilung der Speicherbandbreite eines Grafikchips. [Quelle: siehe Bildergalerie]
Bandbreite konkret Für unsere Betrachtungen gehen wir davon aus, dass wir ein Spiel mit 60 Bildern pro Sekunde darstellen wollen. Wir wählen eine Auflösung von 1.280x1.024 Bildpunkten und nehmen an, dass der durchschnittliche Überdeckungsgrad im Spiel 4 beträgt, d. h. dass jedes Pixel von vier Dreiecken überlagert wird ("Overdraw").
Geometriedaten In einem ersten Schritt müssen die Dreiecke aus dem Grafikkartenspeicher gelesen werden. Dies ist allerdings nur bei T&L-fähigen Karten unter gewissen Bedingungen der Fall, im normalen Betriebsmodus werden diese Daten über den AGP-Bus bezogen. Unabhängig von der eingestellten Auflösung und Farbtiefe fallen heute ungefähr 0,2 bis 0,4 GB/s Geometriedaten an.
Benötigte Speicherbandbreite: 0,2 bis 0,4 GB/s
Texturspeicher Die in Pixel zerlegten Dreiecke wollen entsprechend mit Texturen überzogen werden. Mit den üblicherweise genutzten Textur-Filtering-Techniken müssen acht Texturwerte ("Texel") pro Pixel aus dem Speicher gelesen werden. Da moderne Spiele jedes Dreieck mit mindestens zwei Texturen überziehen, vervielfacht sich dieser Wert weiter. Künftige Spiele werden bis zu acht Texturschichten pro Dreieck auftragen, entsprechend wird der Bandbreitenbedarf in diesem Berechnungsschritt in die Höhe schnellen. Mit zwei Texturen fällt eine Bandbreitenlast von 20,2 GB/s an, sofern unkomprimierte 32-Bit-Texturen benutzt werden und der Chip über keine Texturcaches verfügt (X-Auflösung*Z-Auflösung*Farbtiefe*Overdraw*fps*Anzahl Texturen*Anzahl Texturwerte). Dank Texturcaches, die einige Duzend Kilobyte groß sind, fällt die Bandbreitenlast allerdings bereits auf ca. 7,5 GB/s ab, da statt acht Texel nur etwa drei Texel aus dem externen Speicher bezogen werden müssen; der Rest liegt im schnellen SRAM-Cache innerhalb des Chips. Die immer öfter speziell bei großen Texturen genutzte Kompression reduziert das durchschnittliche Datenaufkommen weiter, so dass unter diesen Bedingungen mit ca. 3 bis 4 GB/s Bandbreitenbedarf gerechnet werden muss. Kachelbasierte Renderingarchitekturen erzielen an dieser Stelle enorme Vorteile, da sie durch das verzögerte Rendering ("Deferred Texturing") keine Pixel texturieren, welche schlussendlich unsichtbar bleiben. Alle erforderlichen Prüfungen werden bereits im ersten Rechenschritt durchgeführt. Der Overdraw-Faktor wird durch die vorgezogenen Berechnungen im Normalfall halbiert.
Benötigte Speicherbandbreite: 3 bis 4 GB/s
[index]
Tiefenspeicher Für unsere Berechnungen nehmen wir an, dass 50 Prozent der neu gerenderten Pixel vor den bereits gespeicherten Werten liegen werden; die Tiefeninformation an dieser Stelle muss also durch jene des neuen Pixels ersetzt werden. Durch unseren Überlagerungsfaktor von 4 müssen vier Mal Tiefenwerte zwecks Vergleichstests aus dem Tiefenspeicher gelesen werden. In zwei Fällen muss die Tiefeninformation des neu gerenderten Pixel mittels eines zusätzlichen Schreibzugriffs erneuert werden. Die benötigte Speicherbandbreite für die 32-bittigen Tiefenspeicherzugriffe beläuft sich auf ungefähr 1,9 GB/s (X-Auflösung*Z-Auflösung*Overdraw*(Lesen + Schreiben)*fps).
Benötigte Speicherbandbreite: 1,9 GB/s
Bildspeicher Im letzten Schritt der 3D-Berechnung soll das gerenderte Pixel in den Bildspeicher geschrieben werden. Wir gehen davon aus, dass der Tiefentest rund die Hälfte der Schreibzugriffe abfangen wird und nur 50 Prozent der Schreibzugriffe in den Grafikspeicher erfolgen. 50 Prozent dieser Schreibzugriffe erfordern zuvor allerdings einen Lesezugriff, da es sich um transparente Pixel handelt, welche mit den im Grafikspeicher abgelegten Pixeln vermischt werden wollen. Unter diesen Voraussetzungen fallen in diesem Schritt bis zu 2 GB/s Datenvolumen an (X-Auflösung*Y-Auflösung*Farbtiefe [Byte]*Tiefenkomplexität*fps*[Schreibrate + Leserate]).
Benötigte Speicherbandbreite: 2 GB/s
RAMDAC Zum Schluss muss der RAMDAC die Daten aus dem Bildspeicher auslesen und an den Monitor schicken. Bei augenschonenden 85 Hz kommen bei diesem Vorgang zusätzliche Daten von ungefähr 0,4 GB/s zusammen.
Benötigte Speicherbandbreite: 0,4 GB/s
Summiert benötigen wir unter diesen Bedingungen bei durchgängigem 32-Bit-Rendering eine real verfügbare Speicherbandbreite von bis zu 8 GB/s. Die Krux an der Sache ist, dass in der Praxis nicht einmal die 7,3 GB/s aktueller Speicherchips zur Verfügung stehen, da ein großer Teil der Speicherleistung durch Latenzzeiten und andere Ineffizienzen verloren geht. Angesichts der Ergebnisse wird schnell deutlich, dass ein Wechsel zu 64 Bit Farbtiefe derzeit kaum möglich ist. Die Halbierung der Berechnungsgenauigkeit auf 16 Bit erlaubt auch auf langsameren Boards mit SDR-Speicher schnelle Bildwiederholraten. Abstriche in der Bildqualität sind dann zwar zu erkennen, in höheren Auflösungen allerdings für viele vernachlässigbar. Unsere Detail-Berechnungen lassen sich auch gut dazu nutzen, Ihr System optimal zu tunen. Oft reicht es für einen deutlichen Leistungsschub, die Texturfarbtiefe auf 16 Bit zu beschränken, während die Zugriffe auf den Bildspeicher weiterhin mit 32 Bit Genauigkeit erfolgen.
[index]
Bildergalerie zum Artikel