Memoria sistemelor de calcul

De la Wikipedia, enciclopedia liberă
Salt la: Navigare, căutare

În cadrul unui sistem de calcul memoria ocupă un loc important reprezentând „depozitul de informații” (date și program) al acestuia. Există două arhitecturi consacrate în ceea ce privește organizarea sistemului de memorie: von Neumann și Harvard. În cazul arhitecturii von Neumann memoria este văzută ca un tot unitar în care se află atât programele cât și datele. În cazul arhitecturii Harvard memoria este împărțită în două părți distincte, memorie program și memorie de date.

Sistemele de calcul de uz general actuale (sistemele desktop, serverele etc.) au o organizare de von Neumann în timp ce sistemele dedicate de tip embedded au o organizare de tip Harvard. Arhitectura von Neumann este specifică sistemelor de calcul de uz general datorită flexibilității care o oferă permițând utilizarea memoriei în funcție de scopul sau de funcționalitatea dorită la un moment de timp dat. Sistemele embedded având o funcționalitate fixă și fiind supuse unor restricții în ceea ce privește modul de funcționare (consum redus, cost redus, un număr mic de circuite componente) exploatează mult mai bine arhitectura Harvard.

Ierarhizarea[modificare | modificare sursă]

Sistemul de memorie constă din mai multe subsisteme, cu capacități diferite și timpi de acces diferiți. Datele și programele sunt mutate dinamic dintr-o zonă de memorie în alta. Fluxul este controlat de către programator, de sistemul de operare, de hardware sau de către o combinație a tuturor acestor factori.

Există mai multe tipuri de memorie, cu diverse viteze și costuri pe bit.[1] Memoria este ierarhizată cu scopul de a realiza transferuri de date între procesor și memorie cu o viteză cât mai apropiată de cea a procesorului. În general, transferul de date are loc doar între niveluri adiacente ale ierarhiei.

Întrucât organizarea memoriei bazată pe localitatea programelor oferă valori bune pentru raportul cost/performanță, ideea este larg folosită în noile microprocesoare. Trebuie remarcat cǎ ierarhia memoriei pentru aceste sisteme are un număr mai mare de nivele decât modelele anterioare. Memoria poate fi ierarhizată după mai multe criterii:

  • metoda de accesare a informației (memorii RAM - cu acces aleatoriu)
  • timpul de acces - ca timp de întârziere între comandă și prelucrarea efectivă a informației

Timpul de acces este mai redus către nivelurile superioare și mai mare spre nivelurile inferioare.

Ierarhia memoriei are un numǎr de cel puțin 5 niveluri:

  • Nivelul 0: Registre
  • Nivelul 1: On-chip-cache
  • Nivelul 2: On-board-cache
  • Nivelul 3: Memoria principală
  • Nivelul 4: Memoria secundară

Principiul localității programelor este valabil pentru orice tip de referire la memorie. Totuși, diferitele niveluri ale ierarhiei necesitǎ modalitǎți diferite de manipulare a instrucțiunilor, datelor și informației în scopul gestionǎrii memoriei.

Un prim exemplu de ierarhizare a memoriei îl constituie împărțirea memoriei pe două niveluri: memorie principală (memorie cu care UCP lucrează în mod direct) și memorie secundară (memorie accesibilă prin intermediul unui dispozitiv de control suplimentar).

Apariția celui de al doilea nivel de memorie a fost argumentată de rațiuni economice și practice. Memoria primară este formată din circuite electrice care nu permit stocarea unor mari cantități de informații și care nu permit întotdeauna stocarea informațiilor în absența alimentării cu energie electrică. În schimb, memoria principală oferă un timp de acces foarte mic. Spre deosebire de aceasta, memoria secundară este formată din dispozitive de stocare magnetice sau magneto-optice, cu un timp de acces mai ridicat dar cu posibilități de stocare de mari dimensiuni și cu facilități de păstrare a datelor și în absența alimentării cu energie electrică.

Memoriile care nu sunt capabile să rețină date în absența alimentării cu energie electrică se numesc volatile, termenul opus fiind de non-volatile.

