Sunteți pe pagina 1din 40

CAPITOLUL 6 SISTEMUL DE MEMORIE

Coninut:
6.1. Organizarea ierarhic a sistemului de memorie 6.2. Caracteristici principale ale dispozitivelor de memorie 6.3. Structura si organizarea memoriilor statice cu acces aleator (SRAM) 6.4. Structura i funcionarea memoriilor dinamice cu acces aleator (DRAM) 6.4.1. Structura i modul de lucru al unei DRAM convenional 6.4.2. Moduri de lucru de mare vitez ale DRAM 6.4.3. Moduri de remprosptare 6.4.4. Exemple de circuite DRAM cu interfa asincron 6.4.5. Circuite DRAM sincrone (SDRAM) 6.5. Memoria cache 6.6. Tehnici de adresare i alocare a memoriei 6.7. Tehnici de translatare a adreselor 6.7.1. Maparea adreselor folosind pagini 6.7.2. Mapare prin segmentare 6.7.3. Mapare segmentat-paginat 6.7.4. Memoria virtual 6.7.5. Noiuni privind protecia memoriei Obiective educaionale:
a. Clasificarea tipurilor de memorie folosite n calculator i identificarea principalelor caracteristici b. Analiza modurilor specifice de funcionare ale dispozitivelor de memorie statice i dinamice c. Demonstrarea principalelor metode de alocare a spaiului de memorie, pentru asigurarea conceptelor memoriei virtuale i a proteciei informaiei

Capitolul 6

148

6.1. ORGANIZAREA IERARHIC A SISTEMULUI DE MEMORIE


Dispozitivele de memorare din cadrul unui sistem de calcul au rolul de a stoca informaia numeric (programe, date iniiale, rezultate intermediare i finale) cu posibilitatea ca informaia numeric s poat fi accesata printr-o adresa, pentru a fi citita sau scrisa. Dispozitivele de stocare a informaiei plus algoritmii de control ai memoriei (implementai fie n software fie n hardware) constituie sistemul de memorie al calculatorului. Pentru un sistem de calcul unul din scopurile principalele este prelucrarea unei cantiti ct mai mari de date n unitatea de timp (pentru a defini aceasta performanta globala de viteza a sistemului se folosete termenul "throughput" din limba englez). Pentru creterea performanelor sistemului de calcul se urmrete nu numai creterea vitezei de lucru a procesorului (UCP), dar i creterea vitezei de transfer a datelor cu sistemul de memorie, i cu celelalte echipamente de intrareieire (I/O). De obicei n cadrul calculatorului, sistemul de memorie are "onoarea" de a fi frnarul. Cantitatea maxima de date ce se pot transfera cu memoria n unitatea de timp e numita lrgime de banda a memoriei (in engleza "bandwidth"). Din punctul de vedere al procesorului, ideal ar fi ca s existe acces la o memorie unic, rapid i de dimensiuni suficient de mari pentru aplicaiile rulate. Practic ns, memoriile ce lucreaz la viteze comparabile cu cea a procesorului sunt scumpe. Nu este posibil (cu excepia calculatoarelor foarte mici) s se foloseasc o singur memorie, ce utilizeaz doar un singur tip de tehnologie. De aceea, n proiectarea i construcia unui sistem de memorie, se face un compromis, al crui obiectiv este obinerea unei viteze de acces medii ct mai mari n condiiile unui cost total minim, sau rezonabil, pentru sistemul de memorie. Datorit restriciilor impuse de costuri, gabarit i consum de putere, n condiiile n care se doresc performante ct mai bune de la sistemul de memorie se folosesc urmtoarele ci de realizare ale acestui sistem: informaia stocat este distribuit pe o varietate de dispozitive de memorie, dispozitive cu raport cost / performan i caracteristici fizice foarte diferite. De aceea ele sunt astfel organizate pentru a asigura o viteza medie ct mai mare, la un cost specific mediu ct mai mic. Dispozitivele de memorie formeaz o ierarhie de dispozitive de stocare (vezi figura 6.1). transferul de informaii ntre diferitele niveluri ale memoriei trebuie s se desfoare transparent pentru utilizator (intr n sarcina sistemului de operare). De asemenea se urmrete realizarea unor metode de alocare dinamic a spaiului disponibil de memorie, pentru o utilizare ct mai eficient. realizarea conceptelor memoriei virtuale (bazate pe metodele de alocare dinamic a spaiului de memorie principal) pentru a elibera programele utilizator de funcia administrrii spaiului de memorie i pentru a face programele relativ independente de configuraia dat a memoriei fizice. creterea lrgimii de band a sistemului de memorie i asigurarea unor mecanisme de protecie, pentru a preveni ca programele utilizator sa altereze zonele de memorie ale altor programe utilizator sau ale sistemului de operare. n ceea ce privete organizarea ierarhica a dispozitivelor de memorie, pomenit mai sus, fiecare nivel de stocare are utilizare, vitez i dimensiuni specifice. Nivelul cel mai apropiat de UCP are capacitatea de stocare cea mai mic dar viteza cea mai mare. Vom numi acest nivel "memoria local a procesorului". Ea este constituit dintr-un set de registre, integrate n UCP i este o memorie de mare vitez folosit pentru stocarea temporara a instruciunilor i datelor. UCP are acces direct la aceast memorie (nivelul 1 n figura 6.1). Noiunile privind modul de lucru al registrelor interne s-au descris n capitole anterioare i deci nu vor fi tratate n continuare. Urmtorul nivel are o capacitate relativ mare de stocare i o vitez mare, dar cu valoare mai mic dect viteza memoriei locale a UCP. Memoria de pe acest nivel este numita "memorie

Sistemul de memorie

149

principal" (dar i memorie intern, sau memorie operativ). Memoria principala este folosit pentru stocarea programelor i datelor necesare la un anumit moment de timp. Programele utilizator se ncarc (copiaz) n memoria principal doar atunci cnd se lanseaz n execuie. Memoria principal este caracterizat de faptul c locaiile sale pot fi accesate direct i rapid de setul de instruciuni al UCP. Memoria principal este realizat n tehnologie semiconductoare (circuite integrate). Ultimul nivel, cel mai ndeprtat de UCP este numit "memorie secundar" (memorie auxiliara, sau memorie extern) i are o capacitate foarte mare de stocare i o vitez mult mai redus dect memoria principal. Este folosit pentru stocarea programelor de sistem, a fiierelor de program i date i altele de acest gen, care nu sunt cerute permanent de UCP. Informaia din memoria auxiliara este accesat indirect de ctre UCP, prin intermediul sistemului de intrare - ieire (I/O), cu ajutorul cruia informaia cerut de UCP este adus mai nti n memoria principal. Tehnologii reprezentative pentru realizarea memoriei auxiliare sunt: magnetic (discuri i benzi), optic, semiconductoare. Utilizarea unei ierarhii de dispozitive de memorie este determinat de asigurarea unui compromis ntre cerinele impuse de programele rulate (capacitatea de stocare, vitez medie de transfer cu memoria, protecia informaiei) i costurile sistemului de memorie (tehnologie disponibil, pre, gabarit, algoritmi de transfer ntre diferitele niveluri ale ierarhiei de memorie).
Acces direct Acces indirect

UCP IO Registre de memorie intern UCP S c, v Memorie cache (tampon) Memorie principal

Memorie auxiliar (extern)

Figura 6.1 Evidenierea organizrii ierarhizate a memoriei ntr-un sistem de calcul: Nivelul 1 este nivelul de memorie intern UCP, iar pe nivelurile 2 i 3 se gsesc memoria principal, respectiv memoria auxiliar (extern), privit ca un echipament periferic de I/O pentru stocarea datelor. Parametrii viteza (v), cost specific (c) i capacitate de stocare (S), cresc n direciile indicate de sgeile de sub figura. Memoria cache este o memorie tampon, intermediar nivelurilor 1 i 2.

