• Rive
    #13
    Néhány adalék.

    A nagy cache nem olcsó mulatság. Egyrészt a gyors statikus RAM cellák is sok tranzisztort igényelnek -> zabálják a helyet a magon. Másrészt, a memória csak a dolgok egyszerűbb része.

    A processzornak számon kell tartania, hogy a cache a fizikai memóriának melyik részeit tárolja, és az adatbetöltés során _nagyon_ gyorsan meg kell találnia, hogy melyik cache-beli területről kell olvasnia az adatot- ha egyáltalán a cache-ban megtalálható a kért információ...

    Erre a feladatra un. asszociatív tárakat használnak: ezeknek a lényege az, hogy egy bejövő adatot (tárcím) egyidőben összehasonlít a tárolt adatok mindegyikével. Ha egyezést talál, akkor cache-hit van, a cache-beli cím rendelkezésre áll.

    Egy ilyen asszociatív tár gyakorlatilag n darab teljes komparátorból áll, nagyon komoly a tranzisztor-igénye. Emiatt az L1 cache számára csinálnak csak gyors címvizsgálatot, az L2 kénytelen beérni többlépcsős, lassabb megoldásokkal. Ezekhez járul még a cache tartalmának validálásához, és a használat gyakoriságának nyilvántartásához szükséges logika...

    Emiatt az L1, L2 (L3) cache méretét financiális és teljesítménybeli szempontok együttese határozza meg: a kész megoldás általában egy 'megfelelő' kompromisszum a sebesség és az ár között.


    A nagméretű cache valamelyest tehermentesíti az FSB-t, így nyílt lehetőség a HW-prefetch megvalósítására. Ez a feldolgozás alatt levő utasítássor alapján próbálja megjósolni a szükséges adatokat, és azokat betölti a cache-be. Megjegyzendő, hogy ennek a technikának a SW változata már viszonylag régóta létezik az X86-os processzorok között, csak általában nem fordítanak rá elegendő figyelmet, pedig...