AMD FX-8150: Bulldozerista Zambeziin ja FX:n

Artikkelin kirjoittaja: Teemu Laitila | 0 kommenttia

AMD:n Bulldozerin perusajatus


Jos Bulldozerin konseptia pitäisi kuvailla vain yhdellä sanalla, se olisi ehdottomasti skaalautuvuus. AMD keskitti suuren osa suunnitteluresursseista kehittääkseen tarpeeksi pienen rakennuspalikan, että sitä voidaan monistaa sirulle useita kertoja, mutta joka on itsessään tarpeeksi tehokas, että se kykenee suoriutumaan kokonais- ja liukulukuoperaatioista mahdollisimman sukkelaan. AMD vahvistaa, että Bulldozerin suunnittelu aloitettiinkin joitain vuosia sitten täysin nollasta, kun yhtiössä oli mietitty seuraavan sukupolven prosessoreiden kohdemarkkinoita, eli kaikkea mahdollista peruskoneista huippuluokan palvelimiin.

Jo kauan sitten Bulldozerin suunnittelun alkuaikoina AMD:lla oltiin varmoja, että yksiytimisten prosessoreiden aika on ohi. Ja tosiaan, nykypäivänä jopa halvimmat pöytäkoneet perustuvat vähintään kaksiytimisiin prosessoreihin. Sen perusteella ei ole varsinainen yhteensattuma, että Bulldozerin jokainen "moduuli" kykenee suorittamaan kahta säiettä samanaikaisesti.



Kaikki tietävät, että useampien säikeiden samanaikaiseen suorittamiseen on erilaisia tapoja. Listan toisessa päässä on sirutason moniprosessointi, joka hyödyntää samalle sirulle istutettujen prosessoriydinten raakaa laskentatehoa. Näiden resurssien lisääminen on paras tapa kasvattaa suorituskykyä tehokkaasti säikeistetyissä sovelluksissa, mutta se myös "kallein" rajallisen transistorimäärän kannalta.

Toinen ääripää on Simultaneus multi-threading (SMT), joka kasvattaa resursseja niissä osissa, joiden avulla useista loogisista säikeistä koostuvia käskyjä voidaan toimittaa prosessorille mahdollisimman vähillä laitteistomuutoksilla. Kun yksi säie ei kykene hyödyntämään ytimen kaikkea mahdollista potentiaalia, SMT täyttää kaikki mahdolliset raot ja rutistaa yhdestäkin ytimestä kaiken mahdollisen potentiaalin. Siihen perustuu käytännössä Intelin Hyper-Threading-tekniikka. Silti, vaikka Windows näkeekin kaksi loogista ydintä yhtä fyysistä ydintä kohti, suorituskyvyn kasvu tositilanteessa jää huomattavasti vaatimattomammaksi.

Tästä syystä AMD jaksaa huomautella Intelin Hyper-Threading-tekniikkaan perustuvista prosessoreista ja toitottaa suureen äänen todellisten fyysisten ydinten ja loogisten ydinten eroja. Erot ovat selvästi nähtävissä myös omissa testeissämme, joissa halpa Phenom II päihittää Hyper-Threadingia käyttävän Core i3:n säikeistetyissä testeissä kuten WinRAR- tai 7-Zip-sovelluksissa pelkästään paremmin resursseja tarjoavan arkkitehtuurinsa ansiosta.

Mikä edes on ydin?

Nyt AMD:n on kuitenkin hieman laskettava äänentasoa Intelin kritisoinnissa, sillä yhtiön oma Bulldozer-moduuli ei varsinaisesti sisällä kahta kokonaista ydintä. Sen sijaan Bulldozer-moduulin ytimet jakavat tiettyjä osia, jotka normaalisti löytyisivät jokaisesta itsenäisestä ytimestä, kuten käskyjen nouto ja niiden dekoodaus, liukulukuyksiköt sekä L2-välimuisti.

Bulldozerin arkkitehtuurin pääsuunnittelijan Mike Butlerin mukaan kompromissit ovat hyväksyttäviä, sillä perinteiset prosessorit eivät hyödynnä lämpötilojen asettamaa tehorajaa optimaalisella tavalla. Siinä on erittäin paljon järkeä. Jos yrität pakata palvelimeen mahdollisimman paljon ytimiä, kannattaa ehdottomasti keskittyä niihin resursseihin, joita käytetään kaikkein eniten eikä kuluttaa kallisarvoista tilaa ja tehoa niihin komponentteihin, joita voidaan jakaa ytimien kesken ilman, että suorituskyky kärsii liiaksi.



Jaetut resurssit aiheuttavat ongelmia ainoastaan silloin, kun molemmat suoritettavat säikeet tarvitsevat samaa resurssia samanaikaisesti, jolloin suorituskyky tippuu verrattuna aitoon moniydinsuoritukseen. AMD on kuitenkin optimistinen. Elokuussa, kun yhtiö julkaisi ensimmäisiä yksityiskohtia Bulldozerin arkkitehtuurista Hot Chips -konferenssissa, Bulldozer-moduulin ennustettiin saavuttavan keskimäärin 80 prosenttia kahden kokonaisen ytimen suorituskyvystä ilman, että sirun koko kasvaa liikaa. Tämän perusteella Bulldozer-pohjaisten prosessoreiden pitäisi parantaa hyötysuhdetta huomattavasti tehokkaasti säikeistetyissä sovelluksissa.

