Microsoft brengt DirectStorage-update uit voor ondersteuning van hdd's

DirectStorage 1.2 krijgt de mogelijkheid om gebufferde data te gebruiken, om zo ook hdd's te kunnen ondersteunen. Microsoft zegt dat ontwikkelaars vroegen om de mogelijkheid voor hdd-ondersteuning. DirectStorage is een sdk die laadtijden in games kan verkorten.

De sdk gebruikte voorheen alleen niet-gebufferde data, om te voorkomen dat er 'onnodige kopieën' van bestanden werden gebruikt. Zo zou DirectStorage zo snel mogelijk data op de gpu kunnen krijgen. Hdd's gebruiken echter gebufferde bestanden, om zo de lange zoektijden te verhullen, schrijft Microsoft. Ontwikkelaars moesten daarom andere code gebruiken voor games die op ssd's draaien en games die op hdd's draaien.

Sommige ontwikkelaars zeiden tegen Microsoft het fijner te vinden als ze dezelfde code konden gebruiken voor zowel hdd's als ssd's, daarom komt Microsoft nu met een ForceFileBuffering-instelling. De game moet volgens Microsoft wel kunnen herkennen wanneer de speler het spel op de hdd of ssd installeert, zodat DirectStorage niet-gebufferde bestanden kan gebruiken als de speler een ssd gebruikt.

Microsoft zegt niet of DirectStorage ook op hdd's voor kortere laadtijden zorgt. Het bedrijf heeft wel eerder gezegd dat de sdk een grotere impact heeft op systemen met snellere ssd's dan op pc's met langzamere ssd's. De 1.2-versie fikst verder bugs en zou sneller moeten werken dan de 1.1-versie.

DirectStorage is een sdk die ontwikkelaars kunnen implementeren in games en moet sneller laden mogelijk maken door om te kunnen gaan met de hogere i/o-requests die mogelijk zijn met NVMe-opslag. De eerste versie verscheen ruim een jaar geleden; in november kwam een update die gpu-decompression toevoegt voor kortere laadtijden. De sdk wordt voor zover bekend niet breed gebruikt; Forspoken gebruikt DirectStorage wel.

Door Hayte Hugo

Redacteur

21-04-2023 • 15:15

45

Reacties (45)

45
44
20
2
0
12
Wijzig sortering
Dat klinkt mooi, maar begrijp ik het goed dat dus alleen NVME SSD's en HDD's ondersteund (gaan) worden en dus niet SATA SSD's?
Of mis ik iets?
DirectStorage werkt ook met SATA-ssd's, maar werkt beter met NVMe-ssd's :)
Oooh dat wist ik helemaal niet joh. Die info had ik helemaal gemist ;)
Dankjewel !!
sterker nog, een developer in de directx discord heeft DirectStorage op verschillende media geprobeert, en het werkt zelfs vanaf floppy disks (dit was al maanden terug), het werktte toen ook al vanaf HDDs, Alleen deze update is er dus voor om te zorgen dat de performance wat beter wordt.
Maar dan verlies je toch het nut van DirectStorage. DirectStorage is eigenlijk DMA aan je GPU, dus je NVMe kan makkelijk zonder de CPU een deel geheugen zenden naar de GPU omdat ze op dezelfde bus zitten. Er is in de meeste gevallen (voor gamers) geen fysieke verbinding tussen een floppy of SATA controller, want voor de meeste platformen zit de controller in de CPU (zodat je dingen doet zoals Intel VROC of RSTe - RAID controller in de CPU).

Je moet al een aparte SAS/SATA controller op de PCIe bus hebben om er voordeel aan te hebben. Dus het is misschien wel mogelijk dat Microsoft DirectStorage uitbrengt als een tussenlaag maar alsnog de CPU gebruikt, dan wordt alles eigenlijk een klein beetje trager (vanwege de extra stap), misschien niet zichtbaar en ten voordele van de developer die zelf de I/O niet meer moet regelen.

[Reactie gewijzigd door Guru Evi op 26 juli 2024 19:26]

