Virallinen: AMD vs Intel keskustelu- ja väittelyketju

  • Keskustelun aloittaja Keskustelun aloittaja Sampsa
  • Aloitettu Aloitettu
Siirretty muualta:


Tässä kun olen jonkun aikaa höpissyt mahdollisesta L1-cachen virtuaalisesta accessoinnnista niin tässä on itseasiassa todiste, ei satavarma kun en tiedä käytettyä TLB-trash algoritmiä. Mutta sekä L1 että TLB ovat erillisiä cacheja ja L1 TLB:n koko ei riitä kattamaan koko L1-cachea TLB-trashissä, eli jossa joka L1-linja varataan eri TLB-sivulta. TLB ei missaa L1:ssä -> L1 accessoidaan virtuaalisesti ja mahdollinen TLB-tarkistus tehdään vaiheessa jossa sen käännös ehtii tulla myös L2-tlb:stä. Tai koko TLB-käännöstä ei tehdä L1-accessissa.

Zen tukee TLB coalescingia (kutsuu nimellä PTE coalescing). Zenissä yksi TLB-entry pystyy säilömään kahdeksan peräkkäisen virtuaalimuistisivun mäppäyksen, jos nämä osoittavat peräkkäisiin fyysisiin sivuihin.

Mainitaan esim. tuolla sivulla 16:

Ja modernien käyttisten muistinhallinta tyypillisesti mäppää muistin siten että ne kahdeksan virtuaaliosoitteeltaan peräkkäistä sivua päätyvät peräkkäisille fyysisielle sivuille, kun ne pyydetään käyttikseltä kerralla, jos vaan fyysinen muisti ei ole todella pahasti fragmentoitunut, tai melko pahasti fragmentoitunut sekä hyvin vähissä.

Ja voi olla varma, aika varma, että noita benchmarkkeja ei ole ajettu systeemillä jossa muisti on vähissä tai todella pahasti fragmentoitunut.

Zen3n L1DTLBssä on 64 entryä, eli mikäli coalescing toimii kuten Zen1/Zen2ssa, sinne mahtuu siis 512 entryä.

Zenin L1D-kakussa on 32kB / 64B = 512 linjaa.

Zenin L1DTLB siis riittää kattamaan koko L1D-kakun, silloin TLB coalescing toimii(eli yleensä).


"Todisteesi" taitaakin tosiasiassa todistaa sen, että TLB coalescing toimii noilla Anandtechin testisetupeilla.
 
"Todisteesi" taitaakin tosiasiassa todistaa sen, että TLB coalescing toimii noilla Anandtechin testisetupeilla.

No et ymmärrä että L1-cachen osumassa se TLB-käännös on täysin turha ja vie pirusti energiaa.

Eli ne fyysiset tagit cachessa tarvitaan sille koherenssiprotokollalle ja samalla niillä on helppo välttää homonyymit ja tunnistaa synonyymit. Kaikki nuo ominaisuudet löytyy ihan ilmaiseksi inklusiiivisesta L2:sta, miten myös AMD kuvaa cachensa toimivan. Mikä on se syy että luulet AMD:n inssien haluavan polttaa moninkertaisen määrän per L1-haku energiaa saamatta yhtään mitään hyödyllistä vastineeksi? Ja Applen core toimii ihan samoin, mystisesti TLB-missit alkaa just eikä melkein L1:n jälkeen, siinä näyttäisi dokumentoitu L1-DTLB olevan 256 sivua ja L1-datacachessa lienee sen 2048 linjaa.
 
No et ymmärrä että L1-cachen osumassa se TLB-käännös on täysin turha ja vie pirusti energiaa.

Toisin kuin sinä, minä ymmärrän, että 1) lataus ei saa palauttaa väärää dataa, vaan sen pitää AINA palauttaa se data minkä ohjelma haluaa hakea, ei sitä oikeaa dataa vain 99.5% tapauksista.

Kuka tahansa joka yhtään ymmärtää ohjelmoinnista yhtään mitään tajuaa tämän.


Ja ymmärrän ja myös sen, 2) että kun se osoitteenmuunnos ja fyysisen osoitteen tarkastus on aina kuitenkin jossain vaiheessa pakko tehdä joka ikiselle lataukselle(jotta ne palauttaa sen oikean arvon eikä oikeaa arvoa vain 99.5% tapauksista), sen tekeminen myöhemmin ja siinä tarvittavan fyysisen tagin hakeminen kauempaa ei säästäisi mitään vain ainostaan haaskaa enemmän virtaa ja hidastaa.

Eniten virtaa kuluttaa nimenomaan datan siirtely, ja L2 tageineen on paljon kauempana. Ja replay jonka se myöhästetty tarkastus vaatisi on sekä hyvin energiatehotonta että tekisi L1-hudeista hyvin hitaita.

Tunnut siirtelevän joka toisessa viestissä maalitolppiasi näiden kahden asian ymmärtämättömyyden välillä, siinä mitä oikeasti olet ehdottamassa, että ehdotatko sen tarkastuksen pudottamista kokonaan pois (nopea mutta bugaava) vai viivästämistä ja tekemistä L2-tagien perusteella (hidas, virtasyöppö ja sivukanavahyökkäysaltis) vaan yrität poimia molemmista vaihtoehdoista paremmat puolet.

Mitään välimuotoa näiden välissä ei kuitenkaan ole, joko et tarkasta KAIKKIA ja bugaat, tai tarkastat KAIKKI myöhässä L2-tageista ja teet ihan samat tarkastukset, kuluttaen niihin ENEMMÄN virtaa ja hidastaen prossua selvästi.

Kun selitän ongelmasi toisessa, hyppäät toiseen, ja kun selitän ongelmasi siinä, hyppäät takasin ensimmäiseen ja teeskentelet että sinulla ei ole mitään ongelmaa sen kanssa.
 