Funcționarea unui sistem de calcul cu o arhitectură ierarhizată a sistemului de memorie se bazează pe ideea de păstrare a informațiilor într-un mediu de stocare de mare capacitate (memorie secundară), cu un timp de acces mare dar cu proprietăți non-volatile. În momentul utilizării informațiilor de către UCP acestea sunt aduse în memoria principală pentru o accesare mult mai rapidă. Numai informațiile care sunt utilizate la un moment de timp dat de către UCP sunt prezente în memoria principală, fragmente de program și date. În cazul necesității aducerii unor noi informații în memoria principală există posibilitatea descărcării altor informații care nu mai sunt utilizate pentru a face loc acestora (capacitatea memoriei principală este mult mai mică decât a cea a memoriei secundare).

În sistemele de calcul actuale există și alte niveluri intermediare în sistemul de ierarhizare a memoriei. Astfel, pentru a accelera și mai mult accesul la informații a UCP se utilizează unul sau mai multe nivele de memorie cache (nivelul 1 - on-chip cache si nivelul 2 – on-board cache). Memoria cache este implementată la nivel de UCP sau de sistem prin intermediul unor circuite de memorie electrice cu timp de acces foarte mic (mult mai mic decât al circuitelor care formează memoria principală) și care intermediază accesul la informații a UCP. Cu cât timpul de acces a unui circuit de memorie este mai mic cu atât prețul pe unitate de stocare este mai mare și de aceea nu se pune problema utilizării unor circuite extrem de rapide la construirea memoriei principale nefiind rezonabil din punct de vedere economic; aceste circuite pot fi folosite în schimb la memoria cache, aceasta are dimensiuni mult mai mici decât memoria principală ne-conținând decât informații necesare imediat UCP-ului.

Registrele de uz general constituie nivelul 0 al memoriei pentru date (incluzând adresele programului) și registrul instrucțiunii este nivelul 0 al memoriei pentru cod. [1]

Pe lângă nivelul suplimentar de memorie cache, în sistemul de ierarhizare a memoriei mai poate apare și un nivel de stocare de foarte mare capacitate, extern sistemului de calcul, și care poate fi privit ca o suplimentare a memoriei secundare dar cu parametri de acces mult inferiori.

Informația care nu este imediat necesară UCP (programe care nu sunt gata de rulare sau subspații de adresare care nu sunt necesare în faza curentă) este memorata în dispozitive cu mediu magnetic de stocare, care oferă un mare volum de memorare la costuri unitare mici, dar cu timpi de acces cu cel puțin trei ordine de mărime mai mari decît cei ai memoriei primare. [1]

În cazul sistemelor embedded memoria nu este ierarhizată din considerente economice și de complexitate a sistemelor. Singurele diferențieri între unitățile de memorie se fac în ceea ce privește funcționalitate acestora: memorie program, memorie de date și în ceea ce privește localizarea acestora: memorie internă (în interiorul microcontroler-ului), memorie externă (sistem). Toate aceste unități de memorie se află ierarhic la nivel de memorie principală. Implementarea fizică diferă între memoria program și memoria de date, cele două tipuri de memorie fiind implementate cu circuite electrice de memorie volatilă – circuite de memorie RAM (memoria de date) și circuite de memorie non-volatile – circuite de memorie ROM (memoria program). Utilizarea memoriei de tip ROM, în cazul memoriei program, asigură non-volatilitatea informațiilor în lipsa memoriei secundare.

Comparație între tipuri de memorie[modificare | modificare sursă]

Memorie Facilități
Flash Cost scăzut, densitate înaltă, arhitectura permite viteze mari, putere scăzută, fiabilitate înaltă.
ROM Cost scăzut, densitate înaltă, timp de scriere crescut, potrivită pentru producție

pe scară largă cu cod stabil.

SRAM Cost mare generat de densitatea scazută, cea mai mare viteză, putere mare.
EPROM Densitate înaltă, necesită UV pentru ștergere.
EEPROM Cost mai mare, densitatea cea mai scăzută, fiabilitate mai mica. Se șterge electric.
DRAM Cost scăzut, densitate înaltă, viteză mare, putere mare.

Note[modificare | modificare sursă]

  1. ^ a b c [1] Cursul de Sisteme cu Microprocesoare din cadrul facultății de Automatică și Calculatoare, Universitatea Politehnica București.