Sunteți pe pagina 1din 11

4

Memorii i ierarhii de memorii


1. Prezentare teoretic
Memoria reprezint una din componentele eseniale ale unui calculator numeric. Rolul su este de a memora programe i date. La modul general, memoria se mparte n memorie principal i memorie secundar. Memoria principal stocheaz informaiile i datele curente necesare procesorului ct timp memoria secundar memoreaz date care nu sunt folosite n mod curent. Subsistemul de memorie al unui calculator numeric este vzut ca o ierarhie de module de memorie. La baza ierarhiei se afl memoria auxiliar/secundar (lent dar de capacitate foarte mare, de ordinul zecilor de GB), iar n vrful ierarhiei se afl memoria cache (foarte rapid dar de capacitate foarte mic, de ordinul KB). Memoria cache este o memorie special, utilizat pentru mrirea vitezei de prelucrare a procesorului. Aceasta este dispus ntre procesor i memoria principal n vederea compensrii diferenei de vitez dintre cele dou componente. Viteza de funcionare a memoriei cache este foarte apropiat de viteza de funcionare a procesorului, acesta fiind un motiv pentru care, de obicei, aceast memorie este ncapsulat mpreun cu procesorul.

Memoria principal
Este o memorie cu un timp de acces de aproximativ 700ns. Capacitatea ei variaz de la 32MB pn la 512MB. Tehnologia folosit n construcia acestui tip de memorie se bazeaz pe circuite integrate semiconductoare. Circuitele integrate RAM pot opera n dou moduri:

1. static - memoria static RAM este format din bistabile care memoreaz informaia n form binar. Informaia rmne disponibil att timp ct circuitul este alimentat cu curent electric. 2. dinamic - memoria dinamic RAM, memoreaz informaia binar n form de sarcini electrice ce sunt aplicate unor condensatori. Condensatorii, realizai cu ajutorul tranzistoarelor MOS, tind s se descarce n timp i astfel apare riscul ca informaia s se distrug. Pentru a elimina acest inconvenient, n aceste memorii se realizeaz un ciclu de remprosptare a informaiei la intervale de cteva milisecunde. Memoria ROM (Read Only Memory) este o memorie cu acces aleator i este utilizat pentru memorarea programelor, care sunt rezidente permanent n calculator i pentru stocarea tabelelor de constante definite de ctre productorul calculatorului. Tot n aceast memorie se pstreaz i programul iniial de pornire a calculatorului (bootstrap loader) responsabil cu lansarea sistemului de operare. Coninutul acestei memorii se pstreaz chiar dac circuitul nu este alimentat. Singura metod de a terge informaia dintr-un astfel de circuit const n iradierea sa cu raze ultraviolete. Simbolul i tabela de funcionare a unui circuit de memorie RAM sunt prezentate n figura 4.1.

Figura 4.1: Memorie RAM 128 x 8.

Odat ce proiectantul unui calculator dispune de modulele de memorie fizice, el trebuie s asigneze memoriilor RAM sau ROM ntreaga cantitate de memorie, determinat n prealabil, necesar pentru rularea aplicaiilor. Adresarea memoriei de ctre procesor este stabilit pe baza unei tabele n care se specific adresele de memorie asignate fiecrui dispozitiv/tip de memorie. Aceast tabel poart denumirea de "harta adreselor de memorie". Modalitatea de construire a acestei tabele este prezentat prin intermediul unui exemplu. Exemplu Se presupune c un calculator necesit 512 octei de RAM i 128 octei de ROM. Pentru implementare, la dispoziia proiectantului exist circuitele RAM i ROM cu capacitate de 128 x 8 fiecare. Numrul circuitelor de memorie este limitat la 5. Harta adreselor de memorie este prezentat n tabelul 4.1.
2

Componenta RAM l RAM2 RAM3 RAM4 ROM

Adresa hexazecimal 0000 - 007F 0080 - 00FF 0100 - 017F 0180 - 01FF 0200 - 03FF

