Sunteți pe pagina 1din 13

6.

5 Memoria stivă
Memoria stivă este o listă liniară de date elementare, în care inserarea,
eliminarea şi accesul la elementele de date se efectuează la un singur capăt al
acesteia. Stiva poate fi considerată o listă de tip LIFO (Last-In, First-Out).
In funcţie de modul de implementare, stiva poate fi de mai multe tipuri:
- Stivă software, organizată în memoria internă;
- Stivă cablată (hardware);
- Stivă parţial cablată.
Indiferent de modul de implementare, o stivă trebuie să permită efectuarea
următoarelor operaţii:
- Introducere (inserare): PUSH;
- Extragere (eliminare): POP;
- Acces la elementul din vârful stivei.
Memoria stivă este utilizată în special pentru memorarea rapidă a contextului
în cazul apariţiei unei situaţii de excepţie sau pentru modul time sharing.

6.5.1. Tipuri de memorii stivă


- Stiva implementată în memorie (stivă software)
Stiva poate fi simulată în memoria internă a calculatorului, utilizându-se
adresarea convenţională. Gestionarea stivei se poate realiza prin software,
existând instrucţiuni speciale şi registre dedicate pentru operaţiile cu stiva (figura
6.5).

Fig. 6.5

Stiva poate fi definită cu ajutorul a două registre ale procesorului. Registrul


BP indică baza stivei, iar registrul SP indică vârful stivei. Adresa de bază a stivei
rămâne fixă, în timp ce adresa care indică vârful stivei se modifică la fiecare
operaţie de introducere sau eliminare din stivă. Instrucţiunile speciale de lucru cu
stiva modifică automat conţinutul registrului SP.
De obicei, stivele cresc spre adrese mici, elementul din vârful stivei având
adresa cea mai mică, dar există şi stive care cresc spre adrese mari.
Presupunând că stiva creşte spre adrese mici, iar SP indică elementul din
vârful stivei, instrucţiunea de introducere a unui element în stivă (PUSH)
decrementează registrul SP şi copiază elementul respectiv în stivă. Instrucţiunea
de extragere a unui element din vârful stivei (POP) copiază acest element într-un
registru de memorie şi incrementează registrul SP.
In cazul stivei simulate în memorie, pe lângă operaţiile obişnuite cu stiva, se
pot citi sau modifica elemente oarecare din stivă, prin adresarea lor relativă faţă de
registrul de bază al stivei (BP).
- Stiva cablată
Spre deosebire de stiva simulată în memorie, la care vârful stivei se
deplasează în timp ce informaţiile din stivă rămân fixe, în cazul stivei cablate există
un vârf fix şi informaţiile din stivă sunt translatate la fiecare operaţie de introducere
sau eliminare din stivă.
Stivele cablate pot avea un registru de stare asociat, care indică dacă stiva
este goală (EMPTY) sau plină (FULL). La încercarea de extragere a unui element
din stiva goală se poate activa un semnal de eroare UNDERFLOW, iar la
încercarea de introducere a unui element în stiva plină se poate activa un alt
semnal, OVERFLOW.
Stivele cablate au avantajul unei viteze ridicate de efectuare a operaţiilor,dar
dimensiunea acestora este limitată.
- Stiva parţial cablată
Dacă dimensiunea stivei cablate este redusă, pentru cazurile de depăşire de
capacitate a stivei cablate, este indicată completarea acesteia cu o stivă simulată
în memoria internă (figura 6.6).

Fig. 6.6

Acest tip de stivă combină viteza de lucru ridicată a stivei cablate cu


capacitatea nelimitată a stivei software.

6.6 Memoria cache