Wat developers hier vragen is om 1 enkele manier te krijgen om te werken in plaats van 2 keer een stuk code te moeten schrijven omdat niet elk systeem vandaag DirectStorage ondersteunt. Het vereenvoudigd de code voor hen
Laat microsoft er maar voor zorgen dat de Storage Expansion Card vervangen gaat worden voor iets met een kabeltje waar je zelf kan kiezen welke sdd je er in wil drukken in een behuizing.

Je hebt al vergelijkbare snelheid boven de 3000 Mb/s voor 49 euro 1 TB en 2 TB rond de 95 euro. Het is absurd dat ze 210 euro vragen voor 1 TB en zelf 370 euro voor 2TB euro terwijl we hier niet praten over een sdd van plus 7000 MB/s ofzo, maar gewoon 3300 MB/s range

Voor 15 euro kon je al iets kopen en daar kun je gewoon sdd m2 geheugen in drukken alleen heb ze dat weer gepatched, dus snap echt niet dat ze zo vasthouden aan seagate.

Dit zorgt er voor dat ik steeds games moet verplaatsen naar de exteren SDD etc.

Dit is laatste is ook de reden dat mijn zoontje zijn xbox s ingeruild heeft voor een mooi korting op een PS5 en zit er zelf ook over te denken als na de zomer dit niet opgelost gaat worden. 1 TB sdd in de series X is gewoon te weinig en laat me ook niet uitmelken.

[Reactie gewijzigd door Noresponse op 26 juli 2024 19:26]

Maar wat is het eigenlijke nut van ondersteuning van sata HDD's in dit geval, die hebben een relatief kleine buffer van een stuk of wat MB's (128mb is veel voor HDD's) is dat voldoende om er baat bij te hebben voor DirectStorage? Zodra van de schijf zelf weer ingelezen moeten worden ga je volgens mij al merken hoe "achterhaald" een mechanische schijf is?
kopieer eens wat een bestand van een paar GB van je SSD naar een HDD en zie hoe de performance instort, het feit dat je compressed bestanden (zelfs een paar tientallen van 10MB bvb) vanuit de HDD-cache rechtstreeks naar je VRAM kan laten decompressen zou al een aanzienlijk verschil zijn al moet je daarvoor wel specifiek je data op voorbereiden ipv alles in 1 grote file.
Maar wat is het eigenlijke nut van ondersteuning van sata HDD's in dit geval, die hebben een relatief kleine buffer van een stuk of wat MB's (128mb is veel voor HDD's) is dat voldoende om er baat bij te hebben voor DirectStorage? Zodra van de schijf zelf weer ingelezen moeten worden ga je volgens mij al merken hoe "achterhaald" een mechanische schijf is?
Het zal nog steeds sneller zijn dan vanaf die zelfde HDD data die naar de GPU moet, eerst door alle hardware-abstractielagen van het OS heen omhoog te halen naar user-space, en vandaar middels een API call naar de GPU te verschepen. Het zal weliswaar niet veel schelen. (Druppel; gloeiende plaat; etc.) Dat wel.

De echte reden om dit breder te trekken is wss. zodat er gewoon één code pad over blijft wat developers maar hoeven te implementeren, 'en het werkt gewoon overal.'
Het werkt wel met SATA, maar is optimized voor NVME:
Technically, DirectStorage works against any storage device, including SATA SSDs, but it is explicitly being optimized for (and deliver the best results on) systems using NVMe SSDs.
Zie https://www.anandtech.com...ession-finally-on-its-way
Dankjewel. En ik maar denken dat het exclusief voor NVME SSD's was...
Weer wat geleerd vandaag :)
Er bestaan geen NVMe HDD's. HDD's zijn altijd SATA of SAS. SSD's kunnen wel in SATA of NVMe formaat.

Uit dit artikel haal ik dus dat nu de SATA hdd's toegevoegd worden aan de ondersteuning.

[Reactie gewijzigd door Luchtbakker op 26 juli 2024 19:26]

HDD's zijn altijd SATA of SAS.
Of PATA of SCSI of … of … of…. 😜
En dat te bedenken dat we ooit van Pata naar Sata zijn gegaan…
We gaan nu met NVME weer naar parallelle benadering 8)7