10 0 0 0 0 1

9 0 0 1 1 x

Magistrala de adrese 8 7 6 5 4 3 0 x x x x x 1 x x x x x 0 x x x x x 1 x x x x x x x x x x x

2 x x x x x

1 x x x x x

Tabelul 4.1: Harta adreselor de memorie.

Memoria total este: 512 + 128 = 640 octe i. Pentru a accesa o memorie de 640 octe i este necesar un cuvnt-adres de 10 bi i. Astfel, dac se va considera o magistral de adrese de 16 bi i, primii 6 bi i vor fi ntotdeauna egali cu 0. Avnd n vedere c memoria RAM ocup 512 octei rezult necesitatea utilizrii a 9 linii de adres. Deoarece sistemul conine si memorie RAM si memorie ROM, o linie de adres este necesar pentru a se realiza o distincie ntre ele. Deci n total vor fi 10 linii de adres ocupate. Restul de 6 linii de adres vor fi tot timpul 0. Pentru uurina proiectrii, valoarea de pe magistrala de adrese este exprimat n hexazecimal.

Memoria asociativ
Memoria asociativ se bazeaz pe conceptul c timpul de cutare a unei informaii date ntr-o memorie este redus considerabil dac datele memorate pot fi identificate dup coninut i nu dup adres. Cnd se scrie un cuvnt ntr-o memorie asociativ, nici o adres nu este furnizat. Memoria este capabil s determine locaia goal i neutilizat n vederea memorrii noului cuvnt. La citirea unui cuvnt dintr-o memorie asociativ, coninutul cuvntului sau o parte a cuvntului este specificat. Memoria localizeaz toate cuvintele care se potrivesc cu coninutul specificat i ele vor fi marcate pentru citire. Organizarea hardware a unei memorii asociative este prezentat n figura 4.2. n figura 4.2 registrele A i K sunt registre de n bii. Registrul M, registrul de potrivire, este de m bii, unul pentru fiecare cuvnt de memorie.

Figura 4.2: Organizarea hardware a unei memorii asociative

Fiecare cuvnt din memorie este comparat cu coninutul registrului A. Cuvintele care se potrivesc seteaz un bit corespunztor n registrul M a crui valoare este 1. n final, registrul M va conine doar biii care indic ce cuvinte s-au potrivit. Citirea se realizeaz printr-un acces secvenial la memorie, doar pentru cuvintele ai cror bii corespunztori n registrul M sunt 1. Registrul K este un registru de mascare n vederea stabilirii unui cmp particular sau a unei chei din cuvntul memorat n registrul A. Comparaia ntregului cuvnt de memorie cu coninutul registrului A se va realiza doar dac registrul K conine toi biii egali cu 1. n mod normal se compar doar cuvintele care au biii l n poziiile n care exist l n registrul K. Organizarea hardware a unei celule de memorie asociative precum i relaia dintre vectorul memorie i registrele externe sunt prezentate n figura 4.3. Aa cum se observ n figura 4.3, fiecare bit A j din registrul A este comparat cu toi biii coloanei j din matricea vector, dac k j = 1 , j = 1 ... n . Dac toi biii
registrului K sunt egali cu biii din cuvntul i, atunci se seteaz M i = 1 , altfel Mi = 0. Circuitul de potrivire logic din figura 4.3 se poate deduce matematic. Cuvntul i este egal cu coninutul registrului A dac: Aj

= Fij

j = 1 ... n

(4.1)
4

Figura 4.3: Organizarea hardware a unei celule de memorie

Egalitatea a doi bii poate fi exprimat ca x j = A j Fij + A j Fij , unde x j = 1 dac toi biii de pe poziia j sunt egali. Pentru ca bitul M i s fie l trebuie respectat urmtoarea egalitate: Mi

= x1 x 2 x3 , ..., x n

(4.2)

