Zum 3DCenter Forum
Inhalt




S3 DeltaChrome vs. XGI Volari

10. Februar 2005 / von Robbitop / Seite 3 von 20


   Die Architekturen  (Forts.)

  Der Pixelshader

Kurz zum Aufbau von Pixelshader ALUs (Arithmetical Logical Unit - Rechenwerk): Eine Pixelshader-ALU ist in der Regel ein Single Instruction Multiple Data-Rechenwerk (kurz: SIMD). Das heißt, dass ein Rechenwerk vier skalare Operationen mit dem gleichen Operator durchführen kann. Aktuelle ALUs besitzen also vier Kanäle. FP24 bedeutet, dass jeder Kanal über eine Präzision von 24bit Floating Point verfügt (analog dazu FP16/32). Die vier Kanäle setzen sich aus den Farben Rot, Grün, Blau und dem Transparenzgrad "Alpha" zusammen. Es kann vorkommen, dass eine Operation weniger als vier Kanäle benötigt. ALUs ohne Möglichkeit, Operationen zu splitten (b.s.w. "Co-Issue") verschenken hier potentiell Leistung, da nicht alle Kanäle ausgenutzt werden.



Pixelshader DeltaChrome / Volari V8




Pixelshader GeForce 5700




Pixelshader Radeon 9600


Im DeltaChrome ist ein Maximalausbau von zwei Quadpipelines vorgesehen. Da S3 nur über ein begrenzte R&D Ressourcen verfügte, mussten im Design einige Kompromisse eingegangen werden, um den Chip rechtzeitig vollenden zu können. Jede Pixelpipeline besitzt unserer Meinung nach eine Pixelshader 2.0 konforme Allzweck-Shaderunit. Sie ist im Stande, eine Vec4 Multiplikation oder Addition (MAD) durchzuführen oder eine Spezialfunktion (kurz: SFU).

Gewisse Spezialfunktionen müssen vermutlich aufgrund des Nichtvorhandenseins von Hardwarelogik über sogenannte "Makros" nachgebildet werden. Dies ist bei allen IHVs so gang und gebe, da jede Funktion in Hardware wertvolle Transistoren kostet. Selten genutzte Funktionen werden also nachgebildet. Beispielsweise ergibt sich die Division aus der Bildung des Reziproken in einem Takt und im nächsten aus der Multiplikation der Reziproken. Allerdings schränkt S3 die Shader ALUs stärker ein, als dies ATI und nVidia zu tun pflegen. Es muss sehr häufig auf Makros zugegriffen werden. Das kostet Takte, in denen die ALUs blockiert sind und damit im Endeffekt Leistung.

Unseren Messungen zu Folge ist pro Pipeline nur eine Operation pro Takt möglich; entweder eine Texturoperation oder eine arithmetische Vec4 Operation. Horizontales oder vertikales Splitting (Dual- / Co-issue) sind ebenfalls nicht möglich. Da jedoch das Sampling und die Filterung eines Texels sehr viele Takte beansprucht, ist ein Leertakt für die Texturoperation, welche die ALU blockiert, nicht all zu tragisch. Sehr ähnliche ALUs vermuten wir im XGI Volari V8. Ein Unterschied ergibt sich natürlich bei den Texturoperationen. Jede ALU des Volari kann gleich zwei Texturoperationen pro Takt anstoßen. Dies ist notwendig, da die Volari Pixelpipeline je zwei TMUs besitzt.

Eine genauere Differenzierung zwischen der Volari ALU und der DeltaChrome ALU ist uns zum aktuellen Zeitpunkt nicht möglich. S3 gleicht die Einfachheit der ALUs durch eine relativ hohe Anzahl dieser wieder aus. Man besitzt schließlich 8x FP24-Rechenwerke. XGI spendierte dem V8 lediglich vier solcher Rechenwerke.

Die GeForce 5700 besitzt pro Pixelpipeline je einen Shadercore (hochkomplexe Allzweckeinheit) und je eine MAD ALU. Der Shadercore beherrscht neben MAD noch viele Spezialfunktionen und Texturoperationen. Bedingt durch eine einfach gehaltene Crossbarlogik kann jedoch nur eine arithmetische Operation pro Takt pro Shadercore durchgeführt werden oder zwei Texturoperationen. Auch hier ist kein Splitting möglich. Somit fallen pro Takt insgesamt entweder vier arithmetische Operationen oder vier Texturoperationen + 2 arithmetische Operationen an.

Die Radeon 9600, welche auf der R300-Architektur basiert, bietet eine deutlich performantere Lösung an. Pro Pipeline existiert eine Allzweck ALU, welche Vec3 +1skalar in Vec4 umwandeln kann. Weiterhin besitzt jede Pipeline eine dedizierte Textur ALU. Somit kann die Radeon jeden Takt "kostenlos" Texturoperationen durchführen, ohne arithmetische Operationen zu blockieren. Es ergeben sich im besten Fall bei vier Pipelines also zwölf Operationen pro Takt (8A Ops + 4 T Ops).

Theoretisch gesehen ist die Radeon trotz relativ wenig Pipelines dank einer hervorragenden Effizienz in Sachen Performance überlegen. Technologisch führt unbestritten die GeForce vor allen anderen. Die Rechenwerke arbeiten mit 32 Bit Floating Point Genauigkeit (alle anderen nur 24 Bit FP), eine statische Flusskontrolle (Sortierung des Shadercodes) existiert, die Anzahl der maximalen Ausführungslänge eines Shaders ist bedeutend größer als die der Konkurrenz, das Vertauschen von Farbkanälen ist (kurz: arbitrary swizzle) in den meisten Fällen "kostenlos".






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

Shortcuts
nach oben