Ľudmila Jánošíková

Programovanie v jazyku symbolických adries

pre 32-bitové procesory Intel
Obsah Index
Cache pamäť

Cache pamäť je rýchla pamäť, ktorá slúži ako vyrovnávacia pamäť medzi rýchlym procesorom a pomalou hlavnou pamäťou. Z technického hľadiska je to statická pamäť. Jej efektívnosť je okrem rýchlosti prístupu daná malým rozsahom a odlišnou správou uložených údajov. Z hľadiska programátora je táto pamäť neprístupná (nemožno ju adresovať). O jej obsahu rozhoduje hardware. Stratégia presúvania údajov medzi hlavnou pamäťou a cache je založená na štatisticky overených vlastnostiach tzv. časovej a miestnej lokality.

Časová lokalita sa zakladá na pravdepodobnosti, že adresa, ktorá bola práve teraz požadovaná, bude čoskoro požadovaná znova. Preto sa každý údaj, ktorý sa číta z hlavnej pamäti, automaticky ukladá do cache.

Miestna lokalita znamená, že program v krátkom časovom úseku pristupuje k susedným pamäťovým miestam. Preto sa pri čítaní z hlavnej pamäti presúva do cache blok obsahujúci niekoľko susedných údajov.

Aby sme vysvetlili pojmy časová a miestna lokalita, uvažujme o nasledujúcom cykle:

for i := 1 to 10 do A[i] := 0;

V jednom cykle (krátkom časovom intervale) program použije premennú i trikrát: na začiatku cyklu ju porovná s 10, na konci cyklu ju inkrementuje a v tele cyklu ju použije ako index v poli. Vzhľadom na premennú i sa uplatňuje časová lokalita. Miestna lokalita v tomto príklade znamená, že v krátkom čase sa pristupuje k susedným pamäťovým miestam (k susedným prvkom poľa A ). Ale aj vo vzťahu k inštrukciám platí časová a miestna lokalita: v každom cykle sa vykonávajú rovnaké inštrukcie, t.j. v každom cykle sa vyberajú inštrukcie z rovnakých adries – časová lokalita. Miestnu lokalitu predstavuje fakt, že inštrukcie sú uložené na susedných miestach v pamäti.

Pri zápise do pamäti sa musí zachovať konzistencia údajov. To znamená, že zmeny v cache pamäti sa musia premietnuť aj do hlavnej pamäti. To zaisťuje riadiaca jednotka cache pamäti. Môže použiť jednu z dvoch stratégií: priamy zápis (write-through), alebo oneskorený zápis (write-back). Priamy zápis znamená, že údaje sa zapisujú súčasne do cache aj do hlavnej pamäti. Oneskorený zápis je efektívnejší. Riadiaca jednotka cache pamäti pri ňom len eviduje, či bol údaj počas jeho prítomnosti v cache prepísaný. Ak áno, vykoná sa zápis do hlavnej pamäti v okamihu vylúčenia údaja z cache v dôsledku nedostatku miesta. V určitom čase sa teda môže stať, že údaje na oboch miestach pamäti neobsahujú rovnakú hodnotu. Platná je hodnota v pamäti rýchlejšej, teda v cache.

Z technologických a konštrukčných dôvodov sa rozlišuje cache 1. úrovne (L1) a cache 2. úrovne (L2). L1 dátová cache v architektúre Haswell zapisuje dáta v režime write-through do L2 cache, odkiaľ sa do hlavnej pamäti zapisujú v režime write-back. Typická veľkosť L1 je desiatky kilobajtov, L2 stovky kilobajtov až jednotky megabajtov. Len pre zaujímavosť: dátová cache L1 v architektúre Haswell má 32 KB, cache L2 má 256 KB.

Hore

Načo je vám jazyk symbolických adries?

Architektúra moderných procesorov

Registre

Spôsoby adresovania

Premenné a návestia

Symbolické konštanty

Inštrukčný súbor

Segmentové direktívy

Moduly

Služby operačného systému MS-DOS

Služby operačného systému Windows 95/98/NT/XP

Systémová úroveň vstupu a výstupu

Prostriedky pre prípravu programu

Dynamické spracovanie inštrukcií | Technológia SIMD
Vydala Žilinská univerzita v Žiline, 2000. ISBN 80-7100-723-4.
Otázky a pripomienky môžete poslať autorke.
Naposledy upravené 25.9.2014.