1 / 181

Capitolul 4 Gestiunea Memoriei

Capitolul 4 Gestiunea Memoriei. Probleme principale. Organizarea ierarhizata a memoriei; Memorie cache;. Organizari simple privind gestiunea memoriei, care nu necesita hardware specializat;. Probleme principale. Tehnici de gestiune a memoriei virtuale;

zudora
Download Presentation

Capitolul 4 Gestiunea Memoriei

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Capitolul 4Gestiunea Memoriei

  2. Probleme principale Organizarea ierarhizata a memoriei; Memorie cache; • Organizari simple privind gestiunea memoriei, care nu necesita hardware specializat;

  3. Probleme principale Tehnici de gestiune a memoriei virtuale; Protectia obiectelor memorate impotriva accesului neautorizat; Mijloace de protectie implementate folosind starile privilegiate ale masinii; Detectarea si corectarea erorilor si reconfigurarea sistemelor de memorie. 3

  4. Introducere - 1 Cresterea puterii de calcul si a spatiului adreselor la microprocesoarele moderne extinderea gamei de aplicatii Gestionarea memoriei nu mai poate fi lasata strict in sarcina unui programator  gestiunea automata a resurselor de memorie Ideile nu sunt noi in CS(solutii folosite in calculatoare mari sau minicalculatoare), ci doar in lumea microprocesoarelor

  5. Utilizarea rationala a memoriei se realizeaza prin luarea in considerare a urmatoarelor : Introducere - 2 • ‑ exista mai multe tipuri de memorie, cu diverse viteze si costuri pe bit; • ‑ intr‑un sistem complex, functionand in time sharing, nu este necesar a pastra simultan toate programele in memoria primara.

  6. Introducere - 3 Sistemul de memorie consta din mai multe subsisteme, cu capacitati diferite si timpi de acces diferiti. • Alocarea memoriei este dinamica.

  7. Introducere - 4 Datele si programele - mutate dinamic dintr‑o zona de memorie in alta. Fluxul este controlat de catre programator, sistemul de operare, hardware sau o combinatie a tuturor acestor factori. Fiecare poate gestiona un anumit subsistem al memoriei, asa cum se va vedea mai tarziu.

  8. Registrele CPU - cea mai rapida forma de memorie din sistem, dar capacitatea lor - insuficienta . “Localitatea” programelor (Locality principle) - 1 • Exemplu: alocarea registrelor de catre programator in limbaj de asamblare.

  9. Un programator experimentat foloseste registrele pentru a memora datele la care frecventa de acces este cea mai mare. In cazul exemplului, gestiunea unei zone de memorie, unica si rapida, se bazeaza pe cunoasterea structurii programului. O astfel de tehnica - inadecvata pentru gestionarea memoriei prin mecanisme hardware sau de catre sistemul de operare. “Localitatea” programelor (Locality principle) - 2

  10. S-a evidentiat existenta unui principiu, numit principiul “localitatii” programelor (program locality ), extensibil si la date. Daca la momentul t se face acces la adresa de memorie x, exista o probabilitate ridicata ca, la momentult+∆t,sa se efectueze accesul la adresa de memorie x+∆x, unde ∆t si ∆x sunt valori mici ale lui t si x. “Localitatea” programelor (Locality principle) - 3

  11. “Localitatea” programelor (Locality principle) - 4 Pe durata fiecarei faze referirile la memorie au loc doar in cadrul unui mic subspatiu al spatiului de memorie, accesul fiind concentrat in jurul catorva blocuri contigue de memorie. • Procesul de acces la memorie al unui program in executie se poate diviza in faze. 11

  12. “Localitatea” programelor (Locality principle) - 5 Doar cand programul se muta de la o faza la alta modelul de acces la memorie devine neuniform, pana la atingerea noii faze, dupa care referirile la memorie se centreaza pe o aglomerare diferita de blocuri. Mecanismele de gestiune automata a spatiului de memorie pot folosi localitatea programelor pentru a pastra in memoria rapida subspatiul de memorie cu cele mai frecvente accese in cadrul programului curent.

  13. “Localitatea” programelor (Locality principle) - 6 Element esential - detectarea tranzitiei intre faze si identificarea locatiilor de memorie utilizate de catre fiecare faza.

  14. “Localitatea” programelor (Locality principle) - 7 Combinarea gestionarii automate a memoriei cu cea efectuata de catre utilizator presupune oferirea de catre programator a unor informatii privind structura programului, PRECUM SI CONCEPEREA ADECVATA a programului. permite mecanismului automat sa mute informatiile intre diferitele subsisteme de memorie corespunzator informatiilor furnizate de catre programator.

  15. Adrese fizice si virtuale - 1 Organizarea memoriei in cateva subsisteme diferite are implicatii importante asupra adresarii. Nici unul din subsisteme (cu exceptia discului) nu are capacitatea comparabila cu cea maxima direct adresabila a procesoarelor contemporane.

  16. Adrese fizice si virtuale - 2 Solutie: utilizarea adreselor virtuale ⇨ Imposibilitatea ca un proces sa lucreze cu adrese fizice

  17. Adrese fizice si virtuale - 3 In conditiile multitasking, fiecare proces dispune, teoretic, de spatul maxim direct adresabil aferent procesorului (e.g. 236 = 64 GB pentru Pentium IV) MMU – rol de translator din spatiul virtual in cel liniar, apoi in cel fizic

  18. Adrese fizice si virtuale - 4 Avantaje: Un proces poate dispune de spatiul virtual maxim posibil, chiar daca memoria principala a sistemului are dimensiuni mult inferioare Devine posibila functionarea multitasking Este necesara transformarea, la momentul rularii, a adresei din program (adresa virtuala) in adresa de memorie (adresa fizica), transformare ce utilizeaza un suport hardware adecvat.

  19. Ierarhizarea memoriei - 1 Principiile de gestiune a memoriei evidentiate anterior conduc la ideea organizarii ierarhizate a diferitelor subsisteme de memorie. La varful ierarhiei se gaseste memoria cea mai mica si cea mai rapida, in timp ce baza este constituita din memoria cea mai lenta si cu cel mai mare volum. In general transferul de date are loc doar intre niveluri ADIACENTE ale ierarhiei.

  20. Ierarhizarea memoriei - 2 Organizarea memoriei bazata pe localitatea programelor ofera valori bune pentru raportul cost/performanta • Ierarhia memoriei are un numar de cel putin 5 niveluri.

  21. Ierarhizarea memoriei - 3 Nivelul 0 (Registre) Nivelul 1 (on-chip cache) Nivelul 2 (on-board cache) Memoria principala Memoria secundara

  22. Ierarhizarea memoriei - 4 Registrele de uz general constituie nivelul 0 al memoriei pentru date (incluzand adresele programului) si registrul instructiunii este nivelul 0 al memoriei pentru cod. Procesoarele actuale dispun de cateva registre dedicate pastrarii de informatii temporare necesare gestiunii memoriei. Aceste registre se pot afla, partial, sub controlul programului (privilegiat) dar, in general, sunt gestionate de CPU.

  23. Ierarhizarea memoriei - 5 Registrele interne ale CPU sunt direct conectate la diversele subunitati de prelucrare din CPU cea mai rapida si cea mai mica memorie din sistem Viteza de prelucrare a microprocesoarelor noi creste continuu  sunt necesare sisteme de memorie mai rapide.

  24. Ierarhizarea memoriei - 6 Introducerea unui nou nivel de ierarhizare compus din memoria care nu este direct conectata la subunitatile de prelucrare, dar implementata pe aceeasi placheta de siliciu ca si CPU. • Timpul de acces al memoriei descreste constant  timpul total de raspuns este afectat de intarzieri de interfatare, inclusiv de penalizarea de timp a transferului prin frontierele circuitului. 24

  25. Memorie cache pe chip (pe circuit) - 1 Acest nivel, nivelul 1 al memoriei, este mai lent decat registrele si necesita unele circuite de interfata; totusi, ea este mai rapida decat memoria din exteriorul circuitului. • La acest nivel inca persista distinctia intre date, cod si informatii de gestiune a memoriei.

  26. Memorie cache pe chip (pe circuit) - 2 Memoria cache pe circuit destinata programului este, uneori, organizata ca o stiva de tip FIFO, al carei varf este constituit de registrul instructiunii. Aceasta organizare simpla apare ca urmare a modului aproape liniar al extragerii instructiunilor (perturbarile - create de executia instructiunilor de salt). Deci, exista o probabilitate ridicata ca urmatorul cuvant de cod ce trebuie sa fie extras sa se afle la adresa urmatoare.

  27. Memorie cache pe chip (pe circuit) - 3 Instructiunile de salt distrug traseul liniar prin spatiul de adresare si videaza stiva. Este necesara aducerea de noi cuvinte de cod din memoria externa, deci dispare, pt scurt timp, efectul favorabil al memoriei cache pe circuit. Instructiunile necesita un anumit timp pentru a fi executate in interiorul CPU  unitatea de gestiune a tamponului de memorie umple stiva FIFO mai rapid decat este vidata de catre CPU, care extrage instructiuni.

  28. Memorie cache pe chip (pe circuit) - 4 Deci, dupa executia unei instructiuni de salt, sirul de asteptare in interiorul circuitului a instructiunilor se reface. Poate aparea un conflict intre CPU, care trebuie sa execute un ciclu de citire/inscriere a memoriei externe, si unitatea de gestiune a stivei FIFO, care trebuie sa execute un ciclu de citire din memorie pentru a completa sirul de instructiuni. In astfel de situatii ciclul necesar prelucrarii de date este prioritar.

  29. Accesul la date - mai putin predictibil decat cel pentru cod ⇨memoria cache pe circuit este organizata ca o memorie cu acces aleator, compusa dintr‑o parte de date si o alta de eticheta (tag) TAG - informatia corespunzatoare adresei CPU utilizata pentru acces la date. DATA - valorile datelor Memorie cache pe chip - 5Organizarea generala a memoriei cache

  30. Memorie cache pe chip - 6Operarea unitatii de comanda a memoriei cache

  31. Memorie cache pe chip (pe circuit) - 7 Implementarea memoriei cache pe circuit ridica un numar de probleme arhitecturale: memoria TAG este mare comparativ cu memoria DATA, deci se consuma o mare arie de siliciu pentru gestiunea memoriei. studii efectuate prin simulare au aratat ca introducerea memoriei cache pe circuit creste, in loc sa descreasca, viteza ceruta pentru transferul prin frontiera circuitului.

  32. Memorie cache pe chip (pe circuit) - 8 Tehnica de tip cache este folosita si pentru a memora informatiile cu cea mai ridicata fracventa de utilizare, destinate gestiunii memoriei in acelasi circuit cu CPU sau intr‑un circuit destinat special gestiunii memoriei (memory management unit ‑ MMU). O astfel de unica memorie cache este comandata pe baza principiului LRU (least recently used ‑ cea mai veche informatie folosita. Nu toate mecanismele de comanda a memoriei cache pe circuit sunt necontrolabile prin program, dar ele sunt implementate prin mijloace hardware si prezenta lor tinde sa fie transparenta fata de programator.

  33. Memorie cache pe placa (on-board) - 1 Intarzierea introdusa de circuitele de interfatare, ca si de transmisia si regimurile tranzitorii ale informatiilor pe magistrala sistemului necesita, adesea, introducerea unei stari de asteptare (wait state), mai ales pentru microprocesoarele foarte rapide, atunci cand se adreseaza memoriei care nu se afla pe aceeasi placa. • Aceleasi motive care justifica introducerea de memorii cache pe circuit recomanda realizarea lor pe aceeasi placa a CPU:

  34. Memorie cache pe placa (on-board) - 2 Memoria cache pe aceeasi placa permite obtinerea de timpi de acces la sistemul de memorie apropiati de cei oferiti de memoria cache de mare viteza, dar la un pret apropiat de cel al memoriei mai mari si mai lente (memorie primara). In sistemele multiprocesor apare un motiv suplimentar de introducere a memoriei cache. In acest sistem, concurenta intre diferitele CPU pentru accesul la memorie conduce la intarzieri care au ca efect cresterea timpului mediu de acces la memorie.

  35. Memorie cache pe placa (on-board) - 1 Este necesara introducerea urmatorilor parametri: dimensiunea cache: dimensiunea memoriei DATA, exprimata in numar de unitati adresabile de catre CPU; dimensiunea blocului: dimensiunea celei mai mici unitati de memorie care poate fi manipulata de mecanismul de gestiune cache (in general, dimensiunea blocului este o putere a lui 2); dimensiunea multimii (set size): numarul de locuri diferite in memoria DATA unde organizarea cache permite stocarea oricarui bloc citit din memoria primara (este, in general, tot o putere a lui 2).

  36. Un mod posibil de a converti adresele emise de catre CPU in adrese ale memoriei DATA. Fie n = nr. de biti de adresa a CPU si k < n nr. de biti necesari pentru a adresa memoria DATA. Se da dimensiunea blocului B: 2b, cei mai putini semnificativi b biti de adresa ai CPU sunt copiati in adresa memoriei DATA, deoarece offsetul in cadrul blocului nu este luat in considerare de catre mecanismul de conversie a adreselor. Memorie cache pe placa (on-board) - 4 Mecanismul de conversie a adresei pentru memoria cache cu S=2s

  37. Memorie cache pe placa (on-board) - 1 Fie S - dimensiunea multimii adreselor Adresa CPU poate fi transformata in una din cele S adrese folosite pentru memoria DATA. Deci bitii s ai adresei cache sunt obtinuti prin transformarea prin intermediul memoriei TAG, in timp ce bitii ramasi x = k ‑ s ‑ b sunt determinati in mod unic din adresa CPU, apoi sunt copiati. Intrucat bitii x determina setul de blocuri posibile in cadrul memoriei de date, iar localizarea exacta in cadrul multimii nu este supusa la restrictiii din partea altor biti de adresa, transformarea celor mai semnificativi n ‑ b ‑ x biti ai adresei emise de catre CPU in cei mai semnificativi s biti ai adresei de memorie cache ar trebui efectuata, in mod ideal, de un set de memorii asociative (cate una pentru fiecare set).

  38. O alta solutie este cea din figura, unde se folosesc doar memorii RAM. In acest caz, numarul de biti utilizati pentru memoria TAG este dat de 2k‑b * (n ‑ k + s), care realizeaza corespondenta intre dimensiunea memoriei cache (2k), dimensiunea blocului (2b), dimensiunea multimii (2s) si dimensiunea spatiului adreselor CPU (2n). Prin modificarea valorii lui s se obtin urmatoarele trei organizari clasice: a) s = 0 (organizarea indexata): fiecare bloc din memoria primara este transformat intr‑un unic bloc al memoriei cache; b) 0 < s < h‑b (organizarea partial asociativa de seturi): orice bloc din memoria primara poate fi transformat intr‑un numar limitat de seturi ale blocurilor memoriei cache; c) s = h ‑ b (organizarea complet asociativa): orice bloc al memoriei primare poate fi transformat in orice bloc al memoriei cache. Memorie cache pe placa (on-board) - 6

  39. Memorie cache pe placa (on-board) - 7Implementarea memoriei TAG

  40. Memorie cache pe placa (on-board) - 8 s = h ‑ b Valorile mari ale lui s conduc la dimensiuni mari ale memoriei TAG. Unele rezultate experimentale [19] au evidentiat in mod clar ca, prin cresterea dimensiunii setului, creste probabilitatea de acces in memoria cache. Aceleasi studii au aratat ca dimensiunea de 2 sau 4 a setului conduce la performante foarte apropiate de cele ale organizarii complet asociative. Din cele de mai sus decurge preferinta proiectantului pentru memorii cu organizare partial asociativa, cu o dimensiune mica a setului.

  41. Realizari de memorie cache - 1 Principle of locality: Programele executa secvente Programele au bucle Matricele sunt memorate in blocuri contigue Datele neinrudite sunt plasate in acelasi segment

  42. Realizari de memorie cache - 2

  43. Realizari de memorie cache - 3Notiuni, definitii Write through cache - prezinta datele imediat Write back cache - retine datele pana cand este necesara inscrierea unui intreg bloc (posted write) Dirty cell Organization

  44. Realizari de memorie cache - 4Notiuni, definitii Tag subsystem, memory subsystem divizate in refill lines de dimensiuni egale (n cuvinte, n - putere a lui 2) Obisnuit: 4 - 64 octeti Refill line boundary Transferul se face in unitati de dimensiune egala cu cea a refill line

  45. Realizari de memorie cache - 5 Tag in memorie asociativa: Daca memoria principala are N refill lines, atunci sunt necesari log2 Nbiti de adresa pt refill lines. Toate componentele simultan scumpa

  46. Realizari de memorie cache - 6“Direct-Mapped” Partitioneaza memoria in k coloane cu N refill lines / coloana. Se foloseste low address interleaving cuvinte consecutive de memorie se afla in refill lines diferite  cache refill mapped Cache are o coloana cu N randuri, fiecare aratand o refill line

  47. Realizari de memorie cache - 7“Direct-Mapped”

  48. Realizari de memorie cache - 8 “Set-Associative” (Combinatie intre Fully-Associative si Direct-Mapped)

  49. Cache refill lines sunt grupate in sectoare, numite si randuri (rows). Cache mapeaza oricare sector al memoriei principale in oricare sector cache ⇨ se foloseste o memorie asociativa. Refill lines isi pastreaza ordinea in cadrul sectoarelor ⇨ memoria asociativa mapeaza doar adrese de sectoare. Cache foloseste “validity bits”, cate unul pt fiecare refill line, pt a pastra evidenta refill lines aflate in memoria cache. Realizari de memorie cache - 9“Sector-Mapped”

  50. Realizari de memorie cache - 10“Sector-Mapped”

More Related