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&nbsp;nm valmistustekniikalla jossa ei käytetty SOI-eristekerrosta, minkä takia se toimi pienemmillä kellotaajuuksilla kuin aiemmat 32&nbsp;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