DirectStorage 1.1: hry budou dekomprimovat data přímo v GPU, zkrátí to časy nahrávání až 3×

14. 10. 2022

Sdílet

DirectX 12 Autor: Microsoft
DirectX 12
Původní DirectStorage trochu zklamalo. Microsoft teď ale doplní nejdůležitější díl, který doteď chyběl: dekompresi dat z SSD přímo na GPU. Tím tato technologie konečně splní svůj cíl: potenciálně obrovské zrychlení načítání her a zkrácení „loading screenů“.

Po příchodu minulé generace grafických karet a paralelně nové generace konzolí se objevila technologie DirectStorage (Nvidia analogický koncept pojmenovala RTX IO). Jejím smyslem bylo zkrátit nahrávací časy her tím, že by GPU bylo schopno nahrávat textury přímo z SSD, ideálně nějakého rychlého typu NVMe. Zatím se tato technologie moc nerozšířila, ale teď Microsoft chystá vylepšenou verzi 1.1, která by mohla původní přísliby naplnit.

Problém DirectStorage 1.0 byl, že původní koncept počítal s tím, že hra bude nahrávat textury z NVMe SSD přímo do paměti GPU. Při tom měl být úplně obejit procesor. Normálně je nahrávání textur či jiných dat inicializované z procesoru, který nahraje data do své paměti, tam provede dekompresi a poté je pošle grafické kartě (nahrají se do její paměti). Toto jednak procesor zaměstnává, zatímco by mohl dělat něco jiného, ale jde i o potenciální „bottleneck“.

Herní konzole PlayStation 5 a Xbox Series X/S proto přešly na systém, kdy data jsou v komprimované formě, v níž jsou uložené na SSD, natažena přímo do GPU. To je také svými shadery nebo specializovanými akcelerátory dekomprimuje, aniž by se zaměstnala jádra CPU. Takto to mělo být původně i v RTX IO a DirectStorage, ale DirectStorage 1.0 nakonec dekompresi na GPU vypustilo. To znamená, že nakonec načítání stejně šlo skrz procesor a moc se nezrychlilo. A protože z CPU do GPU proudila rozbalená data, trval jim přenos také déle.

Nvidia RTX IO 3 Nvidia RTX IO (rok 2020 při vydání GeForce RTX 3000) s dekompresí na GPU počítalo (zdroj: Nvidia)

DirectStorage 1.1 a GDeflate: komprimovaná data z SSD přímo na GPU

Zřejmě také proto nakonec vývojáři o využití této technologie neměli moc zájem. Teď ale Microsoft zřejmě chybu napraví. Oznámil totiž novou verzi DirectStorage 1.1, jejíž novinkou je právě to, že už se dekomprese konečně bude provádět v GPU. Byl pro to vyvinut speciální na GPU optimalizovaný bezeztrátový formát GDeflate. Deflate je jméno pro algoritmus známý obvykle pod značkou „Zip“, takže toto je zřejmě jeho paralelizovaná forma upravená tak, aby dobře běžela na výpočetních jednotkách GPU.

Toto konečně vytvoří potenciál pro zrychlení načítání her. Pokud hra nenačítá data průběžně a má „loading“ obrazovky, obvykle během nich grafika není zaměstnaná a má mnoho výkonu volného k dekomprimování dat hry. S technologií DirectStorage 1.1 a dekompresí pomocí výpočetních jednotek GPU by se měl zkrátit celkový čas, který tato operace zabere, proti tomu, kdy by probíhala na procesoru počítače. A tím pádem se může zkrátit celková doba, po kterou budete na načítací obrazovku koukat. Microsoft uvádí na modelovém případu až 3× kratší čas načítání.

Test Microsoftu ukazující přínos dekomprese GDeflate na GPU nahrávání se zkrátilo z 236 na 08 sekundy Test Microsoftu ukazující přínos dekomprese GDeflate na GPU proti standardnímu zipu na CPU (zlib). Nahrávání se zkrátilo z 2,36 na 0,8 sekundy (zdroj: Microsoft)

Vývoj této nové verze 1.1 je podle blogu Microsoftu ve finále. Fungovat bude na Windows 11 i na Windows 10, ale na novějším systému by měly být výsledky lepší. W11 má totiž různé optimalizace I/O, které podle Microsoftu již spolu s DirectStorage 1.0 bez GPU dekomprese byly schopné načítání urychlit (prý někdy až o 40 %). Tato zlepšení se aspoň zčásti budou kumulovat s přínosem dekomprese přímo v grafické kartě, který dostanete i na W10.

Po stránce hardwaru bude DirectStorage 1.1 fungovat na všech grafikách podporujících DirectX 12, které splňují Shader Model 6.0. To by měla být všechna GPU AMD s architekturou GCN a novější (Radeon HD 7000) a u Nvidie GPU architektury Kepler (GTX 600) a novější. Nicméně největší přínosy údajně lze čekat na kartách podporujících DirectX 12 Ultimate (GeForce RTX 2000 a vyšší, Radeon RX 6000 a vyšší, Intel Arc).

Výrobci GPU budou mít možnost ve svých ovladačích implementovat optimalizace pro co nejlepší výkon při dekompresi dat algoritmem GDeflate na GPU. Možné je asi i to, že eventuálně budou mít grafiky i nějaké speciální jednotky pro tento účel. Pro starší GPU bude mít Microsoft vlastní implementaci napsanou v DirectCompute, která by snad měla fungovat všude, i pokud grafika nebude mít nové ovladače.

Ačkoliv se u DirectStorage většinou mluvilo o využití rychlosti NVMe SSD, toto není podmínka a fungovat bude i se SATA disky. Ale s NVMe úložišti bude realizován větší potenciál, mělo by platit, že čím větší má SSD sekvenční rychlost čtení, tím lépe. Načítání her využívajících DirectStorage 1.1 by tedy mohla být příležitost, kde se blýsknou highendová SSD využívající rozhraní PCI Express 4.0 ×4 nebo teď nově PCI Express 5.0 ×4 (zejména s procesory AMD Ryzen 7000).

ICTS24

Microsoft neuvádí, kdy bude tato technologie dostupná. Do značné míry to asi tentokrát bude záviset spíše na vývojářích her. Aby se DirectStorage 1.1 s dekompresí na GPU využilo, budou data hry totiž muset být uložena v onom formátu GDeflate a samozřejmě bude třeba v kódu udělat další změny. Nějakou práci snad ušetří přímo SDK a spolu s ním Microsoft vydá také referenční implementaci komprese i dekomprese. Ta bude dostupná pod licencí Apache 2.0, a zřejmě by tedy také mohla být přímo použitá vývojáři (kód pod touto licencí si můžete „vzít“ a použít i v komerčním uzavřeném produktu, na rozdíl od „copyleft“ open source licencí typu GPL).

Zdroje: Microsoft, Tom's Hardware