| Rubrike | Edukacija | AMD-ovi vrući čipovi
Edukacija

AMD-ovi vrući čipovi


Steamroller

 

Novi Steamroller modul donosi oko 15% poboljšanja performansi po Watt-u u odnosu na Piledriver, odnosno oko 30% u odnosu na Bulldozer. Druga bitna stavka predstavlja GPU, koji je baziran na GCN arhitekturi (Graphics Core Next), koji predstavlja korak napred kada je u pitanju GPGPU.

 

HSA T

 

GCN u Kaveri APU-ovima ima mogućnost da deli podatke koje obrađuje sa procesorom, čime se eliminiše potreba za kopiranjem iz memorije u GPU memoriju. Stručnije rečeno, GCN GPU unutar Kaveri APU-a ima mogućnost rada sa x86-64 adresnim pokazivačima. Ovaj čip će biti izrađen u najnovijem 28nm „low leakage“ HKMG proizvodnom procesu i predstavlja novi korak u infiltraciji HSA – Heterogene Sistemske Arhitekture.

 

HSA2 T

 

Da se vratimo na Steamroller arhitekturu: Ključna razlika u odnosu na prethodnu „evoluciju“ predstavljaju promene u „front end“ delu procesora koji je zadužen za „fetch“ instrukcija (dovlačenje) i dekodiranje. Ova mikroarhitektura poseduje zasebne x86 dekodere. Kod Bulldozer i Piledriver modula, dekoding se vršio preko zajedničkih dekodera. Ono što je „nepoznata“ u ovoj priči je kolika je „širina“ ovih zasebnih dekodera.

Teoretski gledano, Bulldozer modul po threadu ili za oba threada može da izvrši i dekodira do 4 x86 i FP operacije, što ukupno za ceo procesor, odnosno 4 modula i 8 threadova daje teoretski maksimum od 16 instrukcija. U praksi, naročito na Bulldozeru ovaj broj je znatno niži. Resursi su često loše iskorišćeni, pa je u praksi IPC faktor nizak.

 

stam decode TBulldozer decode T

 

Glavni cilj „Steamroller-a“ je poboljšanje „single thread“ performansi, koje za krajnji cilj ima poboljšanje izvršavanja serverskih i klijentskih operacija i poboljšanje performansi po watt-u. Kod Bulldozer i Piledriver jezgara, fetch queue je bio podeljen u dva prozora od po 16 bajtova. Ovo znači da se za svaki thread nezavisno „dovlačilo“ po 16-bajtova instrukcija.

U slučaju da instrukcije nisu iste veličine i da nisu „aligned“ – poravnate u memoriji odakle se čitaju, IPC se u ovim situacijama smanjuje. Ipak, postavlja se pitanje koliko je zaista ovo usko grlo, ako se uzme u obzir to da su dekoderi bili neiskorišćeni. U svakom ciklusu je bilo moguće dekodirati operacije samo iz jednog threada, a za dva threada naizmenično.

Ovo alterniranje threadova znatno povećava load-to-use latenciju i smanjuje efikasnost dekodera. Da podsetimo, u retko kojoj situaciji je bilo moguće dekodirati svih 4 instrukcije po threadu, naročito ako uzmemo u obzir da je „fetch window“ samo 16 bajtova. Steamroller koristi dva paralelna, najverovatnije 4-way dekodera, koji mogu da dekodiraju najviše po četiri kompleksne instrukcije, paralelno.

 

steam opscycle T

 

Najavljeno je i povećanje L1 instrukcijskog keša, odnosno smanjenje „cache miss-a“ – promašaja pri čitanju za 30%. Da podsetimo, instrukcijski keš je kod Bulldozer procesora bukvalno „nasleđen“ od ranije mikroarhitekture – AMD K10. Za sada nije poznata informacija na koliko KB će se povećati L1 instrukcijski keš, ali je i moguće da će ostati 64KB, ali uz znatno povećanje asocijativnosti koja u slučaju 4-way ili 8-way asocijativnosti radikalno smanjuje procenat promašaja.

