Skjermkort

Et skjermkort eller grafikkort er en komponent i en datamaskin som konverterer en logisk representasjon av et bilde lagret i minnet til et signal som kan brukes av en skjerm.  Ofte tilbyr skjermkortet funksjonalitet for å manipulere det logiske bildet i minnet. Se DirectX og OpenGL.

Det finnes to typer skjermkort, integrerte og kort med andre tilkoblinger. De førstnevnte kommer integrerte i CPU, mens sistnevnte er separate kort som man kobler til hovedkortet. Hvis ikke prosessoren har et integrert grafikkort, må man skaffe seg et grafikkort av den andre typen for å få bilder på skjermen. 

Moderne datamaskiner har ofte et skjermkort spesielt utviklet for tredimensjonal grafikk. Dette er for å avhjelpe prosessoren ved ressurskrevende spill. Grafiske arbeidsstasjoner har ofte skjermkort mer tilpasset todimensjonal grafikk.

På skjermkortmarkedet er det to selskaper som står for størstedelen av markedsandelen. Disse heter ATI, som nå er kjøpt av AMD, og NVIDIA. Begge selskapene støtter to viktige funksjoner som er nødvendig i spill, nemlig
Full Screen Anti-Aliasing (FSAA), og Antisotropic Filtering (AF). Ofte brukes imidlertid en integrert grafikkontroller fra Intel

Hvordan et skjermkort virker
En PC-skjerm er bygd opp av flere millioner små lyspunkter. Hvert lyspunkt består av én av tre primærfarger, nemlig rød, grønn eller blå (RGB). Tilsammen utgjør en slik gruppe av de tre grunnfargene en piksel (additiv fargesyntese). Lyser alle tre like sterkt vil fargen (summen av alle tre) fremstå som hvit. Slukker alle, er punktet (naturligvis) svart. Lyser prikkene med ulik intensitet vil summen av dem gjengi en hvilken som helst farge i regnbuen.

Instruksjoner til skjermen forteller altså skjermen hvilke punkter som skal tennes og slukkes, og hvilken intensitet hvert enkelt tent punkt skal ha. Tar man et bilde med et digitalkamera, vil sensorbrikken lagre lysinformasjon. Sensorbrikken består av millioner av lysfølsomme punkter, som kan registrere farge og lysintensitet. Når denne informasjonen gjengis på en skjerm i full oppløsning, vil skjermen benytte tre lyspunkter (RGB) for hvert sensorpunkt på kamerasensoren. Bildet vises da i full størrelse. Hvert slikt lyspunkt kalles en piksel. 
Hvis du zoomer inn enda mer enn 1:1 visning, vil hvert originalt piksel (lyssensor fra kameraet) dekke mer enn én RGB-gruppe på skjermen. Zoomer du inn til 10 dobbel størrelse, vil altså informasjonen fra én av lyssensorene i kamerabrikken dekke 10x10 piksler på skjermen. Hvert av disse skjermpikslene består altså av tre lysdioder, så i dette eksempelet er 300 lysdioder tent for hver original piksel fra kameraet. 

Dette bildet vil fremstå som en serie av synlige firkanter på skjermen, og ikke som et detaljert bilde. Når bilde vises i 1:1 skala (altså en piksel fra kameraet tilsvarer en piksel (RGB) på skjermen), ser bildet detaljrikt og fint ut.
Poenget er altså at en skjerm med høy oppløsning som skal vise et bilde tatt med et kamera med lav oppløsning, bare vil vise bildet fint i en 1:1-oppløsning. I eksempelet vil et slikt bilde vises som et lite bilde midt på skjermen. Zoomer du inn slik at bildet fyller hele skjermen, vil du få et "piksellisert" bilde, altså at hvert enkelt piksel fra kamerasensoren blir synlig i stedet for å gli sammen til et pent bilde.

Et 3D-spill operer på en annen måte. Bildene her er jo ikke et resultat av lagret informasjon fra en billedsensor, men konstrueres fortløpende av grafikkmotoren (programvare) i spillet. Har du en høyoppløst skjerm (2560×1600) og spiller et spill der du setter oppløsningen til 800x600, vil bildet fremstå som pikselert slik eksempelet med kameraet over. For å få en fin billedopplevelse på denne skjermen må altså spillet levere et like høyoppløst bilde som skjermen (2560×1600). På en lavere oppløst skjerm (1680x1059) vil bildet vises pent når spillet leverer bildet i tilsvarende oppløsning.

