04.+Memoria+sistemelor+de+calcul

CAPITOLUL 4: MEMORIA SISTEMELOR DE CALCUL

4.1. Reprezentarea datelor în memorie
Oamenii comunică prin intermediul simbolurilor. Din aceste simboluri (de exemplu literele alfabetului), respectând anumite reguli sintactice, se pot obţine construcţii mai ample (de exemplu cuvinte, propoziţii, fraze), purtătoare de informaţie. Dar mintea umană este mult mai complexă decât un calculator. Calculatorul nu este în stare să utilizeze decât două simboluri: 0 şi 1. Pentru a reuşi să comunice cu un calculator, omul trebuie să convertească datele şi comenzile sale într-o formă pe care calculatorul să le poată înţelege, şi anume în formă binară. O astfel de operaţie se numeşte **codificare.** Codificarea caracterelor constă în a asocia în mod unic fiecărui caracter (litere, cifre, caractere speciale) o valoare numerică. Deoarece fiecare byte conţine 8 biţi, fiecare putând lua valorile 1 sau 0, există 256 posibile combinaţii de 1 şi 0 într-un byte. Codul **ASCII** - **A**merican **S**tandard **C**ode for **I**nformation **I**nterchange, este cel mai răspândit cod, fiind utilizat la toate calculatoarele personale, dar şi în majoritatea sistemelor mari. O primă versiune a acestui cod utiliza şapte cifre binare, deci putea reprezenta doar 128 caractere, codificate cu numere din mulţimea {0, 1, 2, …, 127}. De exemplu, codul caracterului ‘A’ este 65, iar al caracterului ‘0’ este 48. Pentru utilizarea unor simboluri suplimentare, ca de exemplu caractere specifice altor limbi sau simboluri matematice ;şi grafice, se utilizează codul **ASCII extins.** Codul **ASCII extins** utilizează opt biţi pentru codificarea caracterelor, putându-se astfel obţine un număr de 256 simboluri diferite. Un alt cod reprezentativ este **EBCDIC** - **E**xtended **B**inary **C**oded **D**ecimal **I**nterchange **C**ode, care foloseşte de asemenea o codificare pe opt biţi. În Figura 17 sunt arătate câteva valori semnificative ale caracterelor în cele două coduri: ASCII şi EBDIC Aceste coduri sunt totuşi prea mici pentru reprezentarea alfabetelor din restul lumii. A fost proiectat un alt sistem de codificare pentru a rezolva această problemă, şi anume **UNICODE.** Acesta utilizează doi octeţi (16 biţi) pentru a reprezenta un caracter. Aceasta îi dă posibilitatea de reprezentare a 216 (65 536) caractere diferite, mai mult decât destul pentru toate limbile Pământului. Totuşi, acesta prezintă un dezavantaj evident, şi anume datele de tip text ocupă de două ori mai mult spaţiu faţă de codurile precedente (ASCII şi EBDIC). Totuşi UNICODE recunoaşte caracterele ASCII, astfel încât din ce în ce mai multe sisteme de operare şi aplicaţii software includ un suport pentru UNICODE. Modul de codificare a datelor numerice şi dimensiunea zonei de memorie necesare depind de tipul acestora, adică numere naturale, întregi sau reale. Toate datele numerice sunt reprezentate în baza de numeraţie 2 în memoria calculatorului, dar datorită reprezentării pe o lungime destul de mare a
 * FIGURA 17. Character ASCII şi EBCDIC** informaţiei în baza 2, sunt foarte des utilizate alte două baze de numeraţie, şi anume baza 8 şi baza 16 sau hexazecimală.

Un număr zecimal obişnuit, familiar pentru cei mai mulţi dintre noi, constă dintr-un şir de cifre zecimale plus, eventual, un punct zecimal în notaţia anglo-saxonă. Este o scriere poziţională, în care fiecare cifră are o anumită semnificaţie, în funcţie de poziţia pe care se află. O bază **//k//** de numeraţie necesită //k// simboluri diferite, pentru reprezentarea cifrelor de la 0 la //k-1//. În baza 2 se folosesc cifrele 0 şi 1, în baza 8 se folosesc cifrele de la 0 la 7; ce se întâmplă dacă baza are o valoare mai mare decât 10, cum ar fi baza 16 corespunzătoare numerelor hexazecimale, de unde luăm 16 simboluri diferite? Prin convenţie, pe lângă cele 10 cifre cunoscute, se folosesc primele 6 litere ale alfabetului A B C D E F.

