- Liittynyt
- 22.10.2016
- Viestejä
- 11 772
Jos katsot esim. AMD:n nykyisiä (15h) vehkeitä, joissa kokonaislukusuorituskyky on huomattavasti vahvempi kuin liukulukusuorituskyky niin miten ne pärjää peleissä?
Miten niin kokonaislukusuorituskyky on huomattavasti vahvempi kuin liukulukusuorituskyky?
Yhden säikeen kokonaislukusuorituskyky on bulldozer-johdannaisisssa nimenomaan se kaikkein pahin ongelma ja suhteessa selvästi heikompi kuin liukulukusuorituskyky.
Esim. Bulldozer-johdannaisten huono välimuistirakenne tuntee selvästi enemmän kokonaislukusuorituskyvyssä kuin liukulukusuorituskyvyssä; Liukulukukoodi on paljon säännöllisempää ja prefetcherit onnistuvat sen kanssa paljon paremmiin hakemaan datan kakkuihin ajoissa.
Ja monella säikeellä... jos säikeitä on ajossa maksimissaan 1/moduli, sen jakaminen ei haittaa yhtään, koska sitä ei käytännössä jaeta. Ja vaikka säikeitä olisi ajossa 2/moduli, harvoin yksi säie kuitenkaan saisi molempia FPUn laskentayksiköitä tehokkaasti hyödynnettyä, joten käytännön suorituskyvyn lasku johtuen FPUn jakamisesta on paljon pienempi kuin mitä luulisi jakamalla vaan flops-lukuja.
Bulldozer-johdannaisten huono pelisuorituskyky johtuu huonosta säiekohtaisesta (pääosin kokonaisluku)suorituskyvystä, ei sen FPU-suorituskyvystä.
(ja sitten aasinsilta itse asiaan..)
Bulldozer-moduuli ja zen-ydinhän ovat melko lähellä toisiaan liukulukuyksilön järeydeltään; Molemmat pystyvät laskemaan kaksi 128-bittistä FMA:ta kellojaksossa.
Zen tosin on nopeampi silloin kun koodissa onkin yksittäisiä FMUL- ja FADD-käskyjä FMA-käskyjen sijaan, mutta toisaalta bulldozer-johdannaiset pystyvät paremmin suorittamaan liukuluku-/SIMD-datan tallennuksia ja shuffleja yms. operaatioita rinnakkain itse laskennan kanssa.
Molemmat myös kykenevät ajamaan 1..2 säiettä.
(järeys ja nopeus eivät kuitenkaan aina ihan korreloi, tyhmä järeä design voi olla käytännössä hitaampi kuin fiksu vähemmän järeä design, jos järeä stallailee paljon enemmän tai joutuu pyörimään pienemmällä kellolla tms., )