Hirdetés

Új hozzászólás Aktív témák

  • P.H.

    senior tag

    válasz #95904256 #1227 üzenetére

    ''A memory access reordering pedig valóban egy olyan elem ami elősegíti a nagyobb teljesítmény elérését, azonban ezzel nem lehet úgy számolni hogy pusztán rátevődik a gyorsulásra.''

    Egyrészt a pipeline-on kívül van a Load/Store Queue és az Store-Load Forwarding (Intel és AMD esetében is), illetve még egy, sokkal fontosabb szempont jön a képbe: egy ciklus általában bizonyos adatok betöltésével, feldolgozásával, és a célhelyre kiírásával foglalkozik, mindez teljes függésben (unrolled esetben kissé hatékonyabban, egyszerre több ilyen függő, de egymástól független sorozat van egymás mellett). A modern out-of-order CPU-k a függőségeket úgy ''oldják fel'', hogy a decore-fázis pár ciklussal előrébb jár, mint az execution unitok, és sokkal többel előrébb, mint a retirement. Ehhez kell a minél nagyobb ICU, ROB, ütemezői bufferek, stb. (ezért írtam másik topikban, hogy nem értem, miért nem használja ki az AMD a rendelkezésre álló 96 elemű ICU-t a 3-szélesség esetén; mondjuk az látható, hogy K7->K8 és PentiumM -> Core microarchitecture esetben is nőtt az ütemezők puffermérete, K8->K10 esetben talán a sokkal kevesebb macro-op miatt nem szükséges). No most, ha a csak a load-ok rendezhetők át egymás között (vagy hajthatók végre párhuzamosan), de a store-okkal nem, mint eddig, akkor látható, hogy ez ''némileg'' visszafogja a teljes alapelvet. (A bonyolultabb [xxx+yyy*z(+aaa)] vs. egyszerűbb [xxx] effektívcím-számítás - ami még magában pipeline-ban történik - rendezése egy cikluson belül még K10 esetén is ugyanúgy optimalizációs lépés, mint korábban.)

    [Szerkesztve]

    Arguing on the Internet is like running in the Special Olympics. Even if you win, you are still ... ˙˙˙ Real Eyes Realize Real Lies ˙˙˙

Új hozzászólás Aktív témák