News DirectStorage 1.4: Mit Zstandard werden Spieldaten noch schneller entpackt

für deren Darstellung die GPU kontinuierlich ohne Belastung von CPU und Arbeitsspeicher neue Daten (im Wesentlichen Texturen) in Echtzeit von der SSD in den VRAM nachlädt
Sind Texturen nicht sowieso komprimiert (schon vor einem Vierteljahrhundert gab es S3TC)? Was soll da eine weiter Komprimierung bringen?

Die zStd-Kompression von btrfs bringt z. B. bei meiner Home-Partition fast gar nichts, da dort vor allem Bilder, Musik, Videos, usw. liegen, die ja sowieso schon komprimiert sind.
 
ragnarok666 schrieb:
Jeder der mit VRR spielt mit fps unterhalb der max Hz des Monitors spielt im 100% GPU Limit.
Selbst mit meiner RTX5080 schaffe ich in neuen Titeln selten feste 120fps auf meinem 4k Display, versuche daher die Settings immer so zu setzen, dass die fps möglichst nicht unter 60 fallen, den Rest überlasse ich G-Sync.
Jetzt wo es langsam wieder Sommer wird, spiele ich gerne mit MFG, ... kann dann ein Fps-Limit gut anwenden.
(kühler und leiser in meinem kleinen 10m² Homeoffice)
 
Ich finde es ja beachtlich, fast lustig, das fast alle PC Konvertierungen von Sony's Playstation Spielen das zu unterstützen scheinen. :D

Wolfgang.R-357: schrieb:
Das ganze wurde ja schon vor langer Zeit vorgestellt
Na ja, 3 Jahre sind bei Entwicklung von Spielen jetzt auch nicht die Welt, zumal sich bei Release da sicher nicht jeder Entwickler direkt drauf gestürzt hat.

Blackfirehawk schrieb:
Das Problem ist denk ich Mal die Integration.. und das dass ganze im GPU Limit (also die meisten Spiele) Ressourcen von der GPU nimmt zum komprimieren/dekomprimieren..
Laut Artikel habt es doch der Entwickler in der Hand, ob er dafür CPU oder GPU benutzt?!

MichaG schrieb:
Das sind ja doch mehr als ich dachte.
Und trotzdem lässt Du das Fazit unverändert stehen?!
So schön diese Techniken in der Theorie auch klingen, in der Praxis sind sie bisher so gut wie gar nicht angekommen. Nach dem DirectStorage-Debüt in Forspoken und Ratchet & Clank: Rift Apart gibt es kaum Spiele mit entsprechender Unterstützung. Forza Motorsport und Horizon Forbidden West zählen zu den wenigen dazu.
Klar, 84 Games sind jetzt kein Meilenstein, aber das Feature ist seit 3 Jahren verfügbar und muss sich erst im Markt verbreiten. Die Entwickler müssen Erfahrungen damit sammeln und nachdem es ja leider über ein simples "switch DirectStorage on" hinausgeht, auch Willens sein das zu implementieren, um den Spielern den Benefit zu geben.
 
M@tze schrieb:
Ich finde es ja beachtlich, fast lustig, das fast alle PC Konvertierungen von Sony's Playstation Spielen das zu unterstützen scheinen. :D
Auf Playstation5 ist das halt seit 2020 Standard. Ist halt Vorteil Konsole, man kann neue Features einfach durchdrücken bei neuen Gens
 
Caramon2 schrieb:
Sind Texturen nicht sowieso komprimiert (schon vor einem Vierteljahrhundert gab es S3TC)? Was soll da eine weiter Komprimierung bringen?

Die zStd-Kompression von btrfs bringt z. B. bei meiner Home-Partition fast gar nichts, da dort vor allem Bilder, Musik, Videos, usw. liegen, die ja sowieso schon komprimiert sind.
Videos und Bilder, die du auf der Platte hast und meist irgendwas in Richtung jpeg, png, h264, h265 gehen, haben am Ende des verlustbehafteten Encodings im Regelfall noch eine Runde Entropiekodierung. Entropiekodierung ist grob das, was Zstd auch macht. Entsprechend wenig bringt es, Zstd oder anderere Entropiekodierung auf Datenströme zu werfen, deren Entropie schon minimiert wurde.

Die üblichen Kompressionsverfahren für Texturen haben normalerweise keine, oder allenfalls minimale Entropiekodierung. Hier kann eine bessere Komprimierung erreicht werden.


