3. 8. 2020

Spomaľ, máš privysokú rýchlosť


"Vnímam ju len šiestym zmyslom". Tak spieva Katka Knechtová so svojou skupinou Peha. Dev tím hry Ghost of  Tsushima sa pochválil, že nahrávanie hry je tak rýchle, že to až museli spomaliť, aby si hráči stihli prečítať užitočné herné tipy na nahrávacej obrazovke.  Playstation 4 HDD pritom nie je žiaden zázrak techniky, je to pomalá notebooková 5400rpm šunka, ktorú by ste vo svojom hernom desktope určite nechceli. Mnoho hráčov ale aj expertov bolo teda prekvapených, keď videli ako suverénne si ten šmejd počína a náhravacie časy, rýchly "fast travel" prechod po mape medzi vzdialenými bodmi alebo reštart po smrti herného avatara sú obdivuhodne rýchle. Často až na hranici okamžitého nahratia. Je zjavné, že tu niekto dal dokopy výnimočne dobrý, programový kód.


bleskové loadingy

Šéf programátor Adrian Bentley je ten náš človek. Vo voľnom čase pracoval práve na niečo podobnom a v hre to použili. Super optimalizovaný algoritmus pre streaming ultra pakovaných herných dát. Popis terénu, scény o veľkosti 200x200 metrov majú v Sushi hre so všetkým podstatným /geometria, objekty, všetka foliage, skripty/ zabalený do veľkosti 2 megabajtov. Herné dáta sú počas inštalácie na HDD umiestňované precízne na tie najlepšie miesta z pohľadu rýchlosti a prístupu. Niečo podobné svojho času spomenul aj Insomniac Games pri kódovani PS3 hry Resistance: Fall of Man /2006/, kde ako príklad pri jednej skutočne dobre urobenej kompresii dát geometrie scény a optimalizovania načítania sa daný blok nahrával namiesto 2.8s iba za menej ako 0.1s. Nie náhodou sa im to rovnako dobre darí aj v Spidermanovi pre PS4 a určite aj z toho dôvodu bola táto hra vybraná ako demonštrátor bleskovo rýchleho načítania z SSD na PS5.  Z menu do hry pod jednu sekundu.

V nie tak dávnej histórii sa bojovalo o rýchlosť alebo kapacitu uložiska prakticky neustále. Ako Amiga alebo Atari ST s chudokrvnou floppy mechanikou, ktorá slimačou rýchlosťou od 30KB/s pomaly cucá data. Určite sme vtedy mierne závideli konzolkám ako staré SNES s ROM kartridžom, ktorá tu 128 kilovú pracovnú pamäť naplnila "v sekunde" a "seek time" bol v stovkách nanosekúnd, nie milisekúnd či až mnoho pol sekundách. Problémom bola veľkosť toho kartridžu o priemernej veľkosti 2-4 megabajty. Neskôr tam nintendo montovalo aj HW dekompresor /ako dnes PS4 a PS5/ a dáta mohutne pakovalo. Playstation 1 s CD mechanikou kapacitné problémy sice elegantne vyriešilo, ostali však tie smutno pomalé rýchlosti. Double-speed CD mechanika s 300KB/sec a pomalým presúvaním hlavičky po placke je ako návrat ku flopáčom na amige. PS2 v tomto smere tiež nové nič nevymyslela. DVD malo vyššiu kapacitu, vyššiu rýchlosť, nárastla však aj veľkosť RAM, ktorú bolo treba zaplniť. Absencia HDD bola citeľná a technickej kvalite hier a komforte /inštalácia viacerých hier na HDD bez DVD diskotéky/ by zabudovaný HDD ala prvý Xbox zjavne už vtedy veľmi pomohol.