Viimeksi muokattu:
Ja siis selityksenä: yksinkertainen virtuaalisesti mäpätty cache ei toimi koska saman fyysisen osoitteen mäppääminen useaan eri virtuaaliseen osoitteeseen on yleistä. Esimerkkinä yleinen temppu on että jos on ring buffer, johon tallennetaan vaihtelevan kokoisia elementtejä ja jota täytetään yhdestä päästä ja puretaan toisesta, tehdään puskurista 2:n potenssin kokoinen ja mäpätään se sama fyysinen muisti kaksi kertaa peräkkäin virtuaaliseen muistiavaruuteen. Tällöin puskurin "ympäri kiepahtaminen" tapahtuu yhdellä yhden syklin latenssin käskyllä kun haetaan seuraavan elementin alkua, maskaamalla indeksistä ylimmät bitit pois. Tämä poistaa paljon erikoistapauksia ja mahdollistaa koko puskurin tehokkaan käytön.

Koska tuollasia temppuja on matalan tason koodi aivan täynnä (esim Linux tekee tuota aivan kaikkialla), cachejen pitää selvitä tilanteista joissa samaan fyysiseen osoitteeseen osoittaa useampi virtuaalinen osoite. Tuo käytännössä tappaa virtuaaliset cachet -- siinä kohtia kun niistä järkätään sellaiset että aliakset eivät bugaa, ne eivät enää ole nopeampia tai polta vähemmän virtaa kuin VIPT. VIPT on se käytännön syy miksi x86 L1 cachejen koot ovat säilyneet vakiona niin kauan, se on teknisesti liian hyvä toteutus että siitä kannattaisi luopua cachejen koon nostamista varten.

Applella on VIPT-cacheja varten taskussaan valttikortti koska ne on valmiita rikkomaan yhteensopivuuden aina silloin tällöin ja sanomaan deveille että korjatkaa paskanne -- ne pari vuotta sitten kasvatti virtuaalimuistisivujen koon 16kB:hen. Koska VIPT-cachen maksimikoko on virtuaalimuistisivun koko * WAY_COUNT (onko tuolle suomenkielistä nimeä?), Apple voi toteuttaa 8-way 128kB L1 datan.
 
Toisin kuin sinä, minä ymmärrän, että 1) lataus ei saa palauttaa väärää dataa, vaan sen pitää AINA palauttaa se data minkä ohjelma haluaa hakea, ei sitä oikeaa dataa vain 99.5% tapauksista.

Kuka tahansa joka yhtään ymmärtää ohjelmoinnista yhtään mitään tajuaa tämän.


Ja ymmärrän ja myös sen, 2) että kun se osoitteenmuunnos ja fyysisen osoitteen tarkastus on aina kuitenkin jossain vaiheessa pakko tehdä joka ikiselle lataukselle(jotta ne palauttaa sen oikean arvon eikä oikeaa arvoa vain 99.5% tapauksista), sen tekeminen myöhemmin ja siinä tarvittavan fyysisen tagin hakeminen kauempaa ei säästäisi mitään vain ainostaan haaskaa enemmän virtaa ja hidastaa.

No nyt asiaa voi yksinkertaistaa että jätetään se microtag erikseen, eli onko ongelmaa sisäistää että jos cachelinja on tagattu sekä täydellä virtuaalisella että täydellä fyysisellä tagilla virtuaalinen osuma cacheen riittää varmistamaan osuman 100% varmuudella. Tämä on ollut ihan esimerkki oppimateriaalissa, ko. tekniikkaa lienee aikanaan jopa käytettykin, tuplataggaus vain jossain vaiheessa katsottiin turhaksi.

Vai onko siinä vielä jotain mitä et käsitä, miksi haluaisit tehdä vielä osoitemuunnoksen ja tarkistaa fyysisen tagin?
 
Ja siis selityksenä: yksinkertainen virtuaalisesti mäpätty cache ei toimi koska saman fyysisen osoitteen mäppääminen useaan eri virtuaaliseen osoitteeseen on yleistä. Esimerkkinä yleinen temppu on että jos on ring buffer, johon tallennetaan vaihtelevan kokoisia elementtejä ja jota täytetään yhdestä päästä ja puretaan toisesta, tehdään puskurista 2:n potenssin kokoinen ja mäpätään se sama fyysinen muisti kaksi kertaa peräkkäin virtuaaliseen muistiavaruuteen. Tällöin puskurin "ympäri kiepahtaminen" tapahtuu yhdellä yhden syklin latenssin käskyllä kun haetaan seuraavan elementin alkua, maskaamalla indeksistä ylimmät bitit pois. Tämä poistaa paljon erikoistapauksia ja mahdollistaa koko puskurin tehokkaan käytön.

Koska tuollasia temppuja on matalan tason koodi aivan täynnä (esim Linux tekee tuota aivan kaikkialla), cachejen pitää selvitä tilanteista joissa samaan fyysiseen osoitteeseen osoittaa useampi virtuaalinen osoite. Tuo käytännössä tappaa virtuaaliset cachet -- siinä kohtia kun niistä järkätään sellaiset että aliakset eivät bugaa, ne eivät enää ole nopeampia tai polta vähemmän virtaa kuin VIPT. VIPT on se käytännön syy miksi x86 L1 cachejen koot ovat säilyneet vakiona niin kauan, se on teknisesti liian hyvä toteutus että siitä kannattaisi luopua cachejen koon nostamista varten.

En ole ikinä puhunut puhtaista virtuaalisista cacheista. Eli kun L2 on inklusiivinen L1:n suhteen ja L2 on fyysisesti tagattu joka ikinen linja L1:ssä omaa myös fyysisen tagin L2:ssa. Nuo esimerkkisi synonyymit on esimerkiksi AMD dokumentaatiossaan kertonut havaittavan L2:ssä L1-missin jälkeen jonka jälkeen L2 päivittää L1:n microtagin vastaamaan ko. synonyymia. Eli AMD aivan selkeästi kertoo että L1 accessoidaan virtuaalisesti, nyt vain on kysymys siitä että tarvitaanko TLB-käännöstä ja fyysisten tagien tarkastusta virtuaalisen osuman jälkeen. Utagin osumaprosentti ei ole täydet 100%, tavalla tai toisella osuma pitää validoida jossakin vaiheessa mutta se voidaan ihan hyvin tehdä virtuaalisella osoitteella, ei se osoitteen fyysiseksi kääntäminen edesauta asiaa millään tavalla. Ja osuman validointi, tapahtui se sitten virtuaalisen tai fyysisen tagin avulla ei ole mikään pakko sijaita prosessorin kriittisellä polulla - siis data voidaan ottaa käyttöön ennen osuman validointia aivan hyvin jos prosessorissa on mekanismi perua käskyjä, joka siellä on jokatapauksessa muutenkin.
 
