News DirectStorage 1.1: SDK von Microsoft und GPU-Treiber von AMD, Intel, Nvidia

Stefan1200 schrieb:
Durchaus denkbar, die Geschwindigkeitsvorteile gegenüber ohne DirectStorage sind dann aber vermutlich nur noch messbar, aber nicht mehr spürbar. Wobei es dennoch die Last der CPU senken dürfte, wenn auch 1.1 auf SATA SSDs läuft. Nur wirklich schneller laden vermutlich nicht, dafür könnte dann beim Gaming ein CPU Flaschenhals wesentlich seltener werden.
Das ist nicht richtig. Ich weiß auch gar nicht wie alle darauf kommen, man müsse eine NVMe SSD haben. Auch mit SATA SSDs sind die Unterschiede sehr groß. Und das ist Direct Storage 1.0.
1668009547330.png
 
  • Gefällt mir
Reaktionen: LukS und Tanzmusikus
T3rm1 schrieb:
wie alle darauf kommen, man müsse eine NVMe SSD haben. Auch mit SATA SSDs sind die Unterschiede sehr groß.
NVMe brauchst du damit die GPU direkt auf die SSD zugreifen kann und die Daten gar nicht mehr über die CPU müssen (keine Ahnung ob das überhaupt schon von einem GPU Treiber unterstützt wird). Und dieses Feature war das erste was zu DirectStorage bekannt wurde und auch am häufigsten thematisiert wurde. Windows zeigt ja auch zB im Game Panel an, ob die SSD diese Schnittstelle unterstützt ("Direct Storage supported" nur für NVMe SSDs mit dem Standard Treiber).

Das heißt natürlich nicht, dass DirectStorage die API nicht auch auf anderem funktioniert, aber eben nicht mit dem Direktzugriff.

Aber deine Beispielzahlen sagen doch gar nichts über DirectStorage. Hier wird ja effektiv nur die Geschwindigkeit von NVMe SSD, SATA SSD und HDD verglichen. Zwar in einem Test der die DirectStorage API verwenden mag, aber da nicht verglichen wird, wie das aussah ohne DirectStorage lässt das Null Aussagen zu DirectStorage selbst zu. Und das gute NVMe SSDs um Welten schneller sind als HDDs ist ja hoffentlich jedem klar.

Gibt ja einen Grund warum das erst jetzt zu einem großem Thema wird. Bisher war die CPU halt nicht der Flaschenhals beim Laden, sondern die Datenträger. Mit schnellen NVMe SSDs erlaubt die klassische Variante gar nicht mehr die SSD vollständig auszulasten wegen dem ganzen Overhead um die Auszunutzen braucht es neue APIs und Vorgehensweisen. Die können zwar auch mit alten Datenträgern gehen, aber könnte dort evtl keine Auswirkungen haben, weil die CPU relativ gesehen kaum Anteil an der Gesamtzeit hat.
 
  • Gefällt mir
Reaktionen: Tanzmusikus
Ray519 schrieb:
NVMe brauchst du damit die GPU direkt auf die SSD zugreifen kann und die Daten gar nicht mehr über die CPU müssen (keine Ahnung ob das überhaupt schon von einem GPU Treiber unterstützt wird). Und dieses Feature war das erste was zu DirectStorage bekannt wurde und auch am häufigsten thematisiert wurde. Windows zeigt ja auch zB im Game Panel an, ob die SSD diese Schnittstelle unterstützt ("Direct Storage supported" nur für NVMe SSDs mit dem Standard Treiber).
Das ist schlicht und einfach falsch. Woher nimmst du deine Informationen. Lass mich dir eine seriöse Quelle geben: https://www.anandtech.com/show/1761...-11-with-gpu-decompression-finally-on-its-way
Technically, DirectStorage works against any storage device, including SATA SSDs, but it is explicitly being optimized for (and deliver the best results on) systems using NVMe SSDs.
Ich hoffe damit haben jetzt alle begriffen, dass sie falsch lagen.
 
  • Gefällt mir
