Werbung
Mit der HD-Ära setzt nun auch AMD/ATI den getrennten und dedizierten Pixel- und Vertexshader-Einheiten ein Ende. Allerdings konnten sich die Entwickler bei bereits bestehendem Know-How bedienen. ATI entwickelte bereits den Grafik-Prozessor für Microsofts Xbox 360. Der Xenos getaufte Chip basiert bereits auf einer Unified-Shader-Architektur und ist, trotz seines frühen Erscheinungsdatums, dem R600 ähnlicher als dessen Vorgänger. Der Xenos verfügt über 48 ALUs und einen Chiptakt von 500 MHz. Der R600 protzt hier mit ganz anderen Rohdaten mit 320 Stream Prozessoren und einen Chiptakt von 742 MHz. Die Stream Prozessoren sind in vier SIMD-Arrays organisiert. SIMD steht für Single Instruction Multiple Data und bezeichnet die parallele Verarbeitung von verschiedenen Dateneinheiten mit dem jeweils gleichen Instruktionssatz. Die Dateneinheiten können hier beispielsweise verschiedene Vertices oder Pixel sein.
Die mit 740 MHz getakteten Shader-Arrays werden in der R600-Architektur von einem Ultra-Threaded Dispatch Processor gefüttert. Hier sind je zwei Arbiter und zwei Sequencer Einheiten für jeweils ein SIMD Array (bestehend aus 80 Stream Prozessoren) zuständig. Die Arbiter entscheiden, welcher Thread an das SIMD Array übertragen werden soll und geben diese an die Sequencer weiter. Dieser übergibt dann den Thread zur Berechnung an die Stream-Prozessoren. Die doppelte Ausführung von Arbiter und Sequencer sorgt dafür, dass keine Leerlaufzeiten durch fehlenden Input auftreten.
Die R600 Architektur des Ultra-Threaded Dispatch Prozessors als Schema
Für Texture- und Vertex-Fetch-Operationen stehen noch zwei dedizierte Arbiter und Sequencer bereit, die notwendige Daten aus dem Cache laden und an die SIMD-Arrays übergeben können. Die strikte Trennung ermöglicht es bei besonderer Programmierung, bereits Daten aus dem Cache zu lesen, bevor die eigentliche Verarbeitung statt findet.
Sollten Daten aus dem Vertex- oder Texture-Cache nicht sofort abrufbar sein und der derzeit prozessierte Thread so in einen Wartezustand gezwungen werden, veranlasst der Dispatch Prozessor sofort, dass der Thread in einen idle Zustand übergeht und ein neuer Thread an das nun freie SIMD Array übertragen wird. Dies verhindert ebenso Leerlaufzeigen und sobald die Daten aus dem Cache verfügbar sind, wird der wartende Thread wieder aufgenommen. ATI gibt an, dass der Dispatch Prozessor hunderte von solchen Idle-Threads verwalten kann. Den Stream-Prozessoren sollte also nie langweilig werden.
Die Stream Prozessoren des R600 als Schema
Eine Stream-Prozessor-Einheit besteht aus 5 ALUs, die jeweils FP Multiply-Add Operationen durchführen können. Eine der ALUs ist darüber hinaus in der Lage, auch transzendente Operationen (sin, cos, log,...) durczuführen. Die Branch Execution Unit kümmert sich um die Datenflusskontrolle.
Die Architektur R600 als Schema
Der Command Processor bildet die Verbindung der GPU mit dem Grafiktreiber und nimmt der CPU durch interne Verbesserungen einiges an Arbeit ab. ATI spricht von einer Reduzierung des Overheads vo 30%. Die Setup Engine bereitet die eingehenden Daten für die Stream Prozessoren auf. Die Aufarbeitung besteht aus den Funktionen Vertex assembly and tesselation (Für Vertexshader), geometry assembly (für Geometryshader) und scan conversion and interpolation (für Pixelshader).
Die Texture Units
Die HD2900 XT verfügt über 4 Texture Units. Jede davon besitzt 8 Prozessoren zur Texturadressierung (insgesamt also 32). Diese führen Instruktionen der Shader aus, um bestimmte Texturen abzurufen und zur Verfügung zu stellen. Den eigentlich Ladevorgang übernehmen die 80 Texture Samplers (20 pro TU), diese sind in der Lage einen Datensatz pro Taktzyklus aus dem Cache zu laden. Anschließend durchwandert die Textur eine der 16 (4 pro TU) Texture Filter Units, wo Bildverbesserer wie etwa bilineare oder anisotrope Filter apliziert werden. Die Textur Units der HD2600 und HD2400 haben den gleichen Aufbau.
Die Architektur der HD2400 und HD2600
Die kleineren Geschwister HD2600 und HD2400 unterscheiden sich von der HD2900 XT vor allem in der Anzahl der Shader, aber auch in der Anzahl der Texture Units und der Render Back-Ends. Die HD2600 XT verfügt über 120 Stream Prozessoren, die in 3 SIMDs organisiert sind, die HD2400 XT über 40 Stream Prozessoren, die zu zwei SIMDs zusammen gefassst sind. Ersterer darf dazu auf die Arbeit von zwei Texture Units zurückgreifen, wohingegen letzterer mit der Hälfte auskommen muss. Darüber hinaus fällt die hierarchische Organisation des Texture Caches beim HD2400 zu Gunsten eines Shared-Texture-Caches flach.