No nyt asiaa voi yksinkertaistaa

... tämä ei ole "vain yksinkertaistamista" vaan täysin toimimattoman asian ehdottamisen vaihtaminen toimivan, mutta suorituskyvyn kannalta hiukan huonohkon asian ehdottamiseksi.

että jätetään se microtag erikseen, eli onko ongelmaa sisäistää että jos cachelinja on tagattu sekä täydellä virtuaalisella että täydellä fyysisellä tagilla virtuaalinen osuma cacheen riittää varmistamaan osuman 100% varmuudella. Tämä on ollut ihan esimerkki oppimateriaalissa, ko. tekniikkaa lienee aikanaan jopa käytettykin, tuplataggaus vain jossain vaiheessa katsottiin turhaksi.

Vai onko siinä vielä jotain mitä et käsitä, miksi haluaisit tehdä vielä osoitemuunnoksen ja tarkistaa fyysisen tagin?

Osuman tarkastaminen pelkällä täydellä virtuaalisoitteella tosiaan toimii mutta siinä on paljon hidastavia ja hankaloittavia tekijöitä, mm:

Virtuaalisten ja fyysisten osoitteiden välinen mäppäys ei ole vakio ja universaali, useasta eri syistä:

1)
Zen tukee SMT:tä. Ja SMT, vaikka tulee sanoista "Simultaneous MultiThreading", tarkoittaa se oikeasti kahden erillisen PROSESSIN ajamista siellä prosessoriytimellä, ei pelkästään saman prosessin eri säikeiden.

Molemmilla virtuaaliytimillä voi siis olla aivan eri virtuaalimuistimappaykset. Mikäli L1D tagattaiisin virtuaaliosoitteella, sinne pitäisi laittaa bitti, joka kertoo, kumman virtuaaliytimen virtuaaliosoitteista on kyse, ja julistaa huti, jos tämä bitti sanoo, että tämä on toisen virtuaaliytimen dataa. Tähän asti ei kuulosta pahalta, yksi lisäbitti on halpa, MUTTA:

Tästä seuraa se, että jos meillä onkin siellä kaksi SAMAN PROSESSIN säiettä, joilla on sama virtuaaliosoitemäppäys, ja jotka jakavat (käytännössä kaiken) datansa, sitten toisen virtuaaliytimen välimuistiin lataama data ei näkyisi toiselle, ja meillä tulisi pahasti L1D-huteja seuraavissa tilanteissa:

1a) Molemmat lukee samaa dataa joka tulee muualta, tämä pitäisi duplikoida molemmille säikeille. Paitsi että hups, siellä on se logiikka joka kieltää saman fyysisen osoitteen olemisen samassa välimuistissa kahteen kertaan. Eli tilanteessa jossa molemmat yrittävät lukea samaa read-only-dataa, tämä data flushataan jatkuvasti toiselta, ja tästä seuraa todella pahaa ping-pong-efektiä ja hidastelua.

1b) Toinen säie kirjoittaa jotain ja sen jälkeen toinen säie lukee sen. Koska tämä olisi tägätty väärällä ydin-id-bitillä, toinen ei voisi lukea tätä suoraan, vaan tulisi huti ja data pitäisi kierrättää L2-kakun kautta.

Erityisesti tilanne 1a olisi oikeasti paha/usein esiintyvä ongelma. Saman softan eri säikeiden välillä on usein paljon dataa, jota moni säie (vain) lukee.

2)
Context switchit

Mikäli käytettäisiin virtuaalisia TAGeja, pitäisi context switchin yhteydessä flushata kokonaan sen virtuaaliytimen L1D-välimuisti. Vaikka siellä toisessa säikeessä viihdyttäisiin hyvin vähän aikaa ja alkuperäiseen säikeeseen palattaiisin heti takaisin.

Esim jotkut keskeytyskäsittelijät aiheuttaisi tästä huomattavasti lisää hidastumista, niissä kun tyypillisesti tehdään vain jotain todella pientä todella nopeasti, mutta keskeytyksiä voi tulla aika suuria määriä aikayksikköä kohden, jos esim on sekä levy- että verkkoliikennettä menossa.


Intelin prosessorit on kuitenkin viimeiset kymmenisen vuotta tukeneet Process Context ID (PCID)-toimintoa, jolla voisi käytännössä kertoa, minkä prosessin virtuaaliosoitteista on kyse, ja jos tagiin lisättäisiin virtuaaliosoitteen lisäksi PCID (joka toki sitten tekisi siitä tagista isomman, ja lisäisi virrankulutusta ja tarvittavan vertailijan kokoa), suurin osa näistä yllä mainitsemistani ongelmista voitaisiin ratkoa hinnalla että TAG olisi vain 12 (tai siis 11) bittiä suurempi.

PCID ei kuitenkaan ollut tuettu Zen:ssä tai Zen2ssa, AMD lisäsi sille tuen vasta Zen3een. Ja softan puolesta taas tuki tuli esim. Linuxille vasta vuoden 2017 lopulla.

Mikäli Zenissä olisi virtuaalitagatyt, välimuistit, sinne olisi kyllä haluttu lisätä myös PCID-tuki näiden yllämainitsemieni ongelmien välttämiseksi (ja agitoida käyttikset tukemaan sitä).

Ja syy, miksi PCID-tuki on nyt tullut Zen3een lienee se, että se mahdollistaa paljon nopeamman toteutuksen tietyille suojamekanismeille joitain sivukanavahyökkäyksiä vastaan.




Ja niin, virtuaaliosoitteet on X86-64lla 48 bittiä(ja sen vaadittavan virtuaaliydin-idn kanssa siis 49 bittiä, eli virtuaalisoite-TAG olisi 37 bittiä. (PCIDn kanssa olisi sitten 48 bittiä, mutta tiedetään että sitä ei ole tuettu)).
DRAMin maksimikapasiteetti Zenillä on 41 bitin verran, ja jos sen päälle pitää vähän muistia varata muistimäpätylle IOlle jota saa kakuttaa, tarkoittaisi se 42 bittiä, eli fyysisillä osoittella toimivalle TAGille riittäisi 30 bittiä.


