SmartAccess Storage: Auch AMD hat keine Lust auf lange Ladezeiten

Neue Technologie ist jetzt also "nervig". Und Präsentationsfolien von Entwicklern die an DirectStorage arbeiten sind "Übertreibungen".

Leider kann ich mich tatsächlich nur wiederholen, unser aktuelles Asset-Streaming ist 10+ Jahre alt. Dass da irgendwann mal was neues kommt ist doch wünschenswert!?
Ne, du hast nicht nachgedacht und mich deshalb falsch interpretiert, vermute ich. Diese Diskussion war beim letzten Mal schon ein endloser Kreisel und wiederholte sich ständig. Falls DAS jetzt wieder so läuft, wäre das nervig. Auch das übertreiben bezog sich auf die Diskussion. Lasst es nicht ausufern. Wie gesagt, du hast mich nicht verstanden. Ist aber kein Ding. Kann ja passieren.
 
Er vermengt ständig Dinge miteinander. Er wurschtet Streaming, RTX IO, Sampler Feedback, Direct Storage , Vram Ersparnis und Übertragungsgeschwindigkeiten die ganze Zeit wild durcheinander.

Ich habe nun schon zig mal versucht ihm das zu erläutern, aber er sieht es einfach nicht ein.
Dass die Texturen ein "Feedback" geben bei SFS ist grundsätzlich super, Direct Storage bringt Vorteile beim laden von Daten. RTX IO nutzt GPU Leistung zum dekomprimieren.

Rapid schmeißt alles in einen Topf, rührt kräftig und glaubt das kommt schon morgen und würde Vram Krüppel retten. Dazu präsentiert er uralte Folien die bald 2 Jahre alt sind, passiert ist in der Praxis aber noch nichts.

Ich vermenge gar nichts miteinander, ohne DirectStorage -> kein Sampler Feedback Streaming. Das geht eindeutig aus dem ganzen Material hervor was zur Verfügung steht.

DirectStorage -> verbesserter Storage Stack ermöglicht Batch Bearbeitung, verringert CPU Overhead
Sampler Feedback Streaming -> ermöglicht intelligentes Laden von Texture Tiles
RTX IO -> schnelleres entpacken der Texturen direkt im VRAM ohne Umweg von der SSD PCIe in den RAM und dann erst in den VRAM

Ich behaupte NIRGENDS dass das schon morgen kommt. Aber dass DirectStorage bereits OHNE SFS "VRAM Krüppel" quasi retten kann hat PCGH ja bereits getestet. Ignorier das ruhig, hier der Link dazu: https://www.pcgameshardware.de/Wind...s/Windows-11-Gaming-Benchmarks-Video-1382284/

F1 2021​

F1 2021 ist ein sehr speicherhungriges Spiel, was bedeutet, dass Grafikkarten mit vergleichsweise wenig Videospeicher ziemlich zu kämpfen haben. Grafikkarten wie die RX Vega 56 oder die GTX 1070, die mit 8 Gigabyte Videospeicher ausgestattet sind, profitieren sehr stark von der effektiven Speichernutzung von Windows 11. Dadurch kommt ein immenser Leistungszuwachs zustande, der im Vergleich zu Windows 10, 30 bis 40 Prozent betragen kann.

Far Cry 6​

Auch Far Cry 6 ist sogar mit HQ-Texturen sehr speicherhungrig und auch hier kann die effektive Speichernutzung von Windows 11 punkten. Unter Windows 10 ist die RX 5700 XT deutlich schneller als die RTX 2070 Super, obwohl die beiden ungefähr gleich schnell sein sollten. Wirft man allerdings einen Blick auf die Ergebnisse in Windows 11, dann sind die beiden Karten fast genau gleich schnell. Anscheinend gibt es also ein paar Flaschenhälse unter Windows 10, die Windows 11 ein bisschen effektiver umgehen kann.

Hier auch noch mal von der Konkurrenz:

https://www.computerbase.de/2021-08/3dmark-jetzt-auch-mit-test-zu-dx12-ultimate-sampler-feedback/

Microsoft hat sich mit Sampler Feedback das Ziel gesetzt, dass Entwickler Textur-Streaming und Shading effektiver als bis jetzt einsetzen können. So erlaubt es das Feature, dass die Engine mehr Informationen für ein effektiveres Rendern erhält, sodass zum Beispiel keine unnötig detaillierten Mip-Map-Levels genutzt werden oder auch Shader-Ergebnisse aus vorherigen Frames benutzt werden können, wenn neue nicht benötigt werden. Das spart wenig verwunderlich an Rechenleistung und bringt entsprechend Performance.

