Katsaus AMD:n Zen 3 -arkkitehtuuriin ja ominaisuuksiin

Kaotik

Banhammer
Ylläpidon jäsen
Liittynyt
14.10.2016
Viestejä
22 630
zen3-arch.jpg


Kaotik kirjoitti uutisen/artikkelin:
AMD:n Zen 3 -arkkitehtuuriin perustuvat Vermeer-koodinimelliset Ryzen 5000 -sarjan prosessorit saapuivat myyntiin tänään. Yhtiön mukaan arkkitehtuuria on viilattu käytännössä jokaisella osa-alueella. Käymme tässä artikkelissa läpi Zen 3 -arkkitehtuurin ominaisuudet, uudistukset ja erot edellisen sukupolven Zen 2 -arkkitehtuuriin verrattuna.



Zen 3



Zen 3 arkkitehtuuri on AMD:n mukaan täysin uusi arkkitehtuuri, kun Zen 2 oli pikemminkin viritelty Zen. Korkealta tasolta katsasteltuna arkkitehtuurit ovat kuitenkin hyvin samankaltaisia ja selkein kriteeri "uudelle arkkitehtuurille" vaikuttaakin olevan siirtyminen neljän ytimen prosessorikomplekseista (CCX) kahdeksan ytimen komplekseihin. Uutta Zen 3 -arkkitehtuuria tullaan käyttämään tässä artikkelissa käsiteltyjen Vermeer-koodinimellisten työpöytäprosessoreiden lisäksi tulevissa Milan-koodinimellisissä Epyc-prosessoreissa sekä tulevien sukupolvien APU-piireissä ja Ryzen Threadrippereissä.



Prosessori- eli CCD- ja IO- eli cIOD-sirut



AMD:n Zen-arkkitehtuureiden keskiössä on ollut alusta alkaen CCX-prosessorikompleksi eli CPU Core Complex. Aiemmissa Zen-, Zen+- ja Zen 2 -arkkitehtuureissa CCX rakentui neljän ytimen ryppäistä, joilla on yhteinen välimuisti. Zen 3 -arkkitehtuurissa tämä asetelma on unohdettu ja nyt yhdessä ryppäässä on kahdeksan ydintä ja niille yhteinen välimuisti.

Zen- ja Zen+-arkkitehtuureissa CCX:t olivat samalla piisirulla ns. uncoren kanssa, mutta Zen 2:ssa AMD siirtyi chiplet-suunnitteluun eli useamman pikkusirun käyttöön ja jakoi prosessorinsa erillisiin CCD- ja cIOD-siruihin (Core Complex Die, central(?) Input / Output Die). Kussakin Zen 2 -prosessorisirussa on kaksi prosessorikompleksia välimuisteineen.

Zen 3:ssa pysytään Zen 2:n viitoittamalla tiellä, mutta prosessorisiruissa on nyt kahden neliytimisen CCX:n sijasta yksi kahdeksanytiminen CCX. IO-siru on Zen 2- ja Zen 3 -prosessoreissa täysin identtinen, jonka lisäksi itse paketointi kaksine prosessorisirupaikkoineen on pysynyt ainakin silmämääräisesti identtisenä.

[gallery link="file" columns="2" size="medium" ids="54445,54448"]

Kullakin Zen 3 -ytimellä on käytössään oma 512 kilotavun L2-välimuisti ja kaikkien ytimien kesken jaettu yhteinen 32 megatavun L3-välimuisti. L3-muisti toimii ns. uhrivälimuistina, eli se täytetään L2:sta pois tippuvalla datalla. L2-välimuistin tagit duplikoidaan lisäksi L3-välimuistiin nopeamman filtteröinnin ja nopeampien välimuistisiirtojen nimissä.