4.2. Memoria internă: RAM, ROM, cache
Memoria internă sau operativă este direct accesibilă microprocesorului prin intermediul unei magistrale, rolul ei fiind de a păstra informaţii şi date în curs de prelucrare de către microprocesor, cu care operează programul curent. Fizic este formată din circuite integrate, ele păstrând informaţii binare în celule elementare de memorie cu capacitatea de un bit. Celulele de memorie sunt grupate în locaţii. Capacitatea unei locaţii, la diverse tipuri de memorii, poate fi de 1,2,4 sau 8 celule de bit. Fiecărei locaţii îi este asociată o adresă unică. Memoriile semiconductoare sunt caracterizate prin câţiva parametrii: - geometria sau modul de organizare al memoriei: lungimea unui cuvânt memorie, aranjarea şi adresarea locaţiilor; - capacitatea memoriei, exprimată în numărul total de locaţii de memorie; - timpul de acces adică timpul după care se obţin datele la ieşirile circuitului, faţă de momentul aplicării adresei la intrare se exprimă în microsecunde sau nanosecunde; - ciclul memoriei, timpul necesar pentru scrierea sau cititrea unei locaţii de memorie, se exprimă în microsecunde sau nanosecunde; - puterea consumată se exprimă în m w-bit; - volatilitatea pierderea informaţiilor în timp; - tehnologia de realizare: bipolare sunt foarte rapide dar au o densitate mică de integrare; MOS, CMOS acestea au densitate mare de integrare, putere consumată mică dar viteză mai mică decât a celor bipolare Un circuit de memorie poate realiza următoarele tipuri de operaţii: citire, citire/scriere, programare, regenerare. În funcţie de tipul de operaţii pe care le realizează memoriile se clasifică în: Creşterea frecvenţei de lucru şi a vitezei de calcul a noilor generaţii de procesoare a impus căutarea de noi soluţii pentru reducerea timpului de acces al acestor tipuri de memorie. Memorii DRAM sincrone SDRAM (Synchronous DRAM) caracteristica cea mai importantă este regimul de lucru sincron cu semnalul de tact al procesorului. Alte caracteristici: - memoria este organizată pe blocuri care pot să lucreze paralel; - este permisă lansarea unui nou acces înainte de terminarea celui anterior; - memoria este organizată în blocuri care pot să lucreze paralel; - timpul de acces mediu este de patru ori mai mic în comparaţie cu o memorie clasică; Memoriile DDRAM (Double Data RAM) sunt tot memorii de tip SDRAM dar care folosesc pentru operaţiile de citire şi scriere ambele flancuri ale semnalului de ceas, de aici rezultând o dublare a ratei de transfer. Atât în staţiile de lucru cât şi în server sunt prezente memorii de tip DDRAM.
 * memorii ROM (Read Only Memory) –realizează numai citirea de date. Acestea pot fi scrise de către fabricant ROM propiu-zis; de către utilizator o singură dată PROM – Programmable ROM, sau de mai multe ori EPROM – Erasable PROM
 * memorii RAM (Random Access Mermory) – memorii pentru citire/scriere aleatoare. În funcţie de modul cum păstreaza informaţiile înscrise, memoriile RAM sunt de două tipuri:
 * memorie RAM statică – informaţia odată înscrisă se păstrează cât timp este menţinută tensiunea de alimentare, au viteză mare dar capacitate redusă se utilizează pentru implementarea memoriilor cache sau pentru sisteme de mică capacitate
 * memorie RAM dinamică – necesită un mecanism de reîmprospătare periodică a informaţiei, sunt memorii de capaciate mare dar de viteză medie.