6.6.1 Principii
Deoarece accesul la memoria principală necesită un timp considerabil mai
mare comparativ cu viteza globală a unui procesor, este important să se
proiecteze un sistem de memorie cu un timp de acces cât mai redus. O
posibilitate de a creşte viteza globală a sistemului de memorie este de a se
reduce numărul de accesuri la memoria principală. Acest deziderat poate fi
realizat prin instalarea unei memorii rapide de mici dimensiuni care să conţină,
în fiecare moment, o parte din program. In acest mod, datorită proprietăţii de
localitate a referinţelor, numărul referinţelor la memoria principală va fi redus în
mod considerabil.
O asemenea memorie rapidă, utilizată temporar pentru păstrarea unei
porţiuni a datelor şi instrucţiunilor în vederea utilizării imediate, este cunoscută
sub numele de memorie cache.
Deoarece memoria cache are un preţ ridicat, un sistem de calcul poate
avea doar o memorie cache cu o dimensiune limitată. Pentru acest motiv, un
sistem de calcul conţine o memorie principală mai lentă şi de dimensiuni relativ
mari, împreună cu o memorie cache mai rapidă şi de dimensiuni mai mici.
Memoria cache este amplasată între memoria principală şi UCP şi conţine copii
ale anumitor blocuri ale memoriei principale. Astfel, atunci când UCP solicită un
cuvânt şi acest cuvânt se află în memoria cache rapidă, nu va mai fi necesar
accesul la memoria principală.
Deşi dimensiunea memoriei cache este doar o mică parte din dimensiunea
memoriei principale, datorită proprietăţii de localitate a referinţelor, o mare parte
din cererile de acces la memorie vor fi satisfăcute de memoria cache.
Performanţa unui sistem poate fi îmbunătăţită în mod semnificativ dacă
memoria cache este amplasată în acelaşi circuit integrat cu procesorul. In acest
caz, ieşirile memoriei cache pot fi conectate la UAL şi la registre prin legături
scurte, reducând timpul de acces. Aceasta este soluţia adoptată la majoritatea
procesoarelor actuale.

6.6.2. Organizarea memoriei cache


Figura 6.7 prezintă componentele principale ale unei memorii cache.
Cuvintele de memorie sunt păstrate într-o memorie de date şi sunt grupate în
pagini de dimensiuni reduse, numite blocuri sau linii. Conţinutul memoriei de
date este copia unui set de blocuri ale memoriei principale. Fiecare bloc al
memoriei cache este marcat cu adresa sa de bloc, numită marcaj (tag).

Memorie cache M1

Memorie
de date
Memorie de Succes
marcaje

Adrese Control Date

Fig. 6.7

Colecţia adreselor de marcaj asignate momentan memoriei cache, adrese


care pot fi necontigue, este păstrată într-o memorie specială, numită memorie
de marcaje sau director.
Pentru a îmbunătăţi performanţele unui calculator, timpul necesar pentru
testarea adreselor de marcaj şi accesarea memoriei cache de date trebuie să fie
mai redus decât timpul necesar pentru accesarea memoriei principale. Figura
6.8 prezintă două moduri de amplasare a unei memorii cache într-un sistem de
calcul. In organizarea din figura 6.8a, numită organizare "look-aside", memoria
cache şi memoria principală sunt conectate direct la magistrala sistem. In acest
caz atât cererile UCP către memoria cache cât şi cele către memoria principală,
în caz de eşec, utilizează magistrala sistem. De notat că, atât în caz de succes
cât şi în cazul eşecurilor la accesul memoriei cache, operaţiile de transfer ocupă
magistrala sistem, care nu va fi disponibilă pentru alte operaţii, cum sunt
transferurile de I/E.
Memoria
Cache M1
Memorie
UCP Acces la principală
memoria Înlocuire M2
cache bloc

Acces la
Magistrala memoria principală
sistem

Fig. 6.8a
Memoria
Cache M1

Acces la
memoria
cache Înlocuire bloc
Memorie
UCP Controler Controler principală
memorie memorie M2
cache principală

Magistrala Acces M2 la
sistem magistrala sistem

Fig. 6.8b