GerryB schrieb:
glaube ich nicht, das sind extra dediziierte Hardwareunits
GerryB schrieb:
und bitte bei NV nachfragen, wie die dedizierten Hardwareeinheiten für RTX I/O genau aussehen, ob das wirklich
normale ShaderUnits mit beackern
Das Git Repository ist findbar, da ist alles als Computeshader implementiert.
 
  • Gefällt mir
Reaktionen: Caramon2
Caramon2 schrieb:
Sind Texturen nicht sowieso komprimiert (schon vor einem Vierteljahrhundert gab es S3TC)? Was soll da eine weiter Komprimierung bringen?

Die zStd-Kompression von btrfs bringt z. B. bei meiner Home-Partition fast gar nichts, da dort vor allem Bilder, Musik, Videos, usw. liegen, die ja sowieso schon komprimiert sind.

Der Punkt ist berechtigt: BC7 & Co. sind verlustbehaftete Raumkompressen, aber eben keine Entropiekodierer, da ist noch Luft für Zstd. Das Ergebnis ist dann quasi doppelt komprimiert, einmal für die GPU lesbar, einmal für die SSD platzsparend. Bleibt die Frage ob der CPU-Overhead beim Dekomprimieren wirklich kleiner ist als bei den alten ZIP-Ansätzen, oder ob man da nur Nvidia-Marketing nachbetet.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Caramon2
Yosup schrieb:
Na Klasse, noch mehr Silizium, dass in jedem anderen Szenario ungenutzt rumgammelt. Würde man die dafür notwendigen Transistoren in mehr Shadereinheiten stecken, dann stünden diese auch allen anderen Anwendungen zur Verfügung.
Paradoxerweise spart man mit dem Auslagern in speziell dafür entworfene Schaltung tatsächlich sogar Transistoren. Denn diese Funktionen sind ja nicht einfach auf anderen Transistoren ausgelagerter Code, sondern Dekompression oder auch Videodecoding/-encoding haben in der Regel einen festgelegten, immer gleichen Ablauf.

Da werden dann speziell darauf optimierte ASICs verbaut, also der Algorithmus nicht als Code ausgeführt, sondern in der Schaltung fest verdrahtet. In CPUs wird ja auch nicht alles von den allgemeinen Rechenwerken ausgeführt, sondern sowas wie AVX oder AES-NI läuft auch über separate Schaltungen mit eigenen Transistoren. Genauso sieht es mit der hardwarebeschleunigten Encodieren oder Dekodieren von Videos aus, was ebenfalls separate, kleine Blöcke in den GPUs sind.

Denn ASICs bzw. allgemein in Hardware fest verdrahtete Algorithmen haben den Vorteil, dass sie a) schnell sind also die Ausführung auf "Allround-Recheneinheiten" und b) dafür auch deutlich weniger Transistoren brauchen. Shader-Kerne können zig unterschiedliche Algorithmen verarbeiten und brauchen entsprechend Transistoren, um verschiedenste Workloads verarbeiten zu können, auch wenn nicht jeder Workload auch alle davon wirklich verwendet. Bei ASICs braucht man dagegen nur Transistoren für einen einzigen, fest definierten Ablauf. Die können dann zwar nur diese eine Berechnung, sind dafür aber auch entsprechend schnell und klein.

Ein Shader-Kern hat zig Millionen Transistoren, egal ob der gerade Matrix-Multiplikationen, Vektorrechnungen oder Zst ausführt. Ein ASIC für Zstd braucht dagegen dann vielleicht nur ein paar Hunderttausend Transistoren, um Zsdt zu dekromprimieren.
 
  • Gefällt mir
Reaktionen: GerryB
ragnarok666 schrieb:
Wenn man nun mit VRR bei 100% GPU load spielt und DirectStroage knallt einen Burst load auf die Shader, kommt es zu merklichen Rucklern,
Kann ich bei Nvidia nicht bestätigen hab die ganzen Playstation Games mit Directstorage bei 100% Load und VRR gespielt und keine Ruckler gehabt. Bevor es zu Ruckler kommt sinken eher die FPS leicht um den anderen Workload zu bewältigen.
 
@ev4x
Direct Storage sagt erstmal nicht viel. DS ermöglichst, dass die GPU direkt auf den (Nvme) Festspeicher zugreift. Kompression ist an der Stelle optional. Wobei dieser Direktzugriff mitunter schon nicht funktioniert, wenn Bitlocker zum Einsatz kommt und/oder die NTFS-Partition an sich komprimiert wird.
 