Playstation 3 a Playstation 4 mali HDD v defaulte. Problém s kapacitou sa vždy dal nejako poriešiť, ostávala nízka rýchlosť 5400rpm HDD s ohľadom na značný nárast veľkosti RAM medzi PS3 a PS4 - z 512 na 8192 mega a razantne vyššie nároky PS4 hier na zásobovanie dátami. Takže jasný tlak na prechod na veľmi dlho, veľmi drahé SSD. Pri PS5 sa primárne najdôležitejší problém s rýchlosťou úložiska vyriešil radikálne implementáciou de fakto najrýchlejšieho možného riešenia na trhu /konzumný segment/ s odstranením všetkých slabých miest v celom reťazci pohybu dát od SSD do RAM, nielen teda na úrovni SSD radiča ala PC.

Hrubá výkonnosť celého SSD PS5 systému sa v jednom z hlavných parametrov /objem dodaných dát/ udáva na hodnote až 22 GB/sec. Pre porovnanie PS3 rovnako rýchlo komunikovala so svojou lokálnou 256 megovou natívnou VRAM. Ide teda o enormne vysokú cifru a dopracovali sa ku nej kombináciou surovej rýchlosti toho SSD PS5 radiča a HW dekompresorom Kraken, voliteľne aj implementovaním plynulo "strátového" RDO algoritmu /používaný aj pri H264 video kodeku/. Konkrétne testy zamerané na typické "herné dáta", textúrky rôzneho typu a spol.: 

Dataset 1 (Texture data BC1,3,4,5, and 7. Mix of diffuse, normals, etc.)
Kraken ratio: 1.76:1 (PS5 perf will be: 5.5GB/sec * 1.76 = 9.68GB/sec)
Kraken + RDO ratio: 3.13:1 (PS5 perf will be: 5.5GB/sec * 3.13 = 17.2GB/sec)

Dataset 2 (Texture data BC6 and 7. Mix of diffuse, normals, etc.
)
Kraken ratio: 1.78:1 (PS5 perf will be: 5.5GB/sec * 1.85 = 10.1GB/sec)
Kraken + RDO ratio: 3.99:1 (PS5 perf will be: 5.5GB/sec * 1.99 = 21.9GB/sec)


SSD samozrejme nemá a nikdy mať nebude tu jemnosť, granularitu, flexibilitu výkonu klasickej RAM a teda ju zatiaľ nemôžte použiť ako jej priamo 1:1 náhradu alebo to virtualizovať ako  plnohodnú ramku. Ak si však v hlavnej systémovej RAM vyhradíte napríklad 800 megovú kešku /čo je čírou náhodou reálny príklad z PS5 Unreal 5.0 dema/, tak vám túto oblasť pamäte vie SSD plniť práve tými 10 až 22GB za sekundu. To je strašne gigantické množstvo dát, ak si uvedomíte, že PS4 HDD to dokáže v intervale nejakých 10-100 mega/sec s grafikou hier - Uncharted, Spiderman, Horizon, Sushi, GTA 5, RDR 2. Prvé teda čo každého hráča napadne je ako sa to prejaví v budúcich PS5 hrách /detto XSX/

A na to si budete musieť ešte dosť dlho počkať. Roky. Epic sám píše, že so SONY sa točili vyše dvoch rokov okolo nového IOPS SSD subsystému PS5. Nie je to tak jednoduché. Vývojárske middleware, SDK, grafické engine na tak robustnú dodávku dát dnes nie sú ešte stavané. Aj špičkoví herní vývojari majú len hrubú predstavu čo s tak strašným objem herných, grafických dát majú robiť. Čiste teoreticky môže byť celá kapacita PS5 SSD, teda 825 gigabajtov skrze tých 22 giga/sec prístupná hre ako jedna veľká "terabajtová" RAM, o pár rokov aj mnoho terabajtová s rýchlosťou cez 50+ giga/sec. A som si istý, že iba 5% zo skupiny famóznych civilných šoférov odšóferuje dlhodobo formulu F1 bez toho, aby sa neprizabili v druhej zákrute po štarte v každom preteku. V blízkej budúcnosti nás čaká výkon, ktorý bude úplne nad sily veľkej väčšiny progišov malých a stredne veľkých firiem. Iba giganti s obludným rozpočtom si budú vedieť siahnuť na maximálny potenciál herného HW.