In figura 6.8b se prezintă o altă organizare, care este mai rapidă, dar mai
costisitoare; aceasta este numită organizare "look-through". UCP comunică cu
memoria cache printr-o magistrală separată (locală) care este izolată de
magistrala sistem. In acest mod magistrala sistem este disponibilă pentru
utilizarea de către alte unităţi, cum sunt controlere de I/E, care pot comunica cu
memoria principală. Prin urmare, accesurile la memoria cache şi accesurile la
memoria principală care nu implică UCP se pot desfăşura concurent. UCP
transmite o cerere către memoria principală numai după un eşec la accesul în
memoria cache. Magistrala locală care conectează M 1 şi M 2 poate avea o
lăţime mai mare decât magistrala sistem, crescând astfel viteza transferurilor
între memoria cache şi cea principală.
Dezavantajul principal al organizării "look-through", pe lângă costul său
mai ridicat, constă în faptul că este necesar un timp mai lung pentru ca memoria
principală să răspundă la cererea UCP atunci când apare un eşec la accesul
memoriei cache.

6.6.3 Funcţionarea memoriei cache


Atunci când UCP generează o cerere de citire pentru un cuvânt din
memorie, cererea este trimisă mai întâi la memoria cache pentru a verifica dacă
acest cuvânt se află deja în această memorie. In cazul în care cuvântul nu este
găsit în memoria cache (deci, apare un eşec la citire), cuvântul solicitat este
furnizat de memoria principală. O copie a acestui cuvânt, împreună cu blocul din
care acesta face parte, este depusă şi în memoria cache pentru referinţele
viitoare de către UCP. In cazul în care cuvântul este găsit în memoria cache
(deci, apare un succes la citire), cuvântul este furnizat de memoria cache.
Astfel, în această situaţie, nu este necesar accesul la memoria principală. Prin
aceasta, viteza sistemului creşte considerabil.
Figura 6.9 ilustrează execuţia unei operaţii de citire pentru un sistem
simplu de memorie cache. In acest exemplu, se presupune o dimensiune a
blocului de memorie de 4 octeţi. Fiecare adresă de memorie are dimensiunea
de 12 biţi, astfel încât cei 10 biţi de ordin superior formează marcajul sau adresa
blocului, iar cei 2 biţi de ordin inferior definesc un deplasament (index) în cadrul
blocului. Atunci când un bloc este adus în memoria cache de date, marcajul
acestuia este plasat în memoria cache de marcaje. Figura 6.9 prezintă
conţinutul a două blocuri aduse în memoria cache de date; de observat locaţiile
aceloraşi blocuri din memoria principală. Pentru citirea cuvântului indicat de
săgeată, adresa acestuia Ai = 1100 0101 0110 este transmisă la M 1 care
compară partea de marcaj a adresei Ai (în acest caz 1100 0101) cu marcajele
sale memorate şi găseşte o potrivire. Marcajul memorat adresează blocul
corespunzător din memoria de date, iar deplasamentul de 2 biţi (în acest caz
10) este utilizat pentru identificarea cuvântului destinaţie din cadrul blocului.
Cuvântul selectat în acest mod (FF) este apoi transmis la UCP.
Atunci când UCP generează o cerere de scriere a unui un cuvânt în
memorie, cererea este trimisă mai întâi la memoria cache pentru a verifica dacă
locaţia acestui cuvânt se află în memoria cache. In cazul în care locaţia
cuvântului nu este găsită în memoria cache (deci, apare un eşec la scriere), se
încarcă din memoria principală în memoria cache o copie a blocului căruia îi
aparţine locaţia căutată. Apoi, se execută o operaţie de scriere în această
locaţie. Dacă locaţia adresată este găsită în memoria cache (deci, apare un
succes la scriere), se execută operaţia de scriere direct în memoria cache.
Execuţia unei operaţii de scriere a unei date transmise de UCP pentru
memoria cache din exemplul precedent este ilustrată în figura 6.10. Partea de
marcaj a adresei destinaţie Ai (identică cu cea din exemplu anterior) este
transmisă la M 1 împreună cu cuvântul de date care trebuie memorat. Partea de
deplasament a adresei Ai (10) localizează locaţia din cadrul blocului selectat

1100 0101 0010 78


Memorie de date 1100 0101 0011 CC
Memorie de marcaje
11 10 01 00 1100 0101 0100 1A
1100 0101 0101 3D
1100 0101 01 39 FF 3D 1A 1100 0101 0110 FF
1100 0101 0111 39
1100 0101 1000 3C
1100 0101 11 7B 5A F0 FF 1100 0101 1001 B4
1100 0101 1010 87
1100 0101 1011 00
1100 0101 1100 FF
1100 0101 1101 F0
1100 0101 1110 5A
Comparaţie Selecţie date
marcaje 1100 0101 1111 7B
1100 0110 0000 67
FF 1100 0110 0001 D5
1100 0101 10 Data solicitată Adrese
memorie Date
Adresa datei solicitate memorie
principală
principală