[Reactie gewijzigd door JBVisual op 26 juli 2024 19:26]

Of MFM of RLL of ….
2 hdd’s op 1 PATA aansluiting, master & slave. Niet vergeten de jumper aan de achterzijde van je hdd goed te zetten! 😀
NVME HDD ondersteuning. :+
Is DirectStorage zoiets als Mesa's shadercache op Linux?

[Reactie gewijzigd door TheVivaldi op 26 juli 2024 19:26]

Nee, iets heel anders. Het gaat erom dat texture-data rechtstreeks vanaf de SSD in het VRAM geladen kan worden. Normaliter word een texture eerst in het geheugen ingeladen, en daarna naar de GPU geüploadet.

Op een HDD of SATA SSD werkt dit eigenlijk helemaal niet, maar DirectStorage gaat nu dus regelen dat ontwikkelaars daar geen omkijk naar hebben. Die kunnen altijd DirectStorage aanroepen en de texture word dus ingeladen ongeacht de hardware.
Nuja, dat is dus ook wat Mesa's shadercache doet: texturen in het geheugen laden om de laadtijden te verkorten.
Weet je zeker dat dat is wat het doet? Want een shader is wat anders dan een texture. Dan nog maakt het ook heel erg uit wélk geheugen. Textures alvast in je ram-geheugen zetten is leuk maar ook dat houdt een keer op. Dat gezegd hebbende, zelfs áls dat is wat het doet is het nog steeds niet hetzelfde. DirectStorage is geen cache, het is een techniek die ervoor zorgt dat texturedata veel sneller in het vram staat dan voorheen. In zekere zin is het daarom juist het absolute tegenovergestelde van een cache, want het maakt in de ideale situatie caching overbodig.
Een shadercache is hoofdzakelijk een stel shaderfiles dat in plaats van at-runtime live gegenereert en meteen gebruikt wordt, van tevoren al gegenereerd wordt en gecached op de schijven en soms in het geheugen.

Op sommige punten is het te vergelijken, bij DirectStorage zorgt het ervoor dat er geen extra cpu-overhead nodig is tijdens het laden van de textures voor (de-)compressie, dat wordt dan allemaal vooraf gedaan en mag zo rechtstreeks mogelijk het VRAM ingeschoven. Bij het shadercache is het eerder om te voorkomen dat shaderfiles heel groot worden en/of tich keer gehercompileerd zouden worden, wat tijdens het laden veel onnodige strainbop de cpu zou kunnen geven.

Shaders zijn tegenwoordig zo complex/uitgebreid dat het een optimalisatie is om een aantal dingen met andere statics (bijv) in te laden ipv heel veel vars ervoor aan te roepen die bijv MIPs van de shadowmap moeten selecteren(met als bonus dat die vars beschikbaar blijven voor andere dingen)

Het is ook in een aantal gevallen de rede dat voor sommige instellingswijzigingen het herladen van een level of herstarten van de game benodigd kan zijn; dat hangt verder compleet af van hoe de developers hen shaders laten pre en hercompileren.

Noot; dit is allemaal sterk versimpeld, mede omdat ik zelf al bijna 4jr weinig zelf meer met shaders heb gedaan.
A, bedankt voor de uitleg - nu begrijp ik het al beter! :)
Niet slecht. Maakt het waarschijnlijker dat devs gewoon DirectStorage gaan gebruiken als het ook voor oudere HDD zal werken.
Ik verwacht geen betere performance met een HDD, maar gewoon ook blijven werken is ook al wat.
Voordeel is je heeft maar 1 call te onderstuenen naar direct storage en je niet druk maken over de rest.

anders heb je 2 paden die mogelijk zijn, als 1 een error heeft heb je dus een uitdaging als dev dus simplisiy is een goed ding .
Maakt de pc automatisch gebruik van Direct storage? Of moet je dat ergens aanzetten?
Hoef je niks voor te doen. Als je PC aan de vereisten voldoet, is DirectStorage automatisch actief.

