Videomälu

Allikas: Vikipeedia
VRAM kiibid ümber GPU (GeForce RTX 4090)

Videomälu ehk pildimälu ehk VRAM (inglise keele sõnadest video random-access memory) on puhvermälu, mis hoiab pildi kõigi pikselite väärtusi.[1] Videomälu kasutavad kõige sagedamini videokaardid, et salvestada iga pikseli väärtust kuvataval pildil, mida videokaart renderdab.

Videomälu eelise teiste mälutüüpide ees annab selle kahepordine omadus. Nimelt saab kahepordieslt mälult samaaegselt andmeid lugeda kui ka sellele kirjutada.[2] Videomälu esineb vaid laienduskaartide näol, s.t et integreeritud graafikatehnoloogias ehk CPU-sisestel graafikaprotsessorites eraldi videomälu ei ole. Integreeritud graafika kasutab seadme operatiivmälu.[3] Videomälu on oluliselt kiirema andmeedastusega kui operatiivmälu.[4]

Ajalugu[muuda | muuda lähteteksti]

IBM RT PC

Videomälu leiutasid Frederick Dill, Daniel Ling and Richard Matick Thomas J. Watsoni uurimiskeskuses aastal 1980. Esimene kommertsarvuti, mis rakendas videomälu tehnoloogiat, oli 1986-ndal aastal avaldatud IBM RT PC. See oli suur edasiminek arvutusgraafika tehnoloogias ning lõi aluse tänapäevastele mäluhaldustehnoloogiatele nagu GDDR ja HBM.[5]


Arhitektuur[muuda | muuda lähteteksti]

VRAM alamtüübid[muuda | muuda lähteteksti]

  • SGRAM (Synchronous Graphics RAM) - Võrdlemisi madala hinnaga ning seadme sisetaktiga kooskõlas. See lubab andmeid muuta ühe tsükli jooksul selle asemel, et teha mitut lugemis- või kirjutamistsükleid.
  • RDRAM (Rambus Dynamic RAM) - Sisaldab Rambus siini, mis kiirendab andmevahetust VRAM-i ja kaadripuhveri vahel. Sobib eriti hästi voogedastuseks.
  • WRAM (Window RAM) - Kõrge jõudlusega VRAM, millel on ligi 25% suurem ribalaius kui standardsel VRAM-il. Seda kasutatakse kõrge lahutusega kaadriteks.
  • MDRAM (Multibank Dynamic RAM) - Arendas välja MySos . 32-KB suurusteks osadeks jaotatud. Igat osa saab eraldi adresseerida. See teeb andmevahetuse kiiremaks ning parendab jõudlust.[4]

Tööpõhimõte[muuda | muuda lähteteksti]

VRAM põhimõtteskeem

Sarnaselt operatiivmälule koosneb videomälu mälurakkudest, millest igaüks hoivad endas ühte bitti infot. Kui mälurakule rakendatakse kõrge pinge, loetakse mäluraku väärtust üheks ning pinge puudumisel loetakse see nulliks. Mälurakud on paigaldatud ridadesse ja veergudesse, luues tabelilaadse moodustise. Mälurakkude arv sõltub kiibi tootja ridade ja veergude arvust, kuid üldiselt ulatub see arv mitme miljonini Nt Samsungi KM428C256 videomälu kiibil on 512 x 4096 ehk 2097152 mälurakku. Iga mälurakul on enda aadress, mille abil saab sealt lugeda või sinna kirjutada. See, mitmest bitist koosneb adresseerimisarv, sõltub mälurakkude arvust. Aadressi bitijada pikkust saab tuletada võttes alusega kaks logaritmi selle mälurakkude arvust. Eelnevalt mainitud videomälu kiibil on sellisel juhul tarvis 21-biti pikkust aadressi, et oleks võimalik iga mälurakuga suhelda.[6]

Lugemis- ja kirjutamisoperatsioonid[muuda | muuda lähteteksti]

Et GPU suudaks luua valminud kaadri, küsib see videomälult lugemisoperatsiooniga selleks andmeid. Käsk lugeda videomälult jõuab kontrolleriteni. Neid on kaks: üks lugemisoperatsioonide ning teine kirjutamisoperatsioonide jaoks. Kahe pordi tõttu saavad need operatsioonid paralleelselt toimida ning võimaldab hea kaadrisagedusega piltide renderdamise.