n funcie de valoarea lui K j , exist dou situaii posibile: 1. k j = 0 , atunci biii corespunztori A j i Fij nu trebuie comparai; 2. k j = 1 , atunci biii corespunztori A j i Fij trebuie comparai. Se poate concluziona c:

xj + kj

x j = 1

daca k j = 1 daca kj = 0

(4.3)

Ecuaia (4.2) se rescrie ca:

Mi

(x

+ k1 x 2 + k 2 x3 + k 3 ... x n + k n

)(

)(

(4.4)

sau ntr-o form mult mai compact:

Mi

(A
j =1

Fij + A j Fij + k j

i = 1, m

(4.5)

n vederea realizrii operaiei de citire din memoria asociativ, se scaneaz coninutul registrului M i se citete doar un bit al su la un moment dat, obinnd astfel o secven de cuvinte aflate n memoria asociativ i care se potrivesc cu cuvntul de memorie. n cazul operaiei de scriere apar urmtoarele situaii posibile: 1. memoria este vid - n acest caz scrierea poate fi realizat prin adresarea fiecrei locaii ntr-o anumit secven. Astfel memoria devine o memorie cu acces aleator n cazul scrierii i o memorie de tip adresabil dup coninut n cazul operaiei de citire. Avantajul este c adresele cuvintelor de intrare pot fi decodificate ca n cazul memoriilor cu acces aleator, rezultnd astfel numai d linii de adrese n loc de m (m = 2d). 2. suprascrierea unui cuvnt - este situaia n care memoria este complet ocupat i se dorete introducerea unui nou cuvnt n memorie. n aceast situaie se mai adaug un registru special (registrul de etichete) care memoreaz cuvintele active i cele inactive asignnd valoarea l pentru cuvintele active i 0 pentru cuvintele inactive. Numrul biilor acestui registru trebuie s fie acelai cu numrul de cuvinte din memorie. Se nlocuiesc doar cuvintele cu eticheta 0 utiliznd n acest scop un algoritm FIFO, LRU etc. Dup realizarea operaiei de suprascriere, eticheta corespunztoare va avea valoarea 1.

Memoria cache
Memoria cache este o memorie de mic capacitate dar cu o vitez de accesare foarte mare. Cnd CPU dorete s acceseze memoria principal, nti se examineaz memoria cache. Dac, cuvntul solicitat se gsete stocat n memoria cache, atunci el este preluat de ctre procesor, din aceast memorie. n caz contrar este accesat memoria principal, se citete cuvntul dorit i este stocat apoi n memoria cache. Pentru a respecta principiul "localitii spaiale", se transfer din memoria principal n memoria cache nu doar cuvntul solicitat de procesor, ci un bloc de cuvinte care conine cuvntul solicitat. Dimensiunea blocului transferat variaz de la o arhitectur la alta, dar uzual, blocul transferat are o dimensiune cuprins ntre l i 16 cuvinte. Performana unei memorii cache este msurat n termeni de "hit ratio". Dac, cuvntul solicitat de CPU se afl memorat n memoria cache, atunci este vorba de un succes HIT, iar altfel, de un insucces MISS. HIT RATIO se definete ca fiind raportul dintre numrul de succese i numrul total de referiri CPU la memorie. Procesul de amplasare a datelor citite din memoria principal, n memoria cache se numete mapare . Uzual n proiectarea i organizarea memoriilor cache se folosesc
6

urmtoarele tipuri de proceduri de mapare: 1. mapare complet asociativ; 2. mapare direct; 3. mapare asociativ pe mai multe ci. Pentru o descriere ct mai complet a fiecrui mod de mapare se va utiliza urmtorul exemplu. Exemplu Se presupunem existena unui calculator care posed o memorie principal cu capacitatea de 32k 12 i o memorie cache cu capacitatea 512 cuvinte 12. Procesorul calculatorului poate comunica cu ambele memorii. El trimite o adres de 15 bii ctre memoria cache. Dac se obine HIT, CPU accept 12 bii de date de la memoria cache. n caz de MISS, CPU citete cuvntul din memoria principal i cuvntul va fi apoi memorat n memoria cache.

Maparea complet asociativ


Acest tip de mapare este cea mai flexibil i mai rapid organizare a memoriei cache. Organizarea acestui tip de memorie poate fi observat n figura 4.4. n memoria complet asociativ sunt memorate adresele i coninutul cuvintelor de memorie.

Figura 4.4: Maparea asociativ.

Adresa CPU de 15 bii este memorat n registrul argument/descriptor i apoi se ncearc depistarea unei potriviri de adrese dintre aceast adres i o adres din memoria cache. Dac procesul se ncheie cu HIT, atunci datele de 12 bii sunt citite i transmise ctre CPU. Dac procesul se ncheie cu MISS, atunci perechea adres-dat este citit din memoria principal, trimis la procesor i memorat n memoria cache. n cazul cel mai
7

defavorabil, memoria este complet ocupat i noua pereche adres-dat trebuie suprascris n locul altei perechi stabilit de ctre algoritmul de replasare utilizat (uzual se folosesc algoritmii LRU i FIFO).

Mapare direct
O versiune mai ieftin de memorie cache este prezentat n figura 4.5. n cadrul acestei implementri, adresa CPU se mparte n dou cmpuri: INDEX (numrul biilor acestui cmp este egal cu numrul biilor necesari pentru a accesa memoria cache) i ETICHET. n concluzie, cei 15 bii ai adresei CPU se mpart dup cum urmeaz: 6 bii pentru cmpul ETICHET i 9 bii pentru cmpul INDEX.

Figura 4.5: Maparea direct.

Fiecare cuvnt memorat n memoria cache este format din cmpul de date i eticheta asociat. Atunci cnd o cerere este lansat, cmpul INDEX este utilizat pentru adresa de acces a memoriei cache. Cmpul ETICHET al adresei CPU este comparat cu "eticheta" cuvntului citit din memoria cache. Dac procesul returneaz MISS, cuvntul cerut se cite te din memoria principal i este memorat n memoria cache mpreun cu o nou etichet, nlocuindu-se astfel valoarea anterioar. Dezavantajul major const n scderea valorii HIT RATIO dac dou sau mai multe cuvinte ale cror adrese au acelai index dar etichete diferite sunt accesate n mod repetat. Un exemplu numeric este prezenata n figura 4.6.

Figura 4.6: Exemplu mapare direct.

Cuvntul aflat la adresa 00000 este memorat n memoria cache. Procesorul dore te s acceseze cuvntul aflat la adresa 02000. Indexul de adrese este 000 i el va fi utilizat pentru accesarea memoriei cache. n urma comparaiei dintre cele dou etichete, se constat c rezultatul ntors este MISS, deoarece eticheta memoriei cache este 00, iar eticheta adres este 02. Se acceseaz memoria principal i cuvntul 5670 este transferat ctre CPU. Cuvntul din memoria cache de la 000 este replasat cu eticheta 02 i data 5670.

Maparea asociativ pe mai multe ci


n cadrul acestei metode de organizare a memoriei cache, fiecare cuvnt al memoriei cache poate memora unul sau mai multe cuvinte din memorie sub acelai index de adres. n figura 4.7 este prezentat un exemplu de memorie cache cu o organizare asociativ pe mai multe ci.

Figura 4.7: Maparea asociativ pe mai multe ci.

Fiecare index de adres refer dou cuvinte de date i etichetele asociate lor. Fiecare etichet necesit 6 bii, iar fiecare cuvnt 12 bii, rezultnd lungimea cuvntului de
9

2 (6 + 12) = 36 bii. Un index de adrese de 9 bii poate acoperi 512 cuvinte deci dimensiunea memoriei cache este de 512 x 36. Aceast memorie cache poate acoperi un numr de 1024 cuvinte ale memoriei principale deoarece un cuvnt din memoria cache conine dou cuvinte dat.
Cnd CPU genereaz o cerere de memorie, valoarea index a adresei este utilizat pentru accesarea memoriei cache. Cmpul etichet din adresa CPU este comparat cu cele dou etichete din memoria cache n vederea stabilirii unei potriviri. Compararea logic este realizat printr-o cutare asociativ de etichete ntr-o mulime. n caz de MISS, algoritmii de nlocuire cei mai frecvent utilizai sunt FIFO i LRU.

Scrierea n memoria cache


n cazul n care CPU genereaz semnal de scriere n memoria principal, exist dou metode care se pot aplica: 1. reactualizarea informaiei din memoria principal n paralel cu reactualizarea informaiei din memoria cache dac cuvntul se gsete n memoria cache, la adresa specificat. Aceast procedur se numete WRITE-THROUGH. 2. WRITE-BACK. n cadrul acestei metode, doar locaia memoriei cache este reactualizat n cadrul operaiei WRITE. Locaia reactualizat este marcat i doar n caz de suprascriere a informaiei se va face reactualizarea locaiei memoriei principale.

2. Desfurarea lucrrii
1. Se va utiliza un simulator de memorie cache pentru a simula diferite organizri ale memoriei cache pentru primele 1 milion de referine n monitorizarea execuiei programului gcc. Sunt disponibile (http://www.csitsun.pub.ro/resources) att dinero (simulatorul de memorie cache), ct i gcc. Se presupune o memorie cache de instruciuni de 32kB i o memorie cache de date de 32kB folosind aceeai organizare. S se aleag cel putin dou tipuri de asociativiti i dou dimensiuni de bloc. S se deseneze o diagram ce prezint organizarea unei memorii cache cu cea mai bun rat de eec. 2. Se va studia influena folosirii unui nivel secundar de memorie cahe asupra performanei unui procesor. Se presupune existena unui procesor cu un CPI (numrul de cicluri/instruciune) de baz de 1.0 i o frecven de ceas de 500MHz. Se consider c toate referinele la memorie vor avea succes n memoria cache primar. Memoria principal are un timp de acces de 200ns, incluznd aici i timpul necesar tratrii cazurilor de eec. Frecvena de eec pe instruciune n memoria cache primar este de 5%. Care va fi creterea de vitez
10

a mainii dac este adugat un nivel suplimentar de memorie cache cu un timp de acces de 20ns, att pentru eec, ct i pentru succes i suficient de mare pentru a reduce frecvena de eec la memoria principal la 2%?

3. Probleme propuse
1. Pe baza hrii adreselor de memorie stabilit n cadrul exemplului l, s se proiecteze circuitul care realizeaz conexiunea memoriei cu CPU. 2. Pe baza organizrii hardware a unei celule de memorie asociativ prezentat n figura 4.3, s se proiecteze o memorie asociativ cu m = 4 i n = 3. S se realizeze simularea operaiilor de scriere/citire n/din memoria asociativ proiectat. 3. Se reconsider exemplul prezentat n figura 4.6. n cadrul exemplului mrimea blocului de memorie are dimensiunea de l cuvnt. Cum arat aceeai proiectare dac se utilizeaz un bloc de capacitate 8 cuvinte ? 4. Enunai cel puin un avantaj al folosirii metodei WRITE-THROUGH de scriere n memoria cache. 5. Folosind limbajul de asamblare pentru MIPS i simulatorul SPIM exemplicai toate modurile de adresare la memorie cunoscute. Spre exemplu, pentru a exemplifica modul de adresare indirect cu autodecrementare se poate scrie programul MIPS din figura 4.8. # adresare indirect cu autodecrementare .text la $a1, 0x0040001c sub $a1, $a1, 0x00000004 lw $t1, ($a1) lw $t2, ($t1) pc: not $t1, $t2 adr: .word 0x00400020 li $v0, 1 op: .word 7 move $a0, $t1 syscall end: mop
Figura 4.8: Program MIPS pentru exemplificarea modului de adresare indirect cu autodecrementare a memoriei principale.

11

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