Fig. 6.9

Deoarece locaţia căutată este găsită în memoria cache, (a avut loc un


succes la scriere) noua dată, în acest caz 55, este memorată în locaţia de la
adresa Ai în memoria de date din M 1 , modificând astfel vechea dată FF.
Apare acum o nouă problemă, deoarece data din M 1 cu adresa Ai diferă
de data din M 2 cu aceeaşi adresă. O inconsistenţă temporară de acest tip este
acceptabilă cât timp nici un dispozitiv (un alt procesor sau un dispozitiv de I/E)
nu încearcă citirea datei vechi. Prevenirea utilizării improprii a datei vechi
reprezintă problema coerenţei (sau consistenţei) memoriilor cache. Aceasta
este o problemă de bază la sistemele multiprocesor unde mai multe procesoare
partajează accesul la aceeaşi memorie principală, dar fiecare dispune de
propria memorie cache. Această problemă apare de asemenea în sistemele
uniprocesor atunci când este prezent un controler sau procesor de I/E care are
un acces direct la memoria principală, independent de UCP. Inconsistenţele din
memoriile cache pot fi minimizate prin implementarea unei strategii care
actualizează în mod sistematic, datele din M 2 printr-un proces de copiere a
datelor corespunzătoare din M 1 .
Pentru executarea unei operaţii de copiere (scriere), există două strategii
care pot fi utilizate: "write-back" şi "write-through".
1100 0101 0010 78
Memorie de date 1100 0101 0011 CC
Memorie de marcaje
11 10 01 00 1100 0101 0100 1A
1100 0101 0101 3D
1100 0101 01 39 55 3D 1A 1100 0101 0110 FF
1100 0101 0111 39
1100 0101 1000 3C
1100 0101 11 7B 5A F0 FF 1100 0101 1001 B4
1100 0101 1010 87
1100 0101 1011 00
1100 0101 1100 FF
1100 0101 1101 F0
1100 0101 1110 5A
Comparaţie Selecţie date
marcaje 1100 0101 1111 7B
1100 0110 0000 67
55 1100 0110 0001 D5
1100 0101 10 Data din UCP Adrese
memorie Date
Adresa datei din UCP memorie
principală
principală

Fig. 6.10

- In cazul strategiei "write-back", numită şi "copy-back", fiecărui cuvânt din


memoria cache i se asociază un bit, numit bit de modificare (dirty bit) sau bit de
inconsistenţă, care arată dacă acest cuvânt a fost modificat. Atunci când un
cuvânt trebuie eliminat din memoria cache, se testează bitul de modificare al
cuvântului; dacă bitul este setat, cuvântul este scris în memoria principală în
forma sa actualizată. Avantajul strategiei "write-back" este că, atât timp cât un
cuvânt rămâne în memoria cache, acesta poate fi modificat de mai multe ori, iar
pentru UCP nu are importanţă dacă cuvântul din memoria principală nu a fost
actualizat. Dezavantajul acestei strategii este că memoria cache şi memoria
principală pot fi temporar inconsistente. Aceasta creează dificultăţi dacă mai
multe procesoare cu memorii cache independente partajează aceeaşi memorie
principală, deoarece datele lor pot deveni inconsistente.
- In cazul strategiei "write-through", cuvântul este modificat atât în
memoria cache, cât şi în memoria principală la fiecare ciclu de scriere.
Avantajele acestei strategii constau în faptul că este uşor de implementat şi
memoria principală are întotdeauna date consistente cu memoria cache. Pe de
altă parte, această strategie are dezavantajul că încetineşte UCP, deoarece
toate operaţiile de scriere necesită accesuri ulterioare la memoria principală.
Totuşi, numai o fracţiune redusă, probabil 10%, din toate accesurile la memorie
sunt operaţii de scriere. Anumite procesoare permit utilizarea ambelor strategii
de scriere, astfel încât utilizatorul poate selecta strategia cea mai avantajoasă
pentru un program particular.