Und @Gurdi : Wo bleibt die Erklärung was "kein Wind, kein dynamischen Lichtquellen, kein Nebel, keinerlei Veränderungen" mit dem VRAM zu tun haben sollen?
 
Zuletzt bearbeitet von einem Moderator:
Es gibt auch neues zu dem Thema:

https://compusemble.com/insights/ho...th-fast-storage-to-reduce-memory-requirements

Sampler Feedback Streaming allows for continuous and intelligent loading and eviction of small texture tiles, ensuring that only the textures that are required are displayed at their highest quality. This gives way to higher quality assets than previously possible, while making better use of GPU memory.

The demo starting at the 50 second mark was configured to run in 4K and each object is a 16k x 16k BC7 texture. Ordinarily, this would take up 350MB of GPU memory for each individual object. The demo features 985 such objects, which would take up nearly 300 GB (yes, that's GB, not MB) of GPU memory. However, as can be seen in the video, allocated VRAM usage is just over 3 GB, and dedicated VRAM usage is just over 2 GB! SFS allows for visuals that simply would not otherwise be possible due to memory constraints.

Bitte hier drüber genau lesen! 300 GB an Texturen in der Szene werden mit 3 GB (allocated) / 2 GB (real usage) VRAM dargestellt. Man sieht in der Demo auch wie die SSD nachlädt mit 1,7 GB/s in der anspruchsvollsten Szene.
 
Du vermengst schon wieder alles mögliche durcheinander.

Du hast das Fass aufgemacht mit dem Streaming von einer SSD, was man dir hier die ganze Zeit versucht zu erklären ist, dass man an einem PC dafür keine SSD benötigt. Wir haben ausreichend Zwischenspeicher in Form von Arbeitsspeicher und dieser ist im Vergleich zu jedem stream von einer SSD wesentlich schneller und greift auf X16 zu.

Sampler Feedback muss man nochmal für sich betrachten, du musst endlich mal begreifen dass deine Zitate aus XBOX BLOGS! eben dass sind, Techniken die primär auf diese SOC´s zugeschnitten sind und die sich Ram und Vram teilen und davon auch nicht raue mengen besitzen. Meine GraKa hat soviel wie die XBox gesamt.

JA Direct Storage nutzt auch einem PC, aber primär zum nachladen von Daten oder Leveln.
JA Sampler Feedback spart Speicher ein und zwar im Pool der bereit steht fürs Streaming in den Vram weil das Feedback es ermöglicht weniger Daten vorhalten zu müssen und alte Daten schneller zu verwerfen.

Auf RTX IO gehe ich jetzt nicht wieder ein, das ist eh ein Phantom aus einer Marketingfolie.
 
Kommt diese Technologie nur für AMD Systeme oder auch für Intels ?
 
Kommt diese Technologie nur für AMD Systeme oder auch für Intels ?
Kommt drauf was genau du meinst. Der Artikel redet ja über eine GPU basierte dekomprimierung der Daten. In wie fern dass dann nachher proprietär sein wird ist unbekannt. Auch ist der Weg unklar, Zumindest beim Streaming ob dann hier weiter aus dem Arbeitsspeicher gearbeitet wird oder direkt von der SSD geladen werden soll.
 
Du vermengst schon wieder alles mögliche durcheinander.

Du hast das Fass aufgemacht mit dem Streaming von einer SSD, was man dir hier die ganze Zeit versucht zu erklären ist, dass man an einem PC dafür keine SSD benötigt. Wir haben ausreichend Zwischenspeicher in Form von Arbeitsspeicher und dieser ist im Vergleich zu jedem stream von einer SSD wesentlich schneller und greift auf X16 zu.
Und noch mal, wenn ich nachladen muss und die Daten nicht bereits im RAM liegen, dann schaufelt die CPU erst mal von der SSD in den RAM, dort wird entpackt, und die entpackten Daten dann in den VRAM gelegt. Und Du willst jetzt sagen dass der Transfer von der SSD direkt in den VRAM, komprimiert wohlgemerkt, nicht schneller wäre? Denn eine gesamte Open-World passt nicht in Deinen ominösen "Zwischenspeicher" mit dem Du wohl den RAM meinst.


Sampler Feedback muss man nochmal für sich betrachten, du musst endlich mal begreifen dass deine Zitate aus XBOX BLOGS! eben dass sind, Techniken die primär auf diese SOC´s zugeschnitten sind und die sich Ram und Vram teilen und davon auch nicht raue mengen besitzen. Meine GraKa hat soviel wie die XBox gesamt.
Siehe Beispiel oben, Textur-Daten von 300 GB werden in der Szene verwendet, belegen dabei aber nicht mal 4 GB VRAM. Und nun? Wieso sollte das am PC nicht auch gehen?

Ich glaube Du guckst Dir die Quellen gar nicht an, sonst würdest Du nicht solchen Unfug reden. Wenn ALLE Texturen in 16K bereitliegen und man diese trotzdem mit 8 GB VRAM nutzen kann, dann ist das nicht geil!?


JA Direct Storage nutzt auch einem PC, aber primär zum nachladen von Daten oder Leveln.
Korrekt, zum schnellen nachladen von "Daten", welche auch Texturen sind.

JA Sampler Feedback spart Speicher ein und zwar im Pool der bereit steht fürs Streaming in den Vram weil das Feedback es ermöglicht weniger Daten vorhalten zu müssen und alte Daten schneller zu verwerfen.
Korrekt.

Auf RTX IO gehe ich jetzt nicht wieder ein, das ist eh ein Phantom aus einer Marketingfolie.
Dasselbe Phantom wie das hier beschriebene SmartAccess Storage also? Ist ja AMD's Pendant zu RTX IO.

Kommt diese Technologie nur für AMD Systeme oder auch für Intels ?
SmartAccess Storage (oder RTX IO bei NV) hat nichts mit der CPU zu tun sondern nur mit der GPU.
 
Die Hersteller benennen das bloß anders. Im DirectX und auf der XBOX heisst es dann wahrscheinlich DirectStorage. AMD und Nvida programmieren und implementieren es dann in ihre Treiber und nennen es Smart Access Storage, Nvidia nennt es RTX IO. Ist so ungefähr wohl wie mit dem Raytracing. AMD nennt es Raytracing, Nvidia RTX ON. Wie Intel es nennen wird, ist wohl noch nicht raus. :D
 
Kommt drauf was genau du meinst. Der Artikel redet ja über eine GPU basierte dekomprimierung der Daten. In wie fern dass dann nachher proprietär sein wird ist unbekannt. Auch ist der Weg unklar, Zumindest beim Streaming ob dann hier weiter aus dem Arbeitsspeicher gearbeitet wird oder direkt von der SSD geladen werden soll.
Guckst Du hier:

1653422029954.png


SmartAccess Storage macht sich laut AMD die Leistung der GPU zunutze, um alle Asset-Komprimierungs- und Dekomprimierungsaufgaben zu erledigen. "Herkömmliches Laden von Spielen erfordert eine erhebliche Menge an Rechenleistung, um die Daten des Spiels zu dekomprimieren", erklärt Frank Azor, "dadurch muss die CPU die Dekomprimierung und Datenübertragung durchführen, was zu Latenzen führt, und dies nimmt erhebliche Systemressourcen in Anspruch."
 
Links alter Weg, rechts neuer Weg.
Nach meiner Interpretation bleibt aber der klassische Weg erhalten auf dem PC, das bedeutet Smart Access Storage wird quasi Hand in Hand mit Smart Access Memory arbeiten um den direkten Weg auf den Speicher(Arbeitsspeicher, nicht SSD!) zu beschleunigen.Kern der Technik ist ja nicht der Zugriff auf die Daten auf der SSD, sondern lediglich das dekomprimieren der Daten durch die GPU um die Latenzen deutlich zu verringern und DrawCalls zu minimieren.

Die SSD sorgt dann für die Ersparnis der Datenmenge, diese liegt aber im Arbeitsspeicher nicht im Vram weil durch die schnelle Anbindung der SSD nicht mehr über eine so großen Zeitraum Daten im Arbeitsspeicher vorgehalten werden müssen. Der Vram kann evtl. durch die höhere Granularität profitieren.
 
Zuletzt bearbeitet:
Nach meiner Interpretation bleibt aber der klassische Weg erhalten auf dem PC, das bedeutet Smart Access Storage wird quasi Hand in Hand mit Smart Access Memory arbeiten um den direkten Weg auf den Speicher(Arbeitsspeicher, nicht SSD!) zu beschleunigen.Kern der Technik ist ja nicht der Zugriff auf die Daten auf der SSD, sondern lediglich das dekomprimieren der Daten durch die GPU um die Latenzen deutlich zu verringern und DrawCalls zu minimieren.

Die SSD sorgt dann für die Ersparnis der Datenmenge, diese liegt aber im Arbeitsspeicher nicht im Vram weil durch die schnelle Anbindung der SSD nicht mehr über eine so großen Zeitraum Daten im Arbeitsspeicher vorgehalten werden müssen. Der Vram kann evtl. durch die höhere Granularität profitieren.

SAM (Smart Access Memory) ermöglicht ja nur der CPU auf den gesamten VRAM zuzugreifen. Die FPS Gewinne dadurch sind eher homöopathisch und könnten genauso gut Messungenauigkeiten sein.

Wie die (runterladbare) Demo zeigt ermöglicht DirectStorage + Sampler Feedback Streaming etwas ganz anderes, dass Du das weiterhin ignorierst obwohl ein neues Video und Source verfügbar ist verstehe ich einfach nicht.

Noch mal: 300 GB an Texturen in der Szene werden mit 3 GB (allocated) / 2 GB (real usage) VRAM dargestellt. Man sieht in der Demo auch wie die SSD nachlädt mit 1,7 GB/s in der anspruchsvollsten Szene (ab 1:12 im Video).

Eingebundener Inhalt
An dieser Stelle findest du externe Inhalte von Youtube. Zum Schutz deiner persönlichen Daten werden externe Einbindungen erst angezeigt, wenn du dies durch Klick auf "Alle externen Inhalte laden" bestätigst: Ich bin damit einverstanden, dass mir externe Inhalte angezeigt werden. Damit werden personenbezogene Daten an Drittplattformen übermittelt.
Für mehr Informationen besuche die Datenschutz-Seite.
 
Warum so kompliziert? Entsprechend brauchbare Schemazeichnungen zur Funktionsweise gibt es doch schon länger:
dx_storage_example.png

Bisher:
(1) Die CPU initiiert das Laden einiger (komprimierter) Assets, die über den PCIe-Bus in den RAM geladen werden.
(2) Die CPU läd die Assets aus dem RAM und dekomprimiert diese aufwändig, was relativ viel Rechnenleistung auf einem Teil der CPU-Kerne in Anspruch nimmt und schreibt die dekomprimierten Assets zurück ins RAM.
(3) Die CPU initiiert den Ladceprozess auf die GPU. Die dekomprimierten nun größentechnisch deutlich umfangreicheren Assets werden erneut über den PCIe-Bus transfgeriert in die GPU.
(4) Die GPU hat hier keine nennenswerte Last, da die Assets direkt in den VRAM durchgereicht werden können.

Im Endeffekt sind die Latenzen (sowie die CPU-Last) hoch da die Daten mehrfach zwischen CPU und RAM hin und hergeschoben werden, bevor sie in der GPU ankommen.

Mit DX Storage (mit vollem Funktionsumfang):
(1) Die CPU initiiert den Ladeprozess der komprimierten Assets und diese werden nun unmittelbar via PCIe in die GPU geladen.
(2) Die Last auf der GPU steigt etwas, da hier nun der Dekompressionsprozess (optional mit Spezial-HW) erfolgt und dann werden die Assets direkt ins VRAM geschrieben.

Insgesamt bleibt die Last auf der GPU jedoch relativ gesehen dennoch vergleichweise klein, sodass die das quasi so nebenbei miterledigen kann und für einen derartigen Task eine Vielzahl an vollwertigen general purpose CPU-Rechenkerne gemäß altem Schema ersetzen kann (und natürlich die Latenzen ebenso signifikant reduziert).


Zu berücksichtigen:
Die aktuelle Implementation von Microsoft ist noch ein Zwischenschritt, denn obwohl bspw. nVidia sein RTX IO mit Ampere ankündigte, scheint man zusammen mit Microsoft noch nicht so weit zu sein die Daten direkt über die GPU zu dekomprimieren. Ampere wird das absehbar können aber der Treiber ist vermutlich noch nicht soweit in Verbindung mit der notwendigen Abstimmung mit dem API von MS. Aktuell dekomprimiert immer noch die CPU die Assets jedoch hat bereits das optimierte und verbesserte Storage API zu deutlichen Durchsatzverbesserungen ggü. dem angestaubten Alt-API *) geführt, sodass man schon beträchtliche Verbesserungen beim regulären Laden von Szenen demonstrieren konnte.
In der oben skizzierten finalen Implementation wird man dann das haben, was Cerny damals vollmundig zur PS5 vorstellte, also das dynamische Ein- und Ausladen von Assets in Echtzeit in Abhängigkeit des Viewports, was man am Ende als eine Art virtueller VRAM-Vergrößerung ansehen kann.