Fyysisillä osoitteilla toimiva TAG on siis myös pienempi kuin virtuaalisilla osoitteilla toimiva olisi.

Ja sen TLB-lookupin L1-TLBstä pystyy tosiaan helposti tekemään rinnakkain way predictionin ja varsinaisten data- ja tag-array-accessien kanssa, joten se ei ainakaan millään tavalla aiheuta yhtään lisää viivettä siihen lataukseen; Päin vastoin, kun tuon kaikkein viimeisenä olevan vertailijan koko putoaa 37 bitistä 30, se potentiaalisesti jopa nopeutuu hiukan.
 
Auttakaapa tietämätöntä ja kertokaa mikä on nyt se the prossu mikä kannattaa ostaa? Joku sanoo amd, joku sanoo intel: ite en ymmärrä lainkaan eroja. Mitä prossua valitessa pitää ottaa huomioon?

Tulossa täysin pelikäyttöön, kaveriksi joko 3070, 3080 tai 6800xt. Ei ole aikomusta päivittää pitkään aikaan.
 
Auttakaapa tietämätöntä ja kertokaa mikä on nyt se the prossu mikä kannattaa ostaa? Joku sanoo amd, joku sanoo intel: ite en ymmärrä lainkaan eroja. Mitä prossua valitessa pitää ottaa huomioon?

Tulossa täysin pelikäyttöön, kaveriksi joko 3070, 3080 tai 6800xt. Ei ole aikomusta päivittää pitkään aikaan.

Mikä resoluutio ja tavoiteltu fps?
 
Ah, unohtui. Tarkoitus olisi ostaa 1440p näyttö ja pelata puolet peleistä sillä ja puolet 4k telkkarilla. Tv on 120hz ja näyttö varmaan 144hz. Eli sanotaan 1440p/144fps ja 4k/60fps.

AMD Ryzen 9 5900X

Se on nopein peliprosessori nyt yhdessä muiden Ryzen 5000-sarjan prossujen kanssa ja se on erittäin future proof 12-ytimisenä eikä siitä joudu maksaman samanlaista "halotuoteveroa" kuin pykälää kalliimmasta mallista.

Kaveriksi 4*8Gb 3800Mhz muistia
 
Auts, onpa kallis. Oonkohan liian suurilla odotuksilla ja liian pienellä rahalla liikenteessä. Mites toi 5600x vertautuu?

Tämän päivän peleissä 5600X on käytännössä yhtä nopea, eli siis et ilman FPS-mittaria huomaa mitään eroa. Muutaman prosentin ero CPU-rajoitteisissa tilanteissa

Ei vaan VÄLTTÄMÄTTÄ sovi "ei ole aikomusta päivittää pitkään aikaan" kategoriaan 6-ytimisenä. Siis itse tulkitsin pitkän ajan nyt reilusti yli 5v aikajänteenä.
 
Miksei vaan suoriltaan se 5600X.. Sitten kun se loppuu kesken voi ostaa sen 5900X tai siirtyä suoraan next gen. Jos vain pelaa niin turhaa kai sitä ytimiä 'varastoon' ostaa...
 
Miksei vaan suoriltaan se 5600X.. Sitten kun se loppuu kesken voi ostaa sen 5900X tai siirtyä suoraan next gen. Jos vain pelaa niin turhaa kai sitä ytimiä 'varastoon' ostaa...

Jos ei halua päivittää, niin ei halua päivittää. Sitten joutuu ostamaan suorituskykyä varastoon. Järjetöntä, mutta onhan näitä nähty
 
Intelin sedät olivat kiinnittäneet huomiota, että Ryzen 4000-sarjan läppärit uhraavat aika paljon suorituskykyä akunkeston hyväksi silloin, kun kone ei ole verkkovirrassa kiinni. Jos on pitkäaikainen tehoa vaativa toiminto, niin Ryzen ottaa täydet tehot käyttöön vasta 7-10 sekunnin päästä toiminnon aloittamisesta. Käytännössä siis kaikki lyhytaikainen suorituskykyä vaativa toiminta toimii paljon hitaammin kuin voisi toimia. Pahin pudotus tulee WebXRT3:ssa, jossa suorituskyky tippuu testin mukaan jopa 48%. Cinebenchissä sen sijaan ei juurikaan eroa. :) Intelin Tiger Laken kanssa yleinen suorituskykypudotus akkuvirralla on paljon pienempi. Saa nähdä, että tuleeko myöhemmin jotain ajurisäätöä asiaan liittyen.

 
Intelin sedät olivat kiinnittäneet huomiota, että Ryzen 4000-sarjan läppärit uhraavat aika paljon suorituskykyä akunkeston hyväksi silloin, kun kone ei ole verkkovirrassa kiinni. Jos on pitkäaikainen tehoa vaativa toiminto, niin Ryzen ottaa täydet tehot käyttöön vasta 7-10 sekunnin päästä toiminnon aloittamisesta. Käytännössä siis kaikki lyhytaikainen suorituskykyä vaativa toiminta toimii paljon hitaammin kuin voisi toimia. Pahin pudotus tulee WebXRT3:ssa, jossa suorituskyky tippuu testin mukaan jopa 48%. Cinebenchissä sen sijaan ei juurikaan eroa. :) Intelin Tiger Laken kanssa yleinen suorituskykypudotus akkuvirralla on paljon pienempi. Saa nähdä, että tuleeko myöhemmin jotain ajurisäätöä asiaan liittyen.



TLDR: oliko tällä siis jotakin benchien ulkopuolella näkyvää merkitystä?
 
Kyseessä on AMD:n mahdollistama ominaisuus jonka valmistajat voivat ottaa halutessaan käyttöön.
 
1)
Zen tukee SMT:tä. Ja SMT, vaikka tulee sanoista "Simultaneous MultiThreading", tarkoittaa se oikeasti kahden erillisen PROSESSIN ajamista siellä prosessoriytimellä, ei pelkästään saman prosessin eri säikeiden.

