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
|