Aadressi register hoiab operatsiooni vältel algaadressi, millest hakatakse mälurakkudest infot lugema või kirjutama. Aadressi lugerid seejuures suurendavad või vähendavad algaadressit, et minna edasi järgmiste rakkude juurde. Biti maskiregister (Bit mask register) "katab" ebavajalikud bitid, kui on vaja väga konkreetsetesse kohtadesse lugeda või kirjutada. Ridade ja veergude dekoodrid otsivad üles aadressis kirjeldatud mäluraku lugemsieks ja kirjutamiseks. Pingete värskendaja (Sense amp) värskendab regulaarselt mälurakkude pingeid, hoides ühebitiseid rakke kõrgena ja nulliseid madalana. Vastasel juhul võivad ajapikku andmed kaduda. Mälurakke perioodiliselt loetakse üle ning kirjutatakse samad väärtused sisse, et säilitada andmete õigsus.[6]

GPU poolt kokku kogutud andmed saadetakse kaadripuhvrisse SAM (Static access memory). Seal vastab iga kuvatav piksel mingile asukohale puhvri sees. Valminud andmed edastatakse kuvarisse, mis interpreteerib need andmed vaatlejale arusaadavaks pildiks.

VRAM ribalaius[muuda | muuda lähteteksti]

VRAM ühendus GPU-ga

Videomälu üheks oluliseks parameetriks on selle ribalaius. Ribalaius iseloomustab videomälu kiipide andmeedastuskiirust. Mida suurem ribalaius on videomälul, seda parem. Ribalaius on oluline parameeter, sest võimas GPU ei saavuta oma maksimaalse efektiivsuse, kui selle pudelikaelaks on videomälu ribalaius.

Ribalaiust iselmooustavad kolm parameetrit: taktsagedus, mälu tüüp ning andmesiini laius. Taktsagedus on mälukiipide enda sisekell. Mälu tüüp määrab, kuidas andmeid edastatakse. Vanemat sorti videomälu kasutas SDR (single data rate) tüüpi mälu, mis edastas ühe takti jooksul ühe korra andmeid. Tänapäevased videomälud kasutavad eri põlvkondi DDR (double data rate) tüüpi mälu, mis suudavad kaks korda andmeid edastada ühe takti jooksul. Andmesiini laius näitab, mitu bitti andmeid saab korraga edastada. Tüüpiliselt on see vahemikus 32 - 256 bitti. Ribalaiust saab arvutada korrutades taktsageduse, mälu tüüpi iseloomustava kordaja (DDR puhul 2, sest edastatakse kaks korda andmeid takti jooksul) ning andmesiini laiuse. [7]

Nt Geforce RTX 4070 puhul on taktsagedus 1313 MHz, mälutüüp GDDR6X ning mälu laius 192 bitti. Sellise kaardi videomälu ribalaius on 1313 x 2 x 192 = 504,2 GB/s.[8]

Andmesiinilt tulevad bitid jaotatakse töötlemiseks võrdselt videomälu moodulite vahel 32-bitisteks osadeks. Sellise seaduspäraga saab arvutada välja videokaardi mälumoodulite arvu.

Geforce RTX 4070 puhul on andmesiini laius 192 bitti. Seega on sellisel videokaardil 192 / 32 = 6 mälumoodulit.[8]

Jõudlus[muuda | muuda lähteteksti]

Vastava kuvari lahutuse jaoks nõutav VRAM
Lahutus VRAM kogus
720p 2GB - 4GB
1080p 4GB - 6GB
1440p 4GB - 8GB
4K 8GB - 12GB
Vastava videomängude lahutuse jaoks nõutav VRAM
Lahutus VRAM kogus
720p 2GB
1080p 2GB - 6GB
1440p 4GB - 8GB
4K 10GB - 16GB

[9]

Tekstuuri kvaliteet[muuda | muuda lähteteksti]

