Részletezte a PC-s DirectStorage API-t a Microsoft

A vállalat kifejtette a miniális hardverigényeket is, bár itt azért számítani fog, hogy mely architektúrákhoz készül konkrét implementáció.

Az előző év őszén jelentette be hivatalosan a PC-s DirectStorage API-t a Microsoft, amelyről most bővebb felvilágosítást is adtak részletezve a rendszer minimális követelményeit. A fejlesztés célját és lényegét az előbb linkelt hírben már ecseteltük, és a könnyebb érthetőség érdekében a redmondi óriáscég felvázolt egy nagyon szemléletes ábrát.


[+]

Ahhoz, hogy szintet lépjen a PC okosabban és gyorsabban kell betölteni az adatokat. Általánosan belegondolva ezzel egyáltalán nem mondanak újat, de a Microsoft nem elméletről beszél, hanem van is erre a két tényezőre gyakorlati megoldásuk. A probléma csupán annyi, hogy ezeket egységesen csak az Xbox Series S és X gépek kínálják fel. A fenti képen jól látszik a cél, a GPU memóriájába legyen csak az benne, amire szükség van, és legyen olyan gyorsan betöltve, amilyen gyorsan csak lehetséges. Előbbi a Microsoft konzoljain elérhető a sampler feedback streaming (SFS) funkcióval, míg utóbbi a DirectStorage API-val.

Hirdetés

Rögtön megjegyzendő, hogy a PC a DirectX 12 Ultimate megjelenésével már megkapta a sampler feedbacket, ami hasonló funkcionalitást kínál az Xbox Series S és X lehetőségeihez, de ez a DirectStorage API nélkül csak félkarú óriás.


[+]

Szemléltetve a várható változásokat, a Microsoft felvázolta az aktuális rendszert, amely egyszerűen értelmezhető: a GPU számára szánt, erősen tömörített adatok (például textúrák) a rendszermemóriába kerülnek, amit a CPU kitömörít egy GPU számára emészthető formátumba, és így már át is másolható a GPU memóriájába.


[+]

Ezen az új rendszer két módon változtatna. Egyrészt az adatok rendszermemóriába való beolvasása hatékonyabb formában történne, amit az új I/O API biztosítanak, majd innen rögtön másolható az adat a GPU memóriájába, és a DirectStorage szabványosított GPU-s dekódolási eljárásával maga a grafikus vezérlő oldaná meg a kitömörítést.

Az újítások tekintetében két tényezőt vett figyelembe a Microsoft. Az új I/O API reagál az NVMe protokollt használó SSD-k működésére. Konkrétan ezekhez van igazítva, így képes kihasználni többek között az NVMe parancslistákat, illetve az I/O műveletek kiadása jóval kevesebb lépcsőből valósítható meg az aktuális I/O API-hoz viszonyítva. A változás jelentősen csökkenti a többletterhelést, így maga az API akár több tízezer I/O műveletet is képes kezelni másodpercenként. Az adattárolóra vonatkozó minimum követelmények szintjén a redmondiak a PCI Express 3.0-t használó NVMe SSD-ket jelölték meg, de nyilván a nagyobb sebesség jobb teljesítményt jelent majd, így érdemes lehet a PCI Express 4.0-s opciók felé venni az irányt.

Az adatok dekódolása már egy picit bonyolultabb ügy, ugyanis az Xbox Series S és X ehhez dedikált hardvert használ. Ez PC-s szinten nehezen működhetne, hiszen egyelőre nincs egy olyan specifikáció sem, amire a gyártók építhetnének, vagyis a mai PC-s GPU-k nem rendelkeznek hasonló hardveres blokkokkal. Emiatt a Microsoft a gyártókkal együttműködve kifejlesztett egy új tömörítő technológiát, amihez tartozik egy DirectCompute API-n keresztül dolgozó kitömörítő algoritmus. Ennek az előnye, hogy a meglévő, DirectX 12-t támogató hardverek képesek lesznek ezt kezelni, hiszen a compute shadert elég régóta támogatják a GPU-k, ráadásul maga a kitömörítés hatékonyan elvégezhető aszinkron compute módba. Később persze a gyártók biztosíthatnak specifikus hardveres blokkokat erre a problémára, de első körben az volt a cél, hogy a meglévő hardverek is megbirkózzanak vele valahogy.

Fontos megjegyezni, hogy a gyártóknak mindenképpen biztosítani kell egy DirectStorage implementációt a korábban kiadott GPU-architektúrákhoz. Tehát a DirectX 12, mint minimum igény jól hangzik, de kismértékben azért a gyártókon is múlik, hogy mely hardverek lesznek képesek kezelni az új lehetőségeket. Az azért jó hír, hogy a Microsoft próbálta a rendszert úgy felépíteni, hogy nagymértékben a szabványos API-jaikra, illetve magára az operációs rendszerre támaszkodjon, tehát a gyártók dolga viszonylag egyszerű lesz, jórészt csak akarat kell egy kompatibilis implementáció biztosításához.

A DirectStorage API része egyébként egy CPU-s kitömörítő is, ami akkor hasznos, ha az adatot a fejlesztő a rendszermemóriába szánja, ilyenkor az extra memóriamásolás elkerülése érdekében jobb, ha nem a GPU végzi el a dekódolást.

Végül kiemelendő, hogy a DirectStorage API hatékonyabb lesz a DirectX 12 Ultimate-tel, ezen belül is az azt támogató, sampler feedback funkciót kezelő hardverekkel. Ennek segítségével nem csak a sebesség kap kulcsszerepet, hanem a GPU memóriájába is főleg olyan adatok kerülnek, amelyekre az adott képkocka számítása szempontjából mindenképpen szükség van, így a meglévő VRAM-mal hatékonyabban lehet bánni.

A sampler feedback kapcsán megjegyzendő, hogy a DirectX 12 Ultimate csak TIER_0_9-es szintet követeli meg, de a TIER_1_0-s helyett, de ez papíron nem gond, mert a DirectStorage API mindkettőt elfogadja. Ugyanakkor csak az utóbbi szintnek megfelelő hardverek garantálják a funkció minden textúracímzési módban való működését. Ennek köszönhetően a TIER_1_0-t támogató hardvereken sokkal takarékosabban lehet majd bánni a VRAM-mal a TIER_0_9-es opcióhoz viszonyítva.

A Microsoft a PC-s DirectStorage API-t 2022-ben tervezi bevetni, de a fejlesztők a nyár folyamán kapnak egy olyan Windows kiadást, amivel tesztelhetik az újítást, és elkezdhetnek felkészülni rá.

Azóta történt

Előzmények

Hirdetés