Der Knackpunkt, wie ich es schon zuvor erklärte, wird jedoch sein, dass Games die Vollimplementation nicht so schnell in ihre Gamemechanik als essentiellen Bestandteil integrieren können, da man sonst Alt-(PC-)Hardware kategorisch ausschließen würde, was wiederum dem Vertrieb mit Blick auf die Umsätze nicht schmecken wird. Hier wird man abwarten müssen, wann erste PC-Titel damit erscheinen werden. Im ersten Schrritt werden erst mal nur die Ladebalken kleiner. ;-)

*) Das alte Windows-I/O-API ist natürlicherweise auf HDDs mit vergleichsweise wenigen parallelen Requests und bestenfalls 50 - 100 MB/s ausgelegt, vielleicht gar noch weniger als Maximum, denn ich kann mich nicht erinnerern, dass Microsoft, seitdem HDDs sich auch in Bereichen von 100 bis etwa maximal 200 MB/s bewegen können, da in der Zwischenzeit mal nennenswert dran geschraubt hat und entsprechend wurde es höchste Zeit für eine größere Überarbeitung mit Blick auf GB-schnelle NVMe's mit Millionen IOPS.
 
Zuletzt bearbeitet:
Derzeit wird es wohl so ablaufen in erster Instanz. Man geht von der SSD weiter in den RAM, umgeht aber die CPU und lädt komprimiert zur GPU die dann selbst das dekomprimieren übernimmt.

