30/08/21

Veľkosť "VRAM" - PlayStation 1 až 6

A začneme paradoxne s Voodoo 1 a jej 4MB VRAM - z toho 2MB pre framebuffer a 2MB pre textúry. To druhú polovicu teraz ignorujme. Framebuffer je vlastne časť RAM /akejkoľvek/, kde fyzicky uložíte "rozlíšenie" obrazu s istou farebnou hĺbkou. Použijme teda oldschool klasiku 640x480 pixel s 16 bit farbami a 8 bit alfou = 640x480x24bit/8 bajtov = cca 920KB na jeden framebuffer. Potrebujeme optimálne dvojicu týchto "buffers" - front a back pre double-buffering a 2MB sú teda takto v okamihu obsadené. Nemáte však kde uložiť Z-buffer o rozlíšení 16 bit /Z-buffer je kriticky náročný na presnosť výpočtu koordinátov, menej ako 16 bit sa proste nedá/. Takže znovu - 640x480x16 bit /stiahneme počet farieb na 8 bit+8bit alfa/ = cca 614 KB. Dual buffering  2 x 614KB + 1 x Z-buffer 614KB = 1843 KB a obsadenie 2MB časti VRAM máme v suchu. Voodoo 1 inak podporovala HW blending ditherovaných farieb, niečo podobné by sa zišlo aj PS1ke. Ak v Voodoo 1 hre potrebujete triple-buffering, tak znížite rozlíšenie hry práve o toľko, aby ste sa vošli do VRAM limitu, preto aj niekedy to bizarné rozlíšenie jej hier na úrovni 512x384 pixel.

 ZX Spectrum - tie slabo /4116/ a silno /4532/ fialové srandy sú RAM čipy, VRAM potrebuje 8KB.

PlayStation 1 má iba jeden jediný megabajt VRAM pre framebuffer aj textúry /porovnaj s Voodoo 1/ avšak nemá HW Z-buffer a teda ho ani nemusíte do VRAM ukladať /môžte, ak chcete, ak naškriabete niekde voľný priestor, tzv. softvérový Z-buffer/. To koľko z 1MB VRAM vydelíte pre framebuffer a pre textúry závisí od potrieb vášho enginu, ide však objektívne o extrémne malé množstvo VRAM pre tie isté hry, ktoré bežali aj na tej Voodoo 1. Riešenie už poznáte, musíme znížiť celkové rozlíšenie alebo počet farieb /bitov na pixel/ . Najčastejšie to bolo 320x480i. Ojedinele 512x480i. Hry, ktoré bežali v "hires" kompenzovali nedostatok ďalšej RAM pre textúry aj tým, že použivali časť polygónov bez textúr /tzv. flat-shading s gouraud tieňovaním/. Do malej VRAM sa museli dáta citlivo prenášať z rovnako malej RAM a streamingom z pomalej CD mechaniky. VRAM spoločná pre framebuffer aj textúry brzdila rendering /CPU logika/, ak napríklad textúrovacia keška netrafila pri predikcii správne dáta a GPU muselo urobiť ďalší pokus.

PlayStation 2, preto oddelila framebuffer a textúrovaci priestor do dvojice 2 megových RAM /dokopy ako 4MB eDRAM/ s vlastnými zbernicami o extrémnom výkone.Ako už viete práve 2 megabajtový framebuffer VRAM stačí na double buffering a Z-buffer v bežnom PAL TV rozlíšení. V skutočnosti sú však grafické dáta uložené v "systémovej" 32 megovej Rambus RAM a to znovu podľa potreby vášho enginu. Kľudne, teda môžte z 32MB systémovej RAM používať 16 mega ako lokálnu VRAM. Oproti PS1 teda dosiahnete 16 násobný nárast kapacity a eDRAM zabezpečí takmer nekonečnú priepustnosť. Ide o také dosť divoké, predimenzované riešenie, ako keby sa chceli pomstiť drakonickým obmedzeniam pri starej PS1. PS2 podobne ako PS1 si ďalšie dáta zabezpečuje streamingom, tentoraz z DVD mechaniky.