Prosessori- ja IO-sirujen välinen kommunikointi hoidetaan Infinity Fabric -väylällä. Zen 2:sta tuttuun tapaan prosessorisiru voi lähettää IO-sirun Infinity Fabriciin 16 bittiä dataa per kellojakso ja vastaanottaa sitä 32 bittiä per kellojakso. IO-sirun sisällä Infinity Fabricin ja muistiohjaimen väylä on 32 bittiä ja IF:n ja IO-ohjaimen välillä 64 bittiä per kellojakso suuntaansa.



Zen 3 -prosessoriytimen arkkitehtuuri

[gallery link="file" columns="2" size="medium" ids="54455,54454"]



Front-end



Zen 3 -arkkitehtuurin Branch Predictor eli haarautumisen ennustaja perustuu TAGE-periaateeseen (TAgged GEometry length) kuten aiemminkin, mutta yhtiö on sijoittanut sen BTB-puskurit (Branch Target Buffer) uudelleen viiveiden pienentämiseksi. L1-tason BTB-puskurin kokoa on lisäksi kasvatettu kaksinkertaiseksi 1024 kirjaukseen, kun L2-tason BTB-puskuria on kutistettu 7168:sta 6656 kirjaukseen. Ennustajan Indirect Target Array -puskuri on niin ikään kasvanut Zen 2:n 1024:sta 1536 kirjaukseen. AMD on lisäksi optimoinut L1-käskyvälimuistin käyttöastetta ja nopeutta aiemmasta, minkä lisäksi mikrokäskyvälimuistin hakujen järjestelyä ja vaihtoa mikrokäskyvälimuistin ja käskyvälimuistin välillä on nopeutettu.



Suoritusydin

[gallery link="file" columns="2" size="medium" ids="54449,54450"]

Varsinainen suoritusydin on jaettu tuttuun tapaan erillisiin kokonaisluku- ja liukulukuosioihin. Yhtiön tavoite oli pienentää käskyjen suorituksen viiveitä ja pyrkiä käsittelemään laajempia kokonaisuuksia kerralla käskytason rinnakkaisuuksien löytämiseksi, mikä edesauttaa itse suoritusyksiköiden käyttöastetta.

Kokonaislukupuolen skedulerit (vuorontaja, scheduler) on vaihdettu Zen 2:n neljästä 16 käskyn ALU- ja yhdestä 28 käskyn AGU-skedulerista neljään 24 käskyn eli yhteensä 96 käskyä käsittelevään yhdistettyyn ALU/AGU-skeduleriin. Fyysisen kokonaislukurekisterin kokoa on lisäksi kasvatettu 192 kirjaukseen Zen 2:n 180 kirjauksesta. Kokonaislukupuoli kykenee aloittamaan 10 käskyn suorituksen kellojaksoa kohden, kun Zen 2:ssa kyettiin seitsemään käskyyn. Käskyjä suorittavat neljä ALU:a (Arithmetic Logic Unit), kolme AGU:a (Address Generation Unit) sekä yksi dedikoitu haarautumisyksikkö ja kaksi St-data-yksikköä. Käskyjen uudelleenjärjestelypuskuria on lisäksi kasvatettu 224:stä 256 kirjaukseen.



Liukulukupuolella Zen 3:n uudistukset ovat päällisin puolin maltillisempia. AMD:n mukaan FMA(C)- eli Multiply-accumulate-käskyjen suoritus on nyt aiempaa nopeampaa kestäen neljä kellojaksoa, kun Zen ja Zen 2 -prosessoreissa se vei viisi kellojaksoa. Lisäksi käskyjen lähetyksen kaistanleveyttä on kasvatettu ja suoritusyksikköjen rinnalle on lisätty erilliset F2I / Store -yksiköt. Myös skedulerin kerrotaan olevan aiempaa suurempi, mutta sen muista muutoksista AMD ei hiiskunut mitään.



Lataus- ja tallennus