6.6.4. Maparea adreselor


O caracteristică de bază a memoriei cache este funcţia de mapare (de
translatare), care atribuie blocurilor din memoria principală locaţii în memoria cache.
Se utilizează trei tipuri de mapare a adreselor:
1. Mapare asociativă;
2. Mapare directă;
3. Mapare cu seturi asociative.
Pentru a ilustra aceste trei tipuri de mapare ale adreselor, presupunem că
memoria principală are o capacitate de 64 K cuvinte de câte 16 biţi fiecare, fapt
care înseamnă că magistrala de adrese are 16 biţi. De asemenea, presupunem
că memoria cache care poate păstra maxim 256 de cuvinte. Considerăm că
UCP generează o cerere de citire. Cererea de scriere este gestionată într-un
mod similar. Vom urmări acum strategiile celor trei tipuri de mapare.

- Memorie cache cu maparea asociativă


In cazul unei memorii cache cu mapare asociativă (numită şi memorie
cache cu asociativitate totală), adresa şi conţinutul unei locaţii de memorie sunt
memorate ca şi cuvinte separate în memoria cache. Ca rezultat, un cuvânt de
memorie poate fi memorat în orice locaţie a memoriei cache, ceea ce face ca
acest tip de memorie cache să fie cel mai flexibil. Figura 6.11 prezintă
organizarea unei memorii cache cu mapare asociativă pentru sistemul
considerat.
Adresa UCP
0000 3826 (16biţi)
Registru
argument
0100 1234
0900 3800

25FF 3675

0900 3800

25FF 3675
0100 1234

Memorie DATE
asociativă
FFFF 0135
Memorie cache M1
Memorie principală M2

Fig. 6.11
De observat că, indiferent de adresele lor absolute din memoria principală,
cuvintele sunt memorate în locaţii arbitrare.
Adresele cuvintelor sunt memorate în partea asociativă, în timp ce datele
sunt memorate în partea de date (de tip RAM) a memoriei cache. Astfel, atunci
când UCP generează o adresă pentru referinţa la memorie, aceasta este
transferată în registrul argument şi este comparată simultan cu adresele tuturor
cuvintelor aflate în memoria cache. Dacă s-a găsit locaţia cu o adresă care se
potriveşte, datele corespunzătoare pot fi accesate din memoria de date.
Dezavantajul principal al mapării asociative este că necesită o memorie
asociativă de dimensiuni mari, care este foarte costisitoare.

- Memorie cache cu maparea directă