Molemmilla virtuaaliytimillä voi siis olla aivan eri virtuaalimuistimappaykset. Mikäli L1D tagattaiisin virtuaaliosoitteella, sinne pitäisi laittaa bitti, joka kertoo, kumman virtuaaliytimen virtuaaliosoitteista on kyse, ja julistaa huti, jos tämä bitti sanoo, että tämä on toisen virtuaaliytimen dataa. Tähän asti ei kuulosta pahalta, yksi lisäbitti on halpa, MUTTA:

Tästä seuraa se, että jos meillä onkin siellä kaksi SAMAN PROSESSIN säiettä, joilla on sama virtuaaliosoitemäppäys, ja jotka jakavat (käytännössä kaiken) datansa, sitten toisen virtuaaliytimen välimuistiin lataama data ei näkyisi toiselle, ja meillä tulisi pahasti L1D-huteja seuraavissa tilanteissa:

1a) Molemmat lukee samaa dataa joka tulee muualta, tämä pitäisi duplikoida molemmille säikeille. Paitsi että hups, siellä on se logiikka joka kieltää saman fyysisen osoitteen olemisen samassa välimuistissa kahteen kertaan. Eli tilanteessa jossa molemmat yrittävät lukea samaa read-only-dataa, tämä data flushataan jatkuvasti toiselta, ja tästä seuraa todella pahaa ping-pong-efektiä ja hidastelua.

1b) Toinen säie kirjoittaa jotain ja sen jälkeen toinen säie lukee sen. Koska tämä olisi tägätty väärällä ydin-id-bitillä, toinen ei voisi lukea tätä suoraan, vaan tulisi huti ja data pitäisi kierrättää L2-kakun kautta.

Erityisesti tilanne 1a olisi oikeasti paha/usein esiintyvä ongelma. Saman softan eri säikeiden välillä on usein paljon dataa, jota moni säie (vain) lukee.

Näin tapahtuu, mutta osuma tulee L2:sta L2:m mukaisella viiveellä, 12 kellojaksoa vs 3 yms, ei vaikuta suorituskykyyn millään tapaa merkittävästi. Bonuksena poistuu sivukanava-vaara säikeiden välillä. Asianhan näkee testeitä oikein hyvin, Intelin prosessorien threadien välinen viive SMT-ytimessä on huomattavasti pienempi kuin AMD:llä, ero on juuri kuten L1 vs L2 osumat.

Ja meillä on myös Power9 esimerkkinä, joka käyttää myös way-predicted L1-cachea ja dokumentoidusti käyttää predikoitua dataa ennen varmistusta. Ko. prosessori on 4-way SMT ja alkujaan L1D oli yhdistetty mutta Spectre/Meltdown-korjauksena tuli 2-bittinen thread ID jakamaan L1-datan per threadi. Intel myös tykkäisi kovasti L1-datan threadijakomahdollisuudesta mutta sen puuttuessa ratkaisuna on joissain tapauksissa disabloida koko SMT.

2)
Context switchit

Mikäli käytettäisiin virtuaalisia TAGeja, pitäisi context switchin yhteydessä flushata kokonaan sen virtuaaliytimen L1D-välimuisti. Vaikka siellä toisessa säikeessä viihdyttäisiin hyvin vähän aikaa ja alkuperäiseen säikeeseen palattaiisin heti takaisin.

Esim jotkut keskeytyskäsittelijät aiheuttaisi tästä huomattavasti lisää hidastumista, niissä kun tyypillisesti tehdään vain jotain todella pientä todella nopeasti, mutta keskeytyksiä voi tulla aika suuria määriä aikayksikköä kohden, jos esim on sekä levy- että verkkoliikennettä menossa.

Ei tarvitse flushata L1:stä, vain utagit. Ja aivan kuten AMD:n dokumentaatio sanoo, L1-accessoidaan vain ja ainoastaan virtuaalisen utagin avulla joten context-switchissä L1 missaa ensimmäiset lataukset, mutta osumien tullessa L2:sta ero on muutama kellojakso per access. Mikä on suorituskykyvaikutus niin sen näkee esimerkiksi Intelin pätseistä joissa flushataan koko TLB context switchissä - on vaikutusta mutta ei merkittävää, puhutaan maksimissaan joistain prosenteista.

Ja sen TLB-lookupin L1-TLBstä pystyy tosiaan helposti tekemään rinnakkain way predictionin ja varsinaisten data- ja tag-array-accessien kanssa, joten se ei ainakaan millään tavalla aiheuta yhtään lisää viivettä siihen lataukseen; Päin vastoin, kun tuon kaikkein viimeisenä olevan vertailijan koko putoaa 37 bitistä 30, se potentiaalisesti jopa nopeutuu hiukan.

L1-TLB on prosessorin MMU:n cache. Eli haku ko. cachesta tapahtuu aivan kuten L1:stä itsestään, AMD:n L1-DTLB on 64 entry fully associative. Eli jos hakutulos tarvitaan mahdolisimman nopeasti täydellä osumutarkkuudella luetaan kaikki 64 48 bittistä TLB-tag bittiä ja vertaillaan niitä siihen 48:aan virtuaalibittiin jotta löydetään oikea TLB-entry. Sen jälkeen kun oikea osuma on löydetty luetaan. ko TLB-cachesta nuo 30 bittiä joilla voidaan sitten tehdä vertailu cachelinjan fyysiseen tagiin..... tässä joudutaan helposti lukemaan monikertainen määrä dataa cachesta verrattuna tilanteeseen jossa luetaan 8:n 8 bitin utagia ja 64 bittiä varsinaista haettavaa dataa. Säästöpotentiaali on valtava.

Stack overflowssa Payl A Clayton on kanssa sivunnut vähän aihetta


Tekniikkahan ei ole uusi, näemmä Pentium4 on hyödyntänyt 5 bittisiä utageja jotta on saatu hyöty irti 16 nopeasti lasketusta bitistä osoitteenmuodostuksessa - Zenissä yllättäen vastaavasti käytetään 8 bittisiä uTageja hashättynä toisella 8 bitillä mukaan, sattumoisin on juuri puolet tuetusta 56bitin virtuaalimuistiavaruudesta joten melko varmaan myös AMD on optimoinut AGUT laskemaan ensin alemman puoliskon osoitteesta ja tekemään L1-muistihaun sen perusteella aivan kuten P4:ssä aikanaan.
 
