Artikkelista:
Olen ymmärtänyt M1:n omaavan n. tuplasti leveämmän decoden kuin AMD:n ja Intelin prossut.
Varsinainen decode on moderneissa x86ssa n. puolet(4-5), mutta moderneissa x86ssa on micro-op-välimuisti, josta suoritetaan suurin osa käskyistä, ja josta voi ladata 6-8 mikro-operaatiota kellojaksossa, joten siitä decodesta ei tule mitään pullonkaulaa joka olisi puolt Applen M1n leveydestä.
Rekisterien uudelleennimeämisen leveys taitaa sitten olla zen2lla ja zen3lla 6 käskyä/kellojakso.
Eli todellinen etupään leveysero on luokkaa 1.4-kertainen, ei kaksinkertainen.
Tuo wccftechin artikkeli on muutenkin
ihan täyttä roskaa ja todella typerä apples to oranges-vertailu.
wccftech sanoi:
It is worth noting that SMT philosophy is embedded in the design. The decode to uOP, and subsequent optimizations for scheduling through retirement (including intermediate issues instruction dependencies, pipe-line bubbles and flushing, etc.), are a large part of why x86 embraced SMT. RISC load/store architectures simply have less front-end decoding complexity, versus decoupled CISC, and thus are able to obtain better Instruction per Thread, per clock.
Höpöhöpö.
Se, että RISCllä on vähemmän kompleksisuutta pitää kyllä paikkaansa, mutta sen vaikutus IPChen on hyvin pieni.
Tosiasiassa suurin IPC-ero x86n ja perinteisen RISCin välillä tulee oleellisesti siitä, että x86 tekee enemän yhdessä käskyssä, joten perinteinen RISC suorittaa enemmän käskyjä saman asian tekemiseen, jolloin sillä kyllä on suurempi IPC muttei silti parempi suorituskyky.
Mutta ARM ei ole mikään perinteinen RISC muutenkaan.
SMT:n piti alunperin tulla ensimmäisenä Digitalin EV8-Alphaan joka olisi ollut RISC-prosessori, mutta se peruttiin kun Alpha tapettiin.
Sen jälkeen muita monisäikeistyksen muotoja tuli mm. Sunin UltraSparc T-sarjaan.
Ainoa asia mikä tekee x86sta "hyvin soveltuvan" monisäikeistykseen on sen pienehkö rekisterimäärä, joka tekee SMTstä hiukan halvempaa intelin prosessoreilla kuin RISC-prosessoreilla joissa on enemmän rekistereitä.
Ja tuo "SMT-enabled single-core" mitä nuo ehdottaa on
aivan järjetön, typerä ja epäreilu tapa mitata suorituskykyä.
Se,
montako ydintä jossain on on tosiasiassa
täysin irrelevanttia.
ydinkohtainen suorituskyky on täysin irrelevanttia.
Softassa on säikeitä. Joko vähän tai paljon niistä haluaa olla ajossa. Softa ei piittaa siitä, missä ne säikeet suoritetaan.
Silloin kun softassa on vain yksi säie ajossa(joko siinä ei ole muia säikeitä, tai muut säikeet odotaa jotain dataa tältä säikeeltä), sen ajamiseksi säikeitä, tarvitaan
maksimaalinen yhden säikeen suorituskyky. Se, että ytimessä on SMT ei auta siinä yhden säikeen suoituskyvyssä
yhtään.
Silloin kun softassa on enemmän säikeitä, on
aivan sama, suoritetaanko ne yhdellä ytimellä SMTllä, vai monella ytimellä, vai yhdellä säikeellä peräkkäin. Tällöin on väliä ainoastaan sillä, mikä on kokonaissuorituskyky ja energiatehokkuus yhteensä koko systeemissä.