Microsfot-DirectStorage.jpg
 
Habt ihr die Diskussion schon einmal geführt?

Also ich finde die Ansetze spannen, aber auch gut erklärt.

Gute Diskussion @Gurdi @PCGH_Torsten & @raPid-81 ! :)
Jupp, leider. Brauchst nur nach den ersten News dazu suchen. Dann siehst du wie oft sich das im Kreis drehen kann. Inzwischen ist zwar Zeit vergangen, aber wir sind sowohl technisch, als auch vom Informationsmaterial nicht weiter... leider.
 
Kommt diese Technologie nur für AMD Systeme oder auch für Intels ?

Es handelt sich um AMDs Implementation von Direct-X-Standard für Radeons. Wenn du die Radeon in einen PC mit Intel-CPU einbaust, hast du die gleiche Technik. Bei Nvidia heißt das Gegenstück RTX IO. Wie es mit Intel-Grafikkarten aussieht, kann man noch nicht sagen, aber ich erwarte auch eine Umsetzung. Nur hat Intel bezüglich GPUs noch nicht alle Karten auf den Tisch gepackt.


Und noch mal, wenn ich nachladen muss und die Daten nicht bereits im RAM liegen, dann...

... hat der Spiele-Entwickler Pfusch gebaut.
Mehr gibt es dazu eigentlich nicht zu sagen.