Zen 3:n lataus- ja tallennuspuolella (load, store) AMD on kasvattanut Store-jonon pituutta 48 kirjauksesta 64 kirjaukseen. L2 DTLB -välimuistissa (Data Translation Lookaside Buffer) on edelleen tilaa 2048 kirjaukselle ja L1-datavälimuisti on niin ikään edelleen 32 kilotavua. AMD:n mukaan lataus- ja tallennuspuolella on paranneltu etenkin lyhyiden merkkijonojen kopiointinopeutta, datan ennakkohakujen nopeutta sivurajojen yli ja tallennus-lataus-riippuvaisuuksien ennustamista.



Tietoturva ja käskykannat

[gallery link="file" columns="2" size="medium" ids="54456,54451"]

Prosessorimaailmaa ovat viime vuosina ravistelleet toistuvat tietoturvaongelmat. Zen 3:ssa on mukana kaikki Zen 2:n tutut tietoturvaominaisuudet kuten SME (Secure Memory Encryption eli AMD Memory Guard), IBC (Indirect Branch Control), GMET (Guest Mode Execute Trap) ja UMIP (User Mode Instruction Prevention). Uutena tietoturvaominaisuutena Zen 3 -arkkitehtuuriin on lisätty Control-flow Enformecent Technology eli CET. CET on suunniteltu suojaamaan prosessoria Return-oriented Programming- eli ROP-hyökkäyksiltä.
Käskykantapuolella Zen 3 tukee kaikkia Zen 2:n tukemia käskyjä, sekä uutena MPK:ta ja VAES/VPCLMULQD:tä. MPK- eli Memory Protection Keys -käskyt liittyvät käyttäjädatan kirjoitus ja lukulupiin ja VAES/VPCLMULQD ovat AVX2-käskyjä, joiden tuki puuttui Zen 2:sta.



Loppusanat



Ryzen 9 5900X ja 5950X -testiartikkelistamme voi lukea, miten AMD:n uuteen arkkitehtuuriin perustuvat prosessorit pärjäsivät io-techin testilaboratoriossa ja täyttikö yhtiö toimitusjohtaja Lisa Sun lupaukset muun muassa pelisuorituskykykruunun viemisestä Inteliltä. Seuraavaksi Zen 3 -arkkitehtuuri tullaan näkemään Milan-koodinimellisissä Epyc-prosessoreissa, joiden toimitukset tullaan aloittamaan vielä kuluvan vuoden puolella. Työpöytä- ja palvelinprosessoreiden jälkeen ensi vuoden alkupuolella vuorossa ovat Cezanne-koodinimelliset APU-piirit, jotka tulevat yhdistämään uuden prosessoriarkkitehtuurin nykyisistä APU-piireistä tuttuun Vega-arkkitehtuurin grafiikkaohjaimeen. Uuden sukupolven Ryzen Threadripper -prosessoreiden aikataulu on vielä tällä hetkellä avoin.

AMD on varmistanut jo aiemmin työskentelevänsä parhaillaan tulevan Zen 4 -arkkitehtuurin parissa. Arkkitehtuurin prosessorit tullaan valmistamaan TSMC:n 5 nanometrin valmistusprosessilla ja ne tullaan julkaisemaan viimeistään vuonna 2022. AMD on erikseen varmistanut jo aiemmin, että heidän roadmapeissaan viimeinen vuosiluku ei merkitse kyseisen vuoden alkua, vaan loppua. Tähän asti jokainen uusi tuote on kuitenkin julkaistu roadmapin päättävää vuotta aiemmin, kuten esimerkiksi nyt julkaistu Zen 3 -arkkitehtuuri, joka esiintyi vuoteen 2021 päättyvissä roadmapeissa.

Itse Zen 4 -arkkitehtuurista ei tiedetä vielä tällä hetkellä käytännössä mitään. Siihen perustuvien työpöytäprosessoreiden odotaan kuitenkin sopivan nykyisen AM4:n sijasta täysin uuteen prosessorikantaan ja tukevan DDR5-muisteja sekä mahdollisesti PCI Express 5.0 -väylästandardia. DDR5- ja PCI Express 5.0 -tuki tarkoittaisi samalla uutta IO-sirua, kun Zen 3:ssa voitiin vielä hyödyntää edeltävästä sukupolvesta tuttua sirua.

