AMD Bulldozer

AMD Bulldozer on AMD:n mikroarkkitehtuuri- ja suoritinperhe.
Saman arkkitehtuurin eri sukupolvet, Bulldozer, Piledriver, Steamroller ja Excavator, on tunnistettavissa suorittimen Family 15h tunnuskoodista. Tähän perustuvat suorittimet tulivat markkinoille lokakuussa 2011. 15h-sarja on seuraaja AMD K10 -arkkitehtuurille.
Sarjan suorittimia markkinoitiin pääasiassa AMD FX -tuotemerkillä.

Arkkitehtuurin seuraaja on AMD Zen, johon pohjautuvia suorittimia myydään Ryzen-, Threadripper- ja Epyc-malleina.

Bulldozer 

Bulldozer on AMD:n kehittämä suoritinarkkitehtuuri, jonka ensimmäiset suorittimet yhtiö julkaisi lokakuussa 2011. Bulldozerin kehitystyö tehtiin puhtaalta pöydältä, koska aiempien K7-johdannaisten suoritinmallien rakenne oli vanhentunut eikä niissä ollut enää varaa parannuksiin. Esimerkiksi Tomasulo-pohjainen käskyjen uudelleenjärjestely haluttiin vaihtaa PRF-pohjaiseen, joka voisi mahdollistaa sekä suuremman kellotaajuuden että pienemmän virrankulutuksen.

Bulldozer-pohjaiset suorittimet valmistettiin 32 nanometrin valmistusprosessilla GlobalFoundriesin tehtailla.

Bulldozerin rakenne perustuu kahdesta ytimestä koostuvaan moduliin, jossa ytimillä on yhteinen L2-välimuisti, L1-käskyvälimuisti, käskynhaku- ja käskyndekoodauslogiikka sekä liukulukuyksikkö mutta erilliset kokonaislukudatapolut ja L1-datavälimuistit.

Arkkitehtuuri on suunniteltu moduulina, jossa edustaosa ja liukulukuyksikkö (FPU) ovat jaettuja, mutta kokonaislukuyksikkö on monistettu.
Edustaosa sisältää käskyjen haun, dekoodauksen sekä haarautumisen ennakoinnin. Edustaosa on jaettu kahdelle ytimelle moduulissa, jossa on kaksi ydintä. 
Edustaosa voi hakea ja dekoodata neljä x86-käskyä kellojaksoa kohden. Dekoodaus tuottaa joko sisäisiä mikro-operaatioita ("cops") tai viittauksia mikrokoodiin. AMD kutsui ratkaisua "klusteroiduksi monisäikeistykseksi" (CMT).

L2-välimuistin koko on 2 MiB/moduuli, L1-käskyvälimuistin koko on 64 kiB/moduuli, ja L1-Datavälimuistin koko on 16 kiB/ydin. Datavälimuisti on 4-tie-assosiatiivinen.

Molemmissa kokonaislukuytimissä on kaksi ALUa ja kaksi AGUa jotka kykenevät suorittamaan yhteensä neljä itsenäistä arimeettista laskutoimitusta ja neljä muistioperaatiota kellojaksossa yhdessä moduulissa.

Ennen julkaisua kerrottiin suorittimessa olevan "Flex FP" -ratkaisu, jossa yksi liukulukuyksikkö (FPU) on jaettu kahden ytimen välillä: 16-ytimisessä suorittimessa olisi kahdeksan liukulukuyksikköä. Flex FP -yksiköt voivat suorittaa 256-bittisiä liukulukukomentoja AVX-käskylaajennoksella. AVX-yhteensopiva ohjelmakoodi voi suorittaa "kahdeksan 32-bittistä tai neljä 64-bittistä komentoa kellojaksoa kohden". Flex FP koostuu kahdesta 128-bittisestä FMAC-yksiköstä, jotka voivat suorittaa FMAC-, FADD- ja FMUL-käskyjä joko yhdistettynä 256-bittisenä tai jaettuna kahdeksi 128-bittiseksi käskyksi.

