Graphics Core Next
VLIW arhitektura koju je ATI doneo u miraz prilikom sklapanja „braka“ sa AMD-om, održala se veoma dugo, od serije 29xx do serije 69xx AMD/ATI grafičkih karti. Ova arhitektura bila je na najnižem nivou optimizovana za rad sa množenje vektora i skalarni proizvod, sto su osnovne operacije kada je u pitanju grafika. Prva verzija počev od HD2900 serije koristila je VLIW5 arhitekturu pa sve do 6800 serije. Kasnije je ova arhitektura preživela modifikaciju u VLIW4. VLIW5 je podrazumevala „thread processor“ sa ukupno 4 MAD-ALU jedinice, i dodatnom T-jedinicom za specijalne i trigonometrijske funkcije, a tu se nalazila još i Branch jedinica. Kasnije je kod VLIW4 izbačena T-jedinica, ali su njene funkcije dodate dvema MAD ALU jedinicama, čime je dobijeno na kompaktnosti i performansama. VLIW5 je koristio APU prve generacije – Llano, dok je VLIW4 korišćen u Trinity i Richland APU-ovima. Međutim, problem sa VLIW arhitekturama je u tome što umesto standardnih instrukcija, koriste „wavefront“.
Kod ovakvog načina rada, wavefront prolazi izvršavanje kroz ceo red ALU jedinica u mreži. Kada prvi wavefront dođe na red za izvršavanje, nije moguće da sledeći počne da se izvršava iako je neka od ALU jedinica slobodna, dok nije završeno izvršavanje kompletnog wavefronta. U momentu kada je wavefront pušten na izvršavanje, više ne postoji mogućnost „zakazivanja“ kada će koji od ostalih wavefrontova da se izvršava. Zbog toga je moguće da neka od ALU jedinica koja je završila svoj deo posla ostane besposlena. Kod VLIW4 arhitekture, ALU jedinice su organizovane u grupama od po 4×16. Ukupno 16 thread procesora sa po 4 ALU jedinice popunjavaju jedan SIMD endžin. Unutar samo thread procesora wavefrontovi jedan po jedan uzimaju ALU jedinice za izvršavanje. Zbog međuzavisnosti između wavefrontova dolazi do čekanja unutar SIMD endžina, zbog čega mnoge od ALU jedinica ostaju neiskorišćene. Ovakva arhitektura zahteva brižljivu optimizaciju koda i nije previše fleksibilna za GPGPU.
GCN – Graphics Core Next donosi novine po pitanju GPGPU izračunavanja. Arhitektura je potpuno redizajnirana u odnosu na VLIW, a CU-Compute Unit sada zamenjuje SIMD engine.
Svaki CU sadrži četiri vektorske jedinice, od kojih svaka poseduje 16 ALU-a, dakle ukupno imamo 64 ALU-a po CU, što je jednak broj kao i kod SIMD endžina u VLIW4. Glavna razlika se ogleda u tome što sada svaka vektorska jedinica unutar CU može da se koristi nezavisno. CU poseduje svoj sopstveni scheduler, koji može da dodeli odgovarajući wavefront zasebnoj vektorskoj jedinici da bi izbegao zavisnost podataka u izvršavanju wavefrontova. Dakle, priča je slična kao i pri prelasku sa in-order CPU arhitekture na Out-Of-Order, mada je kod GCN GPU-a ceo algoritam dosta jednostavniji po pitanju instrukcijskog reorderinga.
Jedna od fundamentalnih novina koje je AMD implementirao u GCN arhitekturu je ACE – Asynchronous Compute Engines. Funkcija ovih jedinica je raspodela procesa, odnosno thread-ova na odgovarajuću CU na izvršavanje. Kako je GCN dizajniran da istovremeno izvršava više zadataka, iz tog razloga ne čudi zbog čega je u GPU implementirano onoliko ACE, koliko imamo i CU.
ACE poseduje izvesnu mogućnost da izvršava zadatke van poretka kojim su oni pristigli na izvršavanje tako što može da im dodeljuje prioritet, ali nije Out-Of-Order. Za sinhronizaciju ovih jedinica koristi se 64KB Global Data Share, koji predstavlja keš za sinhronizaciju između zadataka. Zahvaljujuci ovom kešu ACE ima mogućnost da prebaci posao CU na izvršavanje drugog zadatka koji je u redu i koji čeka da bude raspodeljen na izvršavanje. Sada je bar svima jasno zbog čega AMD poistovećuje GCN CU sa procesorskim jezgrima, barem kada je u pitanju GPGPU.
Što se tiče FP64 podrške, GCN unutar Kaverija podržava „double precision FP“, ali u odnosu 1/16 u odonosu na „single precision“, odnosno FP32, dakle isto kao i na Richland-u, dok Intelov HD4600 GPU ne podržava uopšte FP64.
Kod GCN arhitekture na 4 CU obično dolazi jedan render backend. Render backend služi za popunjavanje površina pikselima. Raster Operatori – ROP (Raster Operator Pipeline) unutar lokalne memorije – framebuffer- a, vrši operacije upisa i čitanja vrednosti koje predstavljaju piksele na ekranu, Z/Stencil vrši baferovanje dubine, gde se određuje šta će biti iscrtano na ekranu, a šta ne. GCN dolazi sa optimizovanim render back-endom, iako zbog nešto nižeg kloka teoretski fill rate je nešto niži nego na prethodnoj generaciji APU-a, performanse su u praksi bolje, kao i performanse u radu sa tessalacijom.
TMU jedinice su sastavni deo SIMD endžina kod VLIW, odnosno CU kod GCN, a TMU jedinice vrše operacije teksturnog mapiranja na geometrijske objekte, odnosno na vertekse. Texel rate je kod Kaverija naravno, veći zbog većeg broja CU, od kojih svaka poseduje mogućnost teksturisanja do 4 teksture, što je ukupno 32 teksture na 720 MHz, u odnosu na 24 teksture na 844 MHz kod Richlanda.
Dodaj komentar