4.3. Organizarea şi adresarea memoriei interne
Din punct de vedere logic, memoria poate fi privită ca o succesiune de **celule binare**//,// fiecare celulă fiind capabilă să reţină o **cifră binară** (0 sau **1**). Cantitatea de informaţie ce poate fi înregistrată într-o celulă binară se numeşte **bit** - **BI**nary digi**T,** cifră binară. Deoarece biţii singuri nu pot memora toate numerele, literele şi caracterele speciale (cum ar fi ? sau #) pe care un calculator trebuie să le prelucreze, biţii sunt grupaţi împreună într-un grup de 8 biţi, formând un **byte**. Pentru date de tip text, fiecare byte poate memora un caracter: o literă, o cifră sau un caracter special. Cantitatea de informaţie stocată într-o succesiune de 8 celule binare se numeşte **octet** - **byte.** Numărul total de **bytes** care pot fi înregistraţi în memorie reprezintă **capacitatea memoriei.** Pentru a exprima capacitatea memoriei se folosesc multipli ai //byte-ului:// Tabel nr. 1 Unităţi de măsură a volumului de memorie Principalele operaţii de lucru cu memoria sunt extragerea informaţiilor din memorie (**citire**) şi transferul informaţiilor în memorie (**scriere**)//.// Pentru unitatea de memorie realizarea acestor operaţii este necesară localizarea zonei de memorie ce conţine informaţiile (pentru citire), respectiv a zonei de memorie în care urmează a fi stocate informaţiile (pentru scriere). Localizarea unei zone de memorie se realizează prin intermediul unei **adrese**. Cea mai mică zonă de memorie adresabilă este **locaţia de memorie**, constituită din 8 celule binare consecutive.
 * **Termen** || **Abreviaţie** ||
 * Kilobyte || K (or KB)=1024bytes=210 bytes ||
 * Megabyte || MB=1024 Kb=220 bytes ||
 * Gigabyte || GB=1024 Mb=230 bytes ||
 * Terabyte || TB=1024 Gb=240 bytes ||
 * Petabyte || PB=1024 Tb=250 bytes ||

4.4. Memoria externă
Memoria externă este folosită pentru arhivarea informaţiilor în vederea unei utilizări ulterioare şi într-o mai mică măsură pentru operaţii curente. Noile sisteme de operare care folosesc conceptul de memorie virtuală tind să ştergă diferenţele, cel puţin la nivel logic dintre cele două tipuri de memorii. Memoria externă se conectează în sistemul de calcul prin intermediul unei interfeţe de intrare/ieşire. Memoria externă este realizată din dispozitive periferice specializate pe suporturi cum ar fi bandă magnetică, disc optic, disc magnetic, discul flexibil, cartele perforate, tambur magnetic etc. cu o viteză de transfer a datelor mult mai mică decât viteza de lucru a memoriei interne. Spre deosebire de memoria internă care are o capacitate dată, memoria externă este în principiu nelimitată. - cilindru şi capul de scriere/citire care împreună identifică o pistă unică; - numărul de sector unde începe informaţia; - numărul de cuvinte transferate; - adresa din memoria internă unde se află blocul de date transferate; - tipul operaţiei citire sau scriere de pe/pe disc; Hard discul este caracterizat prin câţiva parametri: - capacitatea de stocare. Dacă primele hard discuri aveau o capacitate de câţiva zeci de MB astăzi în mod curent se folosesc hard discuri cu capacităti de zeci de GB. - timpul mediu de acces este timpul în care capetele de scriere/citire ajung la o anumită pistă - viteza de rotaţie. Cele mai uzuale hard discuri au 5400 sau 7200 de rot/min - rata de transfer este cuprinsă între 20-30 MB/s la cele mai uzuale hard discuri - capacitatea de stocare. Poate înmagazina 650MB sau 700MB; - viteza de transfer a datelor; - timpul de acces. Are un timp mare situat între 200-500 ms.
 * Discurile flexibile - floppy disk. Sunt folosite în general pentru a transporta software de la un calculator la altul. Suportul informaţiei este un disc flexibil realizat din mylar şi acoperit cu un material magnetic. În timpul scrierii şi citirii, capetele se află în contact direct cu suprafaţa discului, acest lucru permite o densitate mai mare de înregistrare, dar viteze de transfer mici, fiabilitate redusă şi o viaţă de exploatare scurtă. În functie de dimensiunea lor discurile flexibile sunt întâlnite în două variante constructive: de 5.25 inch şi 3.5 inch. În sistemele actuale nu mai sunt folosite decât rar cele de 3.5 inch acestea au o capacitate de 1.44 Mb si o viteză de transfer de 500 kbps.
 * Unitatea de hard disc conţine nişte discuri din metal, rotunde, rigide, acoperite cu un material magnetic, pe una sau ambele feţe. Mai multe discuri fixate pe un ax formează o stivă de discuri. Pe fiecare disc informaţia este organizată pe un număr de cercuri concentrice numite piste. Pistele de pe toate discurile unei stive, având acelaşi diametru formează un cilindru. Datele de pe faţa unui disc sunt citite de un cap de citire/scriere care se poate deplasa radial de pe o pistă pe alta. Toate capetele de citire/scriere sunt fixate pe un cărucior care asigură deplasarea simultană a tuturor capetelor pe un acelaşi cilindru. Pistele sunt împărţite în sectoare, care reprezintă blocurile fizice în care se codifică datele. Pentru specificarea unui transfer, un program trebuie să precizeze următoarele informaţii:
 * CD-ROM (Compact Disk Read Only Memory) este un suport pe care sunt înmagazinate datele prin mijloace optice. Compact discul folosit în calculatoare conţine pe lângă înregistrările audio şi date. Discul propiu-zis are un diametru de aproximativ 5 inch cu un suport alcătuit din policarbonaţi ce este acoperit de o peliculă metalică dintr-un aliaj de aluminiu. Pelicula de aluminiu este porţiunea discului citită de CD-ROM pentru accesarea informaţiei. Această peliculă este apoi acoperită de un material plastic pentru protejarea datelor. Citirea informaţiei de pe disc este o problemă de reflectare a unei raze laser de joasă putere de către stratul de aluminiu. Un receptor deosebeşte zonele caracterizate printr-o reflectare puternică a luminii de cele în care lumina este reflectată slab sau deloc şi transmite informaţia spre microprocesor. Un CD-ROM este caracterizat prin următorii parametri:
 * DVD-ROM-ul a apărut ca o extensie a CD-ROM-ului, având aceleaşi proprietăţi, diferenţa fiind capacitatea de stocare mult mai mare a DVD-urilor (de până la 4,7 GB)


 * Memoriile Flash USB sunt uşor de folosit, mult mai rezistente decât dischetele, au viteza de transfer mare, capacitatea de stocare de până la 16 GB şi au înlocuit dischetele.