Datorit faptului c viteza de lucru a procesoarelor de uz general a crescut continuu n ultimii ani (n mod curent peste 1GHz), iar viteza dispozitivelor de memorie folosite n cadrul memoriei principale nu a crescut n aceeai msur, n multe din maini se utilizeaz un nivel intermediar de memorie (intermediar ca poziie fa de UCP, dar i ca vitez i capacitate de

Capitolul 6

150

memorare) numit memorie "cache". Aceast memorie are doar rol de memorie temporar, fiind un tampon de vitez mare ntre registrele interne ale procesorului i registrele ce constituie locaiile memoriei principale. Memoria cache conine n permanen doar copii din memoria principal ale zonelor de program i date active la un moment dat. Spre deosebire de cele trei niveluri de organizare a memoriei, memoria cache este transparent pentru programator / utilizator (nu este vazut efectiv, pentru c nu exist adrese separate pentru cache i pentru memoria principal. S-a mers chiar mai departe, nct la multe din procesoarele moderne se folosesc dou niveluri intermediare de cache, cel mai apropiat de UCP fiind mai mic i mai rapid i ncastrat n acelai circuit integrat cu UCP. Conform aceluiai principiu de compensare a diferenelor de vitez dintre niveluri, ntre memoria principal i memoria auxiliar pot aprea niveluri de memorie tampon, de asemenea transparente utilizatorului. Asemenea memorii tampon sunt specifice fiecrui dispozitiv periferic folosit ca memorie extern i se gsesc de obicei n cadrul circuitelor de control ale acestor dispozitive. Este important de observat (figura 6.1) c datorit vitezei mari de lucru a memoriei cache, este de preferat ca toate operaiile procesorului s se desfoare cu memoria cache, care permite de obicei citiri / scrieri ntr-o singur perioad de ceas. Pentru ca acest lucru s fie posibil, circuitul care controleaz memoria cache (controller de cache) trebuie s fac o anticipare a zonei din memoria principal n care se gsesc informaiile ce vor fi cerute de programul rulat de UCP. Controllerul este responsabil de copierea acestor informaii din memoria principal n memoria cache i de scrierea n memoria principal a zonelor de date ce se elimin din cache i care au fost modificate n cache. Memoria principal are un timp de acces moderat ca valoare (zeci de nanosecunde) i o capacitate de stocare mai mare de civa zeci de mega-octei. Transferul direct ntre UCP i memoria principal se face numai n cazul cnd informaia cerut nu a fost gsit n cache (evenimentul este numit ratare la acces cache1). Memoria auxiliar poate fi realizat n diferite tehnologii, avnd capaciti de stocare mari i foarte mari (peste ordinul giga-byte n prezent), iar timpul de acces depinde puternic de tipul memoriei auxiliare i de modul cum se face transferul de informaie ntre memoria auxiliar i cea principal. Legtura direct dintre cele doua niveluri de memorie, simbolizat n figura 6.1, indic un transfer prin acces direct la memorie (DMA2) ntre perifericul memorie auxiliar i memoria principal. Transferul de informaie ntre memoriile principal i auxiliar poate fi fcut ns i prin intermediul UCP, cnd UCP citete sau scrie prin program memoria auxiliar. Schimbul de informaii ntre diversele niveluri ale memoriei, trebuie s aib un caracter transparent pentru utilizator. Aceasta se realizeaz prin folosirea unor resurse hardware i a unor tehnici software pentru administrarea i alocarea spaiului memoriei (principale) cu acces direct. De obicei, la rularea unui program se folosete proprietatea numit localizarea referinelor la memorie. Pe baza acestei proprieti sistemul de memorie pstreaz cele mai recent accesate articole, pe ct posibil, n memoria cea mai rapid (care are i cea mai mic capacitate de stocare). Localizarea referinelor la memorie, observabil n majoritatea programelor, se exprim sub dou forme: localizare temporal a referinelor: dac programul face acces la o celul de memorie la momentul t, este foarte probabil ca programul s fac din nou acces la aceeai celul la momentul t + localizare spaial a referinelor: dac la momentul t programul face acces la o celul de memorie de adres X, este foarte probabil ca la momentul t + programul s fac acces la celula de adres X + .

1 2

cache mis DMA = Direct Memory Access

Sistemul de memorie

151

Pentru a folosi proprietatea referinelor localizate n timp, datele cele mai recent accesate trebuie pstrate ct mai aproape de procesor. Pentru a folosi proprietatea referinelor localizate n spaiu la transferul ntre niveluri trebuie mutate blocuri continue de date i nu cuvinte individuale. Dar organizarea ierarhic i folosirea proprietii localizrii referinelor la memorie, face ca pe diferite niveluri ierarhice s existe informaii copii ale aceluiai bloc de date, date ce pot fi modificate doar pe nivelul cel mai apropiat de UCP, sau i pe nivelurile inferioare. De aceea sistemele de memorie multi-nivel, cu posibilitatea de scriere-citire trebuie s satisfac dou proprieti privind informaia stocat: proprietatea de incluziune proprietatea de coeren

Memory Level 1 CPU

Memory Level i
Block A

Memory Level i+1


Block B

Figura 6.2. Sistemul de memorie indicat ca o succesiune de niveluri de memorie. Creterea distanei fa de UCP reprezint, n general, o cretere a timpului de acces, dar i o cretere a capacitii de stocare.

Pentru explicarea celor dou proprieti se deseneaz ierarhia de memorie ca o succesiune de niveluri de memorie (M1, M2, ..., Mn) ca n figura 6.2. Proprietatea de incluziune exprim faptul c totdeauna informaiile care se gsesc pe un anumit nivel de memorie se vor gsi i pe nivelul de memorie inferior (M1 M2 ... Mn ). Este posibil ca o informaie existent pe nivelul Mi+1 s nu se gseasc pe nivelul Mi, dar s fie accesat (cerut) pe nivelul i de memorie. n acest caz (evenimentul este numit "word miss") cuvntul necesar a fi accesat trebuie adus pe un nivel de memorie superior (de pe nivelul i+1, pe nivelul i). Proprietatea de coeren exprim faptul c informaia existent la o anumit adres n spaiul de memorie trebuie s fie aceeai, indiferent de nivelul de memorie pe care se afl. Dac un cuvnt este modificat pe nivelul i, atunci va trebui modificat i pe nivelul i+1 i pe toate nivelurile inferioare. Coerena nivelurilor de memorie se poate obine fie prin propagarea valorii modificate spre toate nivelele inferioare ("write-through"), sau prin actualizarea nivelurilor inferioare n momentul nlocuirii informaiei de pe nivelul curent ("write-back").

6.2. CARACTERISTICI PRINCIPALE ALE DISPOZITIVELOR DE MEMORIE


Dei exist o mare varietate de dispozitive de memorie, toate acestea au la baz un numr relativ mic de fenomene fizice i folosesc un numr relativ mic de principii de organizare. n continuare se vor descrie cteva caracteristici principale, comune att pentru dispozitivele de memorie ce compun memoria principal ct i pentru cele din componena memoriei auxiliare. Capacitatea de stocare a memoriei (S) reprezint numrul total de bii ce pot fi stocai ntrun dispozitiv sau circuit de memorie. Exprimarea parametrului S se face destul de rar n bii, folosindu-se multiplii de octei (vom nota bit cu b iar Byte (octet) cu B): 1 octet (Byte) are 8 bii

Capitolul 6

152

210 bii = 1 kilo-bit (kb) 210 Bytes = 1 kilo-Byte (kB) 210 kB = 220 B = 1024 kB = 1 MB 210 MB = 1024 Mb = 1 GB 1024 GB = 1 TB Pentru capacitatea de stocare exprimarea n multiplii de bii sau de octei nu ine seama de modul de organizare intern i adresare a cuvintelor dispozitivului de memorie. Timpul de acces la dispozitivul de memorie exprim un timp mediu necesar pentru a scrie sau a citi o cantitate fix de informaie din / n memorie (un cuvnt de memorie). Se calculeaz din momentul cnd dispozitivul de memorie primete o cerere de citire (scriere) pn n momentul cnd informaia este disponibil la terminalele de ieire (sau este nscris n locaia de memorie adresat). Acest timp depinde de caracteristicile fizice ale mediului de stocare i de tipul (modul) de acces folosit. Timpul de acces pentru memoriile semiconductoare moderne se exprim n nanosecunde. Dintre tehnologiile semiconductoare de realizare, cele mai rapide sunt memoriile bipolare, dar pe de alta parte ele au un grad mai mic de integrare dect cele unipolare (CMOS sau celule dinamice) i consum putere mai mare de la sursa de alimentare. Inversul timpului de acces (tA) este numit vitez de acces (bA) la dispozitivul de memorie: 1 bA = (6.1) tA Timpul mediu de acces este o caracteristic a dispozitivului de memorie indiferent de viteza cu care lucreaz procesorul. Modul de acces (sau tipul de acces) spune modul n care se acceseaz informaia dintr-un anumit dispozitiv de memorie. Modul de acces depinde n primul rnd de tehnologia de realizare a dispozitivului de memorie i de principiul constructiv adoptat. Accesul la celulele individuale de stocare se poate face fie ntr-o anumit ordine (acces poziional, sau serial), fie aleator (acces aleator). Accesul aleator este independent de poziia informaiei n cadrul dispozitivului de memorare. La memoriile cu acces serial (band magnetic, CD-ROM) scrierea sau citirea locaiilor de stocare se face n intervale diferite de timp, timpul de acces depinznd de poziia n care se gsete informaia pe suportul fizic. Accesarea unei anumite locaii presupune micarea mecanic a unui cap de citire / scriere i / sau a suportului de stocare. Memoriile cu acces aleator sunt memoriile semiconductoare, la care accesarea oricrei locaii de memorie (de la oricare adresa) se face n acelai interval de timp. Scrierea sau citirea informaiei se face direct la locaia adresat fr parcurgerea unei secvene de adrese. Timp de ciclu i vitez de transfer a datelor. La memoriile cu citire distructiv (prin operaia de citire informaia stocat se pierde i trebuie refcut) i la memoriile dinamice, nu este posibil s se nceap un nou ciclu de acces la memorie pn cnd nu s-a efectuat o restaurare a informaiei sau o remprosptare a acesteia. Ca urmare, intervalul minim de timp ce se scurge ntre iniierea a dou accesri pentru transferul succesiv la / de la acelai dispozitiv de memorie, este mai mare dect timpul de acces; vom numi acest interval, timp de ciclu ( tM ) al dispozitivului de memorie. Inversul acestui interval de timp exprim cantitatea maxim de informaie ce poate fi transferat la sau de la memorie n fiecare secund: 1 bM = [cuvinte/sec] (6.2) tM unde bM este numit vitez de transfer a datelor, sau lrgime de band ("bandwidth"). Un factor care limiteaz viteza de transfer a datelor este limea magistralei de date pentru lucrul cu memoria, notat w. Valoarea lui w, indic numrul de bii ce pot fi transferai n paralel pe magistrala de date /

Sistemul de memorie

153

instruciuni. Aceast valoare, numit uneori cuvnt calculator, este specific fiecrui procesor i este, n general, un multiplu de octet. Ca urmare viteza de transfer poate fi exprimat i ca: w bM = [bii/sec] (6.3) tM Atunci cnd tM este diferit de tA se folosesc amindou mrimile caracteristice pentru a msura viteza memoriei. Din punctul de vedere al cuplrii memoriei la UCP timpul de acces (tA) este deosebit de important pentru c arat timpul ct procesorul trebuie s atepte dup iniierea unui acces la memorie. Timpul de ciclu al memoriei este definit ca timpul minim ce trebuie alocat ntre iniierea a doua operaii succesive cu acelai dispozitiv de memorie (scriere sau citire). Timpul de ciclu pentru un dispozitiv de memorie, poate s fie diferit, n funcie de operaiile de scriere sau citire. Pentru memoriile semiconductoare statice (bipolare sau CMOS) cele dou intervale de timp sunt foarte apropiate. Cel mai des ns tM > tA pentru alte tipuri de memorie, cum ar fi cele semiconductoare de tip RAM dinamic (DRAM), din cauza naturii distructive a operaiei de citire i a necesitii remprosptrii ulterioare a informaiei stocate. Desfurarea n timp a operaiilor unui ciclu de lucru cu memoria poate fi descris prin figura 6.3.
Timp de ciclu al memoriei Timp de acces

Timp de cutare

Timp de transfer

Timp de ateptare

Timp

t1 t2 t3 t4 Figura 6.3. Explicativ la desfurarea n timp a operaiilor de acces la un dispozitiv de memorie.

n figura 6.3. s-au notat momentele de timp semnificative ale unui ciclu de acces la memorie. Astfel la momentul t1 se face referirea la memorie (prin adres i semnale de control selecie). La momentul t2 locaia adresat a fost gsit. La momentul t3 informaia adresat este complet transferat (scriere sau citire), iar la momentul t4 este permis o nou referire la acelai dispozitiv (circuit) de memorie.
Costul dispozitivului de memorie nu cuprinde de obicei doar costul celulelor de stocare ci i pe cel al echipamentelor periferice sau circuitelor de acces necesare n funcionarea memoriei. Se exprim de obicei global, pe niveluri de memorie, sau pentru ntreaga memorie a unui calculator, n uniti specifice, (cost/bit). Valoarea specific se obine prin mprirea costului total al blocului, sau sistemului de memorie la capacitatea total de stocare. Exist o contradicie ntre viteza memoriei i costul pe bit: costul specific al memoriei scade pe msur ce crete timpul de acces (scade viteza de acces) la memorie i, de fapt, aceast relaie constituie fundamentul tehnicoeconomic al realizrii memoriei sub form de mai multe niveluri ierarhice. Puterea consumat se exprim de obicei ca putere consumat raportat la un bit de informaie, obinndu-se prin mprirea puterii totale consumate de memorie la capacitatea de stocare.

Capitolul 6

154

p=

Ptot S

[W/bit]

(6.4)

Geometria sau modul de organizare al memoriei este exprimat sub forma M N, unde M reprezint numrul de cuvinte posibil de memorat, iar N dimensiunea cuvntului, n bii. Caracteristica numit geometrie este folosit doar pentru dispozitive de memorie din memoria principal. Este o caracteristic important din punctul de vedere al accesrii informaiei din memoria principal, pentru c indic cantitatea minim de informaie adresabil. Dac memoria este organizat pe octet, atunci N = 8 i fiecrui octet i se aloc o adres specific, chiar dac magistrala de date este de 32 sau de 64 de bii. Alterabilitate. Este caracteristica care se refer la posibilitatea modificrii, de ctre procesor (on-line) a informaiei nscrise ntr-un dispozitiv de memorie. La circuitele semiconductoare ROM, metoda utilizat pentru scrierea informaiei n memorie este ireversibila; nu mai poate fi modificat n timpul funcionrii memoriei. La PROM-urile semiconductoare schimbarea, (PROM i EPROM) schimbarea coninutului se poate face off-line prin programarea memoriilor cu ajutorul unui circuit programator. Toate aceste circuite sunt incluse n categoria celor ne-alterabile. Dispozitivele de memorie alterabile sunt cele la care coninutul poate fi modificat de ctre UCP n timpul rulrii programelor. Ca exemple putem specifica dispozitivele RAM statice i dinamice, discul magnetic, banda magnetic etc. Permanenta stocrii. Procesul fizic folosit pentru stocarea informaiei este uneori instabil, astfel c informaia s-ar pierde dup un timp dac nu se iau msuri de restaurare. Exist trei evenimente care pot duce la pierderea informaiei stocate: citire distructiv stocare dinamic volatilitatea Citirea distructiv se refer la faptul c dac o celul de memorie este citit, informaia din celul este alterat i ea trebuie restaurat imediat dup citire. Citirea distructiv se datoreaz n primul rnd fenomenului fizic folosit pentru stocarea informaiei i apoi structurii hardware a celulei. Exemple de celule la care citirea este distructiva: celule dinamice cu un singur tranzistor unipolar de acces i celule pe baz de ferit. Citirea trebuie urmat obligatoriu de operaia de scriere, pentru restaurarea informaiei. Operaia este efectuat de ctre circuite specifice dispozitivului de memorie i nu intr de obicei n sarcina UCP. Stocarea dinamic a informaiei se refer la stocarea n celule ce folosesc capacitoare MOS. Aceste capacitoare se descarc n timp, i dac informaia coninut nu este remprosptat dinamic (condensatoarele re-ncrcate), la intervale pre-stabilite informaia se pierde. Memoriile volatile sunt cele care pierd informaia la pierderea tensiunii de alimentare. ncadrm aici toate memoriile RAM semiconductoare, indiferent c sunt dinamice sau statice. Ca exemple de memorii nevolatile: ROM, PROM, EPROM, EEPROM, disc, band etc.

6.3. STRUCTURA SI ORGANIZAREA MEMORIILOR STATICE CU ACCES ALEATOR (SRAM)


Memoriile cu acces aleator sunt caracterizate prin faptul c fiecare locaie poate fi accesat independent, timpul de acces pentru oricare locaie fiind acelai - independent de poziia locaiei. Fiecare celul conine linii de date (citire sau scriere - numite linii de bit la majoritatea celulelor bipolare sau unipolare) i linii de selecie. n acest paragraf ne ocupm de memoriile cu acces aleator de tip citete / scrie, notate cu sigla RAM = Random-Access Memory, la care celulele de memorie sunt bistabile ce pstreaz

Sistemul de memorie

155

informaia pe toat durata alimentrii cu energie. Dispozitivele interne RAM necesare pentru decodificarea cuvntului de adres, pentru comanda semnalelor de selecie a celulelor, pentru circuitele de citire sau scriere a informaiei i circuitele de control intern sunt numite circuite de acces la unitatea de memorie.
Locaii de stocare

Magistral adrese

a DCD

Comenzi interne w Circuite de control i temporizare

Amplificatoare de intrare-ieire

CS

R/W

OE

Magistral date

Figura 6.4. Schem bloc pentru memorie RAM static cu adresare uni-dimensional a locaiilor de memorie

Modul de organizare al circuitelor de acces au un efect important asupra costului total al circuitului de memorie. Dac un singur circuit decodificator (DCD) selecteaz fiecare locaie de memorie (n care se gsete o celul de un bit sau un registru de w bii) avem de-a face cu o schem de adresare unidimensional (d=1) a locaiilor de memorie. (figura 6.4). Pentru fiecare adres cu lungimea de a bii la intrarea circuitului de memorie, decodificatorul activeaz una din cele N ( = 2a) linii de ieire care selecteaz o locaie (celul sau cuvnt de w bii) de memorie, pentru citire sau scriere. Semnalele de control din figur au semnificatiile urmtoare: CS = chip select - selecie circuit. Semnalul este activ n nivel jos (0 logic) R / W = read/write, scrierea fcndu-se pe nivel 0 logic, iar citirea pe nivel 1 OE = output enable - validarea ieirilor dispozitivului de memorie. Daca OE =0 atunci amplificatoarele de ieire sunt deschise. Altefel amplificatoarele de ieire ele sunt n stare de nalt impedan (HiZ), pentru a permite cuplarea mai multor ieiri la aceeai magistral comun de date. La multe din circuitele integrate SRAM intrarea de control OE lipsete funcia sa fiind preluat de CS care pe lng funcia de selecie a circuitului are i sarcina controlului circuitelor de ieire, eventual n combinaie cu semnalul de citire / scriere. De exemplu pentru o memorie cu organizarea 8K 8 bii cu o astfel de organizare a circuitelor de selecie, a=13, N = 213 , w = 8. ntotdeauna este ns mai avantajoas o organizare bidimensional (d=2) a selecviei circuitului de memorie, prin mprirea cmpului de adrese n dou pri (ax bii pentru linii si ay linii pentru coloane) i implicit mprirea decodificatorului n dou blocuri: decodificator de linii

Capitolul 6

156

(decodificator X) i decodificator de coloane (decodificator Y), ca n figura 6.5.

ax

DCD adrese X

Matrice de memorie

Nx

Adres

Ny
DCD adrese Y

ay

Figura 6.5. Schem bloc care indic selecia bidimensional a matricei de celule de memorie

Celulele de memorie din figura 6.5 sunt selectabile individual, prin adresa de linii i adresa de coloane. Numrul total de celule este N = N x N y , unde de obicei N x = 2 a x iar N y = 2 y . Acest mod de selecie necesit circuite de acces mult mai simple (de unde reyult i costuri mai reduse) dect n cazul d=1. De exemplu, pentru a compara cele dou moduri de selecie, dac N x = N y = N , numrul de dispozitive ce comand direct liniile de selecie ale matricei de
a

memorie este 2 N n loc de N ieiri ca la d=1. Pentru N>>4 diferena este semnificativ. n plus organizarea bidimensional este adecvat si cu structura bidimensional a suprafeei chip-ului de siliciu folosit de tehnologia de realizare a circuitului integrat (CI). Aceste avantaje se diminueaz, sau chiar dispar pentru dimensiuni d mai mari dect 2. De aceea organizri cu d>2 sunt rar utilizate. Bineneles c n figura 6.5, celulele adresate pot fi nlocuite cu registre de w bii selectate de aceleai semnale. Rezult astfel un SRAM organizat pe cuvnt. Considernd acelai exemplu numeric ca i la selecia unidimensional (8K cuvinte de 8 bii) structura de principiu a memoriei ar fi cea din figura 6.6, n care se observ introducerea a 8 matrice de memorie selectabile la nivel de celul (bit) extinse n "adncime". Aceleai decodificatoare fac selecia pentru toate cele 8 planuri, dar sunt necesare 8 amplificatoare de citire / scriere (nefigurate). Structura bloc din figura 6.6. pune ns probleme de implementare, din cauza planurilor suprapuse de celule de memorie. De aceea se ncearc construirea unui astfel de circuit de memorie n aa fel nct matricea de memorie s aib aproximativ acelai numr de linii cu numrul de coloane (matrice ptrat), iar celulele s fire construite n acelai plan al circuitului integrat. Varianta corect din punctul de vedere al implementrii, pentru exemplul memoriei cu 8k cuvinte fiecare de cte 8 bii se indic n figura 6.7.

Sistemul de memorie

157

8 8K celule

3 8K celule 2 8K celule 1 8K celule 128 64 64

128 7 ADRES DCD X

DCD Y 6

Figura 6.6. Schem bloc de principiu pentru o memorie SRAM cu capacitatea 8k 8 bii i selecie bidimensional.

DCD X

256 Matrice de Memorie 256 256 celule

ADRES

32 5 MDX 0 d0

32

32

MDX 0 d1 Amplificatoare de citire/scriere 8

MDX 0 d7

La magistrala de date

Figura 6.7. Exemplu de memorie RAM static cu dimensiunea de 8k 8 i selecie bidimensional a matricei de memorie.

Capitolul 6

158

Selecia este bidimensional, iar n locul decodificatorului de coloane s-au introdus circuite multiplexor / demultiplexor (MDX). Structura unui asemenea circuit poate fi gsit n [Stefan93]. Circuitul MDX conine un decodificator, iar la ieirea sa se comand pori de transfer de tip MOS. Atunci cnd se face citire funcionarea circuituitului este cea specific demultiplexorului, iar cnd se face scriere funcionarea este de multiplexor. Conform caracteristicilor prezentate n paragraful anterior, fiecrui dispozitiv de memorie care lucreaz cu procesorul i se impun anumite condiii i restricii de timp. Acestea sunt descrise de obicei prin diagrame de semnale n timp, pe baza unor cicluri caracteristice de funcionare ale dispozitivelor de memorie. Pentru o memorie static cu acces aleator ciclurile caracteristice de funcionare pot fi doar cele de citire i de scriere. n figura 6.8.a se prezint un ciclu tipic de citire, iar n figura 6.8.b un ciclu tipic de scriere.
tCR

ADR

ADRES

CS

R /W
Ieiri date
HiZ

tAC
HiZ
DATE VALIDE

tAA

Figura 6.8.a. Exemplu de ciclu de citire la SRAM

tCW

ADR

CS
tW

R /W
Magistral date

tAW

tDW

tDS

tDH

Figura 6.8.b. Exemplu de ciclu de scriere la SRAM

Sistemul de memorie

159

n cele dou figuri s-au notat intervalele de timp importante, cu urmtoarea semnificaie: tCR = durata ciclului de citire (se impune ca timp minim pentru funcionarea corect a memoriei) tAA = timp de acces de la activarea adreselor (se garanteaz ca o valoare maxim ce se poate obine) tAC = timp de acces de la activarea semnalului CS (se garanteaz ca o valoare maxim ce se poate obine) tHD = timp de meninere a datelor (valoare minim impus) tCW = durata ciclului de scriere (se impune ca timp minim pentru funcionarea corect a memoriei) tW = durata semnalului de comand de scriere (write - este valoare minim n catalog) tDS = timp de prestabilire date (valoare minim impus) tDH = timp de meninere a datelor (valoare minim impus) tDW = ntrzierea validrii datelor la intrare tAW = ntrziere ntre stabilirea adreselor i semnal de control de scriere Toate restriciile de timp se indic n foile de catalog ale dispozitivelor de memorie i ele trebuie privite ca limitri n viteza cu care se desfoar comunicaia dintre UCP i respectivul dispozitiv. n general valorile de catalog ale acestor timpi trebuiesc considerate ca valori minime, sub care nu este bine sa se scad. Acestea limiteaz frecvena maxim a operaiilor efectuate de UCP cu memoria. De asemenea n cazul valorilor timpilor de acces este bine s se considere valorile maxime date n catalog ca valori dup care UCP este sigur c datele au fost citite (de pe magistrala de date) sau nscrise n memorie. De aici rezult uneori necesitatea unor mecanisme de sincronizare (de tip READY) ale UCP cu dispozitivele de memorie. n figura 6.8.a s-au reprezentat terminalele de ieire ale dispozitivului de memorie, terminale ce se cupleaz la magistrala de date. Ele se gsesc n stare de nalt impedan pn n momentul cnd s-a scurs timpul de acces i atunci cnd dispozitivul de memorie este neselectat. Pentru ciclul de scriere din figura 6.8.b zona haurat a magistralei de date reprezint valori neimportante pentru ciclul de scriere. Poriunea ne-haurat reprezint datele stabile puse de microprocesor pe magistrala de date, pentru a putea fi scrise corect n dispozitivul de memorie.
6.4. STRUCTURA I FUNCIONAREA MEMORIILOR DINAMICE CU ACCES ALEATOR (DRAM)

Acest tip de memorii se numesc "dinamice" datorit principiul de lucru al celulelor interne. n fiecare celul se reine informaia sub form de sarcin electric ntr-un capacitor MOS3. Indiferent de tehnologia de realizare sarcina electric dintr-un capacitor se descarc lent. n cazul memoriei, pierderea sarcinii, nseamn pierderea informaiei - circuitul "uit" informaia stocat. Pentru a preveni acest fenomen, din timp n timp, informaia trebuie remprosptat, adic condensatoarele trebuie rencrcate cu informaia stocat anterior. Aceasta nseamn c informaia poate fi pstrat doar printr-o funcionare dinamic, ce presupune ncrcarea periodic a condensatoarelor interne. Dispozitivele DRAM4 sunt n prezent cele folosite dispozitive pentru construirea memoriei principale a calculatoarelor de uz general, pentru c ele prezint cea mai mare densitate de integrare dintre tehnologiile adecvate memoriei principale i totodat prezint cel mai mic cost pe bit.
3 4

MOS = Metal Oxid Semiconductor, tehnologie de realizare a dispozitivelor semiconductoare unipolare DRAM = Dynamic Random Access Memory

Capitolul 6

160

6.4.1. Structura i modul de lucru al unei DRAM convenional


Dispozitivele DRAM convenionale au urmtoarele caracteristici structurale i funcionale: Matricea de memorie este ptrat (m m; iar m = 2n) Se folosete o schem de adresare bidimensional n care sarcinile de selecie ale matricei de memorie sunt mprite ntre un decodificator de linii i unul de coloane. Se folosete multiplexarea biilor pentru adresele de linie i adresele de coloan. Adresa furnizat dispozitivului de memorie se face printr-un numr de linii egal cu jumtate din numrul total de bii de adres (de exemplu pentru 222 celule = 4 Mbit cu matrice de 2048 x 2048 celule, numrul de pini de adres este 11 i nu 22). Principalul avantaj l reprezint un numr mai mic de pini la capsul, deci un gabarit mai redus al circuitului. Gabaritul mai mic se refer nu doar la numrul de terminale ci i la circuitele tampon - interfa cu exteriorul necesare pentru fiecare pin. au o interfa asincron cu exteriorul (n particular cu procesorul) operaiile fiind comandate, nu de un semnal de ceas ci, prin semnale la care se impun durate i ntrzieri minime ntre fronturi, n aa fel nct operaiile s se desfoare corect.

Structura bloc a unui circuit DRAM convenional este prezentat n figura 6.9. Amplificatoarele senzor din figur sunt circuite care genereaz nivel logic 0 sau 1 pornind de la tensiunea de pe condensatorul - celul selectat. De cte ori se selecteaz o linie, acelai circuit amplificator face i renscrierea tuturor condensatoarelor de pe linia respectiv.
RAS

a 2

Registru adres linie

Matrice de Memorie DCD linii

2 *2

a 2

a 2

a 2

Dout
Buffer I/O

Circuit control refresh (contor, timer, arbitru)

Amplificatoare senzor i pori transfer I/O DCD Coloane

Din

a 2

Registru adres coloan

RAS

CAS

Alte comenzi interne

Ready CAS

Circuit de Control

CAS

RAS

WE

OE

Figura 6.9. Structura bloc a unui circuit DRAM convenional i semnalele tipice de interfaare cu procesorul

Structura format din decodificatorul (DCD) de coloane i porile de transfer de I/O

Sistemul de memorie

161

funcioneaz ca o structur de demultiplexare / multiplexare similar blocului MDX pomenit la memoriile SRAM. Pe structura din figura 6.9. s-a presupus c circuitul de control al operaiei de remprosptare se gsete pe acelai circuit cu memoria dinamic, dei la primele memorii DRAM aceste circuite de control erau externe. Atunci cnd se dorete accesul la o locaie de memorie, adresele se introduc n ordinea: 1. adresa de linie, validat de semnalul RAS (row address strobe), care produce memorarea acestei adrese n registrul de adres linie, intern circuitului de memorie, iar apoi 2. adresa de coloan, validat de semnalul CAS (column address strobe), care produce memorarea acestei adrese n registrul de adrese coloane. Semnalul CAS mai este folosit de logica de control intern circuitului pentru a controla tampoanele de ieire ale memoriei. n cazul n care CAS nu a trecut n zero pentru a valida adresa de coloan, tampoanele de ieire rmn n stare de nalt impedan (HiZ). Lungimea semnalelor RAS i CAS ca i ntrzierea dintre ele trebuie s satisfac cerinele de catalog pentru fiecare tip de circuit DRAM. Celula adresat furnizeaz data stocat prin amplificatorul senzor (care realizeaz niveluri logice de tensiune la ieirea sa) ctre tamponul de ieire date, via o poart de I/O. Daca se dorete scriere, se activeaz WE iar datele se furnizeaz pe la intrrile Din. Informaia este preluat de poarta I/O, amplificat de amplificatoarele senzor i nscris n celula adresat.

Circuitele de control ale memoriei principale construite cu DRAM au trei sarcini principale:
separarea adreselor de la UCP n adrese de linii i adrese de coloan; activarea corect a semnalelor RAS , CAS , WE transmisia i recepia datelor citite sau scrise generarea semnalelor de control pentru remprosptare (la unele memorii trebuie generate din exterior i adresele de remprosptare) Noile concepte ale DRAM moderne cum sunt modul de lucru prin ntreesere i modul pagin, creeaz sarcini suplimentare pentru circuitul care controleaz DRAM. De aceea controllerul extern de memorie reprezint o parte extrem de important a calculatorului. n ceea ce privete semnalele furnizate DRAM (figura 6.10), adresele de linii i coloane trebuie s fie stabile nainte (timp de pre-stabilire5) i dup apariia frontului descresctor al RAS respectiv CAS (timp de meninere6). n mod normal selecia celulei pentru citire sau scriere nu mai are loc dac succesiunea RAS - CAS nu s-a produs (Exist ns situaii cnd aceast ordine este nclcat, la memoriile moderne unde remprosptarea se face cu activare CAS nainte RAS ). Mai specificm pe scurt cteva caracteristici pentru semnalele de control i temporizrile la DRAM convenionale: WE = 0 comand scriere, iar WE = 1 citire. Dac WE trece n zero naintea lui CAS (ciclu de scriere n avans) ieirile de date rmn n HiZ de-a lungul ntregului ciclu de scriere. Dac ns WE trece n zero dup CAS (ciclu de scriere - citire) dup operaia de scriere datele apar i la ieirile de date ale circuitului. La scriere, ultimul dintre semnalele CAS i WE (fronturi cztoare) capteaz datele pentru scriere n celul. Semnalul RAS mai contribuie la activarea decodificatorului de linii i a circuitelor de remprospatare.
5 6

setup time = timp de prestabilire hold time = timp de meninere

Capitolul 6

162

CAS face selecia circuitului (activeaz decodificatorul de coloan i tampoanele de I/O). Ct timp CAS = 1 ieirile de date sunt n HiZ. n cazul n care memoria are i semnal de intrare de tip OE (validare ieire - Output Enable) funciile semnalului CAS asupra circuitelor tampon de ieire sunt preluate de semnalul OE suplimentar. Intervalele de timp trecute n figura 6.10 se refer la: - tRAC = timp de acces fa de RAS; timpul minim de la activarea (cdere n 0) a liniei RAS pn la apariia datelor valide la ieire. Adesea este valoarea nscris pe dispozitivul DRAM (de exemplu tRAC = 60 ns) - tRC = timp de ciclu la operaia de citire; timp minim ntre nceperea unui acces la o linie i nceputul urmtorului ciclu de acces. - tCAC = timp de acces fa de CAS; timpul minim de la activarea (cdere n 0) a liniei CAS pn la apariia datelor valide la ieire. Pentru o memorie cu tRAC = 60 ns tCAC este de aproximativ 15 ns. - tPC = intervalul de timp minim ntre dou accesri succesive la adrese de coloan. Pentru o memorie cu tRAC = 60 ns tPC este de aproximativ 35 ns.
tRC
RAS CAS

ADR

L HiZ

L HiZ Date

L HiZ Date

Ieire DATE

Date

tCAC tRAC

Figura 6.10. Cicluri de acces pentru citire la DRAM convenional. Pe formele de und ce simbolizeaz magistrala de adrese s-a notat cu L adresa de Linie i cu C adresa de Coloan.

6.4.2. Moduri de lucru de mare vitez ale DRAM


n plus fa de modul convenional de funcionare, descris mai sus, la care adresele de linii i coloane sunt furnizate pentru fiecare ciclu de acces s-au realizat i alte moduri de acces la coloane, pentru a reduce timpul mediu de acces la memoria DRAM.
Mod Pagin

Principiul de lucru n modul pagin consider c pagina corespunde unei adrese de linie i toate adresele de coloan, cu aceeai adres de linie se gsesc n aceeai pagin. n mod pagin controllerul de memorie schimb n mod repetat doar adresa de coloan. De aceea o pagin este echivalent unei linii din matricea de celule de memorie.

Sistemul de memorie

163

RAS

CAS

ADR

L HiZ

Ieire DATE

Date

Date

Date

Date

Figura 6.11. Cicluri de acces la DRAM n mod pagin

De exemplu, pentru un DRAM 4 Mbit (cu matrice 1024 linii x 4096 coloane; 1M x 4) o pagin are 1024 locaii (a cte 4 bii). La citire, sau scriere, RAS rmne activat, iar CAS se activeaz de mai multe ori, pentru a valida adrese din aceeai pagin. Toate tranzistoarele de acces ale liniei selectate (prin adresa de linie unic paginii) de ctre decodificatorul de linii, rmn deschise. Toate datele citite de la liniile de bit sunt meninute ntr-o stare stabil de ctre amplificatoarele senzor. Decodificatorul de coloane va decodifica noua adres de coloan i va deschide porile de transfer corespunztoare. Se observ c n modul pagin, timpul necesar pentru ncrcarea adresei de linie i timpul de transfer i decodificare a adresei de linie nu se mai adaug la timpul de acces, ncepnd cu cel de-al doilea acces pe aceeai linie. Dup iniializarea adresei de linie (pagin) se transfer i se decodific doar adresa de coloan. Astfel c, n comparaie cu modul standard de acces, timpul de acces este redus cu aproximativ 50% iar timpul de ciclu cu aproximativ 70%. Durata activa a lui RAS nu poate fi ns foarte mare din motive de stabilitate. Tipic, se pot executa aproximativ 200 de accesri succesive ntr-o pagin naintea necesitii ca dispozitivul de control a memoriei s dezactiveze semnalul RAS pentru un interval de un ciclu. Procedurile de scriere i citire pot fi mixate n mod pagin, fr a fi nevoie s se prseasc acest mod cnd se comut de la scriere la citire sau invers.
Mod coloan static ("static column mode")

Este asemntor modului pagin (vezi figura 6.12). La modul coloan static semnalul CAS nu mai comut pentru fiecare adres nou de coloan, ci rmne stabil la nivel jos. Dup un scurt timp de rspuns circuitul controller DRAM intern recunoate c adresa de coloan furnizat s-a modificat. Spre deosebire de modul pagin se economisete timpul suplimentar pentru comutarea CAS i timpul de rspuns, deci acest mod este mai rapid dect anteriorul. Nici la acest mod de lucru nu este permis ca RAS i CAS sa rmn n stare activ (nivel jos) pentru o perioad foarte lung de timp. Prin logic intern pe chip se face deschiderea (ctre tamponul I/O) doar a porilor ce corespund noii adrese de coloan.

Capitolul 6

164

RAS

CAS

ADR

Ieire DATE

Date

Date

Date

Date

Date

Date

Figura 6.12. Cicluri de acces la DRAM n mod coloan static

Mod tetrad ("nibble mode, rafale mici, serial4)

Este un mod rafal simplu, prin care 4 bii de date dintr-o linie i de la patru adrese succesive de coloan, sunt transmii secvenial spre exterior (un nibble este echivalent cu jumtate de octet) prin comutarea lui CAS care e repetat de 4 ori. Prima dat accesat este determinat de adresa de coloan furnizat circuitului, iar urmtoarele trei sunt de la adresele succesive de coloan.

RAS

CAS

ADR

L HiZ

Ieire DATE

Date

Date

Date

Date

Figura 6.13. Cicluri de acces la DRAM n mod nibble

n mod nibble DRAM are intern (pe chip) un tampon intermediar de 4 bii, care recepioneaz simultan cei 4 bii succesivi de date i i scrie apoi unul dup altul la tamponul de iesire, sincronizat cu semnalul de CAS . Operaia de transfer se efectueaz foarte rapid, pentru c toi cei 4 bii adresai (unul explicit i 3 implicit) au fost deja transferai ctre tamponul (buffer-ul) intermediar.
Modul rafal - burst (sau mod serial)

Poate fi privit ca o extindere (o versiune extins) a modului nibble. i aici, biii de pe o linie adresat sunt furnizai sincronizat cu CAS . Diferena fa de modul nibble este c numrul de

Sistemul de memorie

165

comutri a lui CAS nu mai este limitat la 4. n principiu, se poate accesa pe chip o ntreag linie de date succesive - n rafal. n acest caz organizarea intern a chip-ului joac un rol foarte important, pentru c la un chip de 4 Mbit linia poate avea de exemplu 1024, 2048 sau 4096 coloane.
RAS

CAS

ADR

L HiZ

Ieire DATE

Date

Date

Date

Date

Date

Figura 6.14. Cicluri de acces la DRAM n mod burst

Adresele de linie i coloan furnizate identific doar adresa de start a accesului. Circuitele interne DRAM incrementeaz adresa de coloan independent. Modul rafal (serial) este avantajos pentru citirea memoriei video sau pentru umplerea unei linii de cache, pentru c accesrile de citire pentru un controller CRT sau pentru un controller de cache sunt n mod natural seriale pe numr mare de bii.

6.4.3. Moduri de remprosptare


Nu exist capacitor perfect, nici chiar n chip-ul DRAM. Descrcarea se face n timp, prin tranzistorul de acces sau prin dielectricul condensatorului. n funcie de tipul constructiv dispozitivele DRAM obinuite trebuie s fie remprosptate la fiecare 4-16 ms. Formele de remprosptare folosite sunt: 1. remprosptare numai cu RAS ("ras only refresh") 2. remprosptare cu CAS naintea lui RAS ("CAS-before-RAS refresh") 3. remprosptare ascuns ("hidden refresh")
Remprosptare numai cu RAS
Ciclu remprosptare Ciclu remprosptare

RAS 1

CAS

ADR

Refresh

Refresh

Figura 6.15. Remprosptare prin ciclu fictiv de citire (numai cu RAS)

Capitolul 6

166

Remprosptare cu CAS naintea lui RAS Este modul clasic de remprosptare. Pentru efectuarea operaiei se execut un ciclu fictiv de citire, iar odat cu semnalul RAS se furnizeaz adresa de linie de remprosptare. CAS rmne inactiv aa cum se indic n figura 6.15. Dezavantajul acestui mod simplu de remprosptare este dat de circuitele externe suplimentare necesare pentru generarea adreselor i semnalelor de remprosptare. De exemplu, la PC-urile cu DRAM canalul 0 al chip-ului DMA din PC este activat de contorul 1 al chip-ului timer 8253/8254 pentru a se emite un ciclu fictiv de transfer. Cele mai multe chip-uri DRAM moderne au acces la unul sau mai multe moduri de remprosptare interne. Cea mai important este aa numita remprosptare cu CAS nainte de RAS (figura 6.16). Pentru asta pe chip-ul DRAM se implementeaz o logic de remprosptare individual ce are i contor de adrese. n cazul folosirii acestui mod de remprosptare, controllerul extern de memorie menine semnalul CAS la nivel jos pentru o perioad predeterminat de timp nainte ca RAS s treac la nivel jos. Logica intern de remprosptare se activeaz la sesizarea acestei tranziii i produce o remprosptare intern automat. Adresa de remprosptare este produs intern de un contor de adres din logica de remprosptare. Dup fiecare ciclu CAS-beforeRAS, contorul intern de adresa este incrementat. n acest mod de remprosptare declanarea procesului de remprosptare se face de ctre controllerul extern de memorie, dar remprosptarea se produce intern n chip-ul DRAM.
Ciclu remprosptare

RAS

CAS

Figura 6.16. Remprosptare prin activarea CAS naintea lui RAS

Remprosptare ascuns

Este de asemenea o metoda elegant, care economisete timpul de lucru cu DRAM (figura 6.17). Aici ciclul de remprosptare se produce ascuns n spatele unui ciclu de acces de citire normal. Cnd se face aceast remprosptare, semnalul CAS e meninut jos, iar RAS este comutat. Datele citite n timpul ciclului vor fi prezente n continuare la ieirea circuitului, chiar i n timpul remprosptrii. Ca durat, un ciclu de remprosptare este mai scurt dect un ciclu de citire i de aceea acest mod de remprosptare economisete timpul. i aici exist un contor de adrese de remprosptare intern n DRAM. Dac semnalul CAS este meninut jos un timp suficient de lung, pot fi efectuate mai multe cicluri de remprosptare, unul dup altul, prin comutarea lui RAS .

Sistemul de memorie

167

Ciclu de citire (READ)

Ciclu remprosptare
RAS

CAS

ADR

L HiZ

Ieire DATE

Date valide

Figura 6.17. Remprosptare ascuns n cadrul unui ciclu de citire

6.4.4. Exemple de circuite DRAM cu interfa asincron


Primele aprute au fost circuitele care lucrau n mod pagin (FPM - "fast page mode"). Funcioneaz dup modul pagin descris mai sus. Au n plus fa de circuitele DRAM convenionale o intrare de validare a tampoanelor de ieire ( OE ). La un ciclu de citire, tampoanele de ieire a datelor se blocheaz (trec n HiZ) dup frontul cresctor al CAS , chiar dac OE rmne pe nivel jos.

Registru adrese linie

DCD linie

Matrice celule de memorie

Address Logic remprosptare (timer, arbiter) Amplificatoare senzor i pori de transfer I/O DCD coloane Registru adrese coloane D Q

Tampoane date I/O

Din

Dout

Figura 6.18. Diagram bloc Extended Data Out (EDO). Se adaug un latch de memorare la ieire care permite comutarea mai rapid dect la FPM a CAS

Capitolul 6

168

La circuitele numite EDO (Extended data-out DRAM - circuite DRAM cu extindere pe ieirea datelor) la structura similar cu FPM s-a adugat un latch la ieirea amplificatoarelor senzor (figura 6.18). Acest latch permite ca semnalul CAS sa treac pe nivel sus n timp ce se ateapt ca datele valide s treac la ieire; controlul ieirii datelor fcndu-se de OE . EDO pot sa lucreze la viteze mari, viteza maxim fiind determinat de timpul de acces fa de adres (tipic 30 nsec). De aceea transferurile n rafal se pot produce cu 30 % mai rapid dect la FPM. Burst EDO (BEDO, EDO n rafal) a fost creat prin nlocuirea latch-ului de ieire cu un registru (adic un etaj suplimentar de latch-uri) i adugnd un latch de adres i un contor de 2 bii. Din cauza registrului de ieire datele nu ajung la ieiri dup primul ciclu CAS. Totui, etajul acestei structuri de tip pipeline (conduct) interne permite datelor s apar ntr-un timp mai scurt fa de frontul CAS de activare din al doilea ciclu (adic tCAC mai scurt). Valoarea tPC pentru un BEDO de 52 ns este de 15 ns. BEDO sunt DRAM-uri cu acces-rafal n care toate ciclurile de citire sau scriere se produc n rafale de 4. Pinul CAS produce incrementarea contorului intern de rafal. Pe msur ce viteza procesoarelor i a magistralelor de memorie a continuat s creasc, viteza DRAM standard a devenit tot mai inadecvat. Pentru a crete performanele generale ale sistemului funcionarea DRAM a fost sincronizat cu clock-ul sistemului, aprnd ceea ce se numete SDRAM (synchronous DRAM).

6.4.5. Circuite DRAM sincrone (SDRAM)


Spre deosebire de DRAM la SDRAM exist n plus: semnal de intrare de ceas (clock), semnal de validare a ceasului, controlul prin RAS i CAS pe tranziia semnalului de ceas i operaie simultan cu dou bnci de memorie adresate ntreesut (prin biii cei mai puini semnificativi ai adresei). Pentru a uura interfaa ntre sistemul de calcul i SDRAM toate comenzile SDRAM sunt referite fa de semnalul de ceas al sistemului. Performanele de vitez obinute cu SDRAM sunt net superioare, fa de vechile DRAM care aveau o interfa asincon. Una din cauze este c SDRAM poate face transfer n mod rafal de la o serie de adrese (1, 2, 4, 8, sau 256) pe baza furnizrii unei adrese de nceput. Lungimea rafalei poate fi programat de ctre sistem. Spre deosebire de DRAM-urile convenionale, care cer ca fiecare acces s fie iniiat printr-o adres de coloan trimis chip-ului, la SDRAM se pot accesa intern pn la 256 de adrese succesive, nainte ca o alt adres de coloan s fie trimis circuitului. De asemenea SDRAM folosete o magistral intern de date mai larg pentru a obine viteze mai mari de transfer. La SDRAM ntrzierea dintre validarea coloanei i obinerea datelor este pre-programat de procesor i este numit ntrziere la citire (read latency). ntrzierea la citire poate fi programat ca s fie de la 1 la 3 impulsuri de ceas. Aceast ntrziere depinde, la un anumit sistem, de frecvena de ceas a sistemului. Rezumnd, principalele diferene funcionale dintre SDRAM i DRAM sunt:
DRAM Nu au intrare de ceas (sistem) Control RAS pe nivel operare cu o singur banc de memorie un transfer pentru fiecare adres de coloan (sau impuls de selecie coloan) furnizat ntrzierea la citire (read latency) este neprogramabil SDRAM lucreaz cu frecvena ceasului de sistem control RAS prin impuls (tranziie) dou bnci de memorie pe chip cu ntreeserea adreselor transfer rafal (burst) cu 1, 2, 4, 8, sau 256 transferuri pentru o singur adres de coloan furnizat ntrzierea la citire este programabil

Sistemul de memorie

169

6.5. MEMORIA CACHE


Performanele sistemelor moderne de calcul pot fi serios afectate de viteza de lucru a dispozitivelor ce compun memoria principal, vitez n general mai mic dect viteza de lucru a procesoarelor. La ce bun un procesor ce funcioneaz cu o frecven de ceas mai mare de 1GHz, dac memoria principal este lent i se introduc multe stri de ateptare. Circuitele integrate de memorie dinamic tradiionale (care constituie i nucleul memoriilor sincrone ce pot fi citite la frecvene de ordinul sutelor de MHz) au timpi de acces standard de aproximativ 60 ns, dar timpii medii de acces, prin diferite organizri i tehnici de sincronizare pot, n prezent, s ajung sub 10 ns. Se consider c un sistem funcioneaz ineficient, cu multe stri de ateptare pentru procesor, dac viteza procesorului este mai mare de cel puin 3 ori fa de viteza cu care se transmit datele pe magistrala comun cu memoria; excepie face cazul cnd memoria cache este substanial mrit. Cteva din soluiile folosite pentru a compensa aceasta incompatibilitate de vitez ntre procesor i memoria principal (MP) sunt: introducerea unei memorii intermediare ntre procesor imemoria principal, numit memorie tampon (cache) care lucreaz cu mare vitez i are dimensiuni medii / mici; suprapunerea operaiilor de adresare la memoria principal cu alte activiti efectuate de procesor, prin realizarea unei uniti de interfa cu magistrala care face o aducere (fetch) prealabil a instruciunilor dinmemoria principal i le stocheaz ntr-o coad local a UCP; organizarea memoriei principale sub forma de blocuri, cu porturi distincte de acces i cu adrese ntreesute, ceea ce va asigur o vitez medie de transfer mai mare dect inversul timpului de acces la un bloc. Soluiile menionate mai sus nu sunt complet independente. Crucial pentru performanele sistemului sunt creterea lrgimii de band a memoriei i scderea latenei (ntrzierii rspunsului n timp) accesului la memorie. Memoriile cache (tampon) sunt folosite pentru stocarea unor fragmente de program, date i rezultate intermediare, frecvent folosite de ctre procesor. Memoria cache este amplasat ntre procesor i memoria principal. Utilizarea unei memorii cache, de mare vitez, n care se pot stoca att instruciuni, ct i date, frecvent folosite, are ca scop principal obinerea unei valori mici pentru timpul mediu de acces al UCP la memorie. Avnd un timp mic de acces, memoria cache permite ca o operaie de citire /scriere s se efectueze ntr-o singur perioad de tact, ceea ce face ca procesorul s nu ntre n stri de ateptare. Prezena memoriei cache va fi vizibil pentru utilizator numai prin sporirea vitezei de lucru la execuia programelor. Transferul unor zone de cod sau date ntre memoria principal i memoria cache se realizeaz automat, prin hardware, fr intervenia utilizatorului. Circuitele de control ale memoriei cache pot fi construite pe acelai chip ca i UCP sau pot fi externe UCP. Exist i variante mixte, cu dou niveluri de memorie cache, un nivel (L1) intern UCP i cellalt (L2) extern, sau chiar ambele niveluri integrate n aceeai capsul cu UCP. Memoriile cache interne au dimensiuni de ordinul sutelor de KBytes, iar memoriile cache externe au valori de ordinul MBytes. Indiferent de varianta de procesor, dimensiunea memoriei cache se ncadreaz ca i capacitate ntre a zecea i a mia parte din capacitatea memoriei principale. Ideea de la care s-a plecat n introducerea memoriei cache este bazat pe proprietatea programelor de a folosi referine localizate. Proprietatea de localizare a referinelor se bazeaz pe structura secvenial a programelor, cu numeroase cicluri, apeluri de subrutine etc. Astfel nct, pe baza acestei proprieti, pentru intervale scurte de timp, adresele generate de un program tipic se refer n mod repetat la cteva zone restrnse ca dimensiune de memorie, n timp ce restul memoriei este accesat relativ rar. Dac poriunile active ale programelor i datelor sunt plasate ntr-o memorie rapid, timpul mediu de acces la memorie poate fi redus, asta reducnd timpul de execuie al

Capitolul 6

170

programelor. Conform proprietii referinelor localizate dac un ntreg bloc de instruciuni este copiat din memoria principal n cache, exist o mare probabilitate ca un timp toate accesrile s se fac la cache. Atunci cnd UCP lanseaz o adres pentru a face acces la memoria principal se examineaz mai nti coninutul memoriei cache. Daca cuvntul este gsit, este citit din cache, iar dac nu este gsit, se acceseaz memoria principal pentru citirea cuvntului. Deoarece accesul la cache se efectueaz foarte rapid, de obicei ntr-o perioad de tact, procesorul va controla direct aceste operaii, n timp ce accesul la memoria principal, mai lent, se va efectua sub controlul unitii de comand a memoriei cache. Transferul ntre memoria principal i cache nu se face ns la nivel de cuvnt ci la nivel de bloc de cuvinte, bloc care cuprinde i cuvntul adresat de UCP i negsit n cache. Dac un cuvnt cutat se gsete n cache se spune ca s-a produs un acces reuit la cache (sau pe scurt o reuit, "cache hit" n limba englez). Dac cuvntul cutat nu este n cache sa produs o ratare ("cache miss"). Performana memoriei cache este adesea msurat cantitativ prin aa-numitul raport de reuit ("hit ratio", notat n continuare cu hr). Valoarea acestuia se calculeaz ca raport ntre numrul total de reuite i numrul total de accesri la memorie (ratri plus reuite). Acest raport se msoar de obicei prin rularea unor programe de test reprezentative pentru clase de programe. Valoarea lui hr este subunitar dar mai mare dect 0,9. Timpul mediu de acces la o memorie se mbuntete considerabil dac se utilizeaz memorie cache. De exemplu dac timpul de acces la memoria cache este de 10 ns, iar la memoria principal de 100 ns, iar hr = 0,9 rezult un timp de acces mediu de 19 ns. ( din 10 accesri nou sunt reuite). 9 10 + 100 t acm = = 19ns 10 Un algoritm special de anticipare aduce n memoria cache secvenele de program care urmeaz logic unei instruciuni deja executate. Procesorul execut programele fr s simt practic c memoria de lucru este mai lent. Factorul de succes al memoriei cache este legat de dimensiunea sa i de eficiena algoritmului de nlocuire a informaiei din cache. Din punctul de vedere al structurii i organizrii memoriei cache exist trei tehnici principale (tehnici de mapare): 1. mapare asociativ 2. mapare direct 3. mapare asociativ pe seturi.
Mapare Asociativ

Organizarea memoriei cache ca o memorie asociativ (adresabil prin coninut) conduce la viteza i flexibilitatea cea mai bun. Dar pentru c o memorie asociativ este scump i are un grad mic de integrare, metoda este destul de rar utilizat i doar pentru implementarea unor memorii de mici dimensiuni. n cadrul memoriei asociative ce funcioneaz ca memorie cache se stocheaz att adresele ct i coninutul (datele) unor locaii din memoria principal (figura 6.19). Asta face ca orice locaie din cache s poat memora oricare cuvnt din memoria principal. Dac se produce o ratare, se face acces la memoria principal pentru aducerea unui bloc de date ce poate fi stocat oriunde n memoria cache asociativ. Dac memoria cache este plin, trebuie ales un mod prin care s se elimine informaia ce nu mai este necesar din cache. Pentru decizie se folosesc algoritmi de nlocuire. O procedur simpl este de tip FIFO (algoritm pe baz de vrsta n cache = primul intrat primul ieit). Ali algoritmi de nlocuire folosii sunt LRU (Least Recently Used), nlocuire aleatoare, LFU (Least Frequently Used).

Sistemul de memorie

171

de la UCP

Registru adrese adrese

Registru date date

Registru adrese la RAM

Registru date

Figura 6.19. Structur de memorie cache asociativ

La lansarea unei adrese de ctre UCP aceasta se compar cu toate adresele memorate n matricea de adrese a memoriei cache asociative. Dac compararea combinaional conduce la o reuit data corespunztoare apare la ieire i se nscrie n registrul de date (pentru operaia de citire).
Mapare direct

Memoriile asociative sunt scumpe i de aceea s-au cutat metode de organizare cu ajutorul unor memorii RAM statice. Exemplificarea acestei mapri este prezentat n figura 6.20. Adresa de a bii (n exemplul din figur a = 32) este logic mprit n dou cmpuri, numite index (cel mai puin semnificativ, care din punct de vedere logic poate fi privit ca fiind format din alte dou cmpuri: bloc i cuvnt) i respectiv etichet. Indexul are un numr k de bii, numr determinat de dimensiunea memoriei cache (2k cuvinte adresabile prin index), valoarea sa constituind adresa pentru memoria cache. n cache se stocheaz nu numai data corespunztoare ci i eticheta (din format din a-k bii) asociat datei. De asemenea, lng etichet mai pot fi nscrise i alte informaii cum ar fi: bit ce indic dac datele sunt valide sau locaia e privit ca fiind goal, bit de protecie la scriere a locaiei etc. Protecia la scriere este util atunci cnd datele se refer la rutine ale sistemului de operare. La citire cmpul etichet al adresei de memorie de la UCP este comparat cu eticheta cuvntului gsit n cache i avnd aceeai adres de index cu adresa de memorie. Dac se potrivesc, s-a produs un eveniment de reuit. Pot exista 2a-k cuvinte cu acelai index deci stocabile n aceeai linie de memorie cache. Dac se acceseaz repetat dou sau mai multe adrese cu acelai index (distana ntre dou asemenea adrese succesive este 2k) factorul de reuit scade mult. Dar atunci cnd se produce o ratare nu se aduce un singur cuvnt ci un ntreg bloc de

Capitolul 6

172

cuvinte, cu aceeai adres de bloc. Blocurile sunt alese cu dimensiunea putere a lui doi. Mai mult, n cache se stocheaz o singur dat eticheta unui bloc, pentru c ea este aceeai pentru toate cuvintele blocului. n figura 6.20 s-a presupus c se folosete o adres de memorie de 32 de bii, dintre care 8 bii sunt folosii pentru etichet, 20 de bii pentru adresarea blocurilor de memorie i 4 bii pentru adresarea cuvintelor n blocuri (deci 16 cuvinte pe bloc de cache).
Index (k bii) a-k bii b bii etichet bloc b=20 bii c=4 bii c bii cuvnt adres din a bii

etichet 0 00000 H 00001 H 00002 H 00003 H 1D 1 2 3 4

cuvnt D E F

FFFFF H

Figura 6.20. Exemplu de mapare direct la memoria cache. S-a haurat cuvntul gsit n cache la adresa de memorie: 1D00002E hex

Maparea asociativa pe seturi: nltura dezavantajul care face ca la maparea direct dou cuvinte cu acelai index (dar etichet diferit) nu pot s fie simultan n cache. Ca structur, maparea asociativ pe dou seturi ar putea considera dou structuri asemntoare cu cea de la maparea direct, pentru fiecare adres de bloc putndu-se stoca n stiv dou blocuri cu etichete diferite (figura 6.21). Alt deosebire fa de maparea direct este c atunci cnd se lanseaz o adres, compararea cmpului etichet al adresei cu etichetele blocurilor stocate n cache se face prin metode combinaionale (deci prin asociere cu coninutul cmpurilor de etichet), de unde i denumirea de mapare asociativ. De obicei partea de etichet i comparare combinaional se pstreaz n circuitul controller de cache. Se pot organiza memorii cache asociative cu dou sau mai multe seturi. Ca urmare pentru fiecare adres de bloc se pot stoca dou sau mai multe blocuri, cu etichete diferite.

Sistemul de memorie

173

adres etichet bloc 00000 00001 00010 00011

cuvinte

etichet

cuvinte

...

...

Figura 6.21. Structur bloc simplificat pentru mapare asociativ pe seturi.

Pentru scrierea n memoria cache se folosesc dou strategii principale, pe care le-am amintit i la organizarea pe niveluri ierarhice a memoriei: scriere cu propagare ctre nivelurile inferioare de memorie ("write-through"), notat pe scurt WT scriere prin actualizarea nivelurilor inferioare n momentul nlocuirii informaiei din cache ("write-back"), notat pe scurt WB. La pornire, pentru scrierea n cache, se foreaz ratri pentru toate liniile memoriei cache, pn cnd memoria cache se umple cu date valide.

6.6. Tehnici de adresare i alocare a memoriei


De regul la microprocesoarele de 8 bii, adresa generat i depus pe magistrala extern de adrese este folosita direct n adresarea unei locaii de memorie sau a unui dispozitiv de I/O. ncepnd cu microprocesoarele de 16 bii apar noiunile de adres logic i adres fizic. Adresele generate de un program sunt considerate adrese logice i totalitatea acestora formeaz spaiul adreselor logice. Totalitatea adreselor ce corespund memoriei (i/sau dispozitivelor de I/O) formeaz spaiul adreselor fizice. Cele 2 spaii, al adreselor logice i fizice, pot s fie egale sau inegale. Ca urmare, trebuie s existe un mecanism de conversie a adreselor, de translatare din adrese logice n adrese fizice. La microprocesoarele Intel din seria x86 mecanismul de translatare este inclus pe acelai substrat de siliciu cu microprocesorul. La unele din microprocesore (ca de exemplu Motorola MC68000) mecanismul de translatare din adresele logice n cele fizice este preluat de un circuit extern microprocesorului denumit "unitate de administrare a memoriei" (MMU - Memory Management Unit). n general, tehnicile folosite pentru lucrul cu sistemul de memorie ntr-un calculator, fie c este vorba de selecie, adresare, alocare de spaiu n memoria principal, folosesc un ansamblu de resurse hardware i software, operaiile executate de acestea fiind incluse n noiunea general de management al memoriei. Administrarea ntregii memorii (de pe toate nivelurile ierarhice) a calculatorului, incluznd i modalitile de partiionare logic i adresare n spaiul adreselor logice (L) i n spaiul de memorare (M, adrese fizice) se face cu ajutorul unei uniti hardware pe care o notm n continuare MMU (Figura 6.22). Cnd un program trebuie rulat (lansat n execuie), el este mai nti adus din memoria auxiliar nmemoria principal (n ntregime sau parial). Pentru MMU se impun urmtoarele cerine de baz: 1. s realizeze translatarea adreselor i s susin alocarea dinamic a memoriei nainte ca un program s fie executat, este necesar ca acestuia s i se aloce un spaiu n memoria principal (spaiu de adrese n memoria fizic existent n calculator). Dac aceast atribuire de spaiu (adrese) se face doar la ncrcarea programului n memoria principal, procedeul este numit alocare static i prezint dezavantajul c adresele de ncrcare sunt fixe. Alocarea

Capitolul 6

174

dinamic a memoriei se caracterizeaz prin atribuirea spaiului necesar programelor, sau proceselor, n timpul execuiei acestora. Adresa la care se ncarc programul n memoria principal nu mai este fix, ea putnd fi modificat, la momente de timp diferite.
(acces direct) (acces direct) (acces indirect)

date

UCP

control

MMU

Cache

MP

MA

adrese logice adrese fizice

Figura 6.22.: Organizarea ierarhica a memoriei, mpreun cu MMU

Se folosesc trei procedee de translatare a adreselor logice n adrese fizice toate bazndu-se pe o divizare a spaiului adreselor logice n blocuri de adrese logice continue, dup cum urmeaz: segmente de lungime arbitrar; pagini (n spaiul adreselor logice) i cadre-pagin / blocuri (n cadrul adreselor fizice), de lungime fix; combinaii de adresare segmentat-paginat. Mecanismul de translatare, indiferent c se folosesc pagini sau segmente, se produce n faza de execuie a programului i include printre altele, un tabel de translatare prin care se face corespondena ntre adrese logice i adrese fizice (principiul de lucru al mecanismului este prezentat n figura 6.23).
Tabel de translatare Memoria principal

Adresa logic de la UCP M L

Adresa fizic M

Cuvnt adresat

Figura 6.23. Principiul tehnicilor de translatare a adreselor

De la microprocesor se recepioneaz adresa logic L. Dac elementul adresat nu se gsete n memoria principal, atunci registrul (de adres) L va conine adresa din memoria extern unde se gsete elementul respectiv i el va fi adus de rutine ale sistemului de operare n

Sistemul de memorie

175

memoria principal, la o adres fizic a crei valoare M se nscrie n registrul de adres L din tabela de translatare. Daca elementul adresat este n memoria principal rezult c adresa fizic este M. Acest mecanism este totui ineficient, cci tabela de translatare are dimensiunile egale cu ale memoriei principale. Pentru micorarea dimensiunii tabelelor se folosete divizarea spaiului logic n segmente / pagini, iar referirile se fac doar la nivelul de adres logic de bloc. Trebuie menionat c dac sunt lansate dou procese n execuie, fiecare cu spaiul su de adrese logice, exist dou tabele de translatare spre memoria principal. Sistemul de operare va reactualiza coninutul tabelei de translatare ori de cte ori va avea loc o relocare (schimbare de poziie n spaiul adreselor fizice) a programelor n memorie. 2. s susin mecanismele de implementare ale memoriei virtuale Mecanismul memoriei virtuale permite programelor s fie executate chiar dac numai o parte din instruciunile lor se ncarc n memoria principal, iar restul se gsesc n memoria auxiliar de tip disc magnetic. Adresele logice sunt numite adrese virtuale, n cazul implementrii memoriei virtuale, pentru c nu exist fizic n memoria principal ci ele se gsesc n memoria auxiliar. 3. s poat furniza protecie i securitate pentru memorie Cerina se refer la protecia informaiei, la alocarea de drepturi de acces la zone din memoria principal i la zone din spaiul adreselor logice, (protecie la citire, scriere, tergere, copiere, execuie). Se protejeaz memoria disponibil alocat programelor de sistem i programelor utilizator, asigurndu-se securitatea informaiei (acces limitat la informaii), prin controlul accesului la resursele sistemului. Aa cum s-a pomenit i mai sus exist dou strategii folosite pentru implementarea MMU: a) MMU se afl pe chip-ul procesorului; se aplic la microprocesoarele cu spaiul segmentat al adreselor logice. De exemplu: Intel x86, Pentium, Zilog Z800, Z8000) b) MMU este construit separat de UCP, variant aleas la microprocesoarele cu spaiu liniar (organizare liniar a) al adreselor logice. De exemplu: MC 680x0, Z8001). n cazul n care organizarea logic a memoriei este liniar, adresele ncep n mod obinuit de la 0 i avanseaz liniar. Memoria poate fi apoi structurat prin software, la nivelul translaiei de adrese. n cazul n care organizarea memoriei este segmentat, programele nu sunt scrise ca secvene liniare de instruciuni i date, ci ca segmente separate de cod, date, sau stiv. Spaiul adreselor logice este spart n mai multe spaii cu adresare liniar, fiecare cu lungime diferit, definit de compilator sau de programator. O adres logic efectiv este calculat ca o combinaie ntre numrul segmentului (care indic adresa de baz a unui bloc de memorie) i un deplasament (offset) n cadrul segmentului. n general schemele de adresare liniar sunt mai potrivite pentru manipularea structurilor mari de date, n timp ce segmentarea faciliteaz programarea, permind programatorului s structureze programele n module segment. n plus adresarea segmentat simplific protecia i relocarea obiectelor n memorie. Segmentarea faciliteaz gestiunea memoriei n sistemele de calcul multiuser, multitasking.