Linkki alkuperäiseen juttuun
 
Viimeksi muokattu:
Heh! Mutta joo, aika harva näistä saa irti kaikkea. Mutta on näillä foorumeilla niitäkin jotka osaavat näistä sanoa paljonkin. Hkultakala varmaan osaa kommentoida ja kyllä noista ihan tämmöinen tavallinenkin tallaaja ymmärtää mitä siellä on tehty ja mitä hyötyä se voi antaa... sitä ei niinkään että miten ja mistä kaikki tuo johtuu.
Mukava nähdä näitäkin artikkejeja!
Oikeiden asiantuntijoiden kommetteja artikkelista odotellessa;)
 
Vähän lisää tuosta haarautumisyksiköstä, mikä mainittiin lähinnä sivulauseessa:

Zen1/Zen2lla molemmat haarautumisyksiköt olivat samojen suoritusporttien perässä kuin kokonaislukuyksiköt, eli jos suoritettiin haarautumiskäsky (eli tarkastus, että osuiko >10 kellojaksoa sitten tehty ennustus oikeaan että saadaanko jatkaa mistä ollaan menossa vai pitääkö perua kaikki sen jälkeiset käskyt ja palata siihen), pystyttiin samalla suorittamaan neljän sijasta vain 3 kokonaislukukäskyä, tai jos tarkastettiin 2 haarautumista, pystyttiin samalla kellojaksolla suorittamaan vain 2 kokonaislukukäskyä.

Nyt zen3essa toinen haarautumisyksikkö on siirretty oman suoritusporttinsa taakse, jolloin se ei kilpaile suoritusporteista kokonaislukujen laskentaoperaatioiden kanssa, vaan voidaan suorittaa vaikka 4 kokonaislukujen laskentaoperaatiota + haarautumisentarkastus kellojaksossa. Toinen haarautumisyksikkö on kuitenkin vielä samassa suoritusportissa yhden kokonaislukuyksikön kanssa.

Tämä on siitä näppärä muutos, että on paljon haarautumiskäskyjä, jotka eivät lue mitään arvojaan rekistereistä, ja suurin prosessorien leventämistä haittaava tekijä on arvojen lukeminen rekistereistä (tai bypassaaminen edellisiltä käskyiltä). AMD sanoi, että tämän uuden suoritusportin takia ei tarvittu yhtään lisää rekisterinlukuportteja tai bypass-kytkentöjä (jotka on ne hankalat, potentiaalisesti kellotaajuutta haittaavat asiat), eli tämä erillinen suoritusportti tälle haarautumisyksikölle voi ilmeisesti suorittaa ainoastaan sellaisia haarautumiskäskyjä, jotka eivät lue kokonaislukurekistereitä. Ne haarautumiset, jotka lukevat kokonaislukurekistereitä (esim. epäsuorat hypyt, tai funktiopointterien kutsut) suoritetaan sitten ilmeisesti toisella haarautumisyksiköllä joka edelleen jakaa porttinsa yhden ALUn kanssa ja voi lukea arvoja rekistereistä.
 
Viimeksi muokattu:
Muuta mietintää:

Zenissä/Zen2ssa oli erityisesti tuolla kokonaisluku-SIMD-puolella aika paljon (uusia harvoin käytettyjä) käskyjä, joiden toteutus oli melko hidas, mutta joiden hitaus haittasi melko vähän koska suurin osa softista ei käyttänyt näitä, näitä käytti lähinnä esim. vain jotkut tappiinsa asti optimoidut videokoodekit tms.

Aika moni näistä käskyistä on nyt zen3ssa saanut selvän nopeutuksen, eikä enää häviä Intelin prossuille nopeudessa.

