Memoria cache
Problema
procesorul este mai rapid decāt memoria
performanta procesorului nu este exploatata
Solutia
Legile localitatii - determinate empiric
Localitate temporala
daca o locatie de memorie este accesata la un moment dat, este foarte probabil sa fie accesata din nou 828i84i īn viitorul apropiat
exemple
variabilele sunt folosite īn mod repetat
bucle de program - instructiunile se repeta
Localitate spatiala
daca o locatie de memorie este accesata la un moment dat, este foarte probabil ca si locatiile vecine sa fie accesate īn viitorul apropiat
Legile localitatii - consecinte
la un moment dat, un program foloseste numai o (mica) parte din locatiile sale de memorie
un circuit mai mic poate retine aceste locatii
acest circuit poate fi mai rapid
sporul de performanta poate fi major
Memoria cache
circuit mic si rapid, interpus īntre procesor si memoria principala
retine locatiile din memoria principala accesate cel mai recent de procesor
procesorul solicita o locatie - cautare īn cache
daca locatia nu este gasita īn cache - cautare īn memoria principala
Memoria cache - caracteristici
Viteza:foarte mare - la acelasi nivel cu procesorul
Performanta memoriei cache
H- rata de succes (hit ratio): procentajul cazurilor īn care locatia cautata a fost gasita īn cache
M - rata de insucces (miss ratio): procentajul cazurilor īn care locatia cautata nu a fost gasita īn cache
M = 1 - H
Tc - timpul de acces la cache
Tm - timpul de acces la memorie īn cazul unei ratari īn cache
Tp - timpul de acces la memoria principala (fara cache)
T - timpul mediu de acces la memorie (cu cache)
T = Tc · H + Tm · M
daca T < Tp spor de viteza
cazuri extreme
H=100% (M=0): T = Tc - ideal
H=0 (M=100%): T = Tm - pierdere de viteza (Tm > Tp)
Detalii constructive
adresa din cache nu corespunde cu adresa din memoria principala
cautarea se face dupa adresa din memoria principala
concluzie - cache-ul trebuie sa retina si adresele locatiilor īn memoria principala
cānd se aduce o locatie īn cache, se aduc si locatiile vecine - linie de cache
noi linii aduse īn cache - trebuie eliminate altele mai vechi
eliminare - scriere īn memoria principala!
Tipuri de cache
Cache cu adresare directa
dimensiune cache: 2 la sel liniei de cache linii × 2 la selectorul oct octeti/linie
Continutul unei linii de cache
un bit care indica daca linia contine date valide
cāmpul eticheta
datele propriu-zise, aduse din memoria principala
Avantaje
implementare simpla
timp de acces redus
Dezavantaje
lipsa de flexibilitate
Cache total asociativ
realizat cu memorii asociative
memoria obisnuita - acces la o locatie pe baza adresei sale
memoria asociativa - permite si regasirea locatiei pe baza continutului sau
implementare - valoarea cautata este comparata īn paralel cu toate locatiile
Cache total asociativ
Avantaje
plasarea datelor din memoria principala - īn orice linie de cache
se pot alege convenabil adresele aduse īn linia de cache
se pot implementa politici de īnlocuire eficiente - rata de succes ridicata
Dezavantaje
timp de acces mare
hardware complicat pentru memoriile asociative si algoritmii de īnlocuire
Cache partial asociativ
derivat din cache-ul cu adresare directa
fiecare linie de cache contine mai multe seturi de date (4, 8, 16, ...)
structura unui set
bit de validare
eticheta
date din memoria principala
Timpul de acces:putin mai mare decāt la cache-ul cu adresare directa
Rata de success:ridicata
Scrierea īn cache
Cache de tip write-back
scrierea se face doar īn cache
datele ajung īn memoria principala doar la evacuarea din cache
viteza mare
Cache de tip write-through
scrierea se face atāt īn cache, cāt si īn memoria principala
mai lent - datorita accesului la memoria principala
|