Viimeksi muokattu:
Kannattaa huomata että tuossa oli kaiken lisäksi hitaat muistit. Vielä kun tuon kaveriksi saisi hyvin tuuletettuun läppäriin jonkun Radeon 6800 mobiiliversion.
 
Välillä hiukan huumoria kevennykseksi. :D

EnhrfUqXEAADiNc

EnlgtmHWMAAp2al
 
AMD fanipojat meuhkanneet pitkään, että AMD parempi, koska se tarjoaa paremman hinta-laatusuhteen ja ei ole mitään väliä intelin ollessa 10% nopeampi. Tämähän on nyt muuttunut ja parasta hinta-laatua tarjoaa esimerkiksi 8-ytimisissä 10700k. Nyt AMD:n ollessa 10% nopeampi punalasisista on kaikista kuoriutunut kilpapelaajia ja sillä pienellä fps erolla peleissä tuntuukin olevan isomerkitys ja ei muuta kun isolla hintalapulla 5800x tilaukseen.

Oma näkökanta on se, että prosessorit ovat jo tarpeeksi nopeita pelaamiseen. Esim 10700k antaa sen +250fps, jos peli vaan on tarpeeksi cpu bound ja nätisti pyörii 240hz paneelilla.

Rocket Lake tulee varmaan tasoihin tai vähän ohi.

Itse kuitenkin odotan Alder Lakea, josta ennustettu suurinta prossujulkaisua pitkään aikaan. 10nm energiatehokkaat hybridiytimet ja DDR5 tietysti ennen AMD:tä.
 
AMD fanipojat meuhkanneet pitkään, että AMD parempi, koska se tarjoaa paremman hinta-laatusuhteen ja ei ole mitään väliä intelin ollessa 10% nopeampi. Tämähän on nyt muuttunut ja parasta hinta-laatua tarjoaa esimerkiksi 8-ytimisissä 10700k. Nyt AMD:n ollessa 10% nopeampi punalasisista on kaikista kuoriutunut kilpapelaajia ja sillä pienellä fps erolla peleissä tuntuukin olevan isomerkitys ja ei muuta kun isolla hintalapulla 5800x tilaukseen.

Oma näkökanta on se, että prosessorit ovat jo tarpeeksi nopeita pelaamiseen. Esim 10700k antaa sen +250fps, jos peli vaan on tarpeeksi cpu bound ja nätisti pyörii 240hz paneelilla.

Ja foorumin kovimmista sinilasisista low detaill 1080p high fps pelaajista on kuoriutunut, oikeasti pelit pyöriikin nykyraudalla ihan kivasti kavereita. Kumma juttu, kohtahan täällä kaikki syleilee toisaan toverillisesti ja onnittelevat erillaisesta rautavalinnasta.
 
Itse kuitenkin odotan Alder Lakea, josta ennustettu suurinta prossujulkaisua pitkään aikaan. 10nm energiatehokkaat hybridiytimet ja DDR5 tietysti ennen AMD:tä.
Itse en ole ihan ymmärtänyt mihin käyttöön nämä on tarkoitettu. Mobiili ja kevyt työasemat nyt ehkä. Ei näistä kyllä mitään pelikoneita ja tehotyöasemia tehdä.
 
Itse en ole ihan ymmärtänyt mihin käyttöön nämä on tarkoitettu. Mobiili ja kevyt työasemat nyt ehkä. Ei näistä kyllä mitään pelikoneita ja tehotyöasemia tehdä.

Joo, sitä itsekkin ihmettelen. Gracemont ytimet, mitä siihen pitäisi mennä ovat käsittääkseni todella matalan kulutuksen käyttöön tarkoitettuja. Eli about 1.5W per ydin kamaa.

Riippuu hinnasta ja markkinoinnista. Jos se hinnoitellaan kuin AMD:n 16 corea (mutta 8 kovaa, 8 gracemount ydintä) ja markkinoidaan coremäärillä, niin jää aika paha maku suuhun. Vastaavasti jos verrataan AMD:n 8 coren malliin ja hinnoitellaan vastaavasti ja "saat nämä coret kaupan päälle", niin positiivinen ensituntuma siitä tulee.
 
AMD fanipojat meuhkanneet pitkään, että AMD parempi, koska se tarjoaa paremman hinta-laatusuhteen ja ei ole mitään väliä intelin ollessa 10% nopeampi. Tämähän on nyt muuttunut ja parasta hinta-laatua tarjoaa esimerkiksi 8-ytimisissä 10700k. Nyt AMD:n ollessa 10% nopeampi punalasisista on kaikista kuoriutunut kilpapelaajia ja sillä pienellä fps erolla peleissä tuntuukin olevan isomerkitys ja ei muuta kun isolla hintalapulla 5800x tilaukseen.

Oma näkökanta on se, että prosessorit ovat jo tarpeeksi nopeita pelaamiseen. Esim 10700k antaa sen +250fps, jos peli vaan on tarpeeksi cpu bound ja nätisti pyörii 240hz paneelilla.

Rocket Lake tulee varmaan tasoihin tai vähän ohi.

Itse kuitenkin odotan Alder Lakea, josta ennustettu suurinta prossujulkaisua pitkään aikaan. 10nm energiatehokkaat hybridiytimet ja DDR5 tietysti ennen AMD:tä.

ryzen5000-csgo-1080p.png


Ryzen 3000 sarjan aikaan intel fanipojut huuteli että toi noin 10% ero oli todella merkittävä joten eikös tuolla logiikalla voida nyt tuota Ryzen 5000 sarjan noin 17% eroa kutsua vähintäänkin megalomaaniseksi, sehän on niin valtava harppaus että oikeastaan ylisanat loppuvat kesken. Pitää alkaa kuumeisesti keksimään uusia ylistyssanoja jotta tuo todella merkittävä ero voidaan riittävän hyvin kuvailla.
 
^^^ Hyvä, välttävä, huono -asteikolla ilmeisesti alle 600 on huono, 600-700 välttävä ja yli 700FPS hyvä.
 
ryzen5000-csgo-1080p.png