6.7. TEHNICI DE TRANSLATARE A ADRESELOR


Indiferent de schema de organizare a memoriei (liniar sau segmentat) procesorul trebuie s aib un mecanism de translatare a adreselor, util n implementarea memoriei virtuale. Acest mecanism este de asemenea util pentru protejarea informaiei din memorie. Translatarea de adrese este un proces atribuire i organizare (mapare) a adreselor logice n adrese fizice de memorie. Mecanismul de translatare mparte memoria principal n blocuri (cadre pagin). Aa cum am

Capitolul 6

176

amintit mai sus se folosesc 3 scheme de translatare: (1) translatare prin paginare (2) translatare prin segmentare (3) translatare segmentat-paginat n sistemele paginate, memoria principal este mprit n blocuri de lungime fix n timp ce n sistemele segmentate blocurile sunt de lungime variabil. Paginile au n general lungimi de ordinul 256 - 4096 cuvinte, n timp ce segmentele cu lungimea definit de compilator sau programator au 64 K-cuvinte, sau mai mult. n sistemele cu multiprogramare i time-sharing7, mai muli utilizatori folosesc aceleai programe cum sunt editoare, compilatoare, programe utilitare, biblioteci de programe etc. Att sistemele cu paginare ct i cele cu segmentare permit mecanisme de partajare, ntre procesele utilizator, a paginilor, respectiv a segmentelor. Aceste mecanisme se bazeaz pe intrri n tabele de mapare de pagin (sau segment) n care intrrile diferitelor procese indic ctre acelai bloc din memoria principal. Combinaia ntre segmente i pagini presupune c un segment conine una sau mai multe pagini virtuale. Mecanismul de segmentare administreaz spaiul virtual, mprind programele n segmente, n timp ce paginarea este destinat administrrii memoriei fizice care este mprit n cadre pagina (blocuri). Vom descrie n continuare mecanismele folosite pentru maparea segmentelor i paginilor.