Selvimmät on PEXT ja PDEP joiden toteutus oli aiemmin ilmeisesti täysin puhtaasti mikrokoodilla ja sillä oli Zen2lla 300 kellojakson viive. Nyt tämä on pudonnut kolmeen kellojaksoon, 100-kertainen nopeutus viiveessä, ja suorituskaistassa vielä suurempi.

Yksi zen/zen2n akilleen kantapäistä oli gather eli SIMD-lataus jossa osoitekin on vektori, eli käsky joka suorittaa monta eri latausta yhdellä käskyllä ja muodostaa niistä vektorin. Sen avulla voidaan vektoroida SIMD-koodiksi looppeja, joitka tekevät latauksia muistakin kuin peräkkäisistä osoitteista, eli se mahdollistaa SIMD-käsykantojen (AVX) hyödyntämisen useammin eli esim. 4 tai kahdeksan arvon laskemisen rinnakkain yhdellä käskyllä.

Gather on nyt nopeutunut selvästi ( 4 * 32b 19 => 15 kellojaksoa, 8 * 32b 23 => 19 kellojaksoa, 2* 64b 18 => 13 kellojaksoa, 4 * 64b 19 => 15 kellojaksoa), mutta on edelleen selvästi hitaampi kuin Intelin uusilla prossuilla.
 
Viimeksi muokattu:
L1-välimuistista ja lataus-tallennusyksiköistä:

Vaikka kellojaksossa suoritettavien latausten maksimimäärä on noussut kahdesta kolmeen ja talletusten määrä yhdestä kahteen, L1-välimuistin kaistaa ei ole kasvatettu; 3 latausta kellojaksossa voidaan suorittaa ainoastaan mikäli ne on (maksimissaan 64-bittisiä) latauksia skalaaripuolelle ja 2 talletusta voidaan tehdä ainostaan mikäli ne on (maksimissaan 64-bittisiä) tallennuksia skalaaripuolelta;

Vektoripuolen 128- ja 256-bittisille muistioperaatiolle määrä on sama kuin zen2ssakin, 2 latausta + 1 tallennus.
 
Viimeksi muokattu:
Mukava syventävä, tekninen artikkeli, kiitoksia.

"Skeduleri" kuulostaa kyllä niin rautakanki-anglismilta, että ennemmin näkisin ihan vaan "scheduler"ia käytettävän tekstissä :D
 
Isosti risuja spoilerista, joka oli laitettu jo tähän katsausartikkeliin. Vähäiseksi jää enää mielenkiinto lukea varsinaista testiartikkelia. "Kuten Ryzen 9 5900X ja 5950X -testiartikkelistamme voi lukea, AMD on lunastanut yhtiön toimitusjohtaja Lisa Sun tekemät lupaukset pelisuorituskykykruunun viemisestä Inteliltä kasvattaen samalla johtoaan hyötyohjelmapuolella entisestään."
 
Mukava syventävä, tekninen artikkeli, kiitoksia.

"Skeduleri" kuulostaa kyllä niin rautakanki-anglismilta, että ennemmin näkisin ihan vaan "scheduler"ia käytettävän tekstissä :D
Se voi kuulostaa siltä, mutta aika laajalti se on käytössä (kts Google ja ylläty :D ).
Toinen vaihtoehto olisi ollut vuorontaja.
Isosti risuja spoilerista, joka oli laitettu jo tähän katsausartikkeliin. Vähäiseksi jää enää mielenkiinto lukea varsinaista testiartikkelia. "Kuten Ryzen 9 5900X ja 5950X -testiartikkelistamme voi lukea, AMD on lunastanut yhtiön toimitusjohtaja Lisa Sun tekemät lupaukset pelisuorituskykykruunun viemisestä Inteliltä kasvattaen samalla johtoaan hyötyohjelmapuolella entisestään."
Tämä on tarkoitettu pääasiassa tukiartikkeliksi itse testiartikkeleille, ei kyllä tullut ihan rehellisesti ollenkaan mieleen että se olisi "spoileri" tuolla lopussa vaikka voihan se tietenkin niinkin päin mennä, käyn vähän viilaamassa.
 