Uuden arkkitehtuurin myötä AMD:n on myös määriteltävä uudestaan mikä itse asiassa on ydin. Sovittaakseen termin parhaiten Bulldozer-moduulien tekniikkaan, AMD:n mukaan mikä tahansa mikä sisältää oman kokonaislukusuoritusyksikön voidaan laskea ytimeksi (ei yllätyksiä siis), sillä suurin osa prosessorin työmääristä painottuu nimenomaan kokonaislukumatematiikkaan. Minulla ei henkilökohtaisesti ole mitään ongelmaa tämän määritelmän kanssa. Mutta jos resurssien jakaminen tarkoittaa heikompaa suorituskykyä kellojaksoa kohti, AMD:n on pakko kompensoida nostamalle kellotaajuuksia tai painottaa parempaa säikeistystä. Tämä kannattaa pitää mielessä myöhempiä tuloksia tarkastellessa.

Jakaminen on tärkeää

AMD:n arkkitehdit miettivät tietysti tarkkaan, mitkä osat ytimestä voidaan jakaa kun samalla mietitään tehonkulutusta ja hyötysuhdetta. Esimerkiksi seuraavaksi suoritettavan koodin väärin ennustaminen johtaa perinteisessä prosessorissa koko etuosien tietojen tyhjennykseen, missä hukataan sekä kaistaa että tehoa. Tämän raudan jakaminen kahden ytimen kesken parantaa niiden käyttöastetta. AMD on myös laskenut missä kohdissa "on varaa" jakaa resursseja ilman, että kriittisten osien toiminta hidastuu. Tämän perusteella esimerkiksi liululukuajastin (Floating-point scheduler) on päätetty jakaa, sillä sen ei katsottu olevan niin herkkä pienelle lisälatenssille kuin kokonaislukyksiköiden.

Käyttöjärjestelmälle Bulldozer-moduuli näyttäytyy kahtena ytimenä samaan tapaan kuin Hyper-Threading-tekniikkaa tukeva ydin. AMD toki kiistää, että sen moduuli toimisi ollenkaan samalla tapaa kuin Intelin Hyper-Threading (tai SMT), vaan yhtiön mukaan moduuleihin perustuva tekniikka skaalautuu paremmin kuin kaksi säiettä samassa fyysisessä ytimessä. Siinäkin on järkeä, sillä kaikesta huolimatta Bulldozer-moduulia ei voida pitää vain yhtenä ytimenä sillä monet sen resursseista ovat itse asiassa toteutettu kahteen kertaan.



Tämän jälkeen meidän on kuitenkin pakko miettiä AMD:n raudan suhdetta siihen ohjelmistoon, jolla sitä tullaan väistämättä käyttämään. Aiemmassa Intelin Core i5 - ja Core i7 -artikkelissa (englanniksi) kävin läpi Windows 7:n optimointeja, jotka oli toteutettu Microsoftin ja Intelin yhteistyönä. Tärkein niistä on "Core Parking", jonka ansiosta Windows 7 delegoi kuorman eri fyysisille ytimille ennen loogisten (Hyper-Threading) ytimien hyödyntämistä.

AMD voisi teoriassa hyötyä samasta tekniikasta. Jos Windows voisi ensiksi käyttää FX-8150:n neljä moduulia ja vasta sen jälkeen kuormittaa jokaisen moduulin toista ydintä, se voisi maksimoida suorituskyvyn useiden säikeiden tapauksessa. Näin ei kuitenkaan tällä hetkellä tapahdu. Microsoftin ohjelmistosuunnittelijan Arun Kishanin mukaan jokainen moduuli tunnistetaan kahtena ytimenä, joille ajastin jakaa kuormaa yhtä paljon. Käytännössä se tarkoittaa, että kahta säiettä hyödyntävässä sovelluksessa yksi moduuli tekee kaiken työn kolmen muun istuessa toimettomana. Se on hyvä tapa optimoida tehonkulutusta, mutta ainakin teoriassa vähemmän optimaalinen tilanne suorituskyvyn kannalta. Tämä romuttaa myös AMD:n teorian siitä, että kun ainoastaan yksi säie on aktiivinen, sillä on käytettävissään kaikki jaetut resurssit. Pelkästään yhden lisäsäikeen aloittaminen saattaa sitoa jaetut resurssit, vaikka useita ytimiä on täysin vapaana.

Microsoft aikoo kuitenkin puuttua tähän ongelmaan tulevaisuudessa. Arunin mukaan kahden ytimen moduuleiden suorituskyky sisältää paljon piirteitä SMT-tekniikasta, joten tulevaisuudessa niitä voitaisiin kohdella samaan tapaan kuin Intelin Hyper-Threading-tekniikkaa. Muutoksella olisi suuri merkitys. Erilainen lähestymistapa parantaisi suorituskykyä selkeästi, mutta toisaalta se tuhoaisi osittain AMD:n tavoitteet pitää käyttämättömät ytimet pois päältä tehonkulutuksen pienentämiseksi.

Tällä tasolla säätö alkaa mennä jo melko hienojakoiseksi ja tärkein asia on juuri tällä hetkellä saavutettu suorituskyky eli jatketaan testiä.

Kommentoi artikkelia