Zie https://windowsreport.com/directstorage-api-windows-11-sdk/
Dat is top.
Dan zou mijn pc er gebruik van moeten maken.
Dankjewel voor de reactie
Mits de software het ondersteunt / de ontwikkelaar dat heeft geintegreerd :)
Er is echter nog maar één spel, namelijk Forspoken, dat DirectStorage ondersteund.

Het lijkt me toch niet zoveel werk om ondersteuning toe te voegen.
Die is er al. Forspoken gebruikt al DirectStorage.

Zie bijvoorbeeld https://www.pcgamer.com/f...mance-hit-on-an-rtx-4090/ voor de resultaten van het gebruik van DirectStorage.

Of de preview van Tweakers.net zelf: review: Forspoken - Game zet in op freerunning en magie

Edit: niet erg netjes om je reactie snel te editten zonder te melden. Eerst zei je nog te wachten op het eerste spel dat het gebruikt.

[Reactie gewijzigd door wildhagen op 26 juli 2024 19:26]

Edit: niet erg netjes om je reactie snel te editten zonder te melden. Eerst zei je nog te wachten op het eerste spel dat het gebruikt.
Voortaan gewoon even citeren, daarmee ondervang je dat wel ;)
Lijkt me eigenlijk best een dingetje. Iedere keer dat een bestand texture ingeladen word moet het dus via de DirectStorage API gaan. Mainstream game engines ondersteunen het ook nog niet.

[Reactie gewijzigd door Wolfos op 26 juli 2024 19:26]

Als de architectuur van een engine goed gestructureerd is, zal het aantal plekken waar je code moet veranderen beperkt zijn
Kunnen ze dit dan ook in de Xbox One /One S /One X knutselen?
Daar is het laden van games een drama?
Anoniem: 221563 @denonman121 april 2023 17:33
Dit gaat het laden van games vanaf een hdd niet versnellen. Het is puur om dubbele implementaties te voorkomen.

Een programmeur hoeft dus niet twee verschillende codes door te voeren. Eentje voor hdd en eentje voor ssd.

Eindgebruikers hebben hier geen voordeel mee. Alleen ontwikkelaars

Edit: overigens is een ssd in een Xbox one wel aan te raden. Ook externe ssds geven een enorme prestatie winst qua laadtijden. Dit heb ik zelf destijds gedaan en m’n metingen gaven gemiddeld meer dan een halvering aan laadtijd. Sommige games zelfs nog maar 20% van eerst.

[Reactie gewijzigd door Anoniem: 221563 op 26 juli 2024 19:26]

Het gegeven dat directstorage uitgevonden moet worden, bewijst dat er iets fundamenteels mis is met het OS zelf. Dit lijkt mij onnodige, zelfs gevaarlijke balast die misbruikt kan worden door malware.
Dat zou je dan ook kunnen zeggen over iets als Resizable BAR. Hadden we ook nooit nodig maar nu het uitgevonden en beschikbaar gemaakt is levert het toch wat extra performance op.
Vergis ik mij nu dat deze implementatie al voor vele jaren terug ook gebruikt werd, althans dan misschien niet met dezelfde naam. Voorbeeld daarvan was/is b.v. de sshd die in feite op een deels vergelijkbare manier werkte. Of b.v. de interpretatie van Intel met SRT is ook wel een mooi voorbeeld hiervan dus is het lijkt erop dat het wiel weer opnieuw is uitgevonden.

Voor mijzelf voegt het weinig toe omdat ik intern in de pc geen harddisks meer gebruik en alleen nog een externe harddiskbay voor backup gebruik. Snelheden daarvan zijn voor mij meer als voldoende en ik dan liever geen extra stap zoals DirectStorage ertussen wil gebruiken. Nu denk ik ook niet dat DirectStorage zal werken met externe harddisks.
Gaat een sata ssd echt nog een boost geven met direct storage?
Of mensen vinden je comment gewoon niet grappig. ik zie zelf ook niet wat er grapppig aan zou moeten zijn, dus ja.

Op dit item kan niet meer gereageerd worden.