21/04/2021

Dodavateľsko-spracovateľský reťazec

ZX Spectrum, keď nahráva do celej svojej 48 kilovej pamäte hru z magneťáku o rýchlosti 1500 baudov, tak mu to trvá tesne nad 5 minút. Známe turbo-loadery pre Atari si pomohli vyššou rýchlosťou. Najčastejšie to bola 2000ka. S zvyšujúcou sa mierou nestability až na 9600 baudov. Amiga 500 má desať krát toľko pamäte v základe, takže sa bežná MG páska použiť nedá. Chválabohu tam máme floppy mechaniku s typickou rýchlosťou čítania okolo 30 KB/sec. Pri amige s rozšírenou RAM na 1 megabajt sa však už načakáte. Záchrana prišla s oveľa rýchlejším a drahším HDD. Ten s nami /konzoly/ vydržal až dodnes. A dohnali sme jeho možnosti až do krajnosti, lebo ládovať 8000 mega RAM z HDD o rýchlosti 20-100 mega/sec nie je o nič lepšie ako tá jedno megová amiga s floppy diskom. A potom prišlo SSD, teda polovodičové úložisko, bez pohyblivých mechanických častí. Pri konzolách  poslednej generácie sme konečne "rýchlejší" než veľkosť RAM a sme schopný dosiahnúť "okamžité" nahrávanie ako na starých konzolách s kartridžom /vtedy veľmi rýchle a veľmi drahé riešenie so silne obmedzenou kapacitou/.

SSD máme, ale týmto sa to ešte len začína. Mohli by ste povedať, že na PC, kde sa SSD už roky používa ide o rutinérsku nudu a iba sa čakalo až sa do moderných čias dotiahnú aj konzoly. Opak je však pravdou. PC vošlo s SSD iba do fázy jedna a samo stojí a prešlapuje na mieste. Konzoly v skutočnosti musia presadiť tento štandard s kompletnou zmenou fyzických a softvérových častí celej nahrávacej reťaze. Požiadavka, dodávka, spracovanie. Pri PC je to totiž groteskne neefektívne a pocitovo sa teoreticky udávaná rýchlosť v gigabajtoch za sekundu v praxi vníma skôr v "tých stovkách megabajtov" a nevšímam si to len ja. 

  

PC riešenie SSD - príliš pomalé, motor z ferrari na podvozku fabie

PC s SSD manažuje pre hry kritické, grafické dáta takto - CPU ich načíta z SSD, uloží ich do systémovej RAM, ak sú zabalené, tak ich CPU rozbalí. Rozbalené idú zo systémovej RAM do grafickej VRAM. Po ceste miniete niekoľko zberníc, ktoré poriadne zaťažíte. Konzola to robí takto - CPU načíta dáta a uloží ich priamo na určené miesto do VRAM. Úplne zámerne som obe cesty maximálne z didaktických príčin zjednodušil. Ak sú dáta na konzole zabalené, nerozbaľuje ich CPU, ale v reálnom čase na to určený HW. Zaťaženie CPU, SSD IOP, pamätí a zberníc je pri PC vysoké. Konzoly sú o generáciu ďalej.

DOOM na PC, ten najnovší. Herné asety, ak nie ste schopný ich všetky natlačiť do relatívne malej VRAM /najčastejšie 3 až 8 GB/, pochodujú do systémovej RAM. Žonglovanie s bajtami po celom PC. Ak ich náhodou aj streamujete v reálnom čase a rozbaľujete, tak na PC idete na doraz generického riešenia, ktoré Windows, jeho API a bežné SSD radiče poskytujú. Ako asi podobné PC skončí pri pokuse konvertovať natívnu hru pre SSD konzolu ? Rýchlosť toho PS5 SSD /kompletné riešenie/ nemáte, HW depacker nemáte, Win API je pomalé, PC SSD radič nemá zákaznické úpravy. Jediným riešením je nafúknúť hlavnú systemovú RAM na 32 gigabajtov, nech slúži ako buffer a dostať na GPU toľko VRAM koľko je ekonomicky možné.