Mukava syventävä, tekninen artikkeli, kiitoksia.

"Skeduleri" kuulostaa kyllä niin rautakanki-anglismilta, että ennemmin näkisin ihan vaan "scheduler"ia käytettävän tekstissä :D

"Virallinen" suomennos on "vuorontaja" joka taas kuulostaa sen verran kömpelöltä että "skeduleri" on mielestäni oikein hyvä sana.
 
Skeduleriksi olen nähnyt sitä aina kutsuttavan Termi vuorontaja on itselleni uusi tuttavuus, eikä sen merkitys avautuisi ilman erillistä selitystä.

Hyvä artikkeli ja @hkultala :lta hyvät kommentit - en tajunnut tuota haarautumisyksikkö -asiaa artikkelista mutta kommenttisi auttoivat.
 
Lisää mietintää vielä Zen3n gather-loadista:

Gather-käsky lataa maksimissaan 64 bitin palikoita, joten niitä pystyisi L1D:ltä lataamaan jopa 3 kellojaksossa, ja rekistereihin kirjoituskaan ei tule pullonkaulaksi, koska kaikki kirjoitetaan lopuksi samaan rekisteriin.

Silti linjojen määrän lisääntyessä (2->4->8) käskyn viive lisääntyy aina yhdellä kellojaksolla/linjojen määrä, eli Zen3n gather lataa efektiivisesti vain yhden linjan kellojaksossa (sen alkuviiveen jälkeen)

Eli tässä gather-toteutuksessa voisi olla vielä aika paljon "löysiä" optimoitavaksi melko helpolla kun vaan lataisi useampaa linjaa rinnakkain. Jos pitäisi veikata asioita mitä zen4ssa parannetaan, tämä olisi listalla. Kolme ei-kahden potenssina voisi olla liikaa vaadittu mutta kahden linjan lataus kellojaksossa pitäisi olla helppo toteuttaa.
 
Ei ole aiheeseen itsessään mitään lisättävää, mutta hyvän katsauksen @Kaotik tehnyt ja aika kovaa täydentävää settiä @hkultala jälleen kommenttipuolella :thumbsup: Ilo lukea moista.
 
Minun mielestäni tuossa Zen/Zen+ -> Zen2 -muutoksessa arkkitehtuuri muuttui vielä radikaalimmin, kun kokonaisuuteen tuotiin IO-siru joka huolehtii muistiväylistä, PCIe -väylistä ja CCD:iden välisestä liikennöinnistä. CCD:n sisäisessä arkkitehtuurissa taas ei tapahtunut valtavia muutoksia (CCD sisälsi molemmissa kaksi 4-ytimistä CCX:ää). Lisäksi tapahtui PCIe gen3 -> PCIe gen 4 -muutos.

Tuon sitten tuossa Zen2 -> Zen3 -muutoksessa muuttui CCD:n sisäinen arkkitehtuuri (2 x 4-ytimistä CCX -> 1 x 8 -ydiminen CCX) ja vielä CCX:n sisäinen mikroarkkitehtuurikin. Sen sijaan IO-piiri on sama kuin Zen2:ssa (AMD on tämän vahvistanut), ja CCD:den ja IO-sirun sekä ulkoinen kommunikaatio (sekä PCIe gen 4) säilyi ennallaan.

Aina voi keskustella, kumpi oli suurempi arkkitehtuurillinen muutos (jotkut puhuvat erikseen arkkitehtuurista ja mikroarkkitehtuurista).

Jos AMD sanoo, että Zen2-> Zen3 oli suurempi niin kai pitää heitä uskoa (vaikka saattaa siinä vähän markkinointiakin olla mukana). Oman mielipiteeni sanoinkin tuossa alussa.
 

Uusimmat viestit

Statistiikka

Viestiketjuista
261 762
Viestejä
4 546 194
Jäsenet
74 843
Uusin jäsen
Demonvr4

Hinta.fi

Back
Ylös Bottom