Sunteți pe pagina 1din 27

Bazele Tehnologiei Informaţiei

Memoria

Răzvan Daniel ZOTA


Facultatea de Cibernetică, Statistică şi Informatică
Economică
zota@ase.ro
http://zota.ase.ro/bti-idd
Conţinut

• Memoria calculatorului – tipuri de memorie


• Memoria centrală (principală)
• Memoria auxiliară

2
O ierarhie a memoriei

Regiştrii UCP Cache Memoria Dispozitive


Magistrala de memorie Magistrala I/E
principală I/E

Regiştrii UCP Cache Memoria principală Dispozitive I/E

Dimensiune 200 B 64 KB 32 MB 2 GB
Viteza 5 ns 10 ns 100 ns 5 ms
1 KB (CMOS sau
Dimensiuni maxime BiCMOS) 4 MB SRAM 4 GB DRAM > 1 GB
Bandwith (MB/sec) 4000-32000 800-5000 400-2000 4-32
Administrare Compilator Hardware SO SO/utilizator
Backup Cache Mem principală Disc Banda magnetică

3
Tipuri de memorie

Creşte preţul

Regiştrii UCP Cache Memoria Dispozitive


Magistrala de memorie Magistrala I/E
principală I/E

Creşte dimensiunea/timpul de acces

4
Memoria cache
• Tip de memorie mică, ultra-rapidă, aproape de UCP, ce conţine cele mai
recent accesate date sau instrucţiuni de cod
– “Cache hit”
– “Cache miss” (un bloc de dimensiune fixă de date ce conţine datele necesare
sunt extrase din memoria principală şi introduse în cache)
• Fenomenul de “localizare temporală” ne spune că este foarte probabil să
avem nevoie de aceste date curând, deci el este plasat în cache unde poate fi
accesat rapid
• Timpul de răspuns necesar pentru un “cache miss” depinde atât de latenţa
memoriei cât şi de bandwith – ce determină timpul în care va fi citit întregul
bloc. Un “cache miss” administrat hardware va determina de regulă o pauză
în funcţionarea CPU – până în momentul în care sunt disponibile datele.

5
Memoria cache şi controller-ul de memorie cache

UCP

512 KB SRAM
UCC cache
Unitatea de control cache Timp de acces: 10 ns

Magistrala de sistem

128 MB DRAM
Subsistemul de
Memoria principală
Intrare/Ieşire
Timp de acces: 60 ns

6
Unitatea de management a memoriei virtuale

UCP

UMM
Unitatea de management
a memoriei Memoria SRAM
cache

Magistrala de sistem

Subsistemul de Memoria principală


Intrare/Ieşire DRAM

7
Magistrala de sistem

Procesor

Magistrala de sistem
Slot Slot Slot Slot Slot

8
Magistrala de sistem - echipamente periferice

Procesor

Magistrala de sistem
Slot Slot Slot Slot Slot

Memorie Interfaţă de Interfaţă de Interfaţă de Interfaţă de


monitor floppy-disc CD-ROM imprimantă

9
Execuţie concurenţială

Programul 1
Execuţie Aşteptare Execuţie Aşteptare

Programul 2

Aşteptare Ex Aşteptare Execuţie Aşteptare

Programul 3
Aşteptare Execuţie Aşteptare Execuţie

10
Fragmentarea memoriei

Sistemul de operare

Regiune memorie 1
Regiune 324 KB

Regiune 600 KB Regiune de memorie


de 1024 KB
Regiune 100 KB

Regiune de memorie Regiune memorie 2


neutilizată

11
Segmentarea memoriei

Sistemul de operare

Regiune memorie 1
Program 1 - segment 0

Regiune memorie 2

Program 1 - segment 1

Regiune memorie 3

Program 1 - segment 2

12
Translatarea dinamica a adreselor - segmentarea

Adresa de bază Deplasament


Expandarea adresei

Nr. de segment Deplasament

Segment Adresa de început

0 123
1 456
2 789 Adresa de început a segmentului + deplasamentul
= adresa absolută a segmentului

Sistemul de operare

Regiune memorie 1
Program 1 - segment 0
Regiune memorie 2
Program 1 - segment 1

Regiune memorie 3
13
Program 1 - segment 2
Translatarea dinamica a adreselor - paginarea

Adresa de bază Deplasament


Expandarea adresei

Nr. de pagină Deplasament

Pagină Adresa de început

0 123
1 456
2 789 Adresa de început a paginii + deplasamentul
= adresa absolută a paginii

