Documente Academic
Documente Profesional
Documente Cultură
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.
Fig. 6.5
Fig. 6.6
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.
Memorie cache M1
Memorie
de date
Memorie de Succes
marcaje
Fig. 6.7
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.
Fig. 6.9
Fig. 6.10
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.
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
Marcaj Index
0000 3826 Index
0301 1234
00 09 3800
01 03 1234
0900 3800
25FF 3675
FF 25 3675 9C 0135
9CFF 0135
Memorie cache M1
Memorie principală M2
Fig. 6.13