Anmelden mit
Registrieren | Anmelden

Mehr Leistung: 4D- statt 5D-Shader

Radeon HD6970 und HD6950 im Benchmark-Test: Cayman als Fermi-Killer?
Von

Der Wechsel von VLIW5 zu VLIW4 - Oder warum weniger durchaus mehr sein kann

Den grundlegendsten Wechsel hat AMD durch die Änderung der Shadereinheiten vollzogen. Betrachten wir zunächst rückwirkend noch einmal Cypress. Interessant sind dabei die auf dem Blockschaltbild ausgewiesenen SIMD-Kerne (Single Instruction, Multiple Data), auch bekannt als Array- oder Vektorprozessoren. 

Dieses Schema stellt einen sogenannten "Streaming Processor" (SP) innerhalb des SIMD-Kerns dar, der dazu ausgelegt ist, jeweils einen Befehl komplett und eigenständig abzuarbeiten. Dazu müssen wir jedoch noch wissen, dass ein Befehl aus mehreren Komponenten besteht. Es sind also stets mehrere Operationen notwenig, um einen Befehl komplett auszuführen. Zurück zum Kern. Mit x, y, z und w sind insgesamt 4 Recheneinheiten (ALUs) vorhanden, die gemeinsam pro Zyklus jeweils eine Rechenoperationen mit einfacher Genauigkeit, und damit im Idealfall die Komponenten eines Befehls gleichzeitig abarbeiten können. Darüber hinaus existiert eine sogenannte "T-Unit". Mit dieser speziellen Funktionseinheit (SFU) kommt eine fünfte Einheit hinzu, die neben all dem, was die 4 restlichen Einheiten auch können, auch noch transzendente Funktionen wie Sinus, Cosinus usw. beherrscht. Diese Einheit t ist also höher spezialisiert als x, y, z und w. Zusätzlich ist noch eine "Branch unit" implementiert. Wir merken uns: ein SP arbeitet stets nur einen einzigen Befehl ab, die einzelnen Komponenten des Befehls werden von den Einheiten x, y, z und w parallel, also gleichzeitig berechnet.

Was machen eigentlich Intel und Nvidia?

Blicken wir an dieser Stelle kurz über den AMD-Tellerand hinaus hinüber zu Nvidia und Intel und vergleichen die Arbeitsweise. Beide nutzen 4 ALUs - jedoch nicht parallel für eine Aufgabe, sondern für jeweils eine Aufgabe, deren Komponenten dann in Reihe abgearbeitet werden. Das bedeutet, dass mit dieser Konstellation jeweils 4 Befehle gleichzeitig abgearbeitet werden können. Die dabei notwendigen 2-4 Komponenten pro Befehl werden jedoch nacheinander in die einzelnen ALUs geschoben. In Folge dessen braucht ein Befehl dann auch mehrere Takte (Zyklen), je nach Anzahl der enthaltenen Komponenten.

Gretchenfrage: Was ist unterm Strich effizienter - eine Arbeitsgruppe, in der vier Kollegen gleichzeitig jeweils einen von 4 möglichen Arbeitsschritten ausführen (also jeder einen anderen), womit sich in der Summe ein fertiges Arbeitsprodukt pro Gruppe ergibt, oder eine Gruppe, in der die vier Kollegen jeweils alle Schritte nacheinander erledigen, also pro Takt einen, bis vier Produkte fertig sind? In der Wirtschaft hätte man jetzt die Frage Fließband- gegen Nestfertigung. Die Konsequenzen sind die gleichen.

Ein Problem und eine folgerichtige Lösung: VLIW4

Das eigentliche Problem für AMD stellt sich in der möglichst optimalen Auslasung der SPs dar. Während man bei Intel und Nvidia brav Komponente nach Komponente nachschieben kann und somit auch Befehl nach Befehl nahtlos abgearbeitet bekommt, bleibt bei AMD oft Brachland liegen. Wenn ein Befehl nur 2 Komponenten beinhaltet, bleiben 2 ALUs und die T-Unit im jeweiligen Takt beschäftigungslos. Strom verbrauchen sie deswegen trotzdem, Platz auch. Dies ist aber nur eines der Probleme. Das gewichtigere Problem ergibt sich in der logischen Folge. Wenn man schon nicht sicherstellen kann, dass alle ALUs genutzt werden, was passiert dann mit der T-Unit? Diese benötigt auf Grund der höheren Funktionsdichte mehr Platz auf dem Chip als eine normale Unit. Im Gegenzug ist aber kaum sicherzustellen, dass diese Einheit bei jedem Befehl auch genutzt wird. Hier werden Platz und Ressourcen verschenkt. Man kann das Ganze am Ende mit 4 Sporttaschen und einem großen schweren Koffer vergleichen, den man ständig leer mit sich herumschleppt, rein aus der Angst heraus, es könnte irgendwann mal ein größerer Gegenstand zu transportieren sein.

Den eingeschlagenen Weg der parallelen Abarbeitung jeweils eines Befehl hat AMD auch mit der Umstellung auf VLIW4, nennen wir es vereinfacht auch 4D-Shader, nicht verlassen. Man hat im Gegenzug aber die spezialisierte "T-Unit", also den schweren Koffer komplett weggelassen. Falls wirklich eine derartige Operation benötigt wird, kann mit Hilfe von 3 der 4 enthaltenen ALUs jederzeit eine der benötigten Funktionen nachgebildetet und ausgeführt werden. Dies spart Platz und vereinfacht sogar die Verwaltung und Zuweisung der einzelnen Befehle erheblich. Man erhofft sich bei gleichem Platz 10% mehr Rechenleistung pro mm². Ob diese Rechnung aufgeht, das wird im Folgenden die Praxis in Form unserer Benchmarks erweisen müssen.

Ihre Reaktion auf diesen Artikel