6.7.1. Maparea adreselor folosind pagini


n cazul paginrii, implementarea tabelului pentru maparea adreselor este simpl pentru c informaia din spaiile de adresare i memorare este divizat n blocuri de dimensiune fix. Memoria fizic este mprit logic n blocuri de aceeai dimensiune (64-4096 cuvinte fiecare). Termenul pagin se refera la blocuri, de aceeai dimensiune, de adrese din spaiul de adresare. De exemplu, presupunem un calculator care are 20 de bii de adres i folosete doar 32KB n memoria principal (memorie implementat fizic prin circuite de memorie); dac o pagin, respectiv un bloc, au dimensiuni egale cu 1 kB, atunci spaiul de adrese e divizat n 1024 pagini, iar spaiul de memorie e divizat n 32 de blocuri. Se consider c i programele sunt mprite n pagini. Poriuni din programe sunt mutate din memoria auxiliar n memoria principal n nregistrri egale cu mrimea paginii. n loc de bloc de memorie e folosit uneori termenul de cadru pagin (page frame). n cazul maprii prin paginare adresa virtual este reprezentat printr-un singur cuvnt de adres mprit ntr-un cmp corespunztor numrului paginii (adresa paginii) i un cmp pentru deplasament. La maparea prin segmentarea un singur cuvnt de adres nu mai este suficient; dimensiunea variabil a segmentelor conduce la existena a dou cuvinte de adresare, n care primul indic numrul (adresa) segmentului, iar cel de-al doilea deplasamentul n cadrul segmentului. ntr-un calculator cu 2p cuvinte pe pagin, p bii sunt folosii pentru a specifica o adres de linie iar cei mai semnificativi bii rmai n adresa virtual specific numrul de pagin. Fie de exemplu un sistem simplu cu o adres virtual cu dimensiunea de 16 bii i pagini cu 4096 cuvinte. Pentru c o pagin are 212 cuvinte, cei patru bii mai semnificativi vor specifica una din cele 16 pagini, iar cei 12 bii mai puin semnificativi indic adresa liniei n cadrul paginii. Ca urmare maparea trebuie fcut doar de la un numr de pagin la un numr de bloc din memoria principal, pentru c adresa liniei e aceeai pentru ambele spaii. Organizarea de principiu a tabelului de mapare a memoriei ntr-un sistem paginat poate arta ca n figura 6.24.
7