Nach meiner Interpretation bleibt aber der klassische Weg erhalten auf dem PC, das bedeutet Smart Access Storage wird quasi Hand in Hand mit Smart Access Memory arbeiten um den direkten Weg auf den Speicher(Arbeitsspeicher, nicht SSD!) zu beschleunigen.Kern der Technik ist ja nicht der Zugriff auf die Daten auf der SSD, sondern lediglich das dekomprimieren der Daten durch die GPU um die Latenzen deutlich zu verringern und DrawCalls zu minimieren.

Drawcalls werden durch die angesprochenen Techniken eigentlich nicht beeinflusst.


Warum so kompliziert? Entsprechend brauchbare Schemazeichnungen zur Funktionsweise gibt es doch schon länger:
Anhang anzeigen 1395653
Bisher:
(1) Die CPU initiiert das Laden einiger (komprimierter) Assets, die über den PCIe-Bus in den RAM geladen werden.
(2) Die CPU läd die Assets aus dem RAM und dekomprimiert diese aufwändig, was relativ viel Rechnenleistung auf einem Teil der CPU-Kerne in Anspruch nimmt und schreibt die dekomprimierten Assets zurück ins RAM.
(3) Die CPU initiiert den Ladceprozess auf die GPU. Die dekomprimierten nun größentechnisch deutlich umfangreicheren Assets werden erneut über den PCIe-Bus transfgeriert in die GPU.
(4) Die GPU hat hier keine nennenswerte Last, da die Assets direkt in den VRAM durchgereicht werden können.