Videomängude või muudes arvutigraafika valdkondades on videomälu hulk tähtis tekstuuride renderdamisel. Mida kõrgem on tekstuuride detailsus, seda rohkem videomälu on tarvis, et neid kiiresti kuvada ning heal kaadrisagedusel jooksutada.

Tihtipeale ei kuvata tekstuure kõige suurema detailsusega kui need asuvad objektidel, mis on vaatlejast kaugemal. Sellist protsessi kutsutakse MIPmappinguks ja see suurendab graafilise maailma jooksutamise sujuvust. Selle tehnoloogia kasutamiseks on aga tarvis videomälus lisaks kõige kõrgema detailsusega tekstuuride salvestamiseks hoida ka madalama lahutuse ja detailsusega koopiaid samast tekstuurist, mis kokkuvõttes suurendab ka nõutava videomälu kogust.[10]

Kiirtejälitus (Ray tracing)[muuda | muuda lähteteksti]

Videomälu kasutab ka kiirtejälitus. Kiirtejälitus simuleerib arvutigraafikas valguse käitumist, selle langemist ja põrkumist eri pindadelt. Sellega kaasneb rohkete primitiivide genereerimine, mida on vaja hoida videomälus.[10]

Piirangud[muuda | muuda lähteteksti]

Kõige tüüpilisem probleem videomälu puhul on selle puudujääk. Kui videomälu ei ole piisavalt, peab GPU küsima kaadri kokkupanemsieks vajalikku infot operatiivmälust. Sellepärast on videomälul DRAM pordid, mis toimib tagavara mäluna.

Operatiivmälu kasutamine aga võtab palju rohkem aega, sest see on loomult aeglasem - sellel on väiksem ribalaius ning see asub füüsiliselt kaugemal GPU-st. Sellise mälu laenamine põhjustab nt videomängudes madalamat kaadrisagedust ja kaadritõrkeid, mis võivad kesta mälu mõistes väga kaua (millisekundid kuni sekundid) ning on piisav, et vaatleja seda muutust tajuks. Samuti võib tekstuuride renderdamine olla vale või üldsegi puududa. Halvimatel juhtudel võib programm ka kokku joosta.

Paljud videomängud pakuvad sätteid, mis vähendavad videomälu vajadust vähendades tektuuride kvaliteeti, nende lahutust, varjude kvaliteeti, peegeldusi, detailsust jne.[11]

Viited[muuda | muuda lähteteksti]

  1. "[ITS] IT terministandardi sõnastik". www.eki.ee. Vaadatud 23. aprillil 2024.
  2. Clarke, Glen E.; Tetz, Edward; Warner, Timothy L. (1. august 2016). CompTIA A+(r) Certification All-in-One For Dummies(r) (inglise). John Wiley & Sons. ISBN 978-1-119-25571-0.
  3. Stegner, Ben (14. november 2018). "How to Increase Dedicated Video RAM (VRAM) in Windows 10 and 11". MUO (inglise). Vaadatud 23. aprillil 2024.
  4. 4,0 4,1 "VRAM Full Form". GeeksforGeeks (Ameerika inglise). 17. aprill 2020. Vaadatud 23. aprillil 2024.
  5. Team, Tekmart Data Center. "VRAM (video RAM); definition, types, usage and its history. – t-Blog" (Ameerika inglise). Vaadatud 23. aprillil 2024.
  6. 6,0 6,1 How does Computer Memory Work? 💻🛠, vaadatud 1. mail 2024
  7. "Understanding video RAM memory bandwidth". www.playtool.com. Vaadatud 23. aprillil 2024.
  8. 8,0 8,1 TechPowerUp, GPU database. https://www.techpowerup.com/gpu-specs/geforce-rtx-4070.c3924. {{netiviide}}: puuduv või tühi pealkiri: |pealkiri= (juhend)
  9. Prasad, Leela (2. juuni 2023). "How Much VRAM do I Need?". ElectronicsHub USA (Ameerika inglise). Vaadatud 27. aprillil 2024.
  10. 10,0 10,1 "What Is VRAM? Why Games Are Using it More, and How to Optimize Your PC". PCMAG (inglise). Vaadatud 27. aprillil 2024.
  11. VRAM Explained: How It Works & How Much You Need For Gaming, vaadatud 1. mail 2024