4.5. Memoria virtuală
Este o tehnică ce permite execuţia proceselor chiar dacă acestea **nu se află integral în memorie**. Un avantaj evident este deci posibilitatea rulării unui program utilizator cu dimensiune **mai mare** decât cea a memoriei fizice. Implementarea memoriei virtuale nu este o sarcină uşoară; în cazul în care nu este realizată cu mare atenţie, poate conduce la scăderea substanţială a performanţelor. Folosirea mecanismului de memorie virtuală este justificată de cerinţele reale ale activităţii de programare şi de situaţiile cele mai frecvent întâlnite în practică. De exemplu, multe dintre produsele software conţin porţiuni de cod destinate tratării unor condiţii de eroare; deoarece unele dintre acestea apar foarte rar sau chiar de loc, existenţa permanentă în memorie a codului corespunzător este rareori necesară. **Avantaje** Capacitatea de a executa un program conţinut parţial în memorie poate genera multe **avantaje**, atât pentru sistem cât şi pentru utilizator. Dispunând de o cantitate redusă de memorie fizică, utilizatorilor li se poate furniza o memorie virtuală foarte cuprinzătoare. Spaţiul de adrese logice nu mai este limitat de spaţiul de adrese fizice, simplificându-se în acest mod sarcina programatorului care se poate concentra asupra activităţii de programare, fără a mai fi obligat să ţină cont de restricţiile impuse de cantitatea de memorie fizică disponibilă. De asemenea, apare posibilitatea creşterii gradului de multiprogramare: fiecare utilizator are alocată mai puţină memorie fizică, deci se pot executa simultan mai multe programe utilizator, ceea ce înseamnă că va creşte gradul de utilizare a UC şi volumul total de lucru în sistem. În plus, deoarece pentru încărcarea sau interschimbarea (swapping) programelor utilizator în memorie sunt necesare mai puţine operaţii de I/O, viteza de execuţie a acestora va creşte.