Ryzen 3000 sarjan aikaan intel fanipojut huuteli että toi noin 10% ero oli todella merkittävä joten eikös tuolla logiikalla voida nyt tuota Ryzen 5000 sarjan noin 17% eroa kutsua vähintäänkin megalomaaniseksi, sehän on niin valtava harppaus että oikeastaan ylisanat loppuvat kesken. Pitää alkaa kuumeisesti keksimään uusia ylistyssanoja jotta tuo todella merkittävä ero voidaan riittävän hyvin kuvailla.

Taisi olla myös niin, että CS:GOn pelimoottori rikki ja raskaasti intelille optimoitu aikaisemmin. Lähinnähän tämä kuvasi tukee näkökantaani, että 10th gen intelit ovat tarpeeksi nopeita 240hz pelaamiseen cpu bound peleissä.

Toki pakko antaa pienet huutikset tälle kuvalle. Kaikki ketkä oikeasti ovat pelanneet CS, tietävät ettei se todellinen fps ole pelissä lähelläkään noita lukemia, joten vertailukelpoisuus on mitä on.
 
Taisi olla myös niin, että CS:GOn pelimoottori rikki ja raskaasti intelille optimoitu aikaisemmin. Lähinnähän tämä kuvasi tukee näkökantaani, että 10th gen intelit ovat tarpeeksi nopeita 240hz pelaamiseen cpu bound peleissä.

Toki pakko antaa pienet huutikset tälle kuvalle. Kaikki ketkä oikeasti ovat pelanneet CS, tietävät ettei se todellinen fps ole pelissä lähelläkään noita lukemia, joten vertailukelpoisuus on mitä on.

Terveiset techpowerupilta. Noin se keula repeää, kun gpu pullonkaulat eliminoidaan. Tuohan paukahti myös esiin anandtechillä joka testasi ihan naurettavan pienillä resoluutioilla. Tyyliin 240p tjsp.

https://tpucdn.com/review/intel-10900k-vs-amd-5900x-gaming-performance/images/2080-ti-3200-cl14.png



Joku vois ajella vaikka 1080p testit low/medium graffoilla rtx 3080: 10600k 5ghz vs 3900xt niin saataisiin viimeisetkin rytzen miehet hiljaiseksi. Usein kun nostetaan tämä väite esille, että amd:ltä saa parempaa samalla rahalla, mutta kun se ei todellakaan mene näin pelisuorituskyvyssä.

Vieläkö muuten tämä testi pitäisi muuten ajaa uusilla prosuilla?
 
Terveiset techpowerupilta. Noin se keula repeää, kun gpu pullonkaulat eliminoidaan. Tuohan paukahti myös esiin anandtechillä joka testasi ihan naurettavan pienillä resoluutioilla. Tyyliin 240p tjsp.

Jos on tarkoitus testata CPU pelitehokkuutta, silloin GPU pullonkaulat pitää nimenomaan eliminoida. Muussa tapauksessa testi muuttuu GPU testiksi, jossa saadut tulokset määrittää GPU pullonkaula. Tästä syystä noita testejä ajetaan low settingeilla ja pienillä resoluutioilla.
 
Terveiset techpowerupilta. Noin se keula repeää, kun gpu pullonkaulat eliminoidaan. Tuohan paukahti myös esiin anandtechillä joka testasi ihan naurettavan pienillä resoluutioilla. Tyyliin 240p tjsp.

https://tpucdn.com/review/intel-10900k-vs-amd-5900x-gaming-performance/images/2080-ti-3200-cl14.png

Ja tietysti 10900k vakiona 4.8ghz ja siitä kun ottaa löysät pois niin 5.3ghz eli se ero 10% luokkaa. Tämähän on se realistinen vertailu kun rytzenit ei kellotu.

Vieläkö muuten tämä testi pitäisi muuten ajaa uusilla prosuilla?

Ajetaan se tammikuussa sitten rocket lakella taas uudestaan.
 
Terveiset techpowerupilta. Noin se keula repeää, kun gpu pullonkaulat eliminoidaan. Tuohan paukahti myös esiin anandtechillä joka testasi ihan naurettavan pienillä resoluutioilla. Tyyliin 240p tjsp
Tällä mainitulla testillä ei ole mitään käytännön merkitystä pelisuorituskyvyn vertailussa. Testissä oli käytössä itse tehty Unreal Engine 4-pohjainen ohjelma, joka toisti yhtä ja samaa framea. GPU:n yhtälöstä poistamisen jälkeen vertaillaan pelkkää IPC:tä, joten tulos ei ole yllätys.

Ko. testiartikkelin lopussa on oikeat pelitestit 1080p/1440p/4K myös kellotuksien kanssa. 5900X on 10900K:ta edellä myös kellotuksien kanssa, mutta erot ovat lähes merkityksettömiä ellei tarkastella yksittäisiä pelejä.

How is Intel Beating AMD Zen 3 Ryzen in Gaming?
 
Tällä mainitulla testillä ei ole mitään käytännön merkitystä pelisuorituskyvyn vertailussa. Testissä oli käytössä itse tehty Unreal Engine 4-pohjainen ohjelma, joka toisti yhtä ja samaa framea. GPU:n yhtälöstä poistamisen jälkeen vertaillaan pelkkää IPC:tä, joten tulos ei ole yllätys.

Ko. testiartikkelin lopussa on oikeat pelitestit 1080p/1440p/4K myös kellotuksien kanssa. 5900X on 10900K:ta edellä myös kellotuksien kanssa, mutta erot ovat lähes merkityksettömiä ellei tarkastella yksittäisiä pelejä.

How is Intel Beating AMD Zen 3 Ryzen in Gaming?

Vastaavasti anandin 360p/low tai muiden vastaavien testien tuloset alkaa täältä. Saman tason perffiloikka siellä on, mitä tuossa techpowerupin simulaatiossa. Tietty ko. testaus menee ihan "yli", kun on pelikelvottomilla asetuksilla haettu sitä cpu pullonkaulaa. Tietty sitä prosua perustellaan sillä, että ne "tulevaisuuden" pelit vaatii enemmän. Nuo kovat erot tulee esiin vain jos gpu:n kuormitus on jossain 50% tasolla tjsp ja se ottaa vastaan ihan kaiken mitä cpu saa aikaiseksi. Oikeasti ei tuollaista ikinä tule eteen, aina vaihtu prosu tai gpu ja niin isoa tehoeroa niiden välille ei pääse syntymään. Käytännön resoilla ihan yksi ja sama.