Sistemul de operare

Regiune memorie 1
Program 1 - pagina 0
Regiune memorie 2
Program 1 - pagina 1

Regiune memorie 3
14
Program 1 - pagina 2
Translatarea dinamica a adreselor - paginarea

Adresa de bază Deplasament


1 Expandarea adresei
5
Segment Pagină Deplasament
Adresa absolută= adresa reală a paginii +
deplasamentul

2
Segment Adresa tabelei
de pagini
0 123
1 456
2 789 5
3 Tabela de pagini a segmentului 2
Pagina Adresa reală

0 123
4
1 456
2 789

15
Memoria virtuală
Memoria virtuală Reprezintă separarea conceptuală a memoriei logice disponibile pentru aplicaţii faţă de
memoria fizică. În acest mod putem avea o memorie virtuală de dimensiuni mari chiar cu o
memorie fizică de dimensiuni reduse.
Pagini de memorie

Disk
Memoria virtuală Harta memoriei Memoria fizică
(memory map)
16
Memoria virtuală
• În acelaşi sens, nu toate obiectele (date sau instrucţiuni) pot fi la un
moment dat în memoria principală. Dacă avem memorie virtuală, atunci
unele dintre obiecte se pot afla pe disc. Spaţiul de adresare este de regulă
împărţit în blocuri de lungime fixă – pagini.
• La un moment dat, paginile se află fie în memoria principală, fie pe disc
• Atunci când se cere un obiect care nu este în cache sau în memoria
principală, apare un “page-fault” – moment în care întreaga pagină este
mutată de pe disc în memoria principală. Aceste “page-fault” durează mai
mult şi atunci sunt controlate de software şi UCP nu face pauză.
• De regulă, UCP comută către alt task atunci când apare un acces la disc.
Memoria cache şi memoria principală au aceeaşi relaţie ca şi cea existentă
între memoria principală şi disc.

17
Memoria virtuală
• În orice moment, un calculator rulează mai multe procese, fiecare având propriul spaţiu de
adrese de memorie. Ar fi foarte costisitor să se dedice un întreg spaţiu de adresare pentru fiecare
proces, având în vedere că multe dintre procese folosesc doar o mică parte a spaţiului propriu de
adrese. A apărut astfel necesitatea partajării unei părţi a memoriei între mai multe procese.
• Acest procedeu poartă numele de “memorie virtuală” – memoria fizică se divide în blocuri care
sunt alocate diferitelor procese.
• Inerentă unei astfel de abordări este o schemă de protecţie ce restricţionează accesul proceselor
la blocuri ce aparţin altor procese. Majoritatea formelor de memorie virtuală reduc, de
asemenea, timpul de pornire a unui program, deoarece nu tot codul sau datele trebuie să fie deja
în memoria fizică înainte ca programul să înceapă.
• Nu însă partajarea între procese a memoriei este adevăratul motiv pentru care s-a inventat
memoria virtuală. Dacă un program devine prea mare pentru memoria fizică, este sarcina
programatorului să îl facă să încapă în ea. Au rezultate acele suprapuneri (overlay).
• Blocurile de memorie în cazul memoriei virtuale se numesc pagini sau segmente. UCP foloseşte
adrese virtuale ce sunt translatate (hardware cât şi software) în adrese fizice ce accesează
memoria principală. Acest procedeu se numeşte procedeul de mapare a memoriei sau de
translatare a adreselor. Astăzi memoria virtuală intervine la nivel de memorie principală şi disc
magnetic.

18
Memoria virtuală
Cererea de pagini (demand paging)
Atunci când o pagină de memorie este referită (fie că este vorba despre cod sau date ) şi ea nu se află în memorie atunci
ea este adusă de pe disc şi se re-execută instrucţiunea

Programul A

Programul B

Memoria fizică Hard disc

19
Memoria virtuală
Nr paginii Bit valid/invalid
1
Regula spune că cererile de pagini din memoria externă 1
(page faults) se produc rareori.
1
1
Tabela de pagini necesită prezenţa unui bit “rezident" 0 Tabela de pagini
care ne arată dacă pagina este sau nu în memorie.
Uneori se utilizează termenul "valid" pentru a 
indica rezidenţa în memorie. O pagină “invalidă"
este astfel o pagină nerezidentă sau care are o 0
adresă ilegală.
Nr paginii Rezident Bit valid/invalid

Este mai logic să avem doi biţi - unul ne indică faptul că