time-sharing = partajarea timpului UCP

Sistemul de memorie

177

Numr pagin

Numr linie Adresa virtual

1000000000000001 Adres tabel

0000 0001 0010 0011 11 00 01

Tabel pagini de memorie

0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 10

0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0

Bit prezen

Adresa fizic (real) de memorie principal 10 000000000001

Memoria principal 00 01 10 11 BLOCK 0 BLOCK 1 BLOCK 2 BLOCK 3

Registru bloc de memorie

10

Figura 6.24: Schem de principiu, explicativ la operaia de paginare (modalitatea de translatare din figur nu se aplic din cauza dimensiunii mari a tabelului de translatare a paginilor de memorie)

n tabelul paginii de memorie, adresa conduce la numrul paginii, iar coninutul indic numrul blocului unde pagina este stocat n memoria principal. Se observ c paginile virtuale 2, 3, 5 i 8 se afl n memoria principal, n blocurile 3, 0, 1 i respectiv 2. Un bit de prezen adugat fiecrei locaii a tabelului indic dac pagina respectiv a fost mapat n memoria principal (i s-a alocat spaiu i a fost transferat din memoria auxiliar n memoria principal). Valoarea 0 a bitului de prezen indic c pagina nu este n memoria principal. n exemplul dat, cei 4 bii ai adresei virtuale specific att numrul paginii ct i adresa n tabelul paginilor de memorie. Coninutul tabelului este citit n registrul ce indic blocul de memorie. Dac bitul de prezen este 1, numrul de bloc e transferat n registrul ce pstreaz adresa fizic din memoria principal. Dac bitul de prezen este 0 rezult c adresa virtual se refer la un articol ce nu se gsete n memoria principal. n acest caz, se genereaz o cerere (n forma unei ntreruperi software, de tip eroare de pagin8) ctre sistemul de operare (SO) pentru a aduce pagina cerut din memoria auxiliar n memoria principal, nainte de reluarea programului care a accesat adresa din pagina respectiv. O astfel de organizare n memoria principal a tabelului de translatare este ns ineficient, cci tabelul are multe locaii goale. Dac presupunem un calculator cu spaiul de adrese de 4 GB
8