Im Endeffekt sind die Latenzen (sowie die CPU-Last) hoch da die Daten mehrfach zwischen CPU und RAM hin und hergeschoben werden, bevor sie in der GPU ankommen.

Mit DX Storage (mit vollem Funktionsumfang):
(1) Die CPU initiiert den Ladeprozess der komprimierten Assets und diese werden nun unmittelbar via PCIe in die GPU geladen.
(2) Die Last auf der GPU steigt etwas, da hier nun der Dekompressionsprozess (optional mit Spezial-HW) erfolgt und dann werden die Assets direkt ins VRAM geschrieben.

Dieses Schema hat einiges an Geschmäckle. Den Schritt "Prozessor lädt gepackte Daten aus seinem Speicher und schreibt sie entpackt zurück" gibt es zum Beispiel bei beiden Vorgehensweisen. Aber in dieser Darstellung wird er nur bei GPU-basierter Dekomprimierung unterschlagen. Ebenso irreführend ist die Darstellung mit Dateitransport über eine zentrale Zwischenstufe "PCI-E". Die gibt es nicht. Es gibt getrennte PCI-E-Verbindungen von der SSD zur CPU und von der CPU zur Grafikkarte. Die Daten erst in den Arbeitsspeicher zu packen, verdoppelt also weder die Wegstrecke, wie hier dargestellt, noch führt es zu doppelt belastendem hin und her in der Hälfte des Systems. Vor allem wird aber der weitaus schnellere Transfer zwischen RAM und GPU im Vergleich zu SSD und GPU ebenso unterschlagen, wie die Möglichkeit Schritt 1 und 2 bei herkömmlichem Vorgehen asynchron im Voraus durchzuführen.

Solange ein Spiele-Entwickler den letztgenannten Punkt nicht vermasselt, sieht der Datenfluss im unmittelbaren Rendervorfeld wie folgt aus:
- dekomprimierte Daten im RAM
- werden mit 50-80 GB/s vom IMC an den PCI-E-Root-Port transferiert
- der sie mit bis zu 32 GB/s (künftig: 64 GB/s) an die GPU weiterleitet
- die sie in den VRAM schreibt
- und damit rendert

versus
- komprimierte Daten im Flash
- werden mit bis zu 3-7,6 GB/s vom Controller an den PCI-E-Root-Port transferiert (ggf. indirekt, je nach System)
- der sie mit diese 3-7,6 GB/s an die GPU weiterleitet
- die sie in den VRAM schreibt
- dann Stück für Stück in den Cache lädt
- entpackt
- und zurück in den VRAM schreibt
- und damit rendert
 
Es handelt sich um AMDs Implementation von Direct-X-Standard für Radeons. Wenn du die Radeon in einen PC mit Intel-CPU einbaust, hast du die gleiche Technik. Bei Nvidia heißt das Gegenstück RTX IO. Wie es mit Intel-Grafikkarten aussieht, kann man noch nicht sagen, aber ich erwarte auch eine Umsetzung. Nur hat Intel bezüglich GPUs noch nicht alle Karten auf den Tisch gepackt.




... hat der Spiele-Entwickler Pfusch gebaut.
Mehr gibt es dazu eigentlich nicht zu sagen.




Drawcalls werden durch die angesprochenen Techniken eigentlich nicht beeinflusst.