Kao što je poznato, usko grlo BD arhitekture jeste L1 instrukcijski keš, zbog samo dvostruke, 2-way asocijativnosti, prilikom izvršavanja dva threada, često se dešava da jedan drugog „kompromitiju“ u izvršavanju. Kao rezultat ovoga, Steamroller bi trebalo da omogući do 25% više instrukcija po ciklusu ka izvršnim jedinicama. Jedna od bitnih stvari koju bi trebalo spomenuti je i da će broj pogrešno predviđenih grananja u kodu (branch mispredict) biti smanjen za čitavih 20%, što je verovatno posledica verovatno nešto kraćeg pipelinea i za sada nepoznatih izmena u mikroarhitekturi.

 

improving single core exec T

 

Jezgra, odnosno klasteri za rad sa celobrojnim vrednostima (integer execution/ALU) nisu bitno izmenjeni u odnosu na Bulldozer, sadrže kao što je poznato „scheduler-e“, koji služe da u pravom momentu pošalju instrukciju na izvršavanje ukoliko za to postoji odgovarajući podatak koji stiže iz „register file-a“ i L1-Data keša.

Naši testovi Bulldozer jezgra su potvrdili da ova mikroarhitektura nije uskraćena za efikasnost integer/ALU blokova u odnosu na K10 arhitekturu, ali izvesne optimizacije su dobro došle kada je u pitanju „hranjenje“ ove mašinerije. Da bi se postigla veća efikasnost u „Out Of Order“ izvršavanju, AMD je preuzeo neophodne korake koji podrazumevaju da su podaci i instrukcije dostupni u što većem broju slučajeva na vreme iz memorije i iz instrukcijskih buffera „scheduler-a“ .

Jedan od načina da se indirektno poboljša instrukcijski scheduling je pametniji pristup Data kešu. Implementacijom algoritama koji efikasnije saniraju posledice promašaja u L1D kešu postiže se da sa što manje „potrošenih“ ciklusa pristupi podatku koji nije u kešu. Povećanje brzine „store-to-load“ operacija, gde se vrši operacija čitanja unapred, pre operacije pisanja podatka, predstavlja jedan od krucijalnih faktora za poboljšanje rada sa memorijom i za efikasniji rad izvršnih jedinica. Drugim rečima suma ovih faktora uticaće značajno na povećanje prosečnog IPC faktora na Steamroller jezgrima.

 

lowpower Steam T

 

Unutar same mikroarhitekture AMD konačno uvodi neke novine koje će očigledno uticati na smanjenje potrošnje čipova, a samim tim i na povećanje performansi. Za razliku od AMD-a koji je još na Phenom procesorima povećao „fetch bandwidth“ instrukcija na 32 bajta, Intel je još kod Core 2 arhitekture unutar „fetch“ faze ubacio LSD – loop stream detector.

Ovaj mehanizam služi da ukoliko je detektovana petlja u programskom kodu, procesor automatski isključuje „front end“, ne koristi više dekodere i L1 instrukcijski keš, već iz buffera povlači već pre-dekodirane operacije koje se izvršavaju u programskoj petlji. Vidna razlika je u koliko se radi o tzv. „tight loop“ petljama koje koriste veoma male količine podataka, zbog čega se često vrši ponovno dekodiranje instrukcija – u ovim slučajevima, instrukcija ne čeka na podatak, jer se podatak već nalazi u registrima ili u L1 Data kešu.

Steamroller će sadržati ovakav buffer, ali nije poznata njegova veličina. Sa druge strane, ovakav pristup je pametan jer smanjuje „pritisak“ na L1 instrukcijski keš i na potrebu za ponovnim „dovlačenjem“ (fetch) jednih te istih instrukcija koje se izvršavaju u petljama.