page fault = eroare de pagin

Capitolul 6

178

(232), cu pagini de memorie de 32 KB (215), iar spaiul memoriei fizice este 32 MB (225) rezult 128 K-pagini virtuale de memorie i 1024 blocuri (1 K-blocuri). Conform principiului din figura 6.24 tabelul de translatare ar avea 131071 (217 = 128 K) linii i doar 1024 locaii ar fi ocupate (cu bit de prezen 1), restul fiind goale, neutilizate. O soluie a acestei probleme o constituie folosirea unei memorii asociative, ca n figura 6.25, (tabel asociativ de pagini de memorie) cu numr de locaii egal cu numrul de blocuri din memoria principal.

Adres logic

Numr pagin
1000 1111 0010 0011 0101 1000

Numr linie 00
11 00

Registru argument Registru masc

01
10

Numr pagin

Numr bloc

Figura 6.25. Exemplificare a tabelului pentru translatarea adresei de pagin construit cu memorie asociativ (adresabil prin coninut)

n fiecare locaie de memorie se stocheaz numrul paginii virtuale i numrul corespunztor al blocului de memorie principal alocat. Adresa logic se compar combinaional cu coninutul tabelului asociativ, doar pentru poziiile binare ce corespund la 1 logic n registrul de mascare, deci n figura 6.25, doar pentru cmpul de adres al numrului de pagin virtual. Dac la apelarea unei pagini virtuale, aceasta nu este mapat n memoria principal, operaia de adresare este o ratare (miss) i evenimentul este rezolvat printr-o rutina de servire a sistemului de operare care aduce pagina respectiv din memoria auxiliar. i acest tabel asociativ de translatare poate avea dimensiuni mari uneori. De aceea se folosesc tabele asociative de mare vitez la care numrul liniilor este mai mic dect numrul de blocuri (cadre pagin) i n care se salveaz numai o parte din maprile realizate. Acest registru asociativ este numit TLB (Translation lookaside buffer) i este descris mai jos.

