Seite 2: Asynchronous Shader - Teil 2

Asynchronous Shader sind bereits ein Teil der GCN-Architektur und es ist auch nicht weiter verwunderlich, dass eine GPU-Architektur derart vorausberechnend entwickelt wird. Die Ingenieure bei allen CPU- und GPU-Herstellern arbeiten sozusagen immer vorausschauend und planen bereits mit Softwareumsetzungen, die erst in einigen Jahren Anwendung finden werden.

Asynchronous Shader bei AMD
Asynchronous Shader bei AMD

Die ACEs sind bereits Bestandteil der "Graphics Core Next"-Architektur. Im Falle der "Hawaii"-GPU sind acht ACEs, mit der Möglichkeit jeweils acht Queues abzuarbeiten, vorhanden. Alle Grafikkarten aus dem Hause AMD mit GCN-Architektur sollen über diese ACEs verfügen, wobei sich die Anzahl natürlich abhängig vom Ausbau der Architektur unterscheidet.

Asynchronous Shader bei AMD
Asynchronous Shader bei AMD

Acht asynchrone Compute Engines (ACE) stehen in der "Hawaii"-GPU zur Verfügung, die allesamt unabhängig voneinander arbeiten können. Jede dieser ACEs kann wiederum acht unabhängig voneinander arbeitende Queues aufbauen. Für den schnellen Zugriff auf Daten können alle ACEs direkt auf den L2-Cache zugreifen. Über die Dual-DMA-Engine ist dies auch auf den Arbeitsspeicher möglich. Mit 16 GB pro Sekunde wird die volle Bandbreite von PCI-Express-3.0 ausgenutzt.

Asynchronous Shader bei AMD
Asynchronous Shader bei AMD

Asynchronous Shader sollen aber nicht nur die grundsätzliche Performance aktueller Architekturen und Arbeitsweisen von Render-Engines verbessern, sondern auch in speziellen Themenfeldern Verbesserungen bringen. Das Aufkommen der VR-Technologie stellt alle damit beteiligten Hersteller vor neue Herausforderungen, denen prinzipiell auf eine ähnliche Art und Weise begegnet wird - egal ob von AMD oder NVIDIA. Um die Immersion, also das Eintauchen in eine virtuelle Welt störungsfrei gestalten zu können, müssen verschiedene Faktoren übereinstimmen.

Eine möglichst hohe Auflösungen der Displays bei einer möglichst hohen Bildwiederholungsrate sind eine Herausforderung an die Rechenleistung als solches. Eine Auflösung von UltraHD pro Auge bei 90 Bildern pro Sekunde gelten momentan als das vorläufige Optimum. Die dazu notwenige Rechenleistung soll durch die Asynchronous Shader bereitgestellt werden. Zusätzlich reduziert sich die Latenz zwischen Eingabe durch den Nutzer und Darstellung auf dem Display, was für die Immersion ein entscheidender Faktor ist.

Mit den Asynchronous Shader ermöglicht werden auch weitere Technologien. Auf die Funktionsweise von Image Warping und (Asynchronous) Timewarp sind wir in anderen Artikeln schon genauer eingegangen. Die Herausforderungen und Lösungsansätze sind bei AMD und NVIDIA vergleichbar bzw. sogar identisch.

Asynchronous Shader bei AMD
Asynchronous Shader bei AMD

Nun darf man sich sicherlich die Frage stellen, wann und wie sich konkrete Vorteile für Spieler aus den Asynchronous Shader ergeben. Praxisbeispiele sind derzeit noch nicht anzuwenden und auch die bisherigen DirectX-12-Benchmarks sind allenfalls Orientierungen, da sie nur Teilbereiche der Render Pipeline beleuchten können. Bestes Beispiel sind wieder einmal die Draw Calls, deren Anzahl sich im Vergleich zwischen DirectX 11 und Mantle/DirectX 12 dramatisch erhöhen, deren Auswirkungen auf die komplette Render Pipeline aber noch nicht abzuschätzen sind.