PlayStation 3 sa vzdala konceptu eDRAM /prevzial ho XBOX 360/ a VRAM je jedna 256 megová banka na vlastnej zbernice. Zbernica nie je nijak zvlášť výkonná ale veľkosť VRAM oproti PS2 /berieme 16 mega z 32 systémovej RAM/ zas nárastla 16 krát !! PS3 riešenie grafickej časti konzoly bolo dosť nedopečené. VRAM ani samo GPU neboli adekvátne rýchle. Nepoužili eDRAM zjavne z časových, technických dôvodov. Nvidia grafická karta bola len rýchlo adaptovaná. Veľkosť VRAM bola primeraná a streaming ďalších dát išiel z HDD. Veľký pokrok oproti CD/DVD mechanikám.

PlayStation 4 nemá eDRAM a nemá ani oddelené pamäte pre systém a grafiku. Všetko je nasypané v jednej veľkej banke, čo trochu pripomína PS1, kde sa miešal framebuffer a textúry a systém trochu trpel. Rovnaký jav sa dá pozorovať aj pri PS4, keď CPU a GPU pracuje naraz v jednej RAM. Je to však v rámci možnosti šikovne ošetrené cez špeciálne prístupy CPU/GPU do RAM alebo do dátových kešiek. Mňa však zaujíma o koľko sa teoreticky disponibiný priestor tej PS4 "VRAM" zväčšil oproti PS3. Ak by sme držali násobok 16 tich ako doteraz, tak PS4 "VRAM" z celkovej RAM /voľných je z 8GB asi 5.5/ by mala mať aspoň 4GB. A to aj celkom ľahko dosiahneme. Streaming ďalších dát ide primarne opäť z HDD a pomáha nám HW Zlib dekompresor.

PlayStation 5 a tu narazí kosa na kameň. Násobok 16tich sa nám už nepodarí dosiahnúť, to by sme museli ísť až ku hodnote 64 GB čiste pre VRAM. SONY inžinieri to vedeli dopredu. Aj to, že nárast hustoty, komplexnosti, kvality gfx asetov sa na nič pýtať nebude a tie nároky tu reálne sú/budú. Ak teda nechceli skončiť ako na starej PS1, tak sa po prvýkrat museli dôkladne pozrieť na úložisko, ktoré tie dáta bude musieť dodávať /doteraz CD-DVD-HDD/. Preto tá neuveriteľná pozornosť venovaná SSD IOP systému. PS5 SSD, tak ako je navrhnuté rieši problém veľkosti VRAM a dodávky nových dát podľa najlepších súčasných, technických a ekonomických možnosti. Pre budúce AAA-AAAA hry so stovkami gigabajtami grafických asetov nebude aj tak žiadna budúca VRAM dosť veľká, žiadna zbernica dosť rýchla. Vie to aj PC segment a pracuje sa na tom.

PlayStation 6. Už niet cesty naspäť. Pravdepodobne ďalej ostanú na jednej pamäťovej banke s technológiou, ktorá bude ekonomicky najvýhodnejšia. Môže to byť GDDR alebo HBM o rýchlosti aj cez 1TB/sec. Dôraz sa však bude opäť klásť na výkon SSD. Priepustnosť, latencia. API. Ak je dnes výkon HW dekompresorov v PS5 na úrovni 22GB/sec /SSD raw read speed krát kompresia/, tak to proste zlepšia o 100 alebo 200% podľa technických možností. PS6 potom bude mať 32 GB základnej RAM s 1TB/sec a k tomu bude prilepené SSD s rýchlosťou 40-60GB/s, čo je to isté ako dnešná rýchlosť systémovej RAM dobrého PC, avšak pri PS6 SSD o terabajtovej úložnej kapacite. Tu bude treba, lebo na PS6 sa vo veľkom budú používať aj upravené filmové asety. Strašne množstvo dát.

No comments:

Post a Comment

**** pre vloženie hypertextového odkazu do komentára použi CSS kód: hyperlink ****