Iako FX procesori, kao i Phenom imaju dvostruko veći fetch bandwith u odnosu na Core procesore (32B vs 16B), ovo usko grlo na Core arhitekturi se anulira uz pomoć uOp keša ili Loop Stream Buffera. Obzirom da Bulldozer koristi dva 16-bajtna fetch „prozora“, bez prisustva Loop Buffera, vrlo lako može da se dogodi da kod manje „ortogonalnog“ koda dolazi do „ispadanja“ iz ovog 16-bajtnog okvira, zbog čega se drastično smanjuje broj instrukcija po ciklusu. Po našem mišljenju, ovo je bio jedan od najvećih propusta Bulldozer mikroarhitekture kada su performanse u pitanju.

Kod većine modernih procesora L2 keš se sastoji iz više segmenata. Svaki od ovih segmenata će u Steamroller arhitekturi biti „power gate-ovan“, što znači da u zavisnosti od workload-a, power manager će isključivati nekorišćene delove L2 keša. Pod „isključivanjem“ se pretpostavlja da će segmenti L2 keša koji se ne koriste biti u nekoj vrsti hibernacije, koja podrazumeva čuvanje dotadašnjeg sadržaja tih segmenata keša.

Kako će ovo biti zaista izvedeno, ostaje da se vidi kada zvanično bude izašao neki od predstavnika ove mikroarhitekture. FPU rebalans može svašta da znači, ali konkretno, imajući u vidu da je površina FPU bloka znatno smanjena, verovatno se radi o eliminaciji dupliranih resursa koji se inače ne koriste. Prema rečima ljudi iz AMD-a MAL (MMX) pajpovi za rad sa celobrojnim vektorima sada dele izvesne resurse sa FMA/FP pajpovima koji rade sa pokretnim zarezom. Drugim rečima FPU ne bi nikako trebalo da bude nižih performansi, već viših, a akcenat je stavljen na optimizaciju po pitanju potrošnje.

 

fpu high density library T

 

FPU jedinica je jedan od najvećih potrošača u procesorima. AMD je pri dizajnu Steamroller-a koristio alate koji koriste tzv. „high density library“. Ovime je postignuta ušteda u površini od 30% za identičnu logiku i naravno, značajna ušteda u potrošnji. Za proizvode koje AMD trenutno plasira na tržištu, koristi se kombinacija automatizovanog dizajna, kao i ručnog „hand placed“ koji ima za cilj smanjenje površine čipa koji se dizajnira.

Ubuduće AMD će koristiti specijalizovane softverske alate koji generišu visoko optimizovan dizajn, sa minimalnim brojem elektronskih komponenata. Ovo će se koristiti za GPU dizajn, ali i za CPU implementaciju, radi smanjenja potrošnje i povećanja efiksnosti. Cilj ovoga je korišćenje inteligentnog dizajna koji bi kompenzovao prelazak na sitniji proizvodni proces. Drugim rečima, standardni Bulldozer FPU u 22nm zauzima istu površinu kao optimizovani Steamroller FPU u 28nm.

Ono što možemo da očekujemo od Steamroller arhitekture je znatno veća efikasnost u odnosu na Bulldozer, 15-30% veći IPC, 10-15% viši klokovi, znatno manji broj tranzistora po jezgru, u serverskim varijantama veći broj modula i jezgara i znatno niža potrošnja. Još jedno pitanje se postavlja: Kada možemo da očekujemo “Steama“?

Kao i obično, na to pitanje ni sam AMD ne zna da odgovori, ali neki okvirni termin za pojavljivanje Kaveri APU-a je sredina naredne 2013. godine (ako preživimo smak sveta :-)) Kaveri APU sa Steamroller jezgrima će biti direktan konkurent Intelovom Haswell-u.

 

Ivan Vujić

Software, storage, network etc editor @ AXE
Database migration @ RC ETF

Dodaj komentar

Kliknite ovde da biste poslali komentar