Tässä muuten anandin summary:

"When we compare AMD against Intel, AMD easily wins the CPU-limited lowest resolution tests from +2% to +52%, averaging around +21% higher FPS. In the 1080p Maximum however, AMD and Intel trade blows, swaying from -4% to +6% for AMD (except in our Civ6 test, which is a +43% win for AMD)."
 
Ja tietysti 10900k vakiona 4.8ghz ja siitä kun ottaa löysät pois niin 5.3ghz eli se ero 10% luokkaa. Tämähän on se realistinen vertailu kun rytzenit ei kellotu.
Ei se 10900k kellotu 5,3 ghz all core. 5.1 voi mennä mutta tällöin tarvitaan hyvä emolevy (maksaa), eikä alle 100 € jäähy riitä vaan voi olla että tarvitaan 240 AIO vesijäähy tai jopa custom loop, kun prossu Syö sitä sähköä melkein 300 w tai jopa yli ja tämä kaikki eikä eroa synny kuin 5 % tai alle.
 
Taisi olla myös niin, että CS:GOn pelimoottori rikki ja raskaasti intelille optimoitu aikaisemmin.

Ai nyt se on sitten rikki? Tätähän AMD "fanit" on jatkuvasti toitottanu ja Intel "fanit" ei ole tätä hyväksyny aiemmin. Mielenkiintoisesti se onkin nyt validi.

Lähinnähän tämä kuvasi tukee näkökantaani, että 10th gen intelit ovat tarpeeksi nopeita 240hz pelaamiseen cpu bound peleissä.

Mutta 3000 sarjan ryzenit muka ei ole?

Jos on tarkoitus testata CPU pelitehokkuutta, silloin GPU pullonkaulat pitää nimenomaan eliminoida. Muussa tapauksessa testi muuttuu GPU testiksi, jossa saadut tulokset määrittää GPU pullonkaula. Tästä syystä noita testejä ajetaan low settingeilla ja pienillä resoluutioilla.

Ja noi testit ei kyllä kerro yhtään mitään. Tai kertoo ne sen että 5000 sarjan Ryzenit kiskoo hirmu eron Inteliin, todennäköisesti ryzenit pääsee hyötymään noissa ihan älyttömästi suuren välimuistit takia. 3000 tuota ei nähty kuska välimuistin rakenne oli erilainen. Mutta ei se Ryzenin ero ole todellisuudessa noin suuri mitä noissa joissain testeissä saadaan.

EDIT: Itseasiassa Anantech tullut aika samanlaiseen johtopäätökseen nyt kun lueskelin tuota niiden settiä.
As we saw in our recent Broadwell re-review, having access to large amounts of lower latency cache seems to be a good way to increasing gaming performance. By moving from each core having access to 16 MB to 32 MB, along with raw IPC gains, AMD is showing some good uplift. On the competitive front, we’re seeing a more even battlefield between Intel and AMD as the settings are cranked up.

Ajetaan se tammikuussa sitten rocket lakella taas uudestaan.

Miksi vasta tammikuussa? Miksei nyt?
 
Viimeksi muokattu:
Kovat on odotukset (pelikäyttöön) Rocket Lakelle. Turha julkaisuhan se olisikin, ellei sillä noustaisi taas kärkeen. Katellaan sitten lähempänä julkaisua (juhannuksena) mitä siitä rampautetusta kivestä saadaan irti peleissä.
 
Kovat on odotukset (pelikäyttöön) Rocket Lakelle. Turha julkaisuhan se olisikin, ellei sillä noustaisi taas kärkeen. Katellaan sitten lähempänä julkaisua (juhannuksena) mitä siitä rampautetusta kivestä saadaan irti peleissä.
Ei se turha ole, kun amd ei saa tavaraa myyntiin asti.
 


Jos pitää paikkaansa niin kova juttu. Tiedä millainen jytky sieltä tulee.
 


Jos pitää paikkaansa niin kova juttu. Tiedä millainen jytky sieltä tulee.

Intelillä ilmeisesti kiire mukaan näihin hintaraiskaus bileisiin joita amd:n ja nvidian tuotteilla juuri nyt harrastetaan.
 


Jos pitää paikkaansa niin kova juttu. Tiedä millainen jytky sieltä tulee.
Pakko julkaista hätäseen jotain ettei fanipojat ala valumaan muihin vaihtoehtoihin (horjumaan uskossaan).
 
Ei se 10900k kellotu 5,3 ghz all core. 5.1 voi mennä mutta tällöin tarvitaan hyvä emolevy (maksaa), eikä alle 100 € jäähy riitä vaan voi olla että tarvitaan 240 AIO vesijäähy tai jopa custom loop, kun prossu Syö sitä sähköä melkein 300 w tai jopa yli ja tämä kaikki eikä eroa synny kuin 5 % tai alle.

Silicon lotteryn tilastot, nuo on siis oikeasti vakaita, eikä "cinebench meni läpi ja BF ei kaatunut" - vakaita. Tuo firma siis ostaa kiviä, binnaa ne ja sieltä saa ostaa niitä oikeasti kulkevia yksilöitä. Kellot on sarakkeissa normaali ja avx vakaat. Mutta tiettyhän väittelyketjussa kaikkien kivet kulkee sen 5.3Ghz.

10900K4.80GHz4.70GHz6C+100MHz
3C+200MHz
1.130V210W100%
10900K4.90GHz4.80GHz6C+100MHz
3C+200MHz
1.150V220WTop 99%
10900K5.00GHz4.90GHz6C+100MHz
3C+200MHz
1.170V230WTop 68%
10900K5.10GHz5.00GHz6C+100MHz
3C+200MHz
1.190V250WTop 21%
10900K5.20GHz5.10GHz6C+100MHz
3C+200MHz
1.210V270WTop 1%
 


Jos pitää paikkaansa niin kova juttu. Tiedä millainen jytky sieltä tulee.
Ainakin saatavuus on taattu, kun siruja kerätään varastoon 2kk vähemmän.
 

Statistiikka

Viestiketjuista
295 730
Viestejä
5 049 639
Jäsenet
80 975
Uusin jäsen
konstadaonly

Hinta.fi

Back
Ylös Bottom