Hirdetés

Hivatalosan is bejelentette a PC-s DirectStorage API-t a Microsoft

Nem hivatalosan persze már pár napja tudni lehet, hogy érkezik, de így a biztos.

A Microsoft DirectStorage API-ja körül már az Xbox Series X bemutatója óta elég nagy a felhajtás. Ez persze nem is csoda, ugyanis a szabványos fájl I/O API-kat 30 éve tervezték, vagyis ezek még a HDD-kre voltak kialakítva, így olyan túl sok I/O műveletet amúgy sem támogatnak, elvégre a limitet sosem a szoftveres oldal jelentette. Ma viszont már igen gyors SSD-ket is lehet vásárolni, az NVMe protokoll képességei is jelentősen túlmutatnak a korábbi alternatíváknál, így időszerű volt, hogy érkezzen egy új fájl I/O API, ami végül a DirectStorage lesz, és mostantól hivatalos, hogy PC-n is elérhető lesz.

A rendszer célja tulajdonképpen kimerül abban, hogy az NVMe meghajtókhoz optimális szoftveres hátteret biztosítson. Manapság sem ritka, hogy az egyes programok a tartalmat tömörítve szállítják, majd azt a processzor segítségével valós időben kicsomagolják. A procedúra viszonylag egyszerű: a tömörített tartalom a rendszermemóriába kerül, abból készül egy kitömörített verzió, ami végül a grafikus vezérlő fedélzeti memóriájában köt ki. A modern videojáték-motorok persze ennél is továbbmennek, mivel bevezették már a streaminget, vagyis egy szoftveres memóriamenedzsment biztosítja azt, hogy az éppen használt tartalmak, ezen belül is ezek kisebb részei ott legyenek a VRAM-ban, míg a nem használt adatok a RAM-ban várják az adatmásolást.

A kialakított működés kifejezetten hatékony, de vannak problémái, ugyanis az efféle streaming eljárások több I/O műveletet eredményeznek, itt pedig jönnek a korlátok. Ha a felhasználónak HDD-je van, akkor az másodpercenként olyan száznál több I/O műveletre nem nagyon ad lehetőséget, persze ez modellfüggő, de nagymértékű eltérés nincs a termékek között, illetve a fejlesztők számára célszerűbb egy olyan határt célozni, amit azért a legtöbb PC képes elérni (ez a HDD-k szintjén olyan 70 IOPS körül van). SSD esetén jobb a helyzet, elvégre az IOPS tempó kifejezetten magas szokott lenni, igazán kár, hogy az aktuális szabványos fájl I/O API-k olyan többletterheléssel dolgoznak, hogy ezek az értékek egészen ritkán közelíthetők meg. Lényegében tehát akármit is csinálunk most, vagy az I/O API vagy a HDD limitálni fog.

A Microsoft a problémára új I/O API-val reflektál, ami végre figyelembe veszi az újabb, NVMe protokollt használó SSD-k működését, és ezek képességeire építve növeli meg a másodpercenként lehetséges I/O műveletek számát. A DirectStorage számos újítást képes kihasználni az NVMe SSD-ken, többek között az NVMe parancslistákat, illetve az I/O műveletek kiadása jóval kevesebb lépcsőből megvalósítható lehet az aktuális megoldásokhoz 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 lesz kezelni másodpercenként, vagyis valóban kihasználhatóvá vállnak az NVMe SSD-k.

A DirectStorage API tartalmaz még szabványosított tömörítési eljárásokat is, ezeket használva pedig elérhetővé válik, hogy magát a kitömörítést ne a CPU, hanem a GPU végezze el. Ez azért fontos váltás, mert amíg a másodpercenkénti I/O műveletek száma nem igazán haladja meg a százat, addig a processzor oldalán ennek nincs igazán nagy terhelése. Tíz-húszezer művelet esetében viszont már bizony kellene 10-20 mag is erre a feladatra. Ezzel szemben a GPU-k az efféle kódolási feladatokat viszonylag hatékonyan megoldják, így tehermentesíteni tudják a processzort. Ennek persze vannak hátrányai is, hiszen a kitömörítést maga a GPU végzi a saját memóriájában, tehát a VRAM-ra vonatkozó igény ezzel az iránnyal nőni fog, elvégre mostantól egy bizonyos ideig tárolni kell a tömörített adatot is. A kitömörített tartalmat aztán majd lehet másolgatni a VRAM és a rendszermemória között a streaming memóriamenedzsmenttől függően. Szintén lényeges tényező, hogy a több I/O művelettel nagyságrendekkel több adat keletkezik, így a GPU-kon belül jó ha kettőnél több DMA motor is ügyködik majd, ugyanis ezzel hatékonyabb lehet az aszinkron copy alkalmazása. Bár maga a rendszer elvan két DMA-val is, de négy DMA például jelentős előnyt fog jelenteni, és a terhelés növekedésével érdemes majd tovább növelni ezt a számot. Végül az is hasznos, ha az adott GPU jól kezeli az aszinkron compute-ot, hiszen a képszámítás a kitömörítés mellett fog zajlani, és utóbbi feladat egészen jól beszúrható a feldolgozás egyes, ALU-k szempontjából közel üresjárati lépcsőibe.

Magának a DirectStorage API-nak egyébként nagyon különleges hardveres igényei nincsenek. Egyrészt NVMe SSD szükséges hozzá, lehetőség szerint minél nagyobb adatátviteli tempót kínálva, míg a GPU oldalán compute shader, minimum két DMA, illetve egy régóta elérhető technológia kell, ami az NVIDIA oldalán GPUDirect, míg az AMD-nél DirectGMA néven futott az elmúlt években. Ezek biztosítják a direkt memóriamásolást a PCI Express eszközök között. Ha mind megvan, akkor már csak egy DirectStorage implementáció kell a kompatibilis hardverek számára. Ebből egyébként látható, hogy papíron elég sok grafikus vezérlő kompatibilis a Microsoft új API-jával, az elmúlt 6-7 évben kiadott VGA-k biztosan. Ugyanakkor számításba kell venni, hogy a DirectStorage várhatóan 2022-ben fog élesedni, addigra számos régi grafikus vezérlő terméktámogatása megszűnik, így az elmúlt két-három generáción túl nem valószínű, hogy készül majd implementáció.

Fontos kiemelni, hogy a DirectStorage API nem egyenlő a Microsoft Xbox Series X Velocity architektúrájával. Leginkább úgy lehetne ezt egyszerűen elmagyarázni, hogy az új generációs adatmenedzsment felét biztosítja. Nyilván egy fontos részét, tehát jó hír, hogy jön PC-re, ez is több a semminél, de a pazarló memóriahasználaton nem segít, sőt, inkább csak ront rajta. A pazarlás ugyanis abból a szoftveres memóriamenedzsmentből következik, amely allokációk szintjén foglalja le a rendelkezésre álló erőforrást, és ahhoz, hogy ez ne így legyen, szükség van egy másik technológiára, konkrétan a finomszemcsés adatmenedzsmentre. Ezt nem a DirectStorage biztosítja, hanem magába a grafikus API-ba kell majd építeni, persze némileg modernizálni kell hozzá a WDDM-et is.

A lényeg tehát az, hogy PC-s szinten a Microsoft az új technológiák felét hozza át egyelőre, a másik fele, a finomszemcsés adatmenedzsmentre majd egyszer realitás lehet, de még nem tudni, hogy mikor.

Azóta történt

Előzmények

Hirdetés