6.7.2. Mapare prin segmentare


La acest tip de mapare spaiul adreselor logice este mprit n segmente, care spre deosebire de pagini, nu au o dimensiune fix. Segmentele sunt spaii de adrese continue (liniare), care includ programe sau poriuni din programe cu atribute comune. Mecanismul de translatare este prezentat n schema de principiu din figura 6.26. Spre deosebire de operaia de paginare, la segmentare nu se mai face concatenarea (alturarea) adresei de deplasament (din adresa logic) la adresa fizic. Aici adresa de deplasament este adunat cu adresa fizic a segmentului (adresa sa de baz) citit din tabelul de translatare al

Sistemul de memorie

179

segmentelor, specific unui anumit proces.


Nr.segment Offset
Adres logic

Adres fizic segment

Adres liniar (fizic) Adresa de baz a segmentului

Segment

Tabel de translatare a segmentelor

Figura 6.26: Schem de principiu, explicativ la operaia de segmentare

6.7.3. Mapare segmentat-paginat


Maparea combinat paginat-segmentat presupune de obicei c un segment include mai multe pagini. Operaia de translatare ncepe cu segmentarea i apoi continu cu paginarea. Ca urmare doar translatarea de pagin produce transformarea adresei liniare ce rezult din segmentare ntr-o adres fizic. Ca regul general la metoda combinat cu segmentare-paginare, segmentele cu lungime variabil conin una sau mai multe pagini cu lungime constant. Acest mod de mprire conduce la algoritmi mai simpli pentru administrarea i protecia memoriei. Exist i excepii de la aceast regul. De exemplu, la procesoarele Intel din seria x86, de la '386 n sus, poate s nu existe o relaie direct ntre pagini i structura logic a unui program (un cadru pagin la 386 are 4KB). La aceste procesoare, segmentele pot avea dimensiunea mai mare sau mai mic dect o pagin. Arhitectura nu impune nici o relaie ntre marginile paginilor i segmentelor. Astfel un segment poate conine sfritul unei pagini i nceputul alteia i similar pentru relaia pagin-segment. Chiar dac procesorul permite aceast libertate n relaia dintre pagini i segmente, se recomand ca un segment s conin una sau mai multe pagini, iar paginile s fie incluse complet ntr-un segment, deci s nu aparin simultan la dou segmente. Dac fiecare segment va conine una sau mai multe pagini de memorie (de lungime fix), lungimea segmentului se poate specifica att n multiplu de octei (Bytes) dar i n multiplu de pagini de memorie. Adresa logic va fi mprit n trei cmpuri: primul indic numrul segmentului (ca intrare ntr-un tabel de translatare pentru segmentele procesului), al doilea un numr de pagin, (care indic o adres relativ ntr-un tabel de translatare paginat n cadrul segmentului), iar al treilea cmp este deplasamentul. Dac numrul de bii ai cmpului pagin este p, rezult maxim 2p pagini n segment. Valoarea citit din tabelul segment este un pointer ctre baza tabelului de pagin. Suma dintre baza tabelului de pagin i numrul paginii (din adresa logic) este pointer ctre o intrare n tabelul de pagin, aa cu se indic n figura 6.27.

Capitolul 6

180

Nr.segment Nr. pagin

Offset

Adres logic

bloc Bloc Tabel de mapare a segmentelor Offset

Adres fizic Tabel de mapare a paginilor

Figura 6.27. Principiul operaiei de translatare segmentat-paginat

Valoarea gsit n tabelul de pagin furnizeaz numrul de bloc din memoria fizic. Cele dou tabele pot fi construite n memoria principal, dar de asemenea pot fi construite separat de memoria principal, eventual ntr-o memorie local procesorului. Ultima variant este mai avantajoas ca vitez, pentru c organizarea n memoria principal conduce la trei accesri succesive, deci vitez mic. Se folosete de aceea o memorie asociativ pentru a stoca n tabele intrrile cele mai recent referite. Aceasta memorie asociativ este numit "Translation Lookaside Buffer" = tabel pentru memorarea funciilor de translatare (TLB), i are structura din figura 6.28.
Registru Argument

TLB

Segmente

Pagini

Blocuri

Figura 6.28. Structura de principiu a unui TLB (tablou asociativ pentru memorarea funciilor de translatare)

Prima oar cnd un anume bloc e referit, valoarea sa mpreun cu numerele corespunztoare de segment i pagin intr n TLB. Dac, la adresare, adresa cerut nu este mapat n TLB se folosete maparea mai lent, cu tabele n memorie, descris mai sus, iar rezultatul e nscris n memoria asociativa (TLB) pentru referirile ulterioare.

Sistemul de memorie

181

6.7.4. Memoria virtual


ntr-un sistem ierarhic de memorie, programele i datele sunt mai nti stocate n memoria auxiliar. Poriuni din programe sau date sunt aduse n memoria principal pe msur ce ele sunt necesare unitii centrale de procesare. Memoria virtual reprezint un ansamblu de tehnici (software) i mecanisme (hardware) folosit pentru a mri capacitatea aparent a memoriei principale RAM. Astfel, numrul de bii ai adresei ce rezult prin execuia unei instruciuni, depete ca posibiliti de adresare, capacitatea memoriei principale, fizic instalat. n aceste condiii, din programul stocat n memoria extern vor fi aduse n memoria principal numai zonele active la un moment dat (figura 6.29). Procesul acesta de transfer ntre memoria extern (disc magnetic) i memoria principal este transparent pentru utilizator, el desfurndu-se automat, sub controlul sistemului de operare. Adresele logice furnizate de UCP i MMU exploreaz un spaiu de adresare ce corespunde ca dimensiune, capacitii memoriei virtuale, mult mai mare dect dimensiunile memoriei principale. Din punct de vedere fizic, memoria virtuala va fi organizat n memoria auxiliar (disc magnetic). Se mrete deci capacitatea aparent a memoriei cu "acces direct". Numrul de adrese accesibile n mod direct aflate la dispoziia programatorului este substanial mai mare dect numrul de locaii din memoria principal fizic existent; spaiul de adresare corespunde capacitii memoriei virtuale. Memoria virtuala este organizat, din punct de vedere logic, sub form de pagini, astfel c o adres furnizat de o instruciune a procesorului conine dou cmpuri: numrul paginii i respectiv, adresa n pagin. Dimensiunile unei pagini sunt mult mai mici dect dimensiunea memoriei principale. n acest mod, n memoria principal pot fi aduse, din memoria secundar, mai multe pagini active, ale unui program sau ale mai multor programe. Un sistem cu memorie virtual furnizeaz un mecanism pentru translatarea adreselor generate de program n adrese fizice ale locaiilor memoriei principale. Operaia de translatare se face dinamic, n timp ce programele se executa n UCP.
adres logic UCP MMU adres fizic

MP (RAM)

MA (disc magnetic)

Comenzi transfer pagini virtuale

Figura 6.29. Schema bloc de principiu a sistemului de memorie virtual (MMU =unitate de control a memoriei, MP = memoria principal, MA = memoria auxiliar)

Se va considera, pentru exemplificare, organizarea unei memorii virtuale cu capacitatea de 64 MB (226), structurat pe cuvinte de 32 de bii: 16 Mega-cuvinte x 32 de bii/cuvnt (224 x 32). ntr-un cuvnt - instruciune de 32 de bii, 24 de bii sunt alocai pentru adresarea memoriei virtuale. Primii 12 bii, mai semnificativi, vor specifica numrul paginii, iar ultimii 12 bii, mai puin semnificativi, vor constitui adresa n pagin. n figura 6.30. se prezint organizarea logic a memoriei virtuale n 212 pagini, fiecare pagin avnd capacitatea de 212 cuvinte de cte 32 de bii.

Capitolul 6

182

Organizare logic Pagina 0 Pagina 1 P1 S1

Organizare fizic a MV n MA

Id.pagin Id.segment Nr.pagini P2 P3 Id.pagin Pagin MV Id.pagin Pagin MV

Pagina 212-1 P1 S2