Wir werden uns wohl noch gedulden müssen, bis die ersten echten DirectX-12-Anwendungen verfügbar sind, um die Auswirkungen nachvollziehen zu können. Wie groß der Einfluss der Asynchronous Shader dabei ist, versucht AMD in eigenen Benchmarks nachvollziehbar zu machen. Dabei soll in einem Beispiel aus dem LiquidVR-SDK die Leistung ohne Asynchronous Shader mit zugeschalteten Post-Processing-Effekten von 245 auf 158 fps sinken. Werden die Asynchronous Shader nun wieder aktiviert, erreicht die Leistung wieder ein Niveau wie ohne die Post-Processing-Effekte.

Asynchronous Shader bei AMD
Asynchronous Shader bei AMD

AMD hat nun also in der Theorie erklärt wie ein Teil der Leistungs-Zugewinns mit DirectX 12 bei bestehender Hardware erreicht werden soll. Weiterhin schuldig bleibt man aber den konkreten Nachweis nach der Verbesserung der Leistung. Synthetische Benchmarks sind das eine und sprechen von einem Plus von teilweise mehreren hundert Prozent. Dabei werden aber nur Teilaspekte und niemals ein eventuelles Leistungsplus der kompletten Plattform beleuchtet. Dabei ergeht es allerdings nicht nur AMD so, sondern auch allen Anbietern vermeintlicher DirectX-12-Hardware. Mit der Windows 10 Technical Preview sowie den dazugehörigen Treibern wären die notwendigen Voraussetzungen in technischer Hinsicht erreicht, nun fehlt es noch an der Software.

Bei der Frage nach der Unterstützung durch die Hardware sind aber ebenso noch einige Fragen offen. Vermutlich wird es wieder unterschiedliche Ebenen für die Unterstützung von DirectX 12 geben. Mit unterschiedlichen Feature-Leveln hatten wir bereits bei DirectX 11 zu kämpfen und daran wird sich wohl auch mit DirectX 12 nichts tun. Sowohl AMD als auch NVIDIA benennen zumindest ihre letzten beiden GPU-Generationen als kompatibel zu DirectX 12. Im welchem Umfang dies der Fall sein soll, ist derzeit aber noch nicht bekannt.

Mit den Asynchronous Shader gibt AMD einen interessanten Einblick in das Verbesserungspotenzial durch DirectX 12. Die dazugehörige Hardware vorausgesetzt besteht also großes Potenzial für Leistungsverbesserungen, die nun allerdings noch umgesetzt werden müssen. Vermutlich werden wir erst zur Veröffentlichung von Windows 10 im Sommer und mit ersten DirectX-12-Updates der Spiele (oder reinen DirectX-12-Engines) das Ergebnis der Anstrengungen durch AMD und NVIDIA sehen.

Update:

Inzwischen konnten wir auch in Erfahrung bringen, welche GPUs die Asynchronous Shader nun in welcher Form genau unterstützen.

Support der Asynchronous Shader
Architektur Mixed-Mode GPU-Computing
AMD GCN 1.2 (R9 285) 1x Grafik + 7x Compute 8x Compute
AMD GCN 1.1 (R9-290-Series) 1x Grafik + 7x Compute 8x Compute
AMD GCN 1.1 (R7-260-Series) 1x Grafik + 1x Compute 2x Compute
AMD GCN 1.0 (HD-7000- und restliche 200-Series) 1x Grafik + 1x Compute 2x Compute
NVIDIA Maxwell 2. Generation (GTX-900-Series) 1x Grafik + 31x Compute 32x Compute
NVIDIA Maxwell 1. Generation (GTX-750-Series) 1x Grafik 32x Compute
NVIDIA Kepler (GK110) 1x Grafik 32x Compute
NVIDIA Kepler (GK10x) 1x Grafik 1x Compute

Natürlich arbeitet auch NVIDIA an einer ähnlichen Technologie bzw. hat diese mit HyperQ bereits 2012 für den professionellen Bereich vorgestellt. Gegenüber "Fermi" ließ sich "Kepler" mit mehr als nur einer Work-Queue füttern. Bis zu 32 virtuelle GPU-Kerne können so erstellt und mit Daten versorgt werden. Die Implementierung unterscheidet sich allerdings bei AMD und NVIDIA, so dass die absoluten Zahlen sich nicht direkt vergleichen lassen.

AMD erklärt die Funktionsweise der Asynchronous Shader und einen Demo-Vergleich in zwei Videos: