Keresés

Hirdetés

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

  • lee56

    őstag

    válasz 04ahgy #101 üzenetére

    Hát kissé zavaros amit írsz, de sejtem mire gondolsz :)
    Azt hiszem ahhoz hogy ez kiderüljön, kicsit komolyabb tesztelés kellene, PH? :)

    No Comment

  • P.H.

    senior tag

    válasz 04ahgy #101 üzenetére

    Ez, amit mondasz, nagyon nem triviális probléma, mivel az OS ütemezője nem elemzi magukat a programokat/szálakat előre, hogy amiket ütemez, az FPU-vagy integer-intenzv kód, csak prioritásokkal és már elfoglalt szálankénti CPU-időkkel dolgozik. Így vagy az a fő célja, hogy legközelebbi (= minél kevesebb modul), vagy az, hogy a legtávolabbi (= minél több modul) magokra ossza el az éppen futó szálakat.

    Ezek közt nem tud különbséget tenni, nem is feladata. Az viszont igen (amit valószínűleg itt csináltak), hogy ne "vándoroltassa" ugyanazt a szálat a modulok között, mert az egyértelmű hátrány: ha egy szál egy ütemezésnél a Core0-on fut és a következő ütemezésnél mondjuk a Core6-ra kerül, akkor a Core0-ra becache-selt adatai semmit sem érnek, azokat újra be kell olvasni a Core6 L1/L2-jébe (akár a memóriából, akár a Core0 L2-jéből az L3-mon keresztül).

    AMD-nél ez régóta kimutatható probléma: ha egy 1 szálas programot kézzel a Core0-ra rögzítesz (Feladatkezelőben) egy kétmagos CPU-n, akkor akár 10% plusz gyorsulás is elérhető ahhoz képest, mintha nem rögzítenéd; ugyanez a többlet megvan, ha a Core1-re rögzíted. Core 2 Duo-nál a megosztott L2 miatt ez a rögzítés nem jelentett kimutatható plusz gyorsulást. Ugyanígy nem jelent pluszt a jelenlegi Intel processzorokon sem, mivel itt kicsi az L2 és nagyon gyors az L3; a Bulldozer viszont modulonként nagy L2-t alkalmaz és ahhoz képest kicsi - és lassú - a közös L3.

    Javítottam.

    [ Módosította: Oliverda ]

    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