Figura 6.30. Organizarea logic i fizic a memoriei virtuale. Cu Pi s-a notat structura paginii fizice i din memoria virtual, iar cu Si s-a notat structura segmentului i. (MV = memorie virtual,MA = memorie auxiliar)

Organizarea fizic a memoriei virtuale n cadrul memoriei auxiliare este prezentat de asemenea n figura 6.30. Programul utilizatorului este constituit dintr-un numr oarecare de pagini, organizate ntr-un segment. Prima pagin, din cadrul fiecrui segment, conine, pe lng un identificator de pagin, un identificator de segment i numrul de pagini din segmentul dat. Celelalte pagini vor fi constituite dintr-un antet de identificare pagin i din pagina propriu-zis. n cazul de fa se consider c sistemul de operare se ocup cu gestiunea segmentelor/fiierelor, n memoria extern. Fie de exemplu o memorie principal cu capacitatea de 256 k 32 de bii. Se pot stoca n cadrul memoriei principale maximum 26 = 64 pagini, avnd fiecare o capacitate de 212 = 4096 cuvinte. Nucleul sistemului de operare va fi rezident n memoria principal i va ocupa, de exemplu, primele 8 pagini (32 k-cuvinte ). Sistemul de operare va gestiona o serie de tabele de translatare a adreselor logice / virtuale n adrese fizice. Schimbarea paginilor ntre memoria principal i memoria auxiliar se face dup algoritmi de nlocuire asemntori cu cei de la memoria cache. Pentru exemplul dat anterior n figura 6.31 se prezint modalitatea de translatare a adreselor virtuale, folosind urmtoarele notaii: TA - Tablou Asociativ n celulele cruia sunt stocate numerele paginilor virtuale aduse n memoria principal. Conine 64 de cuvinte de cte 12 bii. CU - Contoare de Utilizare a paginilor prezente n memoria principal. Se folosesc n mecanismul de nlocuire. La fiecare acces contoarele ce corespund intrrilor neselectate se decrementeaz, pn la zero, iar contorul liniei selectate se seteaz la valoarea maxim. Dac este nevoie de spaiu pentru noi intrri vor fi nlocuite liniile care au contoarele cu coninut 0; BLOC - Memorie cu coninut permanent (doar cu citire), adresat asociativ, care transform numrul paginii virtuale n numr de pagin fizic din memoria principal RAM; AM - Registrul de adrese pentru memoria principal (adresa fizic), de 18 bii RI - Registrul de Instruciuni, cu 32 de bii PC - Contorul de Program cu lungimea de 24 de bii; MP - Memoria principal RAM (218 x 32 bii);

Sistemul de memorie

183

Dac o pagin oarecare din memoria virtual a fost adus n memoria principal, ea poate fi localizat, ca numr de pagin fizic, prin referirea la o memorie asociativ cu coninut fix pe care o notm BLOC. n cazul coincidentei ntre numrul paginii virtuale, i coninutul unei celule din Tabloul Asociativ, celula corespunztoare, situat pe aceeai linie, n BLOC, va furniza primii 6 bii mai semnificativi ai adresei fizice. Acetia vor fi concatenai n registrul AM, cu ultimii 12 bii din RI sau PC, pentru a forma adresa fizic de acces la memoria principal. Primele opt celule din BLOC au coninuturi fixe, corespunznd numerelor primelor opt pagini din memoria principal n care se afl nucleul sistemului de operare. Primele opt celule din TA vor conine numerele paginilor virtuale corespunztoare nucleului sistemului de operare. Coninutul acestora va fi fix. De asemenea, coninuturile primelor opt contoare de utilizare nu vor suferi decrementri. Gestiunea memoriei virtuale ncepe prin transferul unui segment sau al unui numr de pagini, dintr-un segment, corespunztor unui program din memoria secundar n memoria principal, sub controlul sistemului de operare, i lansarea n execuie.
Tabel de translatare adrese virtuale

CU

TA

BLOC

AM adresa fizic

12 RI

12

12

12 PC

Figura 6.31 Mecanismul asociativ care asigura suportul pentru translatarea adreselor virtuale n adrese fizice.

Dac se constat lipsa unei pagini, se trece la aducerea paginii virtuale n memoria principal. n figura 6.32. operaiile din blocurile 1 i 4 se execut prin software, n timp ce operaiile din blocurile 2 i 3 se execut prin hardware. Operaiile din cadrul blocului 2 sunt operaii obinuite de citire-interpretare i execuie a instruciunilor programului. Dup generarea ntreruperii de tip lips-pagin n memoria principal ntreaga responsabilitate pentru transferul paginilor revine sistemului de operare. ntr-o memorie auxiliar pe disc magnetic organizat cu scopul de a facilita implementarea memoriei virtuale, pagina de memorie auxiliar va nlocui nregistrarea, drept cea mai mic unitate de date adresabil pe disc. Sistemul de operare va gestiona o serie de tabele de translatare a adreselor logice n adrese fizice. Dup terminarea transferului programul ntrerupt se poate relua. La transfer, dac memoria principal este plin, trebuie tears o pagin veche pentru a face loc celei noi. Algoritmul de nlocuire poate fi de tip, de exemplu: FIFO - selecteaz pentru nlocuire paginile care au stat n memorie cel mai lung timp. De fiecare data cnd o pagina e ncrcat n memorie, numrul sau de identificare este introdus ntr-o stiv FIFO (primul intrat, primul ieit). Dac tamponul FIFO este plin i trebuie adus alt pagin, se elimin pagina cea mai veche n tampon i care e n vrful stivei FIFO. Este un algoritm uor de implementat dar nu foarte eficient. LRU - least recently used (cel mai puin recent utilizat) este un algoritm mai dificil de implementat, dar mai eficient. Se nlocuiete cea mai puin recent folosit pagin. Folosete cte un contor pentru fiecare pagin ce se afl n memoria principal. Cnd se face referire la

Capitolul 6

184

o pagin, contorul asociat ei este setat la la valoarea maxim, iar celelalte contoare asociate paginilor se decrementeaz. Ele sunt numite adesea registre de vrst, pentru ca ele indic vrsta ct n-au mai fost referite.

1.SO citete un segment, sau o fraciune de segment

2.Execut programul

3.Identific: - numrul paginii lips - numrul paginii ce va fi nlocuit

Da Lips pagin ?

Nu Program terminat

Generare ntrerupere software ctre S.O. 4.S.O. face interschimbarea

Figura 6.32. Explicativ la mecanismul de ncrcare a paginilor virtuale.

6.7.5. Noiuni privind protecia memoriei


Inventarea multiprogramrii, la care un procesor este partajat ntre mai multe programe aflate n execuie, a condus la noi cerine privind protecia ntre programe. Mecanismele de protecie sunt strns legate de implementarea memoriei virtuale. Multiprogramarea conduce la conceptul de proces. Un proces este constituit dintr-un program aflat n execuie plus orice stare necesar pentru continuarea rulrii sale. Partajarea timpului (time-sharing) este o variant a multi-programrii care partajeaz UCP i memoria ntre diferii utilizatori simultani, iar mecanismul de partajare d iluzia c toi utilizatorii au propriile maini. Astfel c, n oricare dintre variante, trebuie s fie posibil s se comute de la un proces la altul. Aceast comutare este numit comutare de proces sau comutare de context. Un proces trebuie s se execute corect indiferent dac se execut continuu de la start pn la terminare, sau dac este ntrerupt n mod repetat pentru a se face comutarea ctre alte procese. Responsabilitatea meninerii comportrii corecte a proceselor cade att n sarcina resurselor hardware, care asigur salvarea i restaurarea corect a proceselor ce ruleaz pe UCP ct i n sarcina sistemului de operare care trebuie s garanteze c un proces nu interfereaz cu celelalte i c un proces nu poate modifica datele altor procese. Aceasta nseamn asigurarea proteciei datelor de ctre sistemul de operare. n afar de protecie, sistemul de operare permite, n anumite condiii, i partajarea codului i a datelor ntre diferite procese pentru salvare de spaiu de memorie prin reducerea numrului de copii de informaii identice. Cel mai simplu mecanism de protecie este constituit de o pereche de registre care verific fiecare adres, astfel nct s nu se permit accesul n afara unor limite alocate n spaiul de adrese. Aceste registre sunt numite registru - baz i registru limit. O adres este valid dac se ncadreaz ntre cele dou adrese coninute n registre:

Sistemul de memorie

185

Baz Adres Limit

La unele sisteme adresa este considerat ca un numr fr semn, care se adun ntotdeauna la o adres de baz, astfel c testul de adres limit se reduce la: (Baz + Adres) Limit Dac proceselor utilizator li s-ar permite s modifice registrele de adrese de baz i limit, atunci acest mecanism de protecie nu ar putea funciona. Modificarea respectivelor registre este permis doar sistemului de operare, pentru asigurarea proteciei ntre procese. Pentru asigurarea proteciei sistemul de operare (SO) are trei responsabiliti principale: 1. S furnizeze cel puin dou moduri de execuie indicnd c procesul aflat n rulare este un proces utilizator, sau un proces al sistemului de operare. La diferite SO ultimul tip de proces este numit n diferite feluri: proces kernel (nucleu), proces supervizor, sau proces executiv. 2. S prevad o poriune a strii CPU pe care procesul utilizator o poate doar citi, dar nu o poate scrie. Aceasta include registrele baz / limit, indicatori (bii) pentru moduri utilizator / supervizor i indicatori pentru validare / invalidare evenimente de tip excepie. 3. S prevad un mecanism prin care UCP poate trece din mod utilizator (user) n mod supervizor i viceversa. Primul sens de trecere este specific apelurilor sistem (system calls apeluri de servicii oferite de SO), implementate ca instruciuni speciale care transfer temporar controlul la o locaie precis din spaiul de cod al supervizorului. Registrul contor de program corespunztor locului unde se face un apel sistem este salvat, iar UCP trece n mod supervizor. Revenirea la modul utilizator este similar cu cea produs la o revenire din procedur. Adresele de baz i limit constituie minimul unui sistem de protecie. Mecanismul memoriei virtuale ofer alternative mai complexe i mai sigure dect modelul simplu prin baz i limit. Aa cum s-a vzut, adresele virtuale sunt translatate n adrese fizice pe baza unor tabele de translatare. Acest mod de mapare, prin tabele, ofer posibilitatea introducerii de informaii pentru controlul erorilor de program (intenionate sau nu) care ncearc s treac peste mecanismele de protecie. Cea mai simpl cale este introducerea unor indicatori de permisie pentru fiecare pagin sau segment. De exemplu pot exista indicatori care s permit doar citire, doar execuie, sau care s interzic accesul unui proces utilizator la anumite pagini / segmente. Fiecare proces poate face adresare doar ctre paginile proprii de memorie, procesul utilizator neavnd dreptul s modifice tabelele sale de pagin / segment. Protecia poate fi extins chiar pe mai mult dect dou niveluri (nu doar utilizator i supervizor), privite ca i inele concentrice de protecie, n centru gsindu-se nivelul de protecie cel mai nalt. n aceast ierarhie de niveluri de protecie un program poate accesa doar date de pe nivelul su de protecie i de pe nivelurile inferioare n ierarhie. Poate face ns operaii de apelare (call) a serviciilor sistemului de operare, servicii oferite de rutine ce se afl pe niveluri superioare de protecie. Adesea se face comparaia, n oarecare msur nefericit, cu clasificri de tip militar ale sistemelor: top secret, secret, confidenial i neclasificat. Programele utilizator (civilii n exemplul militar) au doar dreptul de acces la nivelul de protecie cel mai de jos: ne-clasificat. La sistemele de protecie de tip inele concentrice, deosebirea fa de exemplul anterior, este c se pot face apelri la rutine situate pe niveluri superioare de protecie, dac exist chei de acces ctre acele niveluri. Poate exista dreptul de apelare a unor servicii ale sistemului de operare, prin mecanismul de comutare a proceselor. Aa cum am pomenit i mai sus, informaia de protecie este setat n registre speciale ataate fiecrei intrri n tabelele de translatare, registre setate doar de rutine de control al sistemului de operare. Drepturile de acces pot fi de tipul: a. Atribuirea de privilegii complete de citire i scriere. Aceste drepturi se atribuie programului atunci cnd execut propriile instruciuni. b. Read-only (protecie la scriere). Protecia la scriere este util la operaiile de partajare a unor

Capitolul 6

186

rutine de sistem (utilitare, biblioteci, etc.). c. Execute only (program protection). Protejeaz programul la copiere. Restricioneaz referirea la segment doar n timpul fazei de fetch a instruciunii i nu i n timpul fazei de execuie. Asta permite utilizatorului s execute instruciunile segmentului de program, dar nu permite citirea instruciunilor ca date cu scopul de a copia coninutul lor. Sistemul de protecie a memoriei, n sensul celor spuse mai sus, se construiete pentru: (a) memorie (detecteaz orice eroare de adresare nainte ca aceasta s creeze erori accidentale sau voite); (b) programe (previne ca programele utilizator (de aplicaii) s fac modificri ilegale n rutinele SO); (c) utilizatori (programele utilizatorilor ntre ele); (d) securitate informaie (acces limitat la informaiile unde utilizatorul nu are drept de acces).