Microsoft hat am 7. November 2022 DirectStorage 1.1 für den PC veröffentlicht. Die wesentliche Neuerung der Version ist die GPU-basierte Dekompression von Spieldaten. Statt die Entpackung komprimierter Assets auf der CPU auszuführen, übernimmt die Grafikkarte diese Aufgabe parallelisiert. Microsoft beziffert den Effekt in eigenen Demonstrationen mit nahezu dreifach schnelleren Ladevorgängen gegenüber der CPU-basierten Dekompression, während die CPU für andere Spielprozesse freigegeben wird.
Im Mittelpunkt steht das Zusammenspiel aus schnellen NVMe-SSDs und moderner Grafikhardware. Der Engpass verlagert sich bei hohen Transferraten zunehmend von der Datenträger-Anbindung auf die Entpackung der komprimierten Daten. Hier greift die GPU-Dekompression, indem sie die hohe Parallelität der Grafikprozessoren für das Entpacken nutzt.
GDeflate als neues Kompressionsformat
Kern der GPU-Dekompression ist das Format GDeflate, das auf hohen Durchsatz beim Entpacken auf der GPU ausgelegt ist und dabei Kompressionsraten im Bereich von Deflate erreicht. GDeflate teilt einen unkomprimierten Datenstrom in Kacheln von je 64 KiB auf. Jede Kachel wird unabhängig komprimiert und lässt sich von einer einzelnen Thread-Gruppe der GPU entpacken, was die parallele Verarbeitung über viele Recheneinheiten ermöglicht. Zusätzliche Parallelität innerhalb der Kacheln steigert die Effizienz weiter.
Der Quellcode für GDeflate sollte nach Angaben von Microsoft bis Ende 2022 unter der Apache-2.0-Lizenz bereitgestellt werden. Für Entwickler stehen über das NuGet-Repository das SDK sowie auf GitHub Beispielanwendungen wie der GpuDecompressionBenchmark und die BulkLoadDemo zur Verfügung, mit denen sich die Einbindung und das Verhalten der GPU-Dekompression nachvollziehen lassen.
Hardware-Voraussetzungen und Integration
Die GPU-Dekompression läuft auf allen Grafikkarten, die DirectX 12 und Shader Model 6.0 beherrschen. Microsoft arbeitet mit AMD, Intel und Nvidia zusammen, die über optimierte Metacommands und angepasste Treiber zusätzliche Leistung bereitstellen. Für die bestmögliche Performance empfiehlt Microsoft die Aktualisierung auf die jeweils aktuellen Grafiktreiber.
Auf der Implementierungsseite weist Microsoft darauf hin, dass größere Ladevorgänge in größeren Stapeln effizienter ablaufen, da sie den sogenannten Tail-Effekt durch eine Unterauslastung der GPU verringern. Als Richtwert für Staging-Puffer nennt der Hersteller eine Größenordnung von rund 128 MiB, um die Ein- und Ausgabe vollständig auszulasten. DirectStorage 1.1 schlägt damit eine Brücke zwischen schnellen Speichermedien und der Rechenleistung moderner Grafikprozessoren auf dem PC.
