GPU

Grafička procesorska jedinica (engl. Graphics processing unit - GPU) je specijalizirani elektronički sklop dizajniran da brzo manipulira i mijenja sadržaj memorije i tako ubrzava izgradnju slika u međuspremniku namjenjenom za prikaz slike na ekranu. GPU se koristi u mobitelima, osobnim računalima, radnim stanicama, igraćim konzolama itd.. Moderni grafički procesori su vrlo učinkoviti u manipuliranju računalnog grafikom i njihova visoka paralelna struktura čini ih učinkovitijima od procesora opće namjene (engl. Central Processing Unit - CPU) kod algoritama gdje obrada velikih blokova podataka ide u paraleli. U osobnim računalima grafički procesor može biti prisutan na grafičkoj kartici, matičnoj ploči i kao dio CPU-a.

Pojam GPU popularizirala je Nvidia 1999. godine sa svojom grafičkom karticom GeForce 256 (Slika 1.) koja je prema njima bila prva prava GPU kartica s mogućnošću intergrirane transformacije, rasvjete, postava trokuta... te je bila u mogućnosti obraditi 10 milijuna poligona u sekundi

Slika 1. Asus GeForce 256

Karakteristika današnjih grafičkih procesora je masivno paralerizirana arhitektura. Grafički procesor sadrži veliki broj jednostavnih procesorskih jezgri (engl. Streaming Processors). Jezgre su grupirane u veće nakupine od po 192 jednostavnih procesorskih jezgri (SP) koje nazivamo multiprocesori (engl. Streaming Multiprocessors). Današnje najjače grafičke kartice imaju i do 3072 takvih jezgri koje rade na frekvencijama i preko 1 GHz što izračunom dolazimo do 6 TFLOPS-a.

Slika 2. Shema modernog grafičkog procesora

Broj tranzistora se kroz godine drastično povećao. Tako možemo na slici 3. vidjeti da je 1997. godine Nvidia NV3 grafički procesor imao "samo" tri i pol milijuna tranzistora dok današnji Nvidia GK110 grafički procesor ima nevjerojatnih 7 milijardi i 100 milijuna tranzistora. Tranzistori omogućuju da se dretva unutar CPU-a ili GPU-a izvodi što brže. Cilj je današnjih CPU-a da jednu dretvu izvodimo što brže dok je kod GPU-a cilj da se što više dretva izvode što brže.

Slika 3. Broj tranzistora u GPU-u kroz godine drastično povećao

Prikaz grafičkog cjevovoda nalazi se na slici 4. Na tom principu je nekad radila grafika na računalu s tim da je za svaku pojedinu fazu postojao zasebam čip ili ploča koja je upravljava tom fazom obrade grafike, a protok podataka kroz cjevovod je bio fiksni.

Slika 4. Grafički cjevovod

Slika 5. prikazuje SGI RealityEngine-a iz 1993. godine. Sastojao se od 4 ploče a to su: ploča za geometriju s komandnim procesorom i geometrijskim "motorima" (engl. engine), dvije rasterske memorijske ploče sa svojim "motorima" za izradu slike te ploča za prikazivanje slike na ekranu.

Slika 5. SGI RealityEngine-a iz 1993. godine

Slika 6. prikazuje daljnji razvoj GPU arhitekture. Dodane su nove faze, a procesiranje verteksa i piksela posalo je programibilno.

Slika 6. Moderniji grafički cjevovod

Slika 7. prikazuje moderni dizajn GPU gdje se sve vrti oko izvršenja šedera (engl. Shader). Pod pojmom šeder misli se na program tj. dretvu koja se izvodi na grafičkom procesoru te se prvenstveno koristi za sjenčanje tj. proizvodnje odgovarajuće razine svjetlosti i tame u slici. U moderno doba šederi se također koriste za proizvodnju specijalnih efekata ili u postobradi. Verteks šederi, pixel šederi itd. postaju različitih programa na fleksibilnoj jezgri.

Slika 7. Moderni GPU: Unificirani dizajn

Slika 8. prikazuje Nvidia Tesla modernu GPU arhitekturu koja kao što se vidi ima mnogo dretvenih procesora koji su složeni u polja, a ta polja u klastere. Glavna karakteristika današnjih grafičkih procesora su performanse, a pod performansama misli se na propusnost. Da bi se smanjila latencija one koriste masivnu višedretvonost.

Slika 8. Nvidia Tesla GPU arhitektura

Strategija današnjih grafičkih procesora je SIMT (engl. Single Instruction Multiple Thread) tj. jedna instrukcija više dretvi te također podržavaju i SPMD (engl. Single Program Multiple Data). Na taj se način spaja tj. balansiraju mogućnosti grafičkih procesora s lakoćom programiranja. Grupa do 32 dretve formiraju zamotaje (engl. wrap), a zamotaj je skup paralelnih dretvi koje izvode jednu instrukciju.

Slika 9. Višedretvenost

Standardan način povezivanja grafičke kartice i matične ploče u osobnim računalima je preko PCI-Express x16 (engl. Peripheral Component Interconnect Express) utora koji omogućuje propusnost podataka do 8GB/s. Starije grafičke kartice su prije par godina povezivale sa starijim utorom AGP (engl. Accelerated Graphics Port) koji je omogućavao propusnost do 2 GB/s. 8GB/s je dovoljno velika propusnost između matične ploče te grafičke kartice za prijenos podataka koje grafička kartica treba obraditi. Moderne grafičke kartice koriste GDDR5 (engl. Graphics Double Data Rate) memoriju koja doseže i do 4GB. Pristup memoriji mora biti što brži, a za to se koristi široka sabirnica od 384 bita te visoka frekvencija memorije koja doseže i do 6GHz (efektivno). Na taj način se osigurava propusnost od preko 200 GB/s između grafičke memorije i grafičkog procesora.

Slika 10. AGP vs PCI-Express