Näytönohjain
Wikipedia
Näytönohjain on tietokoneen komponentti, joka huolehtii tekstin ja grafiikan piirtämisestä näytölle.
Vanhastaan näytönohjaimet ovat toimineet pelkkinä kuvapuskureina, jotka muuttavat näyttömuistiin tallennetun kuvan ajoitetuksi videosignaaliksi, mutta nykyaikaisissa näytönohjaimissa on lähes poikkeuksetta myös omia piirto- ja laskentaominaisuuksia, jotka suorittavat erilaisten kuvioiden piirto-operaatioita ja esimerkiksi 3D-vektorilaskentaa hyvin nopeasti.
Näytönohjaimen vaikutus tietokoneen nopeuteen pelikäytössä on keskeinen: näytönohjaimen vaihtaminen voi parantaa pelien ruudunpäivitysnopeutta jopa yli kolminkertaisesti, vaikka muut komponentit pysyisivät samoina.
Sisällysluettelo |
Näytönohjaimen suorituskyky
Näytönohjaimen suorituskykyyn vaikuttavat useat eri seikat. Suurimmassa määrin näytönohjaimen suorituskykyyn vaikuttavat verteksi ja pikselivarjostinyksiköiden lukumäärä[1] grafiikkasuorittimen kellotaajuus[1] sekä näytönohjaimen muistin suorituskyky.[1]
Grafiiikkasuorittimen ominaisuudet ratkaisevat kuinka näyttävää grafiikkaa näytönohjain kykenee prosessoimaan jotta se näyttää liikkuvan sujuvasti.[1] Suuresta rinnakkain tapahtuvasta laskennan määrästä johtuen grafiikkasuorittimien transistorimäärä on suurempi kuin keskusprosessoreissa.[1] Keskussuoritin kykenee suorittamaan tyypillisesti 1–8 säikeisiä ohjelmia yhtäaikaisesti[1] siinä missä grafiikkasuorittimen sisällä voi olla kymmenittäin rinnakkain toimivia säkeitä.[1] Näytönohjain huolehtii itse piirrettävän grafiikan jakamisesta eri varjostinprosessoreille[2] Kiihdytinpiirin nopeus koostuu pitkälti varjostinprosessoreiden lukumäärästä, piirin kellotaajuudesta sekä muistiväylän leveydestä ja nopeudesta.[3] Keskussuoritin antaa yleensä runsaasti isoja piirrettäviä alueita näytönohjaimelle.[1] Grafiikkasuoritin kykenee jakamaan piirrettävän alueen pienempiin osa-alueisiin ja kykenee piirtämään sitä samanaikaisesti monesta eri suunnasta.[1] Työstöön grafiikkaprosessori käyttää eri yksiköitä, jotka hoitavat piirtämisen omalla tavallaan.[1] Perinteisessä tavassa yksiköitä on useita samalla näytönohjaimella, mutta uudemmissa näytönohjaimissa pohjataan Unified Shader yksikköön, jossa näytönohjaimen pikselinvarjostin ja verteksivarjostinyksiköt on yhdistetty yhdeksi isommaksi piiriksi.[1] Verteksi ja pikselinvarjostinyksiköiden tehtävänä on pääasiallisesti värittää oikeilla väreillä niille annetut monikulmiot.[1] Varjostinyksiköt myös valaisevat kolmiot varjostinohjelmien määrittelemällä tavalla.[4] Näytönohjaimessa on myös teksturointiyksikkö, joka värittää pikselit.[5]
Varjostinprosessoreiden toiminnan kannalta oleellinen osa on näytönohjaimen muistin suorituskyky.[5] Nopeammalla muistilla varjostinprosessoreiden ei tarvitse odotella niin kauaa grafiikkadatan siirtymistä muistista varjostinyksiköihin tai toisinpäin.[5]
Varjostisuorittimet on suunniteltu erityisesti 3D grafiikassa käytettävien matriisilaskujen ja laskutoimituksissa käytettävän ohjelmakoodien suorittamiseen.[6] Ohjelmoitavien varjostinyksiköiden tulemisen myötä näytönohjain sai muitakin tehtäviä kuin annetuiolla väreillä monikulmion värittämisen. Varjostinohjelma kykenee mallintamaan esimerkiksi veden pinnan käyttäytymistä prosessorin ohjeistaessa että paikassa X on vettä. Tämän jälkeen varjostinohjelma kykenee laskemaan itsenäisesti veden pinnan käyttäytymisen ilman että välitulosten kanssa tarvitsee neuvotella prosessorin kanssa.[7] DirectX10 tulemisen myötä varjostinprosessorit korvasivat aimmin käytösä olleet pikselivarjostin ja verteksivarjostinyksiköt.[8] Tämän myötä ohjelmoijan työ helpottui.[9] Ohjelmoitavuus nousi myös uuteen ulottuvuuteen, sillä DirecX10:n myötä mukaan tulivat myös geometriavarjostimet, jotka kykenevät luomaan uusia väritystä vaativia monikulmioita.[10]
Kun varjostinyksiköt ovat värittäneet monikulmiot, kuva päätyy rasterointiyksikölle pikseleiksi muuntamista varten.[11]
Lisäksi näytönohjaimen suorituskykyyn vaikuttaa muistiväylän leveys ja siinä käytettävien muistipiirien kellotaajuus ja sukupolvi.[12] Muistin määrä ratkaisee näytönohjaimen näytettävissä olevien yksityiskohtien määrän.[13] Muistin määrä ja muistin nopeus vaikuttavat näytönohjaimen suorituskykyyn. Muistin suorituskyky riippuu muistiväylän leveydestä ja muistin kellotaajuudesta.[14] Muistiväylän kapeutta voidaan kompensoida käyttämällä korkealla kellotaajuudella toimivia muistipiirejä.[15]
Nykyaikaiset PC-näytönohjaimet toimivat tyypillisesti AGP- tai PCI Express -laiteväylässä, mutta vanhemmissa tietokoneissa on vielä PCI- tai jopa VLB- tai ISA-laiteväylässä toimivia kortteja. Kannettavissa tietokoneissa ja joissakin pöytäkoneissa (myös PC:issä) näytönohjain on integroitu emolevylle. Kotitietokoneissa, pelikonsoleissa ja joissakin vanhemmissa grafiikkatyöasemissa näytönohjauslogiikka on yleensä varsin kiinteästi sidoksissa laitteen muuhun toimintaan, eikä sitä yleensä edes pysty vaihtamaan lisäkortin avulla.
Uusimmat PC-näytönohjaimet toimivat nykyään nopeammassa PCI-Express 16x -väylässä, joka on paranneltu versio vanhasta PCI-väylästä. Pci-e-väylien nopeus voidaan säätää dynaamisesti.[16] PCI-Express 16x on parhaimmillaan monta kertaa nopeampi kuin AGP-väylä ja mahdollistaa NVIDIA:n ja nykyään myös ATI:n näytönohjaimilla niin sanotun SLI-ominaisuuden (ATI:lla CrossFire), joka mahdollistaa usean näytönohjaimen asettamisen rinnakkain moneen eri väylään tuomaan lisää suorituskykyä. Vastaava tekniikka oli myös joissakin Sunin ja SGI:n grafiikkatyöasemissa jo 1990-luvun alkupuolella sekä joissakin 3dfx Interactiven pelikäyttöön tarkoitetuissa Voodoo-näytönohjainperheen malleissa 1990-luvun lopulla.
Tietokonenäyttöjen ongelmana on se että kuva muodostuu kulmikkaista pisteistä.[17] Kaarevien ja vinojen pintojen esittäminen näyttää sen vuoksi aina sahalaitaiselta.[18] Ongelmaa kiertämään on kehitetty useita tapoja joiden perusideana on pyrkiä häivyttämään sahalaitaisuutta sopivan värisillä pisteillä sahalaitakuviossa.[19] Tätä toteutusta kutsutaan reunanpehmennykseksi.[20] Reunanpehmennyksessä piirrettävästä kuvasta tehdään suurempiresoluutioinen versio jonka avustuksella kuvapisteelle lasketaan lähimmän oikean värityksen keskiarvo.[21] Reunanpehmennyksessä käytettävä kerroin kertoo sen että kuinka monta kertaa suurempi pehmennykseen käytettävä kuva on kooltaan.[22] Tämä tekniikka tarvitsee sujuvasti toimiakseen suuren määrän näyttömuistia.[23] Suurempitarkkuuksisen kuvan laskeminen myös vie näytönohjaimelta paljon laskentatehoa.[24]
Toinen yleisesti kuvanlaadun parantamisessa käytetty tekniikka on anisotrooppinen suodatus.[25] Anisotrooppinen suodatus estää kaukaisia objekteja liialliselta sumentumiselta.[26] Reunanpehmennystä voidaan käyttää myös näissä kohteissa mutta laskennallisesti se on liian raskas näytönohjaimille.[27]
Näytönohjaimen suorituskykyyn vaikuttavat piiriarkkitehtuurin lisäksi myös käytetty ajuriversio.[28]
Näytönohjainajurin tehtävänä on peristeisesti välittää ohjelmiston käskyt näytönohjainpiirille ja suorittaa käännöstehtävä näytönohjaimen ymmärtämään muotoon.[29] Ajureilla kyetään tekemään moninaisia muutoksia suorituskyvyn lisäämiseksi.[30] Nvidian ForceWareissa 8sittemmin GeForce nimelle vaihtuneet ajurit) ja ATIn Catalysteissa on rutiineja jotka optimoivat ohjelmakoodia paremmin grafiikkapiirille sopivaan muotoon.[31] Aiemmin näytönohjainvalmistajien kesken vallitsi yhteisymmärrys siitä että varjostinohjelmien piirtojärjestystä saa muokata mutta ohjelmien sisältöön ei saa vaikuttaa.[32] Sittemmin tämä raja on hämärtynyt ja ajurit saattavat muuttaa alkuperäistä ohjelmakoodia hyvinkin paljon.[33] Muutoksia luodaan esimerkiksi varjostinohjelmien sisältöön ja z puskurien luontijärjestykseen.[34] Esimerkiksi ATIn Catalyst ajurit sisältävvät AI toiminnon jonka ollessa pois päältä ohjelmistokoodi kulkee kortille kutakuinkin siten kuin ohjelman ohjelmoijat ovat tarkoittaneet.[35] AI ominaisuuden päälläollessa ajurit vaikuttavat kuvan piirtämiseen jotka asetuksista riippuen tekevät koodiin esiasteisia optimointeja.[36] Ohjelmistokoodi ajetaan eri piirivalmistajien näytönohjelmissa eri tavoin jolloin lopputulokset eivät ole identtisiä keskenään.[37] Koska eri ajurit optimoivat ohjelmakoodia eri tavoin, lopputulokset eivät ole identtisiä keskenään.[38]
Näytönohjaimet voidaan jakaa 2D-näytönohjaimiin ja 3D-näytönohjaimiin.
2D-näytönohjaimet
Tämäntyyppiset kalliimmat näytönohjaimet on suunniteltu tyypillisesti ammattikäyttöön, missä kuvan sekä värien terävyydelle asetetut kriteerit ovat hyvin korkeat. Useimmissa vanhoissa näytönohjaimissa ei ollut ollenkaan 3D-ominaisuuksia, joten ne luokitellaan myös tähän kategoriaan.
Tunnettu 2D-näytönohjaimien valmistaja on mm. Matrox.
3D-näytönohjaimet
3D-grafiikan tehokkaaseen piirtoon tarkoitettuja näytönohjaimia on käytetty ammattikäytössä jo 1980-luvulla, mutta nykyisin niiden selvästi laajin käyttökohde on tietokonepelit, joissa on perinteisesti kilpailtu aina vain näyttävämmästä graafisesta annista. Jo pitkään pelien grafiikasta on pyritty tekemään mahdollisimman realistista, ja mitä realistisemmaksi grafiikka halutaan, sitä enemmän laskentaa yksittäisen kuvan piirto vaatii.
3D-näytönohjainten valmistajista tällä hetkellä vain kaksi kilpailee markkinaherruudesta, ATI ja NVIDIA. Myös 3dfx oli tunnettu valmistaja, jonka Voodoo-piirisarjaan perustuva 3D-näytönohjain toi aikoinaan Sony Playstation -tyylisen laitteistotason 3D-peligrafiikan PC-pelaajien ulottuville. Kilpailu kuitenkin osoittautui 3dfx:lle liian kovaksi ja NVIDIA osti sen pian Voodoo 5 -piirin valmistuksen jälkeen.
3D-näytönohjaimen ero 2D-ohjaimeen on se, että 3D-näytönohjain sisältää erityisesti 3D-mallien tehokkaaseen piirtoon tarkoitettuja ominaisuuksia, alun perin mahdollisuuden piirtää teksturoituja kolmioita, nykyään myös mahdollisuuden laskea näiden kolmioiden paikka ruudulla sekä laskea kolmion pikseleille pikselikohtaisia efektejä näytönohjaimella olevilla pikselivarjostinsuorittimilla.
Näin laskentaa ei tarvitse suorittaa tietokoneen omalla suorittimella. Nykyisin vakio-ominaisuuksiin ovat myös PC-puolella tulleet sellaiset oheistoiminnot kuin ulostulo TV:lle, DVD:n rautapohjainen purku, S/PDIF-liitäntä sekä nk. multi-head-tuki kahdelle tai useammalle monitorille.
Näytönohjaimen tulevaisuus
NVIDIAlla työskentelevä William J. Dally on spekuloinut että vuonna 2015 näytönohjaimen grafiikkapiirissä on n. 5000 shader yksikköä.[39] Spekulaationin mukaan näytönohjaimet valmistettaisiin 11 nm valmistustekniikalla[40] ja suorituskyky olisi n. 20 teraflopsia.[41] Grafiikkapiiri toimisi spekuloinnin mukaan n. 3 gigahertsin kellotaajuudella ja muistiväylän kaistanleveys olisi 1,2 teratavua sekunnissa.[42]
Viitteet
- ↑ 1,00 1,01 1,02 1,03 1,04 1,05 1,06 1,07 1,08 1,09 1,10 1,11 Mikrobitti 5/2007, s. 65
- ↑ Mikrobitti 1/2008 S 59 - 60
- ↑ Mikrobitti 1/2008 s. 60
- ↑ Mikrobitti 6/2009 s. 46
- ↑ 5,0 5,1 5,2 Mikrobitti 6/2009 s. 47
- ↑ Mikrobitti 1/2009 s. 60
- ↑ Mikrobitti 1/2009 s. 60
- ↑ Mikrobitti 1/2009 S60
- ↑ Mikrobitti 1/2009 s. 60
- ↑ Mikrobitti 1/2009 s. 60
- ↑ Mikrobitti 5/ 2007, s. 66
- ↑ Mikrobitti 5/ 2007. Sivu 66
- ↑ Mikrobitti 1/2009 s. 61
- ↑ Mikrobitti 1/2008 S 61
- ↑ Mikrobitti 1/2008 s. 61
- ↑ Mikrobitti 1/2008 s. 61
- ↑ Mikrobitti 1/2008 s. 62
- ↑ Mikrobitti 1/2008 s. 62
- ↑ Mikrobitti 1/2008 S 62
- ↑ Mikrobitti 1/2008 S 62
- ↑ Mikrobitti 1/2008 S 62
- ↑ Mikrobitti 1/2008 S 62
- ↑ Mikrobitti 1/2008 S 62
- ↑ Mikrobitti 1/2008 S 62
- ↑ Mikrobitti 1/2008 S 62
- ↑ Mikrobitti 1/2008 S 62
- ↑ Mikrobitti 1/2008 s. 62
- ↑ Mikrobitti 2/2006 s. 41
- ↑ Mikrobitti 2/2006 s. 41
- ↑ Mikrobitti 2/2006 s. 41
- ↑ Mikrobitti 2/2006 S 41
- ↑ Mikrobitti 2/2006 S 41
- ↑ Mikrobitti 2/2006 S 41
- ↑ Mikrobitti 2/2006 S 41
- ↑ Mikrobitti 2/2006 s. 41/S42
- ↑ Mikrobitti 2/2006 s. 42
- ↑ Mikrobitti 2/2006 s. 42
- ↑ Mikrobitti 2/2006 s. 42
- ↑ http://plaza.fi/muropaketti/nvidia-11-nmn-grafiikkapiiri-ja-5000-shaderia-vuonna-2015
- ↑ http://plaza.fi/muropaketti/nvidia-11-nmn-grafiikkapiiri-ja-5000-shaderia-vuonna-2015
- ↑ http://plaza.fi/muropaketti/nvidia-11-nmn-grafiikkapiiri-ja-5000-shaderia-vuonna-2015
- ↑ http://plaza.fi/muropaketti/nvidia-11-nmn-grafiikkapiiri-ja-5000-shaderia-vuonna-2015
Katso myös
.
Boggle