TheInvisible schrieb:
Auf Playstation5 ist das halt seit 2020 Standard.
Ist mir klar, wie eben auf der XSX auch. Wollte damit nur sagen, dass Sony es anscheinend relativ durchgehend implementiert bekommt, aber die ganzen anderen großen PC Gamingschmieden tun sich da schwer oder haben kein Interesse?!
 
Dass Third-Party Studios diesen Feature nicht bzw. selten implementieren, dürfte daran liegen, dass es in der Regel Multi-Plattform-Titel sind. Da Sony aber nicht das Direct Storage von DirectX/Microsoft unterstützt, sondern eine eigene, ähnliche Technik nutzt, müssten die Studios immer beides Implementieren (DS bei Xbox und PC, Sony's Variante für die Playstation). Das macht das Ganze aber aufwändiger und komplexer in der Entwicklung des Spiels. Nur eine der Varianten zu implementieren, ist meist auch keine Option, weil die Spiele dann entweder auf der Playstation oder auf XBox/PC einen Performancenachteil haben. Also wird einfach keins von Beidem implementiert und so ein Gleichstand zwischen den Plattformen erreicht.

Wenn das Spiel auch noch für Switch erscheint, käme potentiell noch eine dritte Umsetzung hinzu, da Nintendo sicherlich auch etwas DirectStorage-ähnliches hat.

Bei den Playstation-exklsiven Spiele (von Sony's eigenen Studios) gibt es dieses Problem halt nicht, da dann eh nur die Variante für die Playstation eine Rolle spielt. Bei 3rd-Party Studios ist es aber immer eine Kosten-Nutzen-Abwägung und wird es dann in der Regel nur gemacht, wenn eine Implementierung für alle Plattformen funktioniert und ansonsten bekommt es halt keine Plattform.
 
mibbio schrieb:
Paradoxerweise spart man mit dem Auslagern in speziell dafür entworfene Schaltung tatsächlich sogar Transistoren.
Die Logik erschliesst sich mir nicht. Erstmal sind es zusätzliche Transistoren. Man lässt deswegen ja keine Shader weg.

mibbio schrieb:
Da werden dann speziell darauf optimierte ASICs verbaut, also der Algorithmus nicht als Code ausgeführt, sondern in der Schaltung fest verdrahtet.
Das ist mir klar, und wenn dieser Algorithmus gar nicht gefragt ist, dann liegt dieser ASIC schlicht brach.
Ein Shader unterbricht kurz seine "normale" Tätigkeit, entpackt die Texturen, und rendert danach weiter an Bildern. Eventuell dauert es ne Stunde, bis erneut Daten dekomprimiert werden müssen - bspw wenn man in einem Game eine sehr lokale Quest löst. Dann wird mal wieder für 200 ms was dekomprimiert. Dafür nen ASIC?


mibbio schrieb:
In CPUs wird ja auch nicht alles von den allgemeinen Rechenwerken ausgeführt, sondern sowas wie AVX oder AES-NI läuft auch über separate Schaltungen mit eigenen Transistoren. Genauso sieht es mit der hardwarebeschleunigten Encodieren oder Dekodieren von Videos aus, was ebenfalls separate, kleine Blöcke in den GPUs sind.
AVX passt da IMHO nicht rein, das lässt sich für so viele unterschiedliche Algorithmen gewinnbringend einsetzen, das ist kein "Algo in HW" - sonst alles richtig, ich argumentiere auch nicht gegen das Prinzip ASIC, sondern nur gegen diesen konkreten Fall. Für mich stimmt hier die Balance zwischen Aufwand und Nutzen nicht.
 
M@tze schrieb:
Und trotzdem lässt Du das Fazit unverändert stehen?!

Klar, 84 Games sind jetzt kein Meilenstein, aber das Feature ist seit 3 Jahren verfügbar und muss sich erst im Markt verbreiten.
Ich habe den Abschnitt minimal angepasst und die Liste von SteamDB verlinkt. Allerdings muss man auch die Kirche im Dorf lassen: Von den 84 Titeln sind 13 nur Demos und 10 nur Betas, 1 ist ein Benchmark und 1 ein DevKit. Bleiben also noch knapp 60 übrig. Ob die alle wirklich DirectStorage nutzen oder nur eine DLL haben wie Diablo IV, ist dann auch noch unklar. Oder geht es inzwischen in Diablo IV. Dafür habe ich keine Zeit, das genauer zu recherchieren.
 
  • Gefällt mir
Reaktionen: M@tze, MisterX und Piktogramm
Yosup schrieb:
Die Logik erschliesst sich mir nicht. Erstmal sind es zusätzliche Transistoren. Man lässt deswegen ja keine Shader weg.
Der Unterschied bei der Wirkung ist schlicht, dass ein auf den Shaderkernen ausgeführtes Zstd mehr Rechenleistung in Beschlag nimmt als in einem dedizierten, rein auf Zstd optimierten Funktionsbereich.

Wenn man auf der GPU keine Zstd-Bereich implementiert, sondern sämtlichen Platz für Shader-Kerne nutzt, gewinnt man bei den Shaderkernen vielleicht 0,1 % mehr Rechenleistung (der Platzverlust auf dem Die durch einen "Zstd-Kern" ist minimalst). Gleichzeitig nimmt die Dekomprimierung auf den Shaderkernen aber 1% Rechenleistung in Beschlag. Das ist also weniger eine Entscheidung, was wie viel Diefläche in Anspruch nimmt, sondern was am Ende weniger Einfluss auf die Performance hat, selbst wenn dann Teile des Chips zu zeitweise gebraucht werden.

Die gleiche Entscheidung liegt ja letzlich auch den RT-Kernen und den Video-Engines auf dem Chip zugrunde. Auch wenn das eine nur in Spielen mit RT und das andere bei der Videoverarbeitung gebraucht wird, ist es in Summe performanter (und energieeffizenter) als den Chip maximal möglich mit Shaderkernen vollzuhauen und Alles pauschal darüber zu berechnen.
 
@mibbio Das ist exakt der Fixed-Function vs. General-Purpose Tradeoff, den GPU-Architekten seit Jahrzehnten abwägen. Dedizierte Einheiten sind bei definierten Aufgaben fast immer effizienter als Shader-Overkill, weswegen moderne GPUs mit jedem Chip-Design mehr spezialisierte Blöcke bekommen und immer weniger reine Rechenmaschinen sind.
 
MichaG schrieb:
Oder geht es inzwischen in Diablo IV. Dafür habe ich keine Zeit, das genauer zu recherchieren.
Also laut einer "ist irgendwann geplant" Aussage von für knapp 3 Jahren ist mir da auch noch keine aktuellere Info bekannt.

https://www.pcgamer.com/the-diablo-...we-are-planning-on-enabling-it-in-the-future/
Ergänzung ()

Elan1338 schrieb:
weswegen moderne GPUs mit jedem Chip-Design mehr spezialisierte Blöcke bekommen und immer weniger reine Rechenmaschinen sind.
Hat aber schon irgendwie eine gewisse Ironie. Angefangen haben 3D-Karten als hochoptimierte Fixed-Function Chips, wurden dann zu General-Purpose Rechenmaschinen (die diverse Arten von stark parellisierten Berechnungen können) und jetzt geht es wieder zunehmen zu unterschiedlichen, spezialisierten Funktionsblöcken in den Chips.
 
Als technikinteressierter Gelegenheitsspieler finde ich es erst einmal gut, dass es inzwischen den Spiele Entwicklern und Spielern so viele unterschiedliche technische Möglichkeiten bereitgestellt werden und dann entscheiden können, was für sein Spiel an Technik oder Einstellungen am sinnvollsten ist.
Und das nach und nach Verbesserungen bzw. weitere Möglichkeiten ergänzt werden, sollte man positiv sehen.
Wie sich DirectStorage oder andere technische Neuerungen über Jahre hinweg entwickeln wird, werden wir ja sehen. Kann ja irgendwann noch aus dem Nischen Dasein sich etwas entwickeln.

Zum Beispiel entwickelt sich Linux in Sachen Gaming gerade so rasant, dass es nach langer Zeit wirklich zu deutlichen Markveränderungen wohl kommen wird.
 
Kompression verbraucht Leistung.
Natürlich kann man Datenmengen verkleinern aber auf Kosten von Power.

Forza soll das schon genutzt haben? Nunja, es war auch ein Bugspiel. ;)
Ich hoffe eher darauf das man zukünftig vielleicht durch viele Extraeinheiten/Cores die Datenmenge verkleinern kann die über den "Bus" gehen muss.
PCIe ist jetzt auch nicht unbegrenzt, daher... es ergibt lediglich einen neuen Engpass. ;)

Man sollte auch alle DirectX Versionen auf 10, 11 bereitstellen, sonst wird das nie was.
 
Ich warte noch auf Lederjacke seine Überraschung. die sollte doch zur GDC kommen?!
 
Zurück
Oben