Pentru implementarea mapării directe sunt necesare numai memorii de tip
RAM. Memoria cache M 1 este împărţită într-un număr de regiuni numite seturi
de date, fiecare din acestea memorând n cuvinte de memorie consecutive.
Memoria principală M 2 este divizată similar în blocuri, fiecare dintre aceste
blocuri putând fi mapat într-un set din M 1 .
Figura 6.12 reprezintă arhitectura unei memorii cache cu mapare directă.,
Pentru simplificare considerăm că un set al memoriei cache, ca şi un bloc al
memoriei principale, conţine un singur cuvânt de memorie (n=1). Pentru
implementarea mapării directe, adresele de memorie de 16 biţi (4 cifre
hexazecimale) sunt divizate în două părţi: cei 8 biţi de ordin inferior ai adresei
din memoria principală formează un câmp de index iar ceilalţi opt biţi de ordin
superior formează un câmp numit marcaj. Indexul identifică în mod unic un set
al memoriei cache unde se poate memora un bloc din memoria M2. Dar în M2
există de regulă mai multe blocuri de date cu acelaşi index. Pentru a preciza
blocul de date care trebuie referit se utilizează marcajul.
In afară de memoria de date această arhitectură mai conţine o memorie
de marcaje şi un circuit de comparare. Comparatorul activează linia de potrivire,
indicând existenţa cuvântului adresat în memoria cache. La adresa specificată
de index, este memorat un marcaj în memoria de marcaje şi un set de date în
memoria de date. Dacă marcajul adresei de memorie solicitate se potriveşte cu
marcajul din memoria cache, cuvântul din memoria de date este transmis la
UCP. In caz contrar, se accesează memoria principală, iar cuvântul căutat este
încărcat şi transmis la UCP.
In figura 6.12. este prezentată funcţionarea unei memorii cache cu mapare
directă. Dacă, de exemplu, UCP solicită citirea cuvântului de memorie de la
adresa 0900 indexul va fi 00 iar marcajul 09. Astfel, la adresa 00 din memoria
de marcaje se găseşte valoarea 09 care corespunde cu marcajul cuvântului
solicitat. Rezultă că, în acest caz, a fost înregistrat un succes la căutare şi
conţinutul memoriei de date de la indexul 00 (care este 3800) este preluat de
UCP. Dacă apoi, UCP solicită citirea conţinutului adresei 0000, indexul care
este 00 se potriveşte, dar marcajul 00 este diferit. A fost înregistrat deci un eşec
la căutare şi, în consecinţă, este accesată memoria principală, iar cuvântul de
date 3826 este transferat la UCP. Cuvintele din memoria de marcaje şi memoria
de date de la indexul 00 sunt înlocuite apoi cu 00 şi respectiv 3826.
Avantajul mapării directe faţă de maparea asociativă constă în faptul că nu
necesită memorie asociativă, care este mult mai scumpă. Dezavantajul principal
este că performanţele pot fi reduse considerabil dacă două sau mai multe
cuvinte având acelaşi index, dar marcaje diferite, sunt accesate în mod frecvent.
De exemplu, cuvintele de memorie de la adresele 25FF şi FFFF trebuie plasate
ambele în memoria cache la indexul FF, astfel încât se pierde un timp important
pentru interschimbarea lor. Aceasta încetineşte sistemul, anulând efectul
memoriei cache. Totuşi, considerând proprietatea de localitate a referinţelor,
probabilitatea de a referi, în mod repetat, două cuvinte cu acelaşi index este
redusă.

Adresa de la UCP
Marcaj Index
0000 3826 Index

0301 Date
1234
00 09 3800

01 03 1234

0900 3800

25FF 3675
FF 25 3675

Memorie cache M1
FFFF 0135

Memorie principală M2

Fig. 6.12

- Maparea cu seturi asociative (k-way set associative)


O metodă mai eficientă de mapare a adreselor pentru memoriile cache
este maparea cu seturi asociative. In timp ce la maparea directă fiecare set,
identificat de un anumit index, memorează un singur bloc din memoria M2, la
maparea cu seturi asociative fiecare set memorează un număr de k astfel de
blocuri. In practică sunt utilizate doar valori mici ale parametrului k, cum ar fi de
exemplu k=2 sau k=4.
De exemplu, o memorie cache cu seturi asociative cu k blocuri de
memorie, numit set asociativ cu k căi, poate memora k blocuri de date având
acelaşi index, împreună cu marcajele lor.
Considerăm din nou că un set conţine un singur cuvânt de date. Fiecare
bloc din memoria cache are aceeaşi structură ca şi o memorie cache cu mapare
directă. Pentru a determina dacă un cuvânt adresat se află în memoria cache,
marcajul acestuia este comparat în paralel (asociativ) cu marcajele datelor din
toate blocurile de memorie. O potrivire în oricare din blocurile de memorie
validează semnalul de potrivire pentru a indica existenţa cuvântului în memoria
cache.
Dacă apare o potrivire, cuvântul corespunzător de date este transferat la
UCP. In caz contrar, cuvântul de date este încărcat din memoria principală şi
este transmis la UCP. Cuvântul de date, împreună cu marcajul acestuia, este
depus apoi într-unul din blocurile de memorie.
Adresa de la UCP

Marcaj Index
0000 3826 Index

0301 1234
00 09 3800

01 03 1234

0900 3800

25FF 3675
FF 25 3675 9C 0135

Date Marcaj Date


Index Marcaj

9CFF 0135
Memorie cache M1
Memorie principală M2

Fig. 6.13

Un exemplu ilustrând funcţionarea memoriei cache cu seturi asociative