Dieses Schema hat einiges an Geschmäckle. Den Schritt "Prozessor lädt gepackte Daten aus seinem Speicher und schreibt sie entpackt zurück" gibt es zum Beispiel bei beiden Vorgehensweisen. Aber in dieser Darstellung wird er nur bei GPU-basierter Dekomprimierung unterschlagen. Ebenso irreführend ist die Darstellung mit Dateitransport über eine zentrale Zwischenstufe "PCI-E". Die gibt es nicht. Es gibt getrennte PCI-E-Verbindungen von der SSD zur CPU und von der CPU zur Grafikkarte. Die Daten erst in den Arbeitsspeicher zu packen, verdoppelt also weder die Wegstrecke, wie hier dargestellt, noch führt es zu doppelt belastendem hin und her in der Hälfte des Systems. Vor allem wird aber der weitaus schnellere Transfer zwischen RAM und GPU im Vergleich zu SSD und GPU ebenso unterschlagen, wie die Möglichkeit Schritt 1 und 2 bei herkömmlichem Vorgehen asynchron im Voraus durchzuführen.

Solange ein Spiele-Entwickler den letztgenannten Punkt nicht vermasselt, sieht der Datenfluss im unmittelbaren Rendervorfeld wie folgt aus:
- dekomprimierte Daten im RAM
- werden mit 50-80 GB/s vom IMC an den PCI-E-Root-Port transferiert
- der sie mit bis zu 32 GB/s (künftig: 64 GB/s) an die GPU weiterleitet
- die sie in den VRAM schreibt
- und damit rendert

versus
- komprimierte Daten im Flash
- werden mit bis zu 3-7,6 GB/s vom Controller an den PCI-E-Root-Port transferiert (ggf. indirekt, je nach System)
- der sie mit diese 3-7,6 GB/s an die GPU weiterleitet
- die sie in den VRAM schreibt
- dann Stück für Stück in den Cache lädt
- entpackt
- und zurück in den VRAM schreibt
- und damit rendert
Hier wird aber "unterschlagen", dass mit "direct storage" idr auch nur ein 1/10 - 1/20 (eher weniger als mehr!) der Datenmenge geladen werden muss. Des Weiteren ist, wenn bei "direct storage" von Kompression die Rede ist, eine "Transit-Kompression" gemeint, diese nimmt den Nachteil der geringeren Kompression in kauf, um niedrigere Latenzen und eine "billigere" Dekompression zu ermöglichen.
 
Die Dia's vereinfachen zweifellos. Am Ende geht es jedoch darum den CPU-Overhead deutlich zu reduzieren und das kann DX Storage anscheined schon bereits in der aktuellen Version mit dem modernisierten API (und immer noch CPU-basierter Dekompression), das auf IOPS-starke Massenspeicher, also vorrangig NVMe's *), ausgelegt ist.

Bis zu massenhaftem "on-the-fly-Streaming" und der direkten Integration in die Game-Mechanik wird jedoch wohl absehbar noch einige Zeit vergehen, da man hier voraussichtlich abwarten wird, bis der Marktschnitt über ausreichend moderne Hardware verfügt.

*) Aber selbst schon bei SATA-SSDs einen deutlichen Mehrwert bieten soll.

**) DX Storage ist gemäß Micrsoft auf dem PC übrigens kein simpler Port der Xbox-Lösung, sondern ein speziell auf den PC zugeschnittenes API (das auch nicht das CPU-lastige general purpose Win32 I/O ersetzen soll, sondern speziell für diesen HighPerf-Streaming/Gaming-Workload ausgelegt wurde. Die Windows 10-Variante setzt mit einer Zwischenschicht auf dem Win32 I/O auf und kann daher nicht alle Performancezugewinne realisieren.)

***) So etwas wie ein Peer-2-Peer PCIe-Transfer von einem Device direkt zum anderen am RAM vorbei scheint in der aktuellen DX Storage-Definition (ggf. gar aus Sicherheitsgründen?) auch gar nicht vorgesehen zu sein. - Wie später die GPU-basierte Dekompression hier eingehängt wird und ob die Daten zurück ins RAM geschrieben und dann über den Staging Buffer regulär hochgeladen werden oder ob es eine Art direkten Pass-Through durch die GPU geben wird, weiß ich aktuell nicht.

@openSUSE: DX Storage gibt keine (De)Kompression vor und definiert keine Datenformate und Algorithmen diesbezüglich. Was hier Zwischengeschaltet wird bestimmt der Entwickler, der hier natürlich immer Kompressionsstärke gegen Rechenlast abwägen muss.
Mit der später folgenden Erweiterung für eine GPU-basierte Dekompression kann man leichter höherwertige Algorithmen verwenden, da die GPU potentiell über weitaus mehr freie und vor allem spezialisierte Ressourcen als die CPU verfügt.
 
Zurück