Et grafikkort trenger bare å oversette de binære tallkjedene til lysdiodeinsstruksjoner for at bildet skal vises (altså hvilke dioder som skal tennes, og med hvilken styrke). Dette krever svært lite datakraft når billedinformasjonen kommer som en strøm med instrukser fra hovedprosessoren (typisk et vanlig bilde/fotografi som skal vises på skjermen). Arbeidsbelastningen oppstår når bildet ikke eksisterer, men må konstrueres "on the fly" av grafikkortet, slik det må i spill.

Et todimensjonalt spill (slik som "space invaders" og de fleste Nintendo DS spillene), krever lite datakraft. Det er når spillet blir tredimensjonalt (3D) at beregningsmodellene og datamengden øker eksponensielt. Med 3D her menes ikke 3D som man opplever med 3d briller på kino (altså at man fysisk kan se i 3 dimensjoner/dybde), men at spillet må kunne presentere et tredimensjonalt miljø i 2D. Det betyr at du i et typisk "first shooter" spill kan bevege deg i alle tre dimensjoner i et kunstig miljø (du kan gå til høyre/venstre, opp/ned, inn/ut i bildet). Hvis du går forbi en bil i bildet, må altså grafikkmotoren beregne/tegne bildet av hele bilen, ikke bare den delen du ser. Nærmer du deg bilen forfra, ser du bare fronten og kanskje litt av den ene siden og taket på bilen. Bakparten, den andre siden og undersiden er skjult. Grafikkortet trenger ikke å beregne tekstur og overflate for disse skjulte sidene, men den må forholde seg til at de er der, ettersom hele bilen eksisterer i beregningsmodellene den jobber med. Grafikkortet kan imidlertid ikke beregne avanserte buede kurver og flater. Den bryter hele den kompliserte grafiske modellen ned i mangekanter (polygoner). Hadde den brukt ett polygon til å tegne hele bilen, hadde bilen sett ut som en pyramidevariant. Bruker den titalls millioner polygoner, kan summen av dem få bilen til å fremstå som et objekt med myke buede former.

For alle som har hatt projeksjonstegning som et ledd i sin utdannelse, vet man at man kan rotere geometriske figurer rundt en akse, og så beregne hvordan en gitt figur ser ut fra et annet perspektiv. Det er dette grafikkortet gjør. Den beregner hvordan hvert polygon roterer i forhold til hvordan spilleren beveger seg innover i det virtuelle landsskapet. Disse beregningene er rent matematiske og ikke særlig komplekse. Det som gjør det vanskelig er det svimlende nummeret av polygoner som skal beregnes fortløpende (hundretalls millioner eller milliarder). I tillegg skal prosessoren bruke polygonenes posisjon til å bergene vektorgrafikk og farge/tekstur på synlige flater. I tillegg kommer beregnings av lys. Akkurat som i den virkelige verden, vil lys komme fra en lyskilde, Denne kilden kan være en taklampe, sola eller en rekke lyskilder som lyser samtidig fra flere steder. Grafikkprosessoren må altså beregne hvilke visuelle elementer den allerede har beregnet som skal ligge badet i lys, ligge i skygge, ligge delvis i skygge, osv. I tillegg må den kunstige overflatens refleksjonsevne gjengis. Er det en glatt/blank overflate, er den matt eller lysabsorberende, er det andre lyskilder til stede som også belyser objektet, eller blir objektet indirekte belyst av refleksen fra et annet objekt i nærheten som er opplyst av primærlyskilden?
I tillegg finnes det en rekke tilleggsalgoritmer som skal gjøre det visuelle bildet enda mer overbevisende ved hjelp av en rekke subrutiner som bergener lysbryting og fraksjonering fra ulike overflater og objekter.

Summen av alle disse beregningene er nok til å få det til å svimle. Det er ufattelige mengder data som skal beregnes med det samme et objekt blir beveget eller beveger seg i forhold til andre objekter i bildet.
Med det samme grafikkortet har fullført en komplett beregning av alle elementene i bildet inkludert lys/skygger og annaet, blir det ferdige produktet levert skjermen som et stillbilde. Deretter gyver grafikortet løs på beregning av neste bilde som så i sin tur leveres skjermen. 
Som de fleste vet fra film og video, består disse av en serie bilder som vises raskt etterhverandre. Man fant rakst ut at billedfrekvensen måtte være 24-25 bilder i sekundet for at bevegelsene skulle fremstå som myke og overbevisende. Dersom hastigheten ar lavere enn dette, beveget figurene i bildet seg rykkete og unaturlig.