având două blocuri este prezentat în figura 6.13. Indexului FF îi corespunde
marcajul 25 în primul bloc şi marcajul 9C în al doilea bloc, datele de la cele două
adrese putând fi astfel memorate simultan. Să presupunem că la un moment dat
în primul bloc al memoriei cache este memorat cuvântul de date de la adresa
0900. Dacă acum UCP solicită cuvântul de date de la adresa 0000, la indexul
00 nu găseşte marcajul 00, astfel încât se înregistrează un eşec la căutare.
Cuvântul solicitat este deci adus din memoria principală şi în acelaşi timp este
memorat şi în cel de al doilea bloc al memoriei cache, astfel încât data de la
adresa 0900 nu trebuie înlocuită.
Atunci când nu există spaţiu pentru un anumit index în memoria cache,
unul din cele două cuvinte de date stocate la acel index va fi înlocuit conform
unei strategii de înlocuire predefinite.

6.6.5. Strategii de înlocuire


Atunci când nu mai există spaţiu în memoria cache, trebuie să se utilizeze
o strategie de înlocuire a unui cuvânt de date existent cu o nouă dată care este
accesată în acel moment.
Pentru a determina care cuvântul va fi eliminat din memoria cache se
utilizează una dintre următoarele strategii .
- Înlocuirea aleatoare;
- Înlocuirea cuvântului cel mai puţin frecvent utilizat (LFU - Least
Frequently Used)
- Înlocuirea cuvântului cel mai puţin recent utilizat (LRU - Least Recently
Used).

Strategia înlocuirii aleatoare alege un cuvânt în mod aleator şi înlocuieşte


acel cuvânt cu data nou accesată. Această metodă este uşor de implementat
prin hardware şi este mai rapidă decât alte metode. Dezavantajul este că acele
cuvinte care sunt cel mai probabil de a fi utilizate din nou au aceeaşi şansă de a
fi eliminate ca şi cuvintele care probabil nu vor mai fi utilizate. Acest dezavantaj
se micşorează pe măsură ce dimensiunea memoriei cache creşte.
Metodă (LFU - Least Frequently Used) înlocuieşte datele care sunt cel mai
puţin utilizate. Metoda presupune că datele care nu sunt referite frecvent sunt
mai puţin necesare. Pentru fiecare cuvânt, se păstrează un contor al numărului
total de utilizări ale cuvântului de la încărcarea acestuia în memoria cache.
Cuvântul cu valoarea cea mai mică a contorului este cel care va fi eliminat.
Avantajul acestei metode constă în faptul că un cuvânt utilizat frecvent are o
probabilitate mai mare de a rămâne în memoria cache decât un cuvânt care nu
a este utilizat frecvent. Un dezavantaj al acestei metode îl reprezintă faptul că
acele cuvinte care au fost încărcate recent în memoria cache au o valoare mică
a contorului, în ciuda faptului că este probabil foarte ca ele să fie utilizate din
nou.
Metoda (LRU - Least Recently Used) are performanţa cea mai bună
raportată la cost comparativ cu celelalte tehnici, fiind implementată adesea în
sistemele reale. Ideea acestei metode de înlocuire constă în faptul că un cuvânt,
care nu a fost utilizat pentru o perioadă lungă de timp, conform proprietăţii de
localitate temporală, are o şansă mai redusă de a fi utilizat în viitorul apropiat,.
Astfel, această metodă reţine cuvintele din memoria cache care au
probabilitatea cea mai mare de a fi utilizate din nou. In acest scop, se utilizează
un mecanism pentru a păstra evidenţa acelor cuvinte care au fost accesate cel
mai recent. Cuvântul care va fi eliminat este cuvântul care nu a fost utilizat
pentru perioada cea mai lungă de timp. O posibilitate de a implementa un
asemenea mecanism este de a asigna un contor fiecărui cuvânt din memoria
cache. De fiecare dată când este accesată memoria cache, contorul fiecărui
cuvânt este incrementat, iar contorul cuvântului care a fost accesat este resetat
la zero. In acest fel, cuvântul cu contorul cel mai mare este cel care a fost
utilizat cel mai puţin recent.

S-ar putea să vă placă și