Cosa c'è di nuovo?
HWReload

Registrati e partecipa alle attività del forum

THREAD UFFICIALE DirectStorage di Microsoft, la novità di Windows 11

Liupen

Moderatore
Staff
Iscritto dal:
23 Dicembre 2017
Messaggi
50
1625734125804.png


Microsoft afferma che "Con DirectStorage, che sarà disponibile solo con Windows 11, i giochi possono caricare rapidamente le risorse sulla scheda grafica senza impantanare la CPU".
"Ciò significa che potrai sperimentare mondi di gioco incredibilmente dettagliati resi alla velocità della luce, senza lunghi tempi di caricamento.
I PC Windows 11 "DirectStorage Optimized" sono configurati con l'hardware e i driver necessari per consentire questa straordinaria esperienza."


Questa discussione vuole innanzitutto spiegare cosa sia DirectStorage ma soprattutto rappresentare una base di confronto per chi utilizza (in questo momento “utilizzerà”) questa tecnologia software.


Partiamo dal requisito fondamentale: Windows 11.

DirectStorage, fa parte della piattaforma convergente sulle DirectX 12 Ultimate.
Microsoft spiega in dettaglio come Windows 11 è stato creato per i giocatori: Auto HDR, Direct Storage e DX12 Ultimate fanno tutti parte del pacchetto.

Microsoft in pratica vuole ricreare su PC lo stesso meccanismo già presente sulle nuove console.

Se dovessi spiegare in due parole cosa è il DirectStorage, è presto detto: la tua GPU può caricare cose direttamente dalla memoria dell’SSD, invece di dover chiedere e aspettare che la CPU lo faccia.

Utilizza un proprio algoritmo di compressione/decompressione CON storage veloce (l’idea non è certo nuova, visto che sappiamo bene che differenza di velocità può esserci tra un HDD ed un SSD anche “solo” sata), quindi gli SSD in particolare gli NVMe PCIe 4.

La funzione principale di DirectStorage consiste nell'utilizzare la potenza della GPU e la sua maggiore larghezza di banda della memoria VRAM per decomprimere i dati a una velocità che corrisponda alle velocità di I/O di un SSD.

Microsoft sta lavorando a stretto contatto con i produttori di chip su questa tecnologia. L'azienda sta modificando Windows per fare in modo che il sistema operativo ottimizzi perfettamente anche l'API.



Quando si ottengono i vantaggi?


Nel momento che si caricano i programmi o i giochi, o si cambiano scenari.

La pensata è stata quella infatti di utilizzare i processori della scheda grafica - che in quei momenti non stanno elaborando immagini - per aiutare la CPU di sistema a “uppare i blocchi, elaborare, immagazzinare” le informazioni richieste nei caricamenti... il tutto con prestazioni, decisamente superiori al processo abituale.
La cosa certo non è semplice, perché si devono costruire algoritmi che permettano di gestire, all’atto del comando di caricamento, le modalità di gestione della decompressione, da parte di un hardware che non è stato originariamente pensato per quel compito.
Ma la potenza di calcolo delle GPU è indubbia, come sappiamo da quando i miner ci “fregano” le schede grafiche!

Lo scopo dell’SSD NVMe PCIe 4.0 in questo processo è quello di offrire comunque la migliore velocità disponibile per lo storage, senza creare colli di bottiglia al processo di elaborazione della GPU.
Non andrebbero bene gli HDD per ovvi motivi di velocità limitata e non andrebbero nemmeno bene gli SSD sata perché questi elabora un comando I/0 alla volta e non contemporaneamente come il protocollo NVMe.

Una precauzione necessaria, per ottenere il massimo da questa tecnologia, sarà quella di tenere il Sistema Operativo (Windows 11) su un SSD/HDD comunque diverso da quello su cui sono installati APP e giochi usufruibili con il DirectStorage. Questo perché nei momenti di caricamento dei blocchi (proprio come per la grafica professionale) non si vogliono avere freeze e cali di prestazioni per le funzioni in background del sistema.



Vediamo come funziona e cosa cambia:


1625734573436.png


In genere, la decompressione dei blocchi viene gestita da Direct3D e dalla CPU stessa (nel caso della Serie X, di Intel uno speciale blocco di decompressione su chip) e i blocchi di dati vengono estratti dalle unità di storage tramite l’host di archiviazione di Windows. I dati di geometria e texture contenuti su blocchi compressi o meno, vengono decompressi dalla CPU mediante l’esecuzione degli algoritmi di D3D, quindi passati alla memoria di sistema, e poi copiati nella memoria della GPU (VRAM) per il rendering della scena.

Se lo dovessimo paragonare ad un impianto idrico:

1625734882836.png



DirectStorage cambia le cose saltando la CPU e sfruttando una potenza di calcolo superiore e le caratteristiche di velocità dello storage:


1625734995150.png



La CPU lavora solo mediante l’host di Windows per richiamare i blocchi di dati dallo storage e metterli a disposizione sulla RAM di sistema. Essendo blocchi di dati compressi e non file più piccoli, vengono sfruttate al massimo le caratteristiche di velocità nel trasferimento sequenziale.
Dal punto di vista prettamente “storage” , i dati verranno letti da un nuovo stack di archiviazione di Windows ottimizzato (che include Sampler Feedback Streaming e un nuovo algoritmo di compressione/decompressione) e trasferiti dall'SSD NVMe direttamente alla RAM, che copia i dati direttamente nella VRAM di una GPU, quindi il le risorse compresse utilizzano la potenza della GPU per decomprimere i dati. Queste risorse vengono poi renderizzate dalla GPU


Comparando ancora ad un impianto idrico…