Et grafikkort må altså levere ferdigberegede bilder i samme hastighet (altså 25 bilder per sekund eller mer) for at det skal se mykt og naturlig ut. Dette kalles billedhastighet eller "framerate" på engelsk. Lavere hastighet fører til rykkete og unaturlig billedstrøm.
Et grafikkort må også levere en oppløsning som matcher skjermoppløsningen, ellers ser bildet pikselert ut. Jo høyere oppløst skjerm, jo mer detaljert blir bildet, og antallet polygoner skjermkortet må beregne øker eksponensielt.
Blir grafikken for krevende (moderne ultrarealistiske spill) og skjermen for høyoppløst, vil ikke grafikkortet klare å regne raskt nok, og bildet rykker, fryser og hopper. Grunnen til at bildet ikke blir som gamle stumfilmer (jevnt hakkende) er at belastningen på grafikkprosessoren og grafikkminnet konstant varierer med hva som skal vises av bevegelser og detaljer i bildet. Et grafikkort som blir overbelastet kan altså vise alt fra relativt myke bevegelser til hakking og fullstendig frys, i en kontinuerlig variasjon.
Grafikkort med tilstrekkelig kapasitet for spillet og skjermoppløsningen, vil kontinuerlig vise en sømløs strøm av bilder. Kobler man et grafikktestprogram opp, kan man direkte lese av hvor mange bilder grafikkortet lager per sekund (Frames Per Second eller FPS for kort). Da vil man se at kortet leverer opptil hundrevis av bilder i sekundet i "rolige" scener, mens det i mer krevende partier med mye bevegelse og mange individuelt bevegelige objekter i billedflaten, kanskje synker til 24-30 bilder i sekundet.

Skjermkortets betydning
Hvis man driver med lettere programmer som for eksempel Word, MSN, Office, Email osv, har man strengt tatt ikke bruk for noe bra skjermkort; da holder det med ett billig et. Unntaket kan være hvis man absolutt trenger høy oppløsning, men de billige har en helt grei oppløsning som folk flest er fornøyd med. Disse kan klare seg med ett integrert skjermkort på hovedkortet. 

De som spiller videospill og driver med videoredigering derimot, har et mye større behov for et bedre skjermkort. Grunnen til dette er at slikt arbeid krever en del av kortet, og er kortet for dårlig i forhold til det for eksempel spillet krever, vil bildet ”lagge”. Dette vil si at det kommer færre bilder i sekundet enn det skulle gjort, eller sagt på en annen måte: bildet vil hakke og det vil bli umulig å spille. Men man trenger absolutt ikke det beste på markedet for å kunne spille et spill. Kun de som har behov for å kjøre de nyeste spill på markedet på full grafikk og stor oppløsning har behov for et veldig dyrt skjermkort.

Skjermkortets fysiske tilkoblinger
Skjermkort kan kobles til en datamaskins hovedkort via tre porter: PCI, AGP, og PCI Express. Hvert enkelt skjermkort er tilpasset en av disse portene, og dersom man for eksempel ønsker å tilkoble et kort med AGP-grensesnitt, må man dermed ha et hovedkort som har en slik port.  
PCI er den eldste tilkoblingstypen og har en overføringsbegrensning på 133 MB/s. I 1997 ble AGP, som i motsetning til PCI er laget for skjermkort, lansert. AGP er i utgangspunktet overlegent bedre enn PCI, fordi den gir en egen forbindelse mellom porten og prosessoren, noe som gir muligheten til raskere overføring av data. AGP har en begrensning på 2133 MB/s. 
PCI express er den nyeste og kjappeste av de tre og gjør også at systemet har støtte for å bruke to, tre eller fire skjermkort sammenkoblet ved bruka av enten ATI's crossfire eller Nvidia's SLI som er videreutiklet av tidligere 3dfx sine voodoo PCI skjermkort. Denne porten har en overføringsbegrensning på 8 GB/s (versjon 1.1, port x32).
Enkelte nye skjermkort trenger mer strøm enn hovedkortet kan levere så de kommer med egne plugger som man kobler direkte til strømforsyningen.

Når det gjelder tilkoblingen til PC-skjermer, har de fleste skjermkort en DVI-kontakt for tilkobling til LCD-skjerm og en VGA-kontakt for tilkobling til CRT-skjermer. Imidlertid har svært mange kort også flere tilkoblinger som: S-Video, HDTV-utgang  og HDMI.

Komponenter
Som et hovedkort er skjermkortet et printkort som inneholder en prosessor, minne og en BIOS.

Graphics processing unit (GPU)
En grafikkprosessor, GPU, grafikkontroller eller grafikkbrikke er en mikroprosessor som bestemmer hvordan hver enkelt piksel skal vises på skjermen til enhver tid. Dette betyr at GPUen mottar beskjeder fra prosessoren (CPU), som den så bearbeider og sender ut til skjermen. De fleste GPU-er inneholder flere transistorer enn CPU-er, og produserer derfor en god del varme, i noen tilfeller mer enn selve CPU-en. Derfor er god kjøling viktig. Det er ofte en vifte eller en kjøleribbe plassert på skjermkortet. Enkelte slike vifter gir sjenerende støy.

