Documente Academic
Documente Profesional
Documente Cultură
24 Mai 2011
Cuprins
Pag.3
Memorii cache set-associative Scurta comparatie intre maparea asociativa si maparea set-asociativa. Bibliografie
Memorii Cache
1. Principii de functionare 2. Modul de adresare Adresare directa Adresare complet asociativa Adresare set-asociativa
Un cache este o memorie intermediara, situata intre o unitate de prelucrare si o memorie mai lenta. Cache se gaseste de exemplu intre internet si HDD al calculatorului, intre CPU si RAM. Suportul fizic al memoriei cache este alcatuit din memoria RAM statica si controlerul de cache. Exista 2 nivele de cache: L1, in procesor, cache intern, aflat in acelasi chip cu CPU si L2, cache la care controlerul este integrat in CPU, iar memoria este plasata afara. Principii de functionare
1.
2.
Localizari spatiale: Daca o celula de memorie a fost accesata, este foarte probabil sa fie accesate si celulele adiacente. Localizarii temporale: Daca o celula de memorie a fost accesata, este foarte probabil sa fie accesata din nou. (principiu mai eficient)
Modul de adresare Prin adresare se intelege modul in care se localizeaza o informatie. Modalitati de adresare: 1. RAM informatia se localizeaza pe baza unei adrese unice; 2. Stiva; 3. Dispozitiv de memorare secvential (banda magnetica, CD-ROM); 4. Dispozitive de memorare aleator secventiale (HDD). La memoriile cache accesul este asociativ (mem. adresata prin continut). Mai concret: o parte a continutului serveste ca eticheta, iar restul este privit ca informatie utila. Cache cu adresare directa: Un bloc de octeti din memoria principala se va regasi intotdeauna in aceeasi locatie din cache in functie de adresa sa. Daca in cache exista k blocuri, orice bloc i din memoria principala se va regasi in blocul j din cache, astfel incat j= i mod k. Eticheta asociata blocului va fi i/k. Dezavantaj: Multe blocuri din RAM concureaza pentru aceeasi intrare din cache si se pot elimina reciproc. Cache cu adresare complet asociativa: Nu mai exista notiunea de index. Eticheta este adresa de RAM in intregime. Toate intrarile din cache sunt liber alocabile si sunt vazute in paralel. Si localizarea si confirmarea se fac in aceeasi faza. Un bloc din RAM se poate plasa oriunde in cache. Dezavantaj: Structura de control este deosebit de complexa. Cache cu adresare set-asociativa: Cache-ul se imparte intr-un numar de cai paralele. Pentru fiecare cale exista un comparator. Cautarea se face pe baza de index, in paralel pe toate caile.
Asadar vom avea: O schema set-associative reprezinta un hibrid intre o memorie cache adresata in mod direct si una adresata full-associative. Este considerata drept un compromis rezonabil intre hardware-ul complex necesar cache-urilor full-associative (necesitand cautari paralele de sloturi) si hardware-ul simplistic al schemei cache-ului adresat direct ceea ce ar putea sa produca coliziuni intre adrese catre acelasi slot(similar coliziunilor de pe o tabla de sah). Sa presupunem ca avem 128 de slot-uri a cate 32 de octeti. Mai mult, putem sa grupam aceste slot-uri in seturi. In particular, com presupune de asemenea si ca intr-un set incap exact 8 slot-uri. Vom trata aceste slot-uri ca pe un vector, numarandu-le de la 0000000 la 1111111(adica 128 de slot-uri). Totusi, grupam slot-urile in seturi iar ideea principala este de a tine evidenta seturilor si nu a slot-urilor. Vom avea prin urmare 16 seturi (128/8). Este necesar sa specificam numarul de seturi in locul numarului de slot-uri si asta ne ocupa (lg 16) adica 4 biti. Iata cum vom imparti pe biti adresele. Vom utiliza cei 4 biti pentru set si nu pentru slot.
A4-0 -> Offset. A8-5 -> Numarul de seturi. A31-9 -> Tag.
Gasirea slot-ului. Gasirea unui slot reprezinta un proces mult mai complex. Sa presupunem ca dispunem de adresa B31-0. Vom utiliza bitii B8-5 pentru a gasi setul din care face parte slot-ul pe care il cautam. Acest numar ar trebui sa specifice un grup de 8 slot-uri(am mentionat deja ca fiecare set contine 8 slot-uri). Fiecare slot ar avea urmatorul index: B8-5: 000 B8-5: 001 B8-5: 010 B8-5: 011 B8-5: 100 B8-5: 101 B8-5: 110 B8-5: 111
In esenta, numarul de set specifica index-ul prin intermediul celui mai semnificativ bit si valori secventiale ale slot-urilor reprezentate prin intermediul ultimilor 3 biti. Se cauta in toate cele 8 slot-uri pentru a se vedea daca tag-ul A31-9 se potriveste cu tag-ul din slot. Daca da, se trece byte-ul la offset-ul B4-0. Daca nu, se decide care dintre slot-uri ar trebui folosit, se aduc cei 32 bytes din memorie, slot-ul schimband valoarea bitului de validare, a bitului dirty si a tag-ului dupa cum este nevoie. Aceasta se numeste memorie cache asociativa pe 8 directii din moment ce fiecare set contine cate 8 slot-uri. Pot exista memorii cache asociative pe N-directii unde fiecare set contine cate N slot-uri, iar N reprezinta o putere a lui 2. Compromisuri Aceasta schema reprezinta un asa-zis compromis. Tot ceea ce trebuie sa faci este sa aplici o comparatie complexa de hardware(pentru gasirea slot-ului corect) pe un set mic de slot-uri in locul intregului numar de slot-uri. Fara indoiala, o asemenea comparatie de hardware este mai mult decat liniara daca ne referim la numarul de slot-uri prin urmare, cu cat mai putine sunt sloturile intre care trebuie sa efectuezi cautarea, cu atat mai simplu este si circuitul hardware de care ai nevoie. Totusi, este mult mai flexibila posibilitatea de a asocia unui slot pana la N linii de cache pentru o schema a unei memorii cache asociativa pe N directii.
Utilizarea a dou linii pe set este cea mai utilizat organizare asociativ pe seturi, care mbuntete semnificativ rata de succes fa de maparea direct. Si totusi.... nu putem obtine o imagine extrem de clara in ceea ce priveste maparea set-asociativa daca nu stim cu exactitate ce inseamna maparea asociativa. Prin urmare propun mai jos o schema explicita asupra acestor doua tipuri de mapare.
Maparea asociativa: n acest caz, adresa memoriei principale const dintr-un marcaj de 13 bii i un numr al cuvntului de 3 bii. Un bloc din memoria principal se poate ncrca n oricare linie, iar marcajul su de 13 bii se memoreaz mpreun cu blocul. Pentru a de- termina dac un bloc se afl n memoria cache, sunt necesare circuite pentru a compara simultan marcajul su cu marcajele fiecrei linii. n cazul maprii asociative, exist o flexibilitate n privina nlocuirii unui bloc atunci cnd un nou bloc este ncrcat n memoria cache. Algoritmii de nlocuire a blocu- rilor din memoria cache, prezentai n continuare, au rolul de a crete eficiena. Principalul dezavantaj al acestei metode l reprezint circuitele complexe necesare pentru a examina marcajele tuturor liniilor din memoria cache.
Maparea set-asociativa n acest caz, memoria cache este mprit n I seturi, i fiecare din acestea conine J linii. Avem: L = I*J K = A mod I unde K = numrul setului. Cu aceast metod, blocul coninnd adresa A poate fi mapat n oricare din liniile setului I. Va prezentam o mapare asociativ pe seturi cu dou linii pe set. De observat c n cazul extrem n care I = L, J = 1, maparea asociativ pe seturi se reduce la maparea direct, iar atunci cnd I = 1, J = L, se obine maparea asociativ.
Observatii: ->dimensiunea blocului in memoria cache este aleasa in raport cu proprietatea de localizare a programelor. ->memoria cache este adresata cu adrese fizice si nu cu adrese virtuale (se elimina procesul de translatare a adresei virtuale in adresa fizica). ->algoritmii de reamplasare a blocurilor din memoria cache determina performanta memoriei cache, exprimata ca rata de pierderi (numar de incercari esuate de a gasi informatia dorita in cache).
Bibliografie
http://www.cs.umd.edu/ http://www.wikipedia.org/ http://www.scribd.ro/ ->diverse lucrari de laborator si de curs ale cadrelor didactice de profil de la Universitatea Politehnica, Timisoara si Universitatea Babes-Bolyai, Cluj.