Xbox Series X a XVA s SFS. To je zas čo prepána ? XVA je Xbox Velocity Architecture a SFS je Sampler Feedback Streaming. PS5 je vybavené podobne, len pod iným názvom. Nástroje skazy určené na demoralizáciu zastaralého PC. Proste riešenie SSD ala konzoly. Herný príklad. Tank v hre vzdialený od vás 500 metrov, vy ležite na kopci s 0.50 cal snajperkou. Keď nečumíte do optiky - má tank na obrazovke 4x4 pixely. Keď čumíte je tých pixelov viac. Tank je balík 8K textúr aj s mip-mapami. Nech je toho 8 mega dát. PC správne netuší, ktorú z "blízkych/vzdialených" dát-textúr kedy budete potrebovať. Prechod medzi "malým" a "veľkým" tankom, teda voľné oko a snajperka je zlomok sekundy. PC teda bude opäť správne pre istotu držať všetky dáta VRAM. V tej istej scéne však pri Xboxe alebo PS5 alokácia pamäte pre ten tank ukáže 16 kilobajtov alebo pol mega. Ako je to možné ?

XVA s SFS /ten sampler fídbek/ môže držať aktívne textúry, zlomky textúr v pohybe iba pre každý viditeľný a aktívny pixel na obrazovke toho objektu !! Nie pre celý tank v každom okamihu a "pre istotu" ako je to bežné na PC. Ak je tank viditeľný na 2x2 pixely, tak 2x2 pixely najmenšej mipmapy. Nemusíte držať vo VRAM alebo presúvať z RAM do VRAM hore a dole celý texturovací set pre tú tankovú mašinu. Pozor. Celá architektúra GPU, SSD, jeho radiča, zberníc, API a nakoniec softvér /samotná hra/ musí byť okolo toho faktu precízne obostavaná. Obzvlášť PS5 je gigantickým spôsobom práve takto dizajnovaná. Intímny spôsob komunikácie medzi SSD a GPU s výmenou ohromného množstva dát. Považujem za vylúčené, aby dnešné lepšie, štandardné PC za 1500 euro a viac s CPU Zen 8 jadrom, nejakou NV 2080 super, PCIe 3.0 SSD a 16 giga RAM dokázalo rozumne rozbehať budúcu "ťažko" natívnu SSD PS5 hru.

 
PC riešenie SSD - ako na konzolách to ešte dlho nebude

PC pozná pojmy ako virtuálne textúrovanie, PRT /Partially Resident Textures - čiastočne v MEM umiestnené textúry/, dokonca aj vyššie spomenutú SFS. Nikdy sa však nerozšírili, neintegrovali vzhľadom na množstvo HW PC konfigurácií bežiacich od DX9 po DX12 a stoviek GPU od desiatok výrobcov, každá s vlastným uplakaným drajverom kompatibilným "sám so sebou". Klasická achillova päta PC platformy. MS na PC zavádza veci ako DirectStorage API, ktoré sa priamo týka nášho problému, ale sú roky /celú generáciu/ vzdialený od pravej a univerzálnej implementácie SSD, tak ako to má vyzerať. Upravený radič, upravené herné API, HW dekompresor, priame uloženie dát do VRAM atakďalej. Pri troche šťastia posunú konzoly /výborné CPU, GPU, SSD/ herný, hrateľnostný vývoj viac ako posledných 25 rokov dokopy. Zoberte si hry DOOM /pioner 3D FPS technológie/, Half Life /narácia/, Counter Strike /referenčné MP/ a vývoj odvtedy prakticky stojí. Iné herné žánre sú na tom úplne rovnako. Tieto stojaté vody by sa teraz mali rozhýbať. Vďaka konzolám a ich SSD, ktoré na tom bude mať leví podiel. Pri PC celé tie roky akurát zrýchľuje načítanie Windows pod 10 sekúnd.