Werbung
Der neue R580-Grafikkern ist eine Weiterentwicklung der R520-GPU, die bei der Radeon X1800 XT und XL Verwendung findet. Genau wie der Vorgänger wird der R580 in 90-nm-Technik hergestellt. In den neuem Chip sind insgesamt 380 Mio. Transistoren integriert, beim R520 waren es 320 Mio. Transistoren, sodass der Nachfolger über 60 Mio. zusätzliche Schaltungen verfügt. Im direkten Vergleich mit NVIDIAs aktuellem G70-Grafikkern sind es sogar ganze 78 Mio. Transistoren mehr beim R580-Grafikchip.
Der R580-Grafikchip unterstützt alle gängigen Grafikfeatures wie das Shader Model 3.0. Im Vergleich zur Radeon-X1800-Reihe hat sich in diesem Bereich also nicht sonderlich viel verändert. So beherrschen die Radeon-X1900-Grafikkarten High Dynamic Range mit aktiviertem Anti-Aliasing sowie adaptives und temporäres Anti-Aliasing. Das sogenannte Ring-Bus-Speicherinterface wurde ebenso übernommen wie auch die Texturkompression 3Dc+. Auch die Avivo-Technologie ist enthalten, die neben HD-Video-Beschleunigung auch für eine bessere Bildqualität und gute Konnektivät sorgen soll. Im Prinzip hat ATI nur den an Stellen Optimierungen vorgenommen, die beim R520 nicht ausgereizt wurden.
So gab es beim R520 nur 16 Pixel-Shader, wohingegeben NVIDIA bei seinen aktuellen High-End-Grafikkarten 24 Pixel-Shader einsetzt. Damals erklärte ATI, dass seine Pixel-Shader durch höhere Effizienz den mengenmäßigen Nachteil im Vergleich zur Konkurrenz von NVIDIA nichtig machen könnte, was aber in den Tests dann doch nicht so erkenntlich wurde. Daher hat ATI bei der Radeon X1900 hier nachgebessert und kann nun 48 Pixel-Shader vorweisen. Weiter unten wird erklärt, wie ATI auf solch eine hohe Zahl an Pixel-Shadern kommt, obwohl in Wirklichkeit nur 16 Pixel-Pipelines zur Verfügung stehen. Zusätzlich hat ATI sich bemüht das Shadow-Mapping zu beschleunigen, wozu das neue Feature namens Fetch4 beiträgt - dazu findet man auch weiter unten nähere Informationen.
Durch Klick auf das Bild gelangt man zu einer vergrößerten Ansicht
Entwicklungen der Shader
Durch den kontinuierlichen Anstieg der Shader-Befehle pro gerendertem Pixel ist bei vielen aktuellen und zukünftigen PC-Spielen das Pixel-Shading die Engstelle. Seit der Einführung programmierbarer Shader im Jahre 2001 durch die Veröffentlichung von DirectX 8 finden Shader in immer mehr Games Verwendung, wobei die Komplexität der Shader pro Jahr um den Faktor x1,8 zunehmen.
Anteil von 3D-Spielen mit Pixel-Shader-Verwendung (Quelle: ATI)
Schaut man sich die Shader in PC-Spielen näher an, stellt man nicht nur fest, dass diese größer geworden sind, sondern auch, dass sich die Zusammensetzung der Shader-Instruktionen verändert hat. Es gibt generell zwei verschiedene Befehlstypen. Zum einen gibt es Textur-Operationen, die ihre Daten aus dem Grafikspeicher beziehen, und zum anderen Arithmetik-Operationen, die die Daten mathematisch manipulieren. Die früheren Shader wurden so aufgeteilt, dass jeweils zur Hälfte Textur-Operationen und arithmetische Operationen ausgeführt wurden. Bei den neueren Shader-Versionen hat sich das Verhältnis in Richtung arithmetische Operationen verschoben. In den aktuellsten Games ist das Verhältnis von arithmetischen zu Textur-Operationen durchschnittlich 5:1 - in der Zukunft wird der Unterschied wahrscheinlich noch größer werden.
Durchschnittliche Anzahl an Shader-Insktrktionen in PC-Spielen (Quelle: ATI)
Ein wichtiger Unterschied zwischen Arithmetik- und Textur-Operationen ist, dass letzere sehr stark von externen Faktoren abhängig sind, unter anderem von der Kapazität des Grafikspeichers und der Speicherbandbreite. Würde man die Anzahl an Textur-Einheiten erhöhen, ohne gleichzeitig die anderen Komponenten zu vergrößern, wären keine Leistungssteigerungen möglich. Grafikspeicher und Speicherbandbreite sind generell teurer zu skalieren als arithmetische Operationen, welche von der Anzahl an Verarbeitungseinheiten in der GPU abhängen. Mittels "Procedural texturing" ist es möglich, von der schneller steigenden Zahl an Verarbeitungseinheiten zu profitieren. Pixel-Shader-Programme können dazu benutzt werden, Texturen mathematisch zu erstellen, wodurch wesentlich weniger Grafikspeicher und Speicherbandbreite benötigt werden, um die Textur-Daten zu speichern. Alternativ könnten Shader-Programme bereits im Speicher befindliche Texturen variieren und unterschiedlich detailliert darstellen, sodass die Anzahl an verschiedenen Texture-Maps, die gespeichert werden müssen, verringert wird.
Da die Shader immer leistungsstärker werden, könnte man diese auch dazu verwenden, einen Teil der Arbeitslast des Prozessors auf den Grafikchip zu übertragen, damit die CPU nicht zum Flaschenhals für die Gesamtperformance wird. Physikalische Simulationen von Dingen wie Partikelsysteme, Stoffe, Flüssigkeiten und Animationen können oftmals von GPUs mittels Verwendung von Shadern effizient berechnet werden, was die CPU entlasten würde. Dennoch muss beachtet werden, dass dadurch wertvolle Leistungsreserven für das normale Grafikrendering verloren gehen, weshalb es von Vorteil ist, eine größere Anzahl an Shader-Prozessoren zu haben, denn dadurch steigt die Wahrscheinlichkeit, dass durch Lastteilung zwischen CPU und GPU eine Steigerung der Framerate erzielt wird.