pagina este validă iar cel de-al doilea ne arată
dacă pagina este sau nu în memorie. 1 1
0 0

20
Memoria virtuală
Paşii ce se urmăresc în cazul unui “page fault”

1. Procesul necesită o pagină ce nu este rezidentă în memorie.

2. Verifică în tabela de pagini dacă referinţa de memorie este validă sau nu.

3. Dacă este validă dar pagina nu este rezidentă, se încearcă obţinerea acesteia din memoria secundară.

4. Se caută şi se alocă un cadru (frame) liber (o pagină de memorie fizică neutilizată în prezent – poate fi
necesară eliberarea unei pagini de memorie).

5. Se planifică o operaţie de disc pentru a se citi acea pagină din memoria secundară în cadrul nou
alocat.

6. După scrierea paginii în memorie se modifică tabela de pagini - pagina este acum rezidentă.

7. Se reporneşte instrucţiunea ce a generat page fault.

21
Memoria virtuală
Obţinerea paginii
3
Sistemul de din memoria
secundară
Operare

Referinţă la tabela 2
de pagini Trap
1
Se încarcă P

6 Repetarea
instrucţiunii

Tabela de pagini

Cadru liber
Refacerea tabelei de memorie Copierea paginii
5 4
de pagini în memoria
principală
Paşii administrării unui “page fault” Memoria fizică
22
Memoria virtuală – înlocuirea paginilor
În cazul supra-alocării memoriei trebuie să renunţăm la ceva deja existent în memorie.
Supra-alocarea apare atunci când programele au nevoie de mai multe pagini de memorie decât cele
existente fizic.
Abordare: Dacă nici o pagină fizică nu este liberă, se caută una care nu este utilizată la momentul respectiv
şi se eliberează, urmărind următorii paşi:

1. Se caută pagina pe disc.


2. Se caută un cadru liber.
a. Dacă există, se foloseşte
b. Altfel, se selectează o pagină “victimă”
c. Se scrie pagina “victimă” pe disc.
3. Se citeşte noua pagină în cadrul eliberat. Se modifică tabela de pagini.
4. Se reporneşte procesul.

23
Memoria virtuală – înlocuirea paginilor

Pagina Bit valid/invalid


Copierea paginii
Bitul se modifică
“victimă” pe disc
în “invalid”
p1 1
2
Victima
p1 v SWAP
p2
p2 i
4 3
Bitul se modifică Copierea paginii
în “valid” necesare de pe
Tabela de pagini disc în memorie
Memoria fizică

Funcţionarea mecanismului de înlocuire a paginilor

24
Memoria virtuală – înlocuirea paginilor
Algoritmi de înlocuire a paginilor

În momentul supra-alocării putem fie interschimba pagini de pe disc, fie supra-scrie anumite pagini. Ce pagini
vor fi înlocuite?- pentru a minimiza numărul de page faults.

Exemplul unui şir de referinţă pentru pagini de memorie ce vor fi executate:


Şir de referinţă: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5

FIFO 1 5 4
2 1 5 10 “page faults”
Uşor de implementat dpdv conceptual.
3 2
Se poate folosi fie un “time-stamp” pentru pagini,
fie o organizare într-o coadă. (Coada reprezintă
implementarea cea mai uşoară)
4 3
Şir de referinţă: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5

25
Memoria virtuală –înlocuirea paginilor
Înlocuirea optimă

• Reprezintă o politică de înlocuire a paginilor care au cea mai mică rată “page fault”.
• Algoritmul: se înlocuieşte pagina care nu va fi utilizată pentru cea mai lungă perioadă de
timp.
• Practic imposibil de implementat.

1 4
2 6 “page faults”
3

4 5
Şir de referinţă: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5

26
Memoria virtuală – înlocuirea paginilor
Metoda LEAST RECENTLY USED ( LRU ) – “Cea mai puţin recent folosită pagină”
– Se înlocuieşte pagina care nu a fost utilizată pentru cea mai mare perioadă de timp.
– Rezultatele sunt bune; dificultatea apare la implementare.
– Variante de implementare:
• ”Time stamp” pentru pagini - înregistrarea ultimei utilizări.
• Stivă de pagini – se scot paginile utilizate şi se introduc în vârful stivei
Ambele metode necesită facilităţi hardware (trebuie făcută reactualizare după fiecare instrucţiune), de aceea
este rar utilizată în practică.

1 5
2 8 “page faults”
3 5 4
4 3
Şirul de referinţă: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5
27

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