Reaktionen: tomcat66
T3rm1 schrieb:
Woher nimmst du deine Informationen. Lass mich dir eine seriöse Quelle geben:
In dem ich versuche viele Quellen dazu relativ aufmerksam zu lesen. Wie zB auch die Blog Posts von Microsoft selbst.
Ich glaube eher du hast Probleme damit, anderer Leute Posts aufmerksam zu lesen, denn ich sehe nicht wo ich Anandtech hier widerspreche.

Ich hatte doch schon selbst, explizit geschrieben, dass DirectStorage mit jeder Art von Datenträger in Windows gehen kann, weil es eben nur eine API ist. Aber die ganzen Verbesserungen da hinter und wofür die API überhaupt entwickelt wurde zielen auf NVMe SSDs. (siehe zB https://devblogs.microsoft.com/directx/directstorage-is-coming-to-pc/ oder https://www.nvidia.com/en-us/geforce/news/rtx-io-gpu-accelerated-storage-technology/)
Die ganze Idee ist ja, dass du der API nur sagst was du wohin geladen brauchst und falls es dann HW und Treiber gibt, wie zB RTX IO von Nvidia ist das Ziel, dass die GPU die Daten direkt von der NVMe anfordern kann und auch auf der GPU dekomprimiert. Das ist also eine sehr spezielle Optimierung die DirectStorage unterstützen können soll / wofür es unter anderem entwickelt wurde. Und solche Optimierungen sind bisher immer nur zusammen mit NVMe SSDs erwähnt worden und für max 600MB/s SATA SSDs lohnt es sich wahrscheinlich auch nicht neue Treiber zu schreiben um die CPU zu umgehen, weil sie dafür noch schnell genug wäre.

Und wie ich bereits auch erwähnte, hat Windows 11 in der XBox Game Bar -> Settings -> Gaming Features einen Abschnitt Direct Storage wo man mehr Details über den Support vom eigenen Rechner lesen kann:
1668012799249.png


Und hier wird von Windows selbst ganz klar zwischen "Non-NVMe drive" und "DirectStorage supported" unterschieden. SATA-SSDs kriegen hier auch nur ein "Non-NVMe drive".

Noch ein Beispiel direkt von den Windows 11 Requirements: (https://www.microsoft.com/en-us/windows/windows-11-specifications)
1668013208440.png


Ich möchte deine Aufmerksamkeit explizit auf die folgende Zeile lenken:
requires an NVMe SSD to store and run games that use the Standard NVM Express Controller driver and a DirectX12 GPU with Shader Model 6.0 support.

Und nochmal: damit sage ich nicht, dass die DirectStorage API nicht gehen wird auf SATA SSDs oder HDDs oder ohne unterstützte GPU. Das wird für die Rückwärtskompatbilität auch unterstützt und ist von Microsoft schlecht betitelt.
Damit sage ich, dass die großen Optimierungen die mit DirectStorage kommen und den Grund für diese Entwicklung darstellen, aktuell scheinbar nur für NVMe-SSDs vorgesehen sind (wie es auch Sinn macht, wenn man sich mit dem Kontext beschäftigt). Dem entsprechend sollter der Unterschied von klassisch zu DirectStorage auf NVMe-SSDs mit unterstützten GPUs mit optimierten Treibern wesentlich größer sein.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Tanzmusikus
Ray519 schrieb:
NVMe brauchst du damit die GPU direkt auf die SSD zugreifen kann

Ray519 schrieb:
denn ich sehe nicht wo ich Anandtech hier widerspreche.
Merkst du was? Deine Aussage ist falsch und widerspricht der Aussage von Anandtech.
Aber lassen wir das. Du willst es einfach nicht einsehen. Ist okay für mich. Warten wir einfach auf die ersten Spiele im Januar 2023 und gucken dann, ob es mit SATA SSD geht oder nicht.
 
Mit den Tests in diesem Forum wissen wir doch schon, dass ein Spiel die DirectStorage API auch auf SATA SSDs nutzen kann. Das habe ich auch nie anders behauptet. Die Frage ist was es dann noch bringt, denn eine API und ihre Implementierung können 2 völlig unterschiedliche Dinge sein. Alles was ich gemacht hatte, war die Frage in den Raum zu stellen, ob GPU Decompression auch ohne NVMe Quelle geht, was @Mordekai2009 mit einem Test nachweisen konnte.

Ich habe das Gefühl, dass du nicht verstehst, was ich mit "GPU direkt Zugriff auf die SSD" meine. Das ist nämlich etwas das von Nvidia für RTX IO beschrieben wird, aber von Anandtech in diesem Artikel überhaupt nicht erwähnt wird.
Das wäre eine weitere potentielle Optimierung, zusätzlich zu der GPU Decompression, die vermutlich noch nicht existiert und vllt erst mit zukünftigen DirectStorage Versionen kommt, wenn überhaupt.

Ansonsten helfen deine Zitate nicht wirklich um mir einen Widerspruch aufzuzeigen...
 
  • Gefällt mir
Reaktionen: Tanzmusikus und Mordekai2009
@T3rm1 @Ray519
Danke für Eure Diskussion!
Ich konnte daraus nun eventuell ein paar Details von DirectStorage besser verstehen.

Im Artikel wurde das kompakt in einem Satz zusammengefasst:
Die Spieldateien werden durch die bessere Ausnutzung des Leistungspotenzial von NVMe-SSDs schneller übertragen (seit DirectStorage 1.0) und ohne Umweg über die CPU direkt in der GPU schneller dekomprimiert (seit DirectStorage 1.1), was unter anderem die Ladezeiten im Spiel signifikant verringern kann.
Es scheint hier im Text so zu sein, dass DS 1.0 zwar den Datentransfer optimiert, aber die CPU noch immer zur Dekomprimierung genutzt würde. Das verringert wohl bereits den Overhead. Macht mich aber stutzig, denn mit "DirectStorage" würde ich das nicht verbinden. Was soll sonst "Direct" bedeuten?

Einzig das Dekomprimieren von CPU-optimierten Kompressionsformaten auf der GPU könnte ich mir vorstellen. Ob das GPUs bzw. dessen Grafiktreiber/Spiele-API aber wirklich können? :confused_alt:

https://www.deskmodder.de/blog/2022...es-an-spielleistung-wird-deutlich-verbessert/



TL;DR
DirectStorage 1.0 -> bessere Leistung durch allgemein* verbesserten Datentransfer (Queue usw.) zur GPU
DirectStorage 1.1 -> nochmals bessere Leistung durch auf GPU optimierte Dekompressionsformate

*also weniger Overhead für alle Datenträger (NVMe-SSD, SATA-SSD und ggf. auch HDD?)

Für PCIe NVMe-SSDs sollen extra optimierte Queues in der Firmware und in der DS-API Verwendung finden.
Auch die Paketgrößen (32kB) könnten dabei noch optimiert werden.


🤓
 
Tanzmusikus schrieb:
Was soll sonst "Direct" bedeuten?
Ich denke weil es zur Familie von DirectX, DirectSound, DirectCompute etc. gehört.

Tanzmusikus schrieb:
Ob das GPUs bzw. dessen Grafiktreiber/Spiele-API aber wirklich können?
Microsoft bietet die Dekompression von GDeflate universell als Shader an, daher kommt die Anforderung mit DX12 + Shader Model 6.

Besser wäre es aber, wenn die GPU Treiber das selbst implementieren und besser auf die jeweilige Architektur angepasste Umsetzungen verwenden, bis hin zu diskreter HW speziell dafür. Keine Ahnung ob die ganzen GPU Treiber mit Support das jetzt schon selbst umsetzen oder noch die Vorlage von Microsoft nutzen.

Klassische Dateizugriffe sind pro Datei und jede Datei für sich. Mit richtig schnellen NVMe SSDs wird das schnell zum Flaschenhals. Was ich bisher gesehen habe ist die DirectStorage API hauptsächlich Asynchron, Batched und parallel. Dh. du beantragst das Laden / Kopieren von vielen Fragmenten von vielen Dateien an verschiedene Stellen und musst nur auf ein einzelnes "fertig" warten anstatt alles von Hand zu kontrollieren und zu managen. Das ist notwendig für einen hohen Durchsatz und bietet viele Möglichkeiten Hardwarebeschleunigung oder parallele Verarbeitung einzusetzen.

Wie das dann umgesetzt wird mit Datenträgern die eben nicht auf so eine hohe Parallelität ausgelegt sind und wo die Treiber aus einer viel sequentielleren Zeit kommen ist die Frage. Da kann man bestimmt schon noch einiges an OS Overhead wegoptimieren, die Frage ist, ob die Entwickler das für Sinnvoll empfinden da jetzt noch viel Entwicklungsaufwand in AHCI etc zu stecken. Sie erwähnen ja an allen Stellen, dass NVMe wie die Faust aufs Auge passt zu den Prinzipien von DirectStorage.

Und ob der relative Anteil dieses Overheads mit dem OS nicht vllt nur ein Bruchteil der Zeit ausmacht, den eine SATA-SSD oder HDD mit dem Laden verbringt.

So, ich habe die selbe Demo jetzt gerade mal von einer HDD und auf einer SATA SSD ausgeführt:

HDD - WD Red Pro 14 TB
GPU Decompression stabil 1.43 GB/s, ~ 1.3% CPU Last
CPU Decompression: stabil 1.45 GB/s, 5-6% CPU Last. Wobei die Rohdaten hier schon irgendwo gecached werden, weil der Taskmanager anzeigt, dass meine Festplatte mit 416MB/s liest, während das passiert, was die HDD maximal aus ihrem Cache kann. Sprich wenn man nicht die selbe Datei immer wieder liest oder die Daten technisch gesehen in den DRAM des Laufwerks passen, wird das eher noch langsamer ausfallen.

SATA SSD - Samsung 850 Evo 250 GB in USB3 10G Gehäuse (maximale Datenrate der SSD laut Taskmanager 540 MB/s während dem Benchmark, habe keine SATA SSD intern in einem PC mit DirectStorage fähiger GPU):
GPU Decompression: schwankt 1.36 GB/s und 1.85 GB/s, ~ 3 % CPU Last
CPU Decompression: schwankt zwischen 1.2 GB/s und 1.9GB/s, maximale CPU Last 45%, avg eher 30%

CPU ist 12900K, GPU ist 3090, Datenmenge 8.68 GB für alle Tests.


Im Gegensatz zum Laden von NVMe SSD geht die CPU Auslastung auch bei CPU Decompression nicht über 50%, das erklärt dann auch wieso es nichts bringt, die CPU langweilt sich noch und die muss den Overhead ja abarbeiten. @Mordekai2009 hatte ja schon gezeigt, dass es aber doch einen Unterschied machen kann, wenn die CPU von der Decompression voll ausgelastet wird, was bei Ivy Bridge und SATA SSD wohl der Fall ist.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Tanzmusikus
Ray519 schrieb:
Ich denke weil es zur Familie von DirectX, DirectSound, DirectCompute etc. gehört.
Ja, das ergibt natürlich Sinn. Ich meinte das allerdings eher inhaltlich als namentlich. 😉
Aber inhaltlich wäre jede Technik, was nicht Natur ist (also direktes Sehen, Hören, ...) sowieso nicht "Direct". :D

Ray519 schrieb:
Microsoft bietet die Dekompression von GDeflate universell als Shader an, daher kommt die Anforderung mit DX12 + Shader Model 6.
Und was hat das mit dem "Dekomprimieren von CPU-optimierten Kompressionsformaten auf der GPU" zu tun?
Tanzmusikus schrieb:
Einzig das Dekomprimieren von CPU-optimierten Kompressionsformaten auf der GPU könnte ich mir vorstellen.
Da hast Du meinem Gedankengang bezügl. DS 1.0 vermutlich nicht ganz folgen bzw. deuten können.

https://www.nuget.org/packages/Microsoft.Direct3D.DirectStorage/1.1.0
https://learn.microsoft.com/en-us/g...verviews/directstorage/directstorage-overview



Zu deinen weiteren Ausführungen stimme ich dir zu. Die GPU-Hersteller sind natürlich auch am Optimieren.
Irgendwann nächstes Jahr werden wir dann Spiele mit DirectStorage-API zu Gesicht bekommen.
Freue mich da z.B. auf "Forspoken".

Dein DS-Demo-Test zeigt sehr gut, dass man mit einer HDD keine Verbesserung mit DirectStorage erhält.
Bei Nutzung einer SATA-SSD verringert DS zumindest Einiges an Overhead, sodass die CPU entlastet wird.

Mir NVMe lohnen sich dann auch wieder relativ starke CPUs, wenn die GPU besonders viel zu leisten hat.

Grüße
 
Tanzmusikus schrieb:
Und was hat das mit dem "Dekomprimieren von CPU-optimierten Kompressionsformaten auf der GPU" zu tun?
Nichts, das hatte ich überlesen. Aber das wird vermutlich nichts bringen, weil die GPU Architektur darin einfach nicht gut ist und moderne CPUs schneller. Höchstens mit dedizierter HW dafür in der GPU.

Tanzmusikus schrieb:
dass man mit einer HDD keine Verbesserung mit DirectStorage erhält.
Zeigt es leider nicht, weil die Demo ja immer die API verwendet und nur gpu decompression abschaltet. Das heißt wenn es den Overhead für einzelne Zugriffe reduziert oder signifikant parallelisiert würde man auch hier davon profitieren.
Aber ich denke es zeigt, dass die CPU sich langweilt und auf den Datenträger wartet. Reiner Overhead würde die CPU also einfach wegstecken. Die Frage ist dann wie hochoptimiert und parallelisiert existierende Spiele an dieser Stelle sind. Im Vergleich zu einem strikt sequentiellen Laden wo die nächste Datei erst angefordert wird, wenn die davor fertig geladen wurde, könnten DirectStorage noch einen positiven Effekt haben, aber das würde dann eigentlich nur eine Optimierung einfacher machen für die Entwickler, das hätten die auch ohne DirectStorage entkoppeln können.
 
  • Gefällt mir
Reaktionen: Tanzmusikus
Ray519 schrieb:
Nichts, das hatte ich überlesen. Aber das wird vermutlich nichts bringen, weil die GPU Architektur darin einfach nicht gut ist und moderne CPUs schneller. Höchstens mit dedizierter HW dafür in der GPU.
Meine Überlegungen bezogen sich auf die Unterschiede zwischen DS 1.0 und DS 1.1.
Ich frage mich, ob bei DS 1.0 noch immer die CPU die Dekomprimierung übernommen hat ... oder die GPU.
Im Falle der GPU wäre das ja irgendwie fraglich, ob die GPU überhaupt CPU-optimierte Kompressionsdaten verarbeiten kann. Wenn nicht, dann übernimmt ja immer noch der Prozessor diese Aufgabe.

Im letzteren Falle ist das für mich halt verwunderlich, dass M$ die Technik als "DirectStorage" vermarktet, aber eben immer noch die CPU involviert ist. Hatte aber im anderen Beitrag schon weitergedacht, weil "Direct" gibt's ja so gar nicht. Ich würde es eher als "direkter" bzw. "More Direct" bezeichnen.

Dies träfe dann wohl auch auf DS 1.1 zu. Hier ist ja die CPU (mehr oder weniger) außen vor ... aber das Ganze geht immer noch von der NVMe-SSD -> über den RAM als Cache -> in den VRAM der GPU -> wird dann von der GPU dekomprimiert/entpackt -> und schließlich wieder im VRAM abgelegt bis die Daten 'genutzt' werden.

Ray519 schrieb:
Zeigt es leider nicht, weil die Demo ja immer die API verwendet und nur gpu decompression abschaltet. Das heißt wenn es den Overhead für einzelne Zugriffe reduziert oder signifikant parallelisiert würde man auch hier davon profitieren.
Okay, das wäre wohl anzunehmen, dass es minimale (messbare) Verbesserungen bringen könnte.
Das wäre aber wahrscheinlich (für uns Nutzer) kaum merklich.
 
  • Gefällt mir
Reaktionen: tomcat66
duskstalker schrieb:
der PC ist halt für microsoft nicht mehr die lead-plattform.
Das hört man gefühlt seit 20 Jahren, realistisch aber seit 10. Vorallem jetzt, wo die Konsolen endlich auf identischem Unterbau arbeiten, wird MS kontinuierlich besser für Gamer als je zuvor. Wenn das so wäre wie du sagst, würden die nicht die XBox und PC Spiele so gleichstellen.
 
Zurück
Oben