1625735201558.png



DirectStorage si integra direttamente in Direct3D 12, "colmando essenzialmente il divario tra lo storage e la tecnologia GPU", afferma Andrew Yeung , Senior Program Manager di Microsoft.

Microsoft sta lavorando a stretto contatto con produttori di chip come Intel, NVIDIA e AMD per realizzare una tecnologia di compressione basata su GPU per CPU e GPU esistenti.

I carichi di lavoro stanno diventando più granulari: ora gli sviluppatori possono puntare fino al livello MIPS e l'efficienza è incredibilmente importante per ridurre il sovraccarico e fornire i dati necessari. L'API DirectStorage introduce anche un nuovo modello di chiamata basato su batch per mantenere l'SSD e la GPU correttamente alimentati a velocità dati ottimali, garantendo allo stesso tempo che le richieste vengano gestite in gruppi precisi. Al momento le richieste di dati vengono gestite individualmente, il che è inefficiente per carichi di lavoro elevati.

Ciò è reso possibile dalla nuova tecnologia avanzata di compressione/decompressione.
Attualmente, la decompressione è gestita da speciali algoritmi basati sulla CPU, ma con le velocità casuali limitate degli SSD NVMe e le enormi dimensioni delle risorse, il sovraccarico della CPU è un grosso problema.

Naturalmente NON è l’ssd NVMe ad essere più veloce di quello che è stato fino ad ora; è il modo in cui sono organizzati i blocchi memorizzati e poi decompressi, uniti alla potenza di calcolo della GPU… a fare la differenza.

Durante la presentazione di Game Stack DirectStorage, Microsoft ha affermato che stavano lavorando per migliorare lo stack di archiviazione del sistema operativo in generale. I giochi che utilizzano direttamente DirectStorage saranno ovviamente i più ottimali,



Tecnicamente un commento al DirectStorage si può fare.

1625735493209.png


DirectStorage è in buona parte “solo” marketing.

L'intero web si comporta come se fosse una nuova tecnologia, ma in realtà è solo DMA (cioè il dispositivo che accede direttamente ai dati invece che tramite la CPU), tecnologia letteralmente vecchia di decenni.
La grande differenza rispetto a un POV di programmazione, è che verranno realizzati alcuni framework/API per rendere meno laborioso l'utilizzo dei trasferimenti DMA e probabilmente incorporare alcuni "standard" per la formattazione dei dati.
Dal punto di vista dei sistemi, i trasferimenti DMA sono problematici, in pratica il dispositivo potrebbe aggirare le restrizioni di sicurezza ... ecco il motivo per cui è richiesto nei requisiti un chip TPM 2.0.



DirectStorage è una innovazione di un processo nato per migliorare la gestione dei giochi su PC.

Questo sta già accadendo; sempre più giochi si stanno spostando verso un modo di gestire le trame chiamato texturing virtuale, in cui le trame vengono fondamentalmente trasmesse in streaming e caricate sulla GPU su richiesta, quando vengono effettivamente utilizzate, in base a quali trame gli oggetti renderizzati effettivamente richiedono, nel tentativo di ridurre l'utilizzo della VRAM e rendere più fattibile l'uso di texture a risoluzione più elevata.
Il texturing virtuale fa miracoli nel ridurre l'utilizzo della VRAM e aumenta enormemente il budget di memoria effettivo non solo per le trame degli oggetti, ma anche per altre trame che memorizzano dati per determinati effetti, ma richiede enormi quantità di larghezza di banda per rimanere reattive, poiché le trame devono essere costantemente caricate dentro e fuori la VRAM.
Per le trame comunemente usate, i giochi possono aggirare questo problema mantenendo queste trame caricate nella RAM di sistema, pronte per essere caricate quando necessario; ma per le trame che non vengono utilizzate frequentemente, il gioco potrebbe scaricarle completamente dalla RAM di sistema, il che significa che la prossima volta che deve usare la trama, deve andare nello spazio di archiviazione, che ha un'elevata latenza, anche sugli ultimi SSD NVMe, soprattutto perché deve rimbalzare quella trama dalla RAM di sistema (memoria -> RAM di sistema - > VRAM).
I giochi normalmente aggirano questa latenza recuperando versioni più piccole della trama, che spesso sono di dimensioni inferiori e quindi hanno una qualità notevolmente peggiore. Quindi, nei giochi che fanno uso di texture virtuale a volte possono sembrare che le trame siano di bassa qualità e sfocate quando gli oggetti compaiono sullo schermo per la prima volta (cioè l'oggetto è stato appena creato, lo vediamo quando in una scena spunta dietro un altro oggetto o hai appena ruotato la telecamera intorno per guardare gli oggetti dietro di te), mentre le versioni di qualità superiore entrano in streaming.
Questo è ciò che DirectStorage è progettato per ridurre, sia risolvendo numerosi colli di bottiglia nei sottosistemi di storage utilizzati dalla maggior parte dei sistemi (in pratica equipaggiando meglio i sottosistemi di storage per supportare molte richieste di lettura), sia supportando altre API come RTX IO, che eliminano la necessità di rimbalzare texture (e altri dati relativi alla grafica o alla GPU) dalla RAM di sistema consentendo al sistema di trasferirsi dalla memoria direttamente alla VRAM, mediante una decompressione hardware inclusa nella scheda grafica stessa (eliminando la necessità di andare in memoria -> sistema RAM -> CPU -> RAM di sistema -> VRAM quando le trame sono compresse).
Tutto ciò, mi pare ovvio, non potrà fare niente contro i problemi dati dal solito gioco mal ottimizzato…
 
Ultima modifica:
Top