HELSINKI UNIVERSITY OF TECHNOLOGY 27.4.2003 Telecommunications Software and Multimedia Laboratory Tik-111.500 Tietokonegrafiikan seminaari Kevät 2003 SAGE grafiikka-arkkitehtuuri Mikko Nikkanen 46617M
SAGE grafiikka-arkkitehtuuri Mikko Nikkanen mnikkane@cc.hut.fi Tiivistelmä SAGE (Scalable, Advanced Graphics Environment) on high-end - järjestelmiin tarkoitettu rinnakkaisesti toimiva grafiikka-arkkitehtuuri. SAGE tarjoaa tehokkaan alustan, jolla voidaan toteuttaa laadukasta, antialiasoitua reaaliaikaista kuvaa, joka vastaa antialiasoinnin tasoltaan ohjelmistopohjaisilla järjestelmillä tuotettua kuvaa. SAGE käyttää antialiasoinnissa 400 näytettä pikseliä kohden. SAGE toimii sisäisesti rinnakkaisesti ja SAGE kortteja voidaan liittää myös useita rinnakkain tehon lisäämiseksi. 1 JOHDANTO Yhteen piiriin perustuvista grafiikkajärjestelmistä on nykyisin hankala saada merkittävästi lisää tehoa, vaikka markkinoilla lisäteholle on edelleen tarvetta. Lisätehoa on saatu tekemällä järjestelmistä rinnakkaisia. Nykyään kuvan resoluution kasvu ei ole merkittävää, tehoa tarvitaan kuvan laadulliseen parantamiseen. Laatua voidaan nostaa korkeatasoisella antialiasoinnilla, jolla on merkittävä vaikutus etenkin suhteellisen alhaisia resoluutioita käytettäessä. Aiemmin reaaliaikainen laadukas antialiasointi on ollut mahdotonta ja viime vuosina sitä on voitu hyödyntää vain yksinkertaisia algoritmeja käyttämällä. SAGE (Scalable, Advanced Graphics Environment) on uudenlainen high-end - järjestelmiin tarkoitettu grafiikka-arkkitehtuuri. SAGE on suunniteltu rinnakkaisena järjestelmänä tarjoamaan laadukasta reaaliaikaista kuvaa. SAGE:ssa kuvapuskuri (frame buffer) on korvattu näytepuskurilla (sample buffer), jossa on 16 näytettä jokaista lopullista pikseliä kohden. Antialiasoinnissa käytetään ohjelmoitavia suodattimia, joiden käyttö ei käytännössä hidasta piirtonopeutta lainkaan. Tämän artikkelin kappaleessa 2 käydään läpi tietokonegrafiikan kehitystä ja mitä vaatimuksia tuotteille nykyään on. Kappaleessa 3 perehdytään syvällisesti SAGE:n toimintaan; sen rakenteeseen ja arkkitehtuuriin kattaen koko SAGE:n lohkokaavion. Kappale 4 kertoo SAGE:n nykytilasta. 5. kappaleessa vertaillaan SAGE:a muihin järjestelmiin. Viimeisessä, 6. kappaleessa on lyhyt yhteenveto tästä artikkelista. 1
2 LÄHIHISTORIALLINEN KEHITYS Tietokonegrafiikan kehityksessä on aina ollut selkeästi kaksi pääsuuntaa; high-end ja kuluttajille segmentoidut tuotteet. Vaikka nykyajan kuluttajille tarkoitetut tuotteet ovatkin moninkertaisesti tehokkaampia kuin menneiden vuosien high-end -tuotteet, niin sovellusalueiden monimutkaistuessa uusille high-end -tuotteille on tarvetta edelleen. Visualisointi on tärkeä työkalu erilaisissa tieteellisissä, teknillisissä tai kaupallisissa sovelluksissa. Sotateollisuus on aina ollut visualisoinnissa edelläkävijä. Reaaliaikaisen grafiikan esittäminen on jo vuosia ollut täysin mahdollista, mutta hyvin rajoitettua monilta osin. Käyttäjien on pitänyt joko karsia grafiikan tarkkuudesta tai laadusta tai molemmista, vaikka molemmat ovat hyvinkin toivottuja ominaisuuksia useimmissa sovelluksissa, joissa reaaliaikaista visualisointia käytetään. Visualisoinnissa on tullut tarvetta myös työryhmävisualisoinnille, jossa useampi käyttäjä voi samanaikaisesti nähdä saman datan visualisoituna, mutta omasta, vapaasti valittavasta, kuvakulmastaan. Reaaliaikaisen grafiikan lisäksi suurta käyttöä on ollut eräajomaisesti tuotetulle erittäin tarkalle ja realistiselle grafiikalle, jota on käytetty esimerkiksi elokuvissa ja mainoksissa. Vaikka tällaiseen tarkoitukseen rakennetuissa järjestelmissä on usein myös tähän tehtävään eritysesti suunniteltuja laitteistoratkaisuja, ovat järjestelmät yleensä kuitenkin vahvasti ohjelmistopohjaisia. Tällöin kuitenkin yhden kuvan (framen) laskeminen on vaatinut huomattavan ajan, kymmeniä sekunteja tai minuutteja. Tällaiset järjestelmät sopivat kuitenkin hyvin juuri esimerkiksi elokuvien erikoistehosteiden tekemiseen ja ne ovat myös yleensä helposti hajautettavissa useille eri koneille, joten järjestelmän tehokkuus voidaan moninkertaistaa tarvittaessa. Lisäksi usein voidaan käyttää normaaleja, edullisia koneita, joka on aina merkittävä etu, koska tällöin kyseisiä koneita voidaan käyttää myös muihin tehtäviin. Standardilaitteiston käyttämisessä myös kokonaishinta jää alhaisemmaksi, koska sekä hankinta- että ylläpitokulut ovat alhaisemmat. Perinteisistä yhden grafiikkasirun ympärille rakennetuista grafiikkajärjestelmistä ei enää järkevästi voida saada merkittävästi lisää tehoa. Rinnakkaiset järjestelmät ovat osoittautuneet monilla tietotekniikan alueilla tehokkaiksi ja laittamalla useita grafiikkasiruja rinnakkain (yhden koneen sisällä tai käyttämällä useita erillisiä koneita) voidaan laskentatehoa kasvattaa kohtuullisen helposti moninkertaiseksi. Jotta rinnakkaisuudesta saadaan täysi hyöty irti reaaliaikaisessa käytössä, täytyy koko grafiikka-arkkitehtuuri olla suunniteltu rinnakkaisuutta varten alusta alkaen. Tietokoneen näyttöteknologian kehitys on ollut hidasta; ainakin verrattuna esimerkiksi prosessoritehon kasvuun. Näyttöjen resoluution vuosittainen kasvu on ollut noin 10 % luokkaa vuodessa [Akeley 2001]. Resoluution lisäksi esitettävän kuvan laatu on olennaista. Kuvan laatua on voitu nostaa huomattavasti resoluutiota enemmän. Erilaisia efektejä voidaan nykyään toteuttaa reaaliaikaisesti käyttäen laitteiston ominaisuuksia hyväksi, kun ennen ne on jouduttu toteuttamaan ohjelmallisesti. Koska resoluution kasvattaminen ei monestikaan ole enää mielekästä näyttölaitteiden rajoitusten vuoksi, monet valmistajat ovat teholukujen sijaan alkaneet kiinnittää 2
huomiota tuotetun kuvan laatuun. Tämä kehitys on ollut selvää sekä kuluttajille tarkoitetuissa että high-end -laitteissa. Tyypillisimmin kuvan laatua on parannettu käyttämällä antialiasointia. Antialiasointiin on monia algoritmeja, joista useimmiten käytetään jotakin supersampling:iin perustuvaa tapaa. Näitä on voitu käyttää sekä ohjelmistopohjaisissa järjestelmissä että nykyisin myös rajoitetusti rautaan pohjautuvissa reaaliaikajärjestelmissä, jolloin on kuitenkin jouduttu tyytymään vain yksinkertaisiin toteutuksiin. 3 SAGE GRAFIIKKA-ARKKITEHTUURI SAGE (Scalable, Advanced Graphics Environment) on Sun Microsystemsin kehittämä uusi grafiikka-arkkitehtuuri, joka on tarkoitettu high-end -visualisointijärjestelmiin. Sisäisesti SAGE koostuu rinnakkaisista renderöintiliukuhihnoista. Kuvassa 1 näkyy SAGE:n lohkokaavio. 3.1 Master Chip Kuvassa 1 ylimpänä on Master Chip, joka hakee muistiväylältä (DMA) komentoja (OpenGL) ja grafiikkadataa. Käytännössä grafiikkakortti kytketään Sun Fireplane - liitäntään, jossa se näkyy vain yhtenä väylään liitettynä CPU:na. Master Chip sisältää myös MMU:n, joten se pystyy toimimaan itsenäisesti eikä varsinaisen CPU:n tarvitse syöttää sille dataa, vaan Master Chip voi itse suorittaa virtuaalisten muistiosoitteiden muuntamisen ja datan lukemisen mistä vain virtuaalimuistin alueelta. Luettu data ja käskyt kerätään puskureihin ja Master Chip lähettää ne edelleen eteenpäin kuormitusta tasaavan kytkimen kautta neljälle rinnakkaiselle renderöintiliukuhihnalle, jossa ensimmäisenä dataa prosessoi MAJC piiri. [Sun 2003] 3.2 MAJC Renderöintiliukuhihnat koostuvat kahdesta erillisestä sirusta ja useista muistipiireistä. MAJC (Microprocessor Architecture for Java Computing) -piiri on näistä ensimmäinen. MAJC on moniprosessorinen kehittynyt piiri, jonka arkkitehtuuri on luontaisesti monisäikeinen. MAJC on periaatteessa yleiskäyttöinen prosessori, mutta se soveltuu erityisen hyvin grafiikan, äänen ja videon käsittelyyn, joissa tarvitaan suurta laskentatehoa. MAJC toimii monella tasolla rinnakkaisesti, yhden prosessorin sisällä on kaksi identtistä prosessoria, jotka voivat vielä sisäisesti toimia rinnakkain tehokkaasti. MAJC sisältää Graphics PreProsessor:n (GPP), joka purkaa pakatun polygonitiedon. GPP:ssä on myös kuormitusta tasaava kytkin, jonka kautta GPP lähettää puretun tiedon eteenpäin CPU:ille. MAJC:n CPU -osassa suoritetaan geometrian transformointi, leikkaukset ja valaistus. Näillä molemmilla CPU:lla on oma 16 KB:n välimuisti käskyjä varten ja jaettu 16 KB:n välimuisti dataa varten. Jokainen MAJC CPU sisältää vielä neljä erillistä functional unit:a (FU0 FU3), jotka edelleen lisäävät suorituksen rinnakkaisuutta. Jokaisessa 3
FU:ssa voidaan ajaa 32 bittinen käsky kerrallaan. MAJC:n käskypaketit ovat korkeintaan 128 bittisiä, joten yhteen pakettiin mahtuu neljä 32 bittistä käskyä, joita voidaan edelleen suorittaa rinnakkaisesti Functional Uniteissa. [Sudharsanan] Kuva 1: SAGEn lohkokaavio. Paksut laatikot ovat custom-siruja. Punaiset laatikot FIFO:a ja vihreät kuormituksen tasaavia kytkimiä. [Deering at al. 2002] 4
3.3 Rasterizer ja Sched MAJC:n jälkeen liukuhihnalla tulee Rasterizer Chip. Tämä piiri rasteroi teksturoidut kolmiot näytepuskuriin. Se suorittaa joitain kuvankäsittelyfunktioita ja ikkunointiin liittyviä asioita. Jokaisella Rasterizerilla on 256 MB omaa tekstuurimuistia, joten suurimmat tekstuurit voivat olla tämän kokoisia, jos käytetään neljää rinnakkaista liukuhihnaa. Tekstuurimuistit voidaan myös yhdistää, jolloin voidaan käyttää 1 GB kokoisia tekstuureja. Tällöin piirtonopeus laskee neljäsosaan normaalista. [Sun 2003] Rasterizer lähettää näytteet eteenpäin Sched -piireille, joita on kaksi jokaista Rasterizeria kohden. Schedit koostuvat kolmesta FIFO -kerroksesta. Schedien tehtävänä on reitittää Rasterizerien näytteet. Kun näyte saapuu Sched:n input FIFO:on, ne reititetään oikeaan toisen vaiheen FIFO:on muistin osoituksen perusteella. Toisesta FIFO:sta näytteet reititetään kuormitusta tasaavan kytkimen kautta output FIFO:lle. Kytkin sallii liikenteen vain yhdestä lähteestä yhtäaikaisesti, jolloin kolme muuta lähdettä joutuvat mahdollisesti odottamaan vuoroaan. Tämän järjestelmän vuoksi välimuistien toiminta on tehokasta seuraavassa vaiheessa, 3DRAM -muistia käytettäessä. Kytkimen jälkeen tuleva kolmas, output FIFO on lopullinen näytteen esikirjoitusjono tietyn muistilohkon edessä. Muistilohko koostuu neljästä 3DRAM -piiristä (64 MB/siru). Sched tutkii tätä jonoa ennakolta, jotta välimuistin toiminta olisi mahdollisimman tehokasta ennen varsinaista näytteiden kirjoitusta näytepuskuriin. Näytteet on tallennettu 3DRAM piireihin siten, että vierekkäiset näytteet ovat erillisissä piireissä. Tällöin niiden käsitteleminen on nopeampaa, koska samaan aikaan käsiteltävät näytteet voidaan lukea eri piireistä, jolloin yhden piirin muistiväylä ei muodostu pullonkaulaksi. Rasterizerien näytteet yhdistyvät Sched -piirissä, joten tämä pitää ottaa huomioon Schedin toiminnassa, jotta esimerkiksi piirtojärjestys on oikea. Tätä varten Schedin inputissa voi olla erityisiä synkronaatiomerkkejä. Jos tällainen luetaan yhden Rasterizerin ulostulosta, niin tällöin tästä Rasterizerista ei lueta enempää näytteitä ennenkuin muutkin kolme Rasteroijaa ovat päässeet samaan synkronaatiomerkkiin. Tämän jälkeen toiminta voi jatkuva normaaliin tapaan. Esimerkkeinä tällaisesta synkronoinnista ovat jotkin algoritmit, jotka vaativat stencil bufferin läpikäyntiä useaan kertaan muokaten sitä jollain tavalla jokaisella läpikäynnillä. Käytännössä synkronaatiokohta tulee tällöin läpikäyntien väliin ja OpenGL -ajurit osaavat huolehtia tästä. 3.4 Näytepuskuri Schedistä näytteet menevät näytepuskuriin. Näytepuskuri koostuu 32 3DRAM64 - piiristä. 3DRAM on erityisesti 3D grafiikkaa varten suunniteltu muistipiirityyppi. Perinteiset muistipiirit eivät ole tarpeeksi nopeita grafiikkaa käytettäessä ja ne ovat muodostuneet pullonkauloiksi. Muistipiiriin on integroitu suoraan ALU, joten muistin 5
käsittely tapahtuu kokonaan piirin sisällä ja on erittäin nopeaa. Näytepuskurin tyhjentäminen (jokaiselle uudelle framelle) on myös nopeaa. [Deering 2002] Näytepuskuri on jaettu neljän 3DRAM -piirin osiin, jotka liittyvät yhdessä Sched -piiriin jakaen ohjauksen, datalinjat ja osoitteet. Jokainen Route piiri liittyy jokaisen 3DRAM piirin kahteen dataulostuloon ja voi reitittää datan mille tahansa Convolve -piirille. Convolve -piirit vaativat, että niiden sisääntuleva data on yhtenäinen vertikaalinen osa kuvapuskuria. Data luetaan näytepuskurista 160 näytteen pituisina purskeina, jotka lähetetään eteenpäin oikeille Convolve piireille. [Sun 2003] 3.5 Convolve -piiri Convolve piirin käyttö antialiasoinnissa on SAGE -arkkitehtuurin suurin ero aikaisempiin järjestelmiin verrattuna. SAGE:ssa antialiasointi tehdään kuvapuskurin jälkeen, kun aiemmin antialiasointi on tehty ennen kuvapuskuria. SAGE:ssa perinteinen kuvapuskuri on korvattu näytepuskurilla, jossa on kaksiulotteinen taulukko, joka sisältää näytelistoja. Eli jokaista pikseliä kohden on lista näytteitä. Jokainen näyte koostuu 10 bittisestä RGB -arvoista ja 8 bittisestä ALPHA -kanavasta. Supersamplatut pikselit ajetaan suodattimen lävitse, joka muodostaa antialiasoidun kuvan. Koska antialiasointi reaaliajassa vaatii todella suuren muistiväylän ei sitä ole mahdollista tehdä yhdellä piirillä. Tämän vuoksi SAGE:ssa käytetään neljää Convolve piiriä. Jokainen neljästä Convolve -piiristä käsittelee tiettyä osaa kuvasta, jonka jälkeen pikselit siirretään seuraavalle piirille ja lopulta tulokseksi tulee lopullinen kuva. Tällä saavutetaan erittäin suuri nopeus, jopa 1,6 miljardia näytettä (8GB) voidaan käsitellä sekunnissa. Kuvassa 2 näkyy neljän Convolve piirin toiminta. Jokaiselle on allokoitu oma alueensa kuvasta, jota kyseinen piiri käsittelee. Koska kuvaa käsitellään 5x5 kokoisella suodattimella (filter), pitää alueiden mennä päällekkäin kahden pikselin verran. Kuva 2: Convolve piirien toiminta. Jokainen piiri suodattaa tietyn vertikaalisen alueen kuvapuskuria. Alueet menevät osittain päällekkäin. [SUN 2003] 6
Koska suodattimen koko on 5x5 pikseliä, tästä johtuen myös jokaista näytettä käytetään 25 lopullisen pikselin laskennassa. Tämän takia jokaisessa Convolve piirissä on omaa välimuistia, johon mahtuu kuuden scanlinen verran dataa, jotta käytettävä data olisi koko ajan piirin sisällä nopeasti saatavilla. Jokaisen pikselin arvo lasketaan käyttäen korkeintaan 16 näytettä/pikseli riippuen valitusta resoluutiosta. Lopulta yhden pikselin arvon laskennassa käytetään siis korkeintaan 5x5x16 eli 400 näytettä. Aikaisemmissa järjestelmissä yksittäisen pikselin laskennassa on voitu käyttää huomattavasti vähemmän näytteitä, jolloin lopputulos on myös ollut karkeampi. Kuvassa 3 näkyy tarkemmin, miten SAGE painottaa näytteitä. Kuva 3: SAGE laskee painotetun keskiarvon käyttämällä 16 näytettä/pikseli. [SUN 2003] SAGE:n toteutuksessa yksittäisen pikselin sisällä on 64x64 kokoinen taulukko, johon 1-16 näytettä asetetaan resoluutiosta riippuen. Jokainen näyte voi olla missä tahansa kohtaa pikseliä (64x64 taulukon sisällä). Jotta supersampling toimii laadukkaasti, tulee näytteiden olla satunnaisissa paikoissa pikselin sisällä. SAGE:ssa näytteen paikka on pseudo-satunnainen ja toteutus takaa, että samanlainen sample pattern ei toistu 128x128 pikselin alueella. Tämä takaa, että supersamplauksessa ei synny säännöllisiä, toistuvia virheitä, kuten Moire ilmiötä. [Deering 2002] Laskettaessa jonkin pikselin lopullista arvoa, otetaan laskennassa mukaan suodattimen alle jäävät näytteet ja niitä painotetaan niiden etäisyydestä riippuen. Kuvissa 3 ja 4 on esitetty miten SAGE painottaa ja käyttää näytteitä laskennassa. Käytettävä suodatin on vapaasti ohjelmoitavissa tarpeen mukaan. 7
Kuvasta 4 näkee, miten SAGE käyttää eri näytteitä laskettaessa jonkin yksittäisen pikselin arvoa. Harmaa alue on 5x5 pikselin alue ja sen sisällä oleva ympyrä on käytettävän suodattimen alle jäävä alue. Tällä alueella olevat näytteet otetaan mukaan laskettaessa keskellä (vihreä piste) olevan pikselin arvoa ja jokaista näytettä painotetaan sen etäisyyden mukaan, kuten kuvasta 3 näkee. Kuvassa 4 näkyy myös miten jokaisen pikselin alueella näytteet ovat satunnaisissa paikoissa. Kuva 4: Yhden pikselin arvon laskennassa otetaan mukaan viiden viereisen pikselin alueella olevat näytteet painottaen niitä etäisyyden mukaan. Kuvassa näkyy myös miten jokaisen pikselin alueella näytteet ovat eri paikoissa. [Naegle 2003] 4 NYKYTILA Sun on tuonut SAGE arkkitehtuuriin perustuvan grafiikkakortin markkinoille nimeten sen XVR-4000:ksi. Kortti toimii Sun Fire V880z palvelimen kanssa ja kortteja voi olla joko yksi tai kaksi kappaletta rinnakkain. Hintaa tuotteella on noin $ 60 000 palvelimen kanssa. Lopullinen tuote pystyy prosessoimaan 60 miljoonaa valaistua, antialiasoitua kolmiota sekunnissa. Siinä on 26 bittinen liukuluku z-buffer ja 30 bittinen värisyvyys. 8
5 VERTAILUA MUIHIN JÄRJESTELMIIN SAGE:n käyttämä antialiasointi on hyvin kehittynyt myös verrattaessa sitä ohjelmistopohjaisiin ratkaisuihin. Tyypillisesti ohjelmistopohjaisilla järjestelmillä on voitu tehdä hyvin näyttävää ja realistista grafiikkaa, mutta näiden yhteydessä ei ole oltu vielä lähelläkään reaaliaikaisuutta. SAGE:lla voidaan tuottaa antialiasoinnin osalta vastaavan tasoista kuvaa ja reaaliajassa. Kun SAGE:n reaaliajassa tuottamaa kuvaa verrataan esimerkiksi RenderManin avulla tuotettuun kuvaan, ei eroa näiden välillä käytännössä huomaa verrattaessa antialiasoinnin tasoa [Sun 2003]. Kuvassa 5 on esitetty erilaisia tapoja toteuttaa yhden pikselin arvon laskenta. Reaaliaikaisissa järjestelmissä on käytetty useimmiten oikealla esitettyä Box - suodatinta, joka laskee yksittäisen pikselin arvon käyttämällä tyypillisesti 8 tai 16 näytteen keskiarvoa yhden pikselin sisältä. Vasemmalla on Tent -suodatin, jota käytetään joissain uusimmissa toteutuksissa. Tent suodatin painottaa laskettavan pikselin keskustaa lähellä olevia näytteitä kauempana olevia enemmän. Kuvassa 3 oleva toteutus ottaa mukaan näytteitä myös viereisten pikseleiden reunoilta. [Turkowski 1990] Kuva 5: Vertailua aikaisempiin reaaliaikaisiin filtteröintitoteutuksiin. Keskellä SAGE:n toteutus, oikealla yleinen toteutus, Box - suodatin, vasemmalla Tent - suodatin. [Naegle 2002] Kuluttajille tarkoitetuissa järjestelmissä on muutaman vuoden ajan ollut mahdollisuus käyttää antialiasointia. Esimerkiksi nvidia Geforce 3:ssa on tuki antialiasoinnille käyttäen 2 tai 4 näytettä pikseliä kohden. Geforce 3:ssa voidaan käyttää joko yksinkertaista Box tai Tent suodatinta. Kuitenkin Geforcen tapauksessa piirtonopeus putoaa antialiasointia käytettäessä huomattavasti, mutta siitä huolimatta yksinkertainen antialiasointi onnistuu reaaliajassa. Myös ATI Radeon korteissa on nykyään tuki antialiasoinnille. Radeon korteilla näytteiden paikka on etukäteen määrätty. Näytteitä voi olla 8 kappaletta pikseliä kohden. Kuitenkin näistä 8 näytepaikasta käytetään (konfiguraatiosta riippuen) vain esimerkiksi 4 laskettaessa yhden pikselin arvoa. Vierekkäisillä pikseleillä valitaan toisistaan poikkeavat 4 näytepaikkaa, joten tällä saadaan satunnaisuutta näytteiden valintaan. 9
SAGE:ssa näytteiden paikka valitaan huomattavasti satunnaisemmin kuin ATI:n toteutuksessa. [ATI 2001] Tulevaisuudessa myös kuluttajatuotteissa tullaan näkemään entistä laadukkaampaa grafiikkaa. Muutamaan vuoteen resoluution kasvulle ei enää ole ollut tarvetta, vaan kuluttajatuotteidenkin valmistajat ovat keskittyneet kuvan laadun parantamiseen. Lisäksi on selvästi nähtävillä, että erilaiset rinnakkaisuutta hyödyntävät ratkaisut ovat ainakin lähitulevaisuudessa ainoa keino kasvattaa laskentatehoa, jota tarvitaan kuvan laadun parantamiseen. Jo nykyään kuluttajatuotteissa on rinnakkaisia renderöintiliukuhihnoja ja on oletettavaa, että tämä kehitys tulee jatkumaan. SAGE:n käyttämää kehittynyttä antialiasointia ei vielä pysty toteuttamaan kuluttajahintaisissa tuotteissa, mutta esimerkiksi yllä kuvaillussa ATI Radeonin toteutuksessa on samoja piirteitä kuin SAGE:ssa. Onkin oletettavaa, että myös kuluttajatuotteissa tullaan näkemään kehittyneempiä antialiasointiratkaisuja. SAGE:n käyttämä arkkitehtuuri poikkeaa nykyisistä tuotteista suurimmilta osin Convolve piirien käytön osalta ja siinä, että antialiasointi tehdään kuvapuskurin jälkeen. Muissa toteutuksissa antialiasoidut pikselit talletetaan kuvapuskuriin. SAGE:ssa kuvapuskuri on korvattu näytepuskurilla ja antialiasointi tapahtuu myöhemmin ja ilman piirtonopeuden laskua. SAGE:n käyttämä näytepuskuri vaatii myös enemmän muistia verrattuna perinteiseen kuvapuskurin käyttöön. Nykytuotteissa ongelmana on muistiväylän riittämättömyys etenkin korkealaatuista antialiasointia käytettäessä. Antialiasointi moninkertaistaa muistiväylän käytön. Muistien kehittyminen ja nopeiden sisäisten, riittävän suurien välimuistien käyttö SAGE:n tapaan helpottaa laadukkaan grafiikan tuottamista myös kuluttajatuotteissa. Mielenkiintoisena kuluttajille suunnattuina tuotteina ovat pelikonsolit, joiden seuraavassa sukupolvessa voidaan nähdä seuraava suuri muutos grafiikkaarkkitehtuurissa. Ainakin Sonyn syyskuussa 2002 jättämän patenttihakemuksen mukaan Sonyn tulevissa tuotteissa tullaan käyttämään entistä vahvemmin rinnakkaisuutta ja suurempia välimuisteja. Myös kuormituksen tasausta tullaan käyttämään SAGE:a muistuttavasti. [Suzuoki 2002] 6 YHTEENVETO SAGE tarjoaa erittäin korkealaatuista reaaliaikaista grafiikkaa. Sen arkkitehtuuri poikkeaa monilta osin yleisesti käytössä olevista ratkaisuista ja se on alusta alkaen suunniteltu toimimaan rinnakkaisesti. Laadullisesti SAGE:lla tuotettu kuva vastaa ohjelmistopohjaisia toteutuksia ja ylittää helposti kaikki nykyiset rautapohjaiset ratkaisut. Tulevaisuudessa myös muissa järjestelmissä tullaan näkemään samanlaisia ratkaisuja kuin SAGE:ssa kuvan laadun nostamiseksi. 10
VIITTEET Akeley, K. 2001. Course Notes of CS448A, Fall 2001. http://graphics.stanford.edu/courses/cs448a-01-fall/lectures/lecture5/ ATI Technologies. 2001. Smoothvision, White paper, http://mirror.ati.com/technology/hardware/pdf/smoothvision.pdf Deering, M; Naegle, D. 2002. The SAGE Graphics Architecture. Proceedings of the 29th annual conference on Computergraphics and interactive. San Antonio, Texas, USA. ACM Press., s. 683-692. ISBN: 1-58113-521-1 Dominé, S. 2001. OpenGL Pixel Formats and Multisample Antialiasing. http://developer.nvidia.com/docs/io/1594/att/pixelformatsandmultisample.pdf Naegle, D; Deering, M. 2002. The SAGE Graphics Architecture. Siggraph 2002 Talk Presentation. San Antonio, Texas, USA. http://online.cs.nps.navy.mil/distanceeducation/online.siggraph.org/2002/papers/13_ GraphicsHardware/Presentation01.html Sudharsanan, S. MAJC-5200: A high performance microprocessor for multimedia computing. Sun Microsystems, Inc., Palo Alto, CA 94303, USA. Sun Microsystems. 2003. Sun XVR-4000 Graphics Accelerator Acrhitecture, Sun Fire V800z Visualization System Technical White Paper, http://www.sun.com/servers/entry/v880z/wp.pdf Suzuoki, M; et al. 2002. Computer architecture and software cells for broadband networks, US Patent Application #20020138637 Tremblay, M.; Chan, J.; Chaudhry, S.; Conigliaro, A.;Tse S.S. 2000. The MAJC Architecture: A Synthesis of Parallelism and Scalability, IEEE Micro magazine NOV/DEC 2000, Vol. 20. No. 6. s. 12 25. Turkowski, K. 1990. Filters for Common Resampling Tasks, Graphics Gems I, Academic Press, 1990, s. 147-165. 11