Minnet
Når GPU-en komponerer et bilde, bruker den minnet for å lagre og holde på informasjon om bildet den nettopp har gjort ferdig. Her lagres informasjon om hver enkelt piksel, fargen og hvor på skjermen denne pikselen skal plasseres. Minnet kan også fungere som et slags skjermbuffer, noe som vil si at den holder på informasjonen om bildet helt til det er klart for å vises på skjermen. Disse lagringsprosessene gjør at minnets størrelse naturlig nok er viktig for skjermkortets ytelse, men dette er ikke den eneste viktige spesifikasjonen. De to andre viktige elementene er minnetype og hvor mange bit minnet er på. I dag har de fleste kort enten DDR2 eller GDDR3, men en del nye kort har GDDR5. Som oftest kjører video rammen på veldig høy klokkefrekvens og er ’’dual ported’’ som vil si at systemet både kan skrive til og lese fra minnet samtidig.

Spesielt med hensyn til krevende programvare, slik som 3D-modellering og noen spill, er minnestørrelsen sentral, idet grafikkortet må holde «teksturer» (bildene som bidrar til å gi objekter på skjermen egenskaper som farge, dybde o.l.) i minnet for å oppnå en mest mulig effektiv skjermvisning.

Random Access Memory Digital-to-Analog Converter, RAMDAC
Denne oversetter digitale signaler fra CPUen til analoge signaler som skjermen kan bruke. I 2000-årene begynte denne funksjonen å forsvinne fra nye skjermkort, i takt med LCD- og plasmaskjermenes økende popularitet. Disse skjermene kan nemlig sende digitale signaler, og det er dermed ikke nødvendig å konvertere signalene til analogt format.  
Noen skjermkort har flere DACer som gjør at ytelsen blir forbedret og at man har mulighet for å bruke flere skjermer samtidig.

Video BIOS
Video BIOS-en er en chip som inneholder et basisprogram som overvåker skjermkortets operasjoner og gir de instruksjonene som er nødvendige for at kortet skal kunne kommunisere med PC-en.

OpenGL og Directx
OpenGL og DirectX er to API-er som, gjennom å fortelle maskin- og programvaren hvordan komplekse grafiske oppgaver som visning av 3D-grafikk og 2D-bilder (spill, film osv) skal utføres. I noen tilfeller vil et skjermkort med støtte for en av standardene ikke bare være nødvendig for å optimalisere hastigheten på bildet, men også for at det i det hele tatt skal være mulig å kjøre programmet. De fleste skjermkort som selges i dag har støtte for både OpenGl og DirectX, men ikke alle skjermkort støtter de nyeste versjonene.

Forskjeller mellom skjermkort
Grovt sagt kan man si at det er GPU klokkehastigheten (MHz eller GHz), størrelsen på minnebussen (bits), mengde tilgjengelig minne, minneklokkehastighet (MHz), minnebåndbredde(GB/s), og eventuelt RAMDAC-hastighet (MHz), som forteller hvor bra et skjermkort er. Har et kort høyere spesifikasjoner på ett eller flere av disse områdene, er det i utgangspunktet et bedre kort.

Pr i dag er det to store aktører som dominerer grafikkort-markedet: ATI og NVIDIA. Begge firmaene produserer hver sine serier av skjermkort, der kortene innen hver serie bygger på mye av den samme teknologien. Hver serie er videre delt inn i såkalte low-, mid- og high-end-kort, der high-end-kortene har den i utgangspunktet beste teknologien. Det er denne klassifiseringen, altså produsent, serie, X-end kort som utgjør benevnelsen grafisk prosessor/leverandør. En slik inndeling betyr at et kort i high-end kategorien i utgangspunktet skal være bedre enn et kort i low-end klassen, gitt samme spesifikasjoner og produsent. Imidlertid kan man ikke forvente at alle kortene i en serie skal være bedre enn alle kortene i den foregående serien. Kortets faktiske ytelse påvirkes også av drivernes kvalitet.

I tillegg spiller også resten av systemet en rolle, prosessorminne og hovedkort må henge med for at skjermkortet skal yte optimalt. Prossesoren leverer alle instruksene til skjermkortet, så er den treg vil skjermkortet få færre instrukser enn den kunne ha fått, og dermed jobbe mindre effektivt. Noe annet som spiller inn er hvor mange watt strømforsyningen klarer å levere, imidlertid er ikke skjermkortenes strømkrav absolutte. Det er for eksempel mulig å kjøre enkelte kort med strømkrav på 400W på flere PC-er med strømforsyning helt ned mot 300W.