Bulldozer suunniteltiin alun perin toimimaan melko suurella kellotaajuudella, jonka johdosta siinä oli esimerkiksi välimuisteilla pitkiä viiveitä jotka huononsivat kellojaksokohtaista suorituskykyä, mutta suunnitelma oli että se mitä kellojaksokohtaisessa suorituskyvyssä olisi hävitty, olisi voitettu suuremmalla kellotaajuudella. Bulldozer-pohjaiset piirit eivät kuitenkaan toimineet niin suurella kellotaajuudella kuin alun perin oli suunniteltu, ja säiekohtainen suorituskyky jäi heikoksi.

Lisäksi L1-käskyvälimuistin joukkoassosiatiivisuus oli liian pieni suhteessa välimuistin kokoon siten että yhden välimuistisetin koko oli suurempi kuin virtuaalimuistisivun koko, joka johti välimuistin aliasointiongelmaan, joka hidasti suoritinta selvästi tietyissä tilanteissa.
Välimuistiongelmiin julkaistiin myöhemmin korjauksia, joilla suorittimen suorituskykyä pystyttiin parantamaan muutamilla prosenteilla.

Jotta piiri kellottuisi lähellä alkuperäistä tavoitekellotaajuutta, sitä käytettiin melko suurella jännitteellä, ja lopputuloksena suorittimet kuluttivat paljon virtaa ja niiden yhden säikeen suorituskyky oli silti vastaaviin Intelin suorittimiin nähden heikko. Bulldozerien suorituskyky oli myös merkittävästi huonompi kellolta kellolle vertailussa Intelin Sandy Bridge -suorittimiin nähden.

Suoritinmallit 

Seuraavat AMD FX -sarjan suorittimet käyttävät Bulldozer mikroarkkitehtuuria:
 FX-8150
 FX-8120
 FX-8100
 FX-6200
 FX-6120
 FX-6100
 FX-4170
 FX-4130
 FX-4100

Lisäksi AMD Opteron mallit 4200 ja 6200  (Valencia ja Interlagos) käyttävät Bulldozer-mikroarkkitehtuuria. Malleissa on neljästä kuuteentoista ydintä ja 8 tai 16 megatavua L3-tason välimuistia.

Piledriver 

Piledriver on AMD:n toisen sukupolven Bulldozer-arkkitehtuurin suoritinsukupolvi. Piledriverissä AMD keskittyi vähentämään virrankulutusta ja tekemään suorittimen toimintaan pieniä viilauksia, jotka tasapainottivat suorituskykyä selvästi. Samalla kellotaajuksia saatiin korotettua hieman sekä kellokohtaista suorituskykyä parannettua. Markkinoilla suoritin ei pärjännyt kovin hyvin, sillä Intel oli ehtinyt julkaista Sandy Bridge- ja Ivy Bridge -mikroarkkitehtuurin suorittimet, jotka tarjosivat sekä selvästi parempaa yhden säikeen suorituskykyä että pienempää virrankulutusta. Monen säikeen suorituskyvyssäkin Piledriver oli vain tasoissa näiden kanssa, eivätkä kovin monet ohjelmat osanneet hyödyntää kunnolla montaa säiettä.

Yksi oleellinen muutos Piledriverissa oli Bulldozerissa olleen rikkinäisen ja siksi pois päältä kytketyn kokonaislukujakolaskuyksikön korjaaminen ja kytkeminen päälle; Bulldozerissa jakolaskut suoritettiin mikrokoodilla piirin muita yksiköitä käyttäen, joka oli hitaampaa.

Piledriver-ytimiä käytettiin kahdessa eri piirissä, kahdeksan ydintä sisältävässä AMD FX- ja AMD Opteron-nimillä myydyssä piirissä sekä 4-ytimisenä APU-piirinä jossa samalla piirillä oli myös näytönohjain. Piledriverin seuraaja oli Steamroller-arkkitehtuuri, joka edelleen perustui siihen mutta sisälsi suurempia parannuksia.

Suoritinmallit 

Seuraavat AMD FX -sarjan suorittimet käyttävät Piledriver mikroarkkitehtuuria:
 FX-9590
 FX-9370
 FX-8370
 FX-8370E
 FX-8350
 FX-8320
 FX-8320E
 FX-8310
 FX-8300
 FX-6350
 FX-6300
 FX-4350
 FX-4320
 FX-4300

Lisäksi mikroarkkitehtuuria käytettiin A-sarjan APU-malleissa.

Steamroller 

Steamroller on jatkoa AMD:n kolmannen sukupolven Bulldozer-arkkitehtuurin suoritin. Steamroller on suora seuraaja Piledriver suorittimelle. 
Steamroller-suorittimessa AMD jatkaa aiemmista Bulldozer-sukupolven suorittimista tutulla moduulilinjalla jossa yksi fyysinen suoritinydin kykenee ajamaan kahta säiettä yhtä aikaa.

Steamrollerissa oleellisimmat muutokset Piledriveriin nähden olivat käskyvälimuistin koon puolitoistakertaistaminen 64 kibitavusta 96 kibitavuun,
sekä käskydekooderin monistaminen molemmille ytimille; Aiemmissa Bulldozer-johdannaisissa suorittimissa oli modulin molemmille ytimille yhteinen käskydekooderi. Erilliset dekooderit molemmille ytimille auttoivat selvästi monen säikeen suorituskykyä, mutta eivät vaikuttaneet yhden säikeen suorituskykyyn. Käskyvälimuistin koon kasvattaminen sen sijaan auttoi sekä yhden että monen säikeen suorituskykyyn.

Steamrollerin sisältänyt Kaveri-piiri valmistettiin uudemmalla ja halvemmalla 28 nm valmistustekniikalla jossa ei käytetty SOI-eristekerrosta, minkä takia se toimi pienemmillä kellotaajuuksilla kuin aiemmat 32 nm SOI-tekniikalla varustetut piirit.

Excavator 

Excavator on AMD:n neljännen sukupolven Bulldozer-arkkitehtuuriin perustuva suoritin. Kuten edeltäjäänsä Steamroller-suoritinta, Excavatoria ei julkaistu High End-sarjaan vaan pysyttäydyttiin kannettavien tietokoneiden suorittimissa ja APU-suorittimissa. Excavator on myös ensimmäinen HSA 1.0 yhteensopiva suoritin eli se kykenee käyttämään näytönohjainta ja suoritinta saumattomasti yhteen mikäli ohjelma tukee HSA toimintoja. Suoritin valmistetaan 28 nanometrin valmistusprosessilla.

Excavatorissa oli aiempia Bulldozer-johdannaisia tasapainoisempi välimuistirakenne; L1-datavälimuistin koko tuplattiin 16 kibitavusta 32 kibitavuun, ja L2-välimuistin koko puolitettiin kahdesta mebitavusta yhteen. Lisäksi piirin fyysinen suunnittelu oli tehty käyttäen kellotaajuusoptimoitujen logiikkakirjastojen sijasta pinta-ala- ja virrankulutusoptimoituja kirjastoja, minkä takia Excavatorilla saavutettiin hiukan pienempi maksimikellotaajuus kuin Stamrollerilla, mutta virrankulutus oli selvästi pienempi.

Kiistat 
AMD haastettiin oikeuteen väittäen, että asiakkaita johdettiin harhaan ilmoittamalla suorittimissa olevan enemmän ytimiä kuin todellinen määrä. Kanteen mukaan Bulldozerissa mainostettiin olevan kahdeksan ydintä kun todellisuudessa niitä oli neljä.
AMD sopi kiistan maksamalla 12,1 miljoonaa dollaria hyvityksiä FX-8000/9000 -sarjan suorittimia ostaneille. Kiista koski ytimien määrän lisäksi jaettua liukulukuyksikköä, joka ei antanut vastaavaa suorituskykyä kuin erillinen yksikkö. Bulldozer-mikroarkkitehtuuri käytti moduuleja, joissa oli kaksi ALU-yksikköä ja jaettu liukulukuyksikkö. AMD oli ilmoittanut ytimien määrän ALU-yksiköiden mukaan, mutta suorituskyky ei ollut vastaava kuin kilpailijalla.

Lähteet

Aiheesta muualla 

 Englanninkielisen Wikipedian artikkeli aiheesta Bulldozer 
 Englanninkielisen Wikipedian artikkeli aiheesta Piledriver 
 Englanninkielisen Wikipedian artikkeli aiheesta Steamroller 
 Englanninkielisen Wikipedian artikkeli aiheesta Excavator 

Bulldozer
Suoritinarkkitehtuurit