@Wadenbeisser
Ja.
Im Prinzip liegt seit GCN eine feinere Trennung der Hardware-Scheduler vor.
Früher wie auch jetzt gab es einen Graphics Command Processor der sich um die ganze Verwaltung der Befehle von dem PCIe-Bus über die Host-CPU gekümmert hat und entsprechend alle Arbeitsaufgaben verteilt hat von Pixel, Vertex, Geometrie, Compute-Shader etc.
Die ACEs sind zusätzliche Hardware-Scheduler (Bei GCN1 nur zwei fixe Compute-Pipes, ab GCN2 ein bis zwei komplexere Compute Engine Blöcke), welche sich nur um die Verwaltung von Compute-Queues und entsprechender Befehle kümmern.
Bei DX12/Vulkan besteht die Möglichkeit Compute-Queues zu verwenden, der Vorteil für die Software/Hardware ist, dass der Entwickler seine Befehle vorsortiert hat und die Abhängigkeiten definiert, entsprechend kann die Hardware die Arbeitslast leichter verwalten.
Ohne Compute-Queues landen alle Befehle in einer Universal-Queue und werden mit weniger Freiheit abgearbeitet und je nach Hardware/Sicherheit seriell verwaltet.
Unter DX11 kümmert sich der Treiber um die Erstellung der Queues und um die ACEs zu verwenden, müsste AMD wohl relativ komplexe Analysen und spezifische Spieleprofile anlegen, um das robust umzusetzen.
Ganz analog hat auch Nvidia Hardware-Scheduler, die sich um die Verwaltung unterschiedlicher Queues kümmern und wo die Befehle letztendlich auf die Hardware verteilt werden.
Die Sache mit den Schedulern dürfte eher nicht ausschlagend sein, sondern die eigentliche Arbeitsweise der State-Machine.
Bei GCN hat AMD viel generalisiert und die Compute-Units berechnen und speichern viele Dinge über die allgemeine Register/Speicher-Hierarchie, wo früher häufig Fixed-Function-Hardware für spezifische Funktionen zuständig war und extra Dinge gesetzt werden mussten.
AMDs CUs können sowohl Compute, als auch 3D-Aufgaben auf einer Recheneinheit verwalten und günstig zwischen den Aufgaben wechseln.
Bei Nvidia scheint das nicht so fein zu arbeiten, da kann nur ein 3D- oder Compute-Kontext pro Compute-Unit verwaltet werden und der Zustand der Maschine muss geändert werden, wenn man den Aufgabentyp wechseln möchte.
Bei Fermi-Maxwell geschieht so ein Context Switch sehr langsam und das Scheduling war statisch, ab Pascal kann Nvidia dynamisch verwalten und ein Context Switch funktioniert deutlich zügiger.
Bei Fermi-Maxwell verwaltet die Hardware auch keine separaten Compute-Queues, Treiber und/oder die DX-Runtime packen alle Draw/Dispatch-Befehle in eine Universal-Queue, bei den GPUs ist es effektiv egal, ob ein Entwickler Compute-Queues verwendet oder nicht, dass Ergebnis müsste nahezu das gleiche sein.