Sunteți pe pagina 1din 70

3.

STRUCTURA UNUI CALCULATOR

3.1. Unitatea centrală (procesorul)

Unitatea centrală (UC) este creierul calculatorului. Rolul UC este de execuţie


a programelor stocate în memoria principală, execuţie realizată în trei etape:
 extragerea instrucţiunilor;
 decodificarea instrucţiunilor;
 execuţia lor propriu-zisă.

Fig. 3.1. Schema bloc a unui calculator.

Unitatea de comandă şi control urmăreşte ordinea de execuţie a instrucţiunilor


unui program şi controlează întreaga activitate a unităţii centrale, astfel:
 interpretează instrucţiunile programului din memoria internă şi comandă
circuitele să execute instrucţiunile;
 comandă şi controlează transferul de date dintre memoria internă şi
dispozitivele periferice.
Unitatea aritmetică şi logică (ALU) implementează funcţiile logice, şi
execută operaţiile aritmetice elementare: adunare, scădere, înmulţire, împărţire.
Registrele interne pot fi:
 de uz general;
 cu destinaţie specifică.
Structura unui calculator 69

Registrele de uz general stochează valorile intermediare ale calculelor.


Registrele cu destinaţie specifică – contorul de program (program counter, PC)
indică adresa noii instrucţiuni care urmează a fi executată precum şi adresa
instrucţiunii curente care se execută.

3.1.1. Execuţia unei instrucţiuni

Timpul necesar execuţiei unei instrucţiuni se numeşte ciclu instrucţiune.


Etapele în execuţia unei instrucţiuni sunt:
1. încărcarea instrucţiunii din memorie în registrul de instrucţiuni (fetch);
2. actualizarea PC pentru a indica următoarea instrucţiune care va fi executată;
3. decodificarea instrucţiunii din registrul de instrucţiuni;
4. localizarea în memorie a eventualelor date utilizate de instrucţiune;
5. încărcarea datelor (dacă este necesar) în registrele interne ale UC;
6. execuţia efectivă a instrucţiunii;
7. stocarea rezultatelor la destinaţia corespunzătoare;
8. întoarcerea la etapa nr. 1 pentru a executa următoarea instrucţiune.

3.1.2. Tipuri de unităţi centrale

Criteriul după care se clasifică unităţile centrale este cel al setului de


instrucţiuni:
 procesoare CISC (Complex Instruction Set Computer);
 procesoare RISC (Reduced Instruction Set Computer).
În ultimul timp, s-a produs migrarea de la CISC la RISC.

3.1.2.1. Performanţa unităţii centrale


Performanţa UC se referă întotdeauna la o aplicaţie dată, existând mai multe
moduri de evaluare a performanţei:
 mips (mega instructions per second): milioane de instrucţiuni pe secundă;
 flops (floating point operations per second): operaţii în virgulă mobilă
executate pe secundă (exprimat uzual în Mflops sau Gflops);
 timpul în care un anumit procesor poate să rezolve o anumită secvenţă
de program (o sarcină particulară).
Performanţa este produsul a trei factori:
 numărul de instrucţiuni executate în cazul unei aplicaţii date (Ni);
 numărul mediu de perioade de ceas necesare pentru execuţia unei
instrucţiuni (Np);
 durata unei perioade de ceas (Tc).
Valoarea Np se exprimă în cicluri de ceas/instrucţiune, iar Tc se exprimă în
timp/ciclu de ceas.
70 ARHITECTURA SISTEMELOR DE CALCUL

Rezultă că:

P(t) = Ni  Np  Tc (sec).

Reducerea numărului de instrucţiuni Ni se face optimizând compilatorul şi


utilizând o arhitectură adecvată acestui compilator.
Np se reduce fie optimizând compilatorul, aceasta însemnând utilizarea unor
instrucţiuni de durată mai scurtă, fie utilizând o arhitectură paralelă, deci utilizarea
mai multor instrucţiuni simultan. La optimizarea Np, apar limitări tehnologice legate
de implementarea procesorului.
Durata Tc ţine exclusiv de o tehnologie avansată.

3.1.2.2. Indici de performanţă


Până în 1992, se utiliza următoarea pereche de mărimi: Whetstones şi
Dhrystones, care arătau practic viteza UC. Începând din 1992, s-a trecut la alţi
indici de măsurare a performanţei, şi anume indicii SPEC, cu care s-a înlocuit
perechea anterioară.
Standard Performance Evaluation Corporation (SPEC) este o organizaţie
non-profit care a luat naştere în 1988 şi are ca scop asigurarea testelor corecte şi
utile pentru a face diferenţă între sistemele de pe piaţă. Testele SPEC sunt larg
folosite actualmente în evaluarea performanţei calculatoarelor, rezultatele fiind
afişate pe site-ul SPEC. Acestea poartă denumirea de note SPEC (SPECmarks).
Testele sunt concepute pentru a realiza situaţii din viaţa reală. De exemplu,
SPECweb2005, realizează un test al performanţei serverului de web prin mai multe
tipuri de cereri paralele HTTP. Performanţa microprocesorului este testată prin
rularea câtorva programe (de exemplu, compilatoare gcc) sau printr-un joc de şah.
Diverse cerinţe sunt atribuite în funcţie de importanţa percepută, pentru a rezulta
un singur rezultat final. Testele SPEC au fost actualizate în repetate rânduri.
Aceste teste sunt scrise pe o platformă de limbaj de programare neutră (de
obicei, C sau Fortran), iar părţile interesate pot compila codul folosind metoda
dorită, dar fără a schimba codul. Producătorii au lucrat la îmbunătăţirea
compilatoarelor pentru a realiza o cât mai bună acurateţe a diferitelor teste SPEC.
Teste SPEC actuale sunt:
 SPEC CPU2006 – combină performanţele microprocesorului, memoriei
şi compilatorului;
 CINT2006 sau SPECint – testează aritmetica numerelor întregi, folosind
compilatoare, interpretoare, procesoare de text, programe de şah;
 CFP2006 sau SPECfp, testează performanţa în virgulă mobilă, cu
simulări fizice, grafică 3D, procesare de imagine, chimie computaţională;
 SPECjms2007 – testează performanţa serviciului de mesaje Java;
 SPECweb2005 – testează performanţa în PHP/JSP;
 SPECviewperf – testează performanţa unui sistem 3D OpenGL, cu
ajutorul diferitelor sarcini de randare din aplicaţii reale;
 SPECapc – testează performanţa aplicaţiilor 3D cunoscute unui sistem dat;
Structura unui calculator 71

 SPEC OMP2001 V3.2 – evaluează performanţelor sistemului paralel,


folosind aplicaţii OpenMP;
 SPEC MPI2007 – evaluează performanţele sistemelor paralele, folosind
aplicaţii MPI (Message Passing Interface);
 SPECjvm98 – evaluează performanţa unui sistem client, care rulează o
maşină virtuală Java;
 SPECjAppServer2004 – evaluează performanţa aplicaţiilor bazate pe
Java 2 Enterprise Editition (J2EE);
 SPEC jbb2005 – evaluează performanţa serverului Java, prin emularea
unui sistem client-server;
 SPEC MAIL 2001 – evaluează performanţa unui server de mail, cu
testarea protocoalelor POP şi SMTP;
 SPECimap2003 – evaluează performanţa unui server de mail la nivel de
întreprindere, testând protocoalele IMAP4 şi SMTP;
 SPECpower_ssj2008 – testează eficienţa energetică a sistemelor server;
 SPEC SFS97_R1 – evaluează viteza de transfer a serverului de fişiere
NFS şi timpul de răspuns;
 SPECappPlatform – evaluează performanţa platformelor web (Java EE
şi NET).
Nota obţinută de sistemul testat se obţine în modul următor.
Pentru SPECint, se rulează 6 programe care folosesc numere întregi şi se
obţin astfel 6 note, din care nota finală rezultă prin mediere geometrică.
Pentru SPECfp, se rulează 12 programe care folosesc virgulă mobilă (12
programe în Fortran şi două programe în C), din care se obţin 14 note. Nota finală
se obţine tot prin media geometrică.

3.1.3. Organizarea unităţii centrale

Datele care trebuie prelucrate sunt aduse din registrele interne în registrele de
intrare ale ALU, unde acestea rămân în timpul în care ALU face operaţiunea de
calcul aritmetic şi logic. Rezultatul calculului preluat de registrele de ieşire ale ALU
este stocat într-unul din registrele de uz general.
Există trei tipuri de instrucţiuni (vezi figura 3.2):
 instrucţiuni registre-memorie: se încarcă date din memorie în registre
şi viceversa. Datele pot fi folosite mai departe de alte instrucţiuni sau
chiar de instrucţiunile respective. În acest ultim caz, rezultatul este depus
în registre;
 instrucţiuni registre-registre: mută operanzii din registrul de la intrarea
ALU, execută asupra lor o anumită operaţie şi depun din nou operanzii
în registru;
 instrucţiuni memorie-memorie: preiau operanzii din memorie, îi
plasează în registrul de intrare ALU, se execută o anumită operaţie şi se
stochează rezultatul în memorie.
72 ARHITECTURA SISTEMELOR DE CALCUL

Fig. 3.2. Schema unităţii centrale.

3.2. Memoria

Memoria reprezintă acea parte a calculatorului în care sunt stocate


programele şi datele. Practic, de aici procesorul preia datele de care are nevoie şi
tot aici scrie rezultatul. Unitatea de memorie este o cifră binară care poate lua
numai două valori: 0 sau 1.
Microprocesorul are capacitatea de a memora atât datele care urmează a fi
prelucrate, cât şi rezultatele intermediare. Se observă că rolul său principal este de a
prelucra şi transmite datele. Capacitatea de memorare este mică, neputând stoca, de
exemplu, programe.
Sistemul de memorie al unui calculator reprezintă ansamblul unităţilor de
memorie, împreună cu algoritmii necesari pentru controlul transferurilor şi
memorarea datelor, algoritmi care pot fi implementaţi hardware sau software.
Sistemul de memorie include atât locaţiile de memorie propriu-zise, cât şi circuitele
necesare pentru adresarea locaţiilor şi controlul operaţiilor de citire şi scriere. O
parte din aceste circuite se găsesc în unitatea de memorie respectivă, altele sunt
externe, fiind de obicei integrate în controlerul unităţii de memorie.
Obiectivul principal în proiectarea oricărui sistem de memorie este realizarea
unei capacităţi de memorare adecvate sistemului de calcul, cu un nivel acceptabil
de performanţe, la un cost rezonabil. Trebuie subliniat faptul că nu întotdeauna
obiectivul este acela de a obţine o capacitate de memorare cât mai mare.
Structura unui calculator 73

3.2.1. Caracteristicile unităţilor de memorie

Capacitatea de memorare reprezintă numărul locaţiilor (celulelor) de


memorie conţinute de o unitate de memorie. Aceasta depinde de tehnologia de
fabricaţie şi se exprimă în număr de cuvinte de informaţie memorată (cuv),
dimensiunea cuvântului fiind diferită de la un calculator la altul.
Timpul de acces la o unitate de memorie (tA) este timpul necesar localizării
unei celule de memorie pentru transferul de date la/de la locaţia de memorie
respectivă. Acesta reprezintă intervalul de timp calculat din momentul în care o
unitate master lansează o comandă către o unitate de memorie şi până în momentul
în care informaţia este transferată în sensul dorit.
Rata de acces (rA) este inversa timpului de acces, fiind exprimată în cuvinte
pe secundă:

1
rA = [cuv/s].
tA

Timpul de ciclu la o unitate de memorie (tC) este timpul minim între două
accese succesive şi reprezintă timpul din momentul în care o unitate master
lansează o comandă spre unitatea de memorie şi până când poate lansa o nouă
comandă la aceeaşi unitate de memorie. Uzual, tC > tA, diferenţa lor numindu-se
timp de revenire (tR = tC – tA). Acesta reprezintă timpul minim necesar pentru
inactivarea primei comenzi, până la activarea celei de-a doua.
Rata de transfer (rT) este inversa timpului de ciclu şi reprezintă cantitatea
maximă de informaţie (exprimată în cuvinte pe secundă) care poate fi transferată
la/de la memorie într-o secundă:

1
rT = [cuv/s].
tC

Costul total al unităţii de memorie (CT) include, pe lângă costul celulelor


de memorie propriu-zise, costul circuitelor de acces la aceste celule. Pentru
compararea diverselor unităţi de memorie între ele, se utilizează costul unitar
(CU), care reprezintă costul de memorare a unui cuvânt de informaţie. Costul unitar
se determină prin raportarea costului total (CT) la capacitatea de memorare (CM):

CT
CU = [cost/cuv].
CM

Cu cât memoria este mai rapidă, cu atât costul unitar este mai mare.
Modul de acces la locaţiile unităţii de memorie arată ordinea în care
informaţia memorată poate fi accesată. Acesta poate fi serial sau paralel.
74 ARHITECTURA SISTEMELOR DE CALCUL

Dacă locaţiile de memorie pot fi accesate în orice ordine, iar timpul de acces
este independent de locaţia accesată, atunci accesul este aleator, iar unitatea de
memorie se numeşte memorie cu acces aleator (Random Access Memory, RAM).
În general, memoriile semiconductoare sunt memorii cu acces aleator.
Prin ierarhizarea unităţilor de memorie, blocurile de date cu probabilitatea
cea mai mare de accesare sunt aduse pe niveluri superioare, mai aproape de
unitatea centrală (localizare spaţială). Dintre acestea, datele cele mai recent
accesate sunt păstrate în apropierea procesorului (localizare temporală).

3.2.2. Ierarhizarea memoriei

Pornind de la funcţiile realizate de fiecare tip de memorie, de la rolul şi locul


ocupat în sistemul de calcul, se pot distinge mai multe categorii de memorii,
ilustrate în figura 3.3.

Fig. 3.3. Ierarhizarea memoriei.

3.2.2.1. Registrele de memorie


Reprezintă dispozitivele de memorie cele mai rapide, dar şi cele mai scumpe.
Sunt utilizate de procesor, fiind de două feluri: cu destinaţie specifică şi de uz
general.
Registrele cu destinaţie specifică au un rol precis şi memorează numai
anumite tipuri de informaţie (de exemplu, contorul de program). Din acest motiv,
pentru ca procesorul să realizeze o anumită operaţie, este accesat un anumit
registru, şi anume, acela care memorează tipul de informaţie dorit. În acest fel, nu
este necesar ca registrul să fie accesat prin adresă, fapt care măreşte viteza de acces
la informaţia memorată în registre.
Registrele de uz general sunt registre nespecializate, care pot fi utilizate
explicit prin instrucţiuni-program. Capacitatea registrului depinde de tipul
procesorului şi nu depăşeşte de obicei lungimea cuvântului de memorie. Numărul
de registre de memorie este mic, utilizându-se de regulă 16–20 registre.

3.2.2.2. Memoria internă


Conţine programele şi datele pentru toate procesele în curs de execuţie în
sistemul de calcul. Cât timp funcţionează procesorul, el citeşte şi scrie date din/în
aceasta memorie. Memoria internă este o memorie read-write cu acces direct
Structura unui calculator 75

(RAM). Ea trebuie să aibă un timp de acces redus, pentru a nu întârzia activitatea


procesorului. Tipurile de memorie din această categorie sunt:
 Memoriile DRAM (Dynamic Random Access Memory) sunt memorii
RAM dinamice, în care, pentru a se păstra informaţia, trebuie restabilită
periodic sarcina electrică cu care a fost încărcat condensatorul circuitului
de memorie. Pentru aceasta, este necesar un circuit de reîmprospătare a
memoriei (refresh).
 Memoriile SRAM (Static Random Access Memory) sunt memorii RAM
statice, realizate cu circuite basculante bistabile de memorie, care
păstrează informaţia atât timp cât sistemul este sub tensiune.
La calculatoarele PC, cipurile de memorie sunt asamblate pe plăci de
memorie organizate în bancuri de memorie. Aceste bancuri se instalează în placa
de bază a PC-ului, în soclurile rezervate memoriei interne. Acest mecanism permite
modificarea dimensiunii memoriei interne a PC-ului, prin adăugarea de noi bancuri
de memorie în locurile disponibile sau prin schimbarea bancurilor cu altele de
capacitate mai mare.
Memoria principală sau memoria primară reprezintă memoria de lucru a
sistemului de calcul, fiind realizată cu circuite integrate de memorie DRAM şi
având o capacitate de memorare relativ mare (sute de MB). Memoria principală
păstrează datele active, care vor fi apelate de către procesor, dar care nu sunt
imediat necesare acestuia. Datele devin active prin transferarea lor din memoria
secundară în memoria principală, fiind memorate sub formă de blocuri de date, în
zone de memorie, proprii fiecărui program. Viteza de lucru a memoriei principale
este mult mai mică decât cea a registrelor procesorului (cu 2–3 ordine de mărime),
având timpi de acces aleator de zeci până la sute de ns.
Memoria nevolatilă cu acces aleatoriu (NVRAM) este cea care stochează
date atunci când calculatorul este închis sau nu mai are energie. Memoria NVRAM
este utilizată pentru a menţine informaţiile privind configuraţia calculatorului, cum
ar fi data, ora şi alte opţiuni de pornire care pot fi setate de utilizator.
Memoria cache este o memorie specializată, utilizată în scopul scăderii
timpului de acces la datele din memoria internă. Are capacitate mică şi viteză mare,
fiind inserată logic între procesor şi memoria principală. Constructiv, este o memorie
mai rapidă decât memoria principală, construită, de regulă, din circuite SRAM.
Memoria cache are timpul de acces de 2–10 ori mai mic (ns) decât cel al
memoriei primare, fiind însă şi de câteva ori mai scumpă. Se urmăreşte ca procesorul
să lucreze cât mai mult timp cu memoria cache, şi nu cu memoria principală.
Pentru o memorie cache bine implementată, procesorul lucrează cu aceasta circa
70–90 % din timpul total de lucru cu memoria. Şi acest tip de memorie poate fi
extins prin adăugarea de cipuri suplimentare. Utilizarea memoriei cache se bazează
pe două caracteristici ale execuţiei programelor în sistemele de calcul clasice:
1. programele tind să utilizeze date şi instrucţiuni situate unele lângă altele
sau în zone apropiate (principiul vecinătăţii);
2. programele folosesc în mod repetat adresarea aceloraşi blocuri de memorie.
76 ARHITECTURA SISTEMELOR DE CALCUL

Plecând de la aceste constatări, memoria cache conţine la un moment dat


cópii ale unor date din memoria principală. Înainte de orice acces la memoria
principală, se verifică dacă nu cumva informaţia căutată se găseşte în memoria
cache. Dacă aceasta există, se preia de acolo cu o viteză superioară.
Memoria intermediară, numită şi memorie cache pentru suporţi externi sau
memorie cache de disc (Disk-Cached Memory), este plasată între memoria
principală şi memoria secundară, acţionând într-o manieră similară memoriei
cache. Are rol de memorie tampon, care păstrează blocurile de date cel mai recent
accesate de un program, duplicări ale celor din memoria secundară.

3.2.2.3. Memoria externă


Pentru a utiliza datele memorate în memoria externă, acestea trebuie aduse
mai întâi în memoria principală. Prin comparaţie cu memoria internă, memoria
externă se caracterizează prin viteză de acces mai scăzută, cost mai redus,
capacitate mai mare, având rolul de a mări spaţiul de memorare al unui sistem de
calcul. În memoria externă sunt stocate şi programele cu ajutorul cărora se realizează
prelucrarea datelor. Accesul la memoria externă nu se face direct, ci prin intermediul
memoriei interne. În comparaţie cu memoria internă, memoria externă este:
 nevolatilă,
 cu acces poziţional şi timp de acces mai mare,
 cu viteză de transfer mai mică,
 cu cost mai redus,
 cu capacitate mult mai mare,
 de tip read-write,
 cu densitate de memorare variabilă de la un echipament la altul şi de la
un suport la altul (magnetic, optic, semiconductor).
Memoria secundară este organizată pe un suport extern de memorie, de
regulă disc magnetic, şi are rolul de a realiza o extindere a memoriei principale,
conform conceptului de memorie virtuală, care se referă la capacitatea procesorului
de a utiliza un spaţiu de memorie externă pentru a simula o capacitate mai mare a
memoriei interne disponibile. Altfel spus, este vorba de capacitatea procesorului de a
accesa un spaţiu de adrese care depăşeşte spaţiul de adrese al memoriei principale.
Acest concept a apărut încă din anul 1960, iar la PC este disponibil începând cu seria 286.
Memoria suplimentară poate fi de mai multe tipuri: memorie expandată,
memorie extinsă şi memorie de arhivare sau terţiară.
Memoria expandată este o memorie suplimentară la calculatoarele de tipul
PC, pe care utilizatorul o accesează prin intermediul mecanismului EMS
(Expanded Memory Specification). Este alcătuită din bancuri de memorie de 64 KB
RAM şi este gestionată de un program-sistem specializat. numit EMM386.EXE (în
sistemul de operare MS-DOS).
Memoria extinsă este memoria suplimentară accesibilă utilizatorului prin
mecanismul XMS (eXtended Memory Specification), care poate fi implementat pe
procesoare având cuvinte de adresă de 32 biţi. Programele trebuie scrise ca
utilizând special aceste mecanisme. Programul-sistem care gestionează acest tip de
memorie în sistemul de operare MS-DOS este HIMEM.SYS.
Structura unui calculator 77

Memoria de arhivare sau memoria terţiară este acea parte a memoriei


externe care asigură stocarea datelor preluate din mediul extern pe o perioadă de
timp nedeterminată şi în volume semnificative.
Este o memorie nevolatilă de dimensiuni foarte mari, dar şi cu timpi de acces
foarte mari (zeci de secunde). Păstrează date pasive, stocate doar în scop de
arhivare, pe o perioadă de timp nedeterminată şi în volume semnificative. Accesul
la aceste date se face foarte rar. Memoria terţiară este realizată cu unităţi de
memorare pe suport detaşabil, optic (CD-ROM, DVD-ROM), magnetic (bandă sau
casetă magnetică) sau semiconductor (stick-uri şi card-uri de memorie). Trebuie
subliniat faptul că memoria terţiară reprezintă colecţia de discuri şi casete existente,
şi nu unităţile de memorie propriu-zise.

3.2.3. Memoria RAM

Circuitele integrate de memorie sunt memorii semiconductoare, realizate în


diverse tehnologii de fabricaţie (bipolare sau MOS). Acestea sunt de mai multe
tipuri, cu diferite raporturi performanţe/cost, având domenii specifice de utilizare:
memoriile cu acces aleator (RAM) şi memoriile cu acces pentru citire (ROM).
O memorie cu acces aleator (RAM = Random Access Memory) este acea
memorie la care locaţiile de memorie pot fi accesate în orice ordine, iar timpul de
acces nu depinde de locaţia accesată. Memoriile RAM pot fi de două tipuri: SRAM
(Static RAM) şi DRAM (Dynamic RAM).

3.2.3.1. Memoria SRAM


Memoria SRAM (Static RAM) este o memorie în care informaţia se
memorează într-un mod stabil, pe ambele niveluri logice, atât timp cât memoria este
alimentată. Este realizată în tehnologii rapide (bipolare sau CHMOS =
Complementary High-density MOS), cu timpi de acces foarte mici (ns). Fiind o
memorie care poate fi şi citită şi scrisă, SRAM are magistrala bidirecţională de date
şi două cicluri diferite de memorie: ciclul de citire şi ciclul de scriere, identificate de
semnalul WE , activ pe 0. Reprezentarea memoriei SRAM se găseşte în figura 3.4.

Fig. 3.4. Reprezentarea memoriei SRAM.


78 ARHITECTURA SISTEMELOR DE CALCUL

Memoria SRAM poate fi de două tipuri:


 Memoria SRAM asincronă nu necesită semnal de ceas pentru
sincronizarea cu unitatea master. Memoriile asincrone sunt mai lente
decât cele sincrone, dar sunt mai ieftine şi au un consum de energie mic.
Aceste memorii sunt realizate într-o gamă foarte diversă de performanţe,
cu timpi de acces care variază de la 50–70 ns, până la 10–15 ns.
 Memoria SRAM sincronă necesită un semnal de ceas pentru validarea
semnalelor de control. Ceasul primit din exterior permite operarea
memoriei, sincron cu unitatea master. Memoriile sincrone sunt foarte
rapide, cu timp de acces sub 10 ns, pot funcţiona la tensiuni de
alimentare mici, dar sunt scumpe. Ele pot fi de mai multe tipuri: PBS
(Pipelined Burst Synchronous), FTS (Flow Through Synchronous) sau
ZBT (Zero Bus Turnaround) SRAM.
În general, sistemele de calcul simple au memoria RAM de lucru formată
doar din circuite de memorie SRAM asincronă, cu capacităţi mici, de zeci-sute de
KB, şi care memorează cuvinte de 8 biţi. Sistemele performante, care necesită
viteze şi capacităţi de memorare mari, folosesc memorii SRAM rapide pentru
implementarea memoriei cache.
Din punct de vedere constructiv, cele două tipuri de memorii SRAM sunt
similare. Ele diferă doar prin algoritmul de transfer al datelor şi, implicit, prin
performanţe. De aceea, în cele ce urmează vor fi analizate elementele comune,
definitorii pentru SRAM, iar exemplificările vor fi realizate pentru memoria
asincronă.
Schema bloc a memoriei SRAM este ilustrată în figura 3.5.

Fig. 3.5. Schema bloc a memoriei SRAM.


Structura unui calculator 79

3.2.3.2. Memoria DRAM


Memoria DRAM (Dynamic RAM) este o memorie volatilă cu acces aleator,
care memorează informaţia în mod dinamic. Este realizată în tehnologie CMOS
(Complementary MOS), cu consum de energie foarte mic. Datorită
particularităţilor constructive ale celulelor de memorie, informaţia 0 este memorată
stabil, dar informaţia 1 se pierde în timp şi necesită împrospătarea periodică a
memoriei, de unde şi denumirea acesteia.
Indiferent de modul de realizare, memoria DRAM este mult mai lentă decât
memoria SRAM, din cauza mecanismului specific de memorare a datelor. Timpul
de acces la DRAM este de 2–10 ori mai mare decât la SRAM, şi variază în funcţie
de tipul accesului la memorie.
Astfel, în acces aleator, timpul de acces este mare (zeci de ns), însă scade
foarte mult (în funcţie de tipul memoriei DRAM), dacă se restricţionează accesul în
modul pagină (vezi paragraful 3.2.9 – FPM), putând ajunge la doar de două ori mai
mare decât cel al memoriei SRAM.
Celula de memorie este mult mai mică decât la memoria SRAM, ceea ce
permite realizarea unor densităţi mari de integrare. Circuitele de memorie DRAM
au, prin urmare, capacităţi de memorare mari, şi, implicit, un număr mare de linii
de adresă. Reprezentarea memoriei DRAM se găseşte în figura 3.6.

Fig. 3.6. Reprezentarea memoriei DRAM.

Memorarea datelor se bazează pe stocarea şi transferul de sarcini electrice, şi


nu pe mecanisme de comutare, ca în cazul memoriilor SRAM. Fiecare bit de
informaţie este memorat prin încărcarea sau descărcarea unui condensator. Când
condensatorul este încărcat, se spune că se memorează valoarea 1, iar când acesta
este descărcat, valoarea memorată este 0. Faţă de celula SRAM, mecanismul de
memorare nu presupune consum de curent de la sursa de alimentare.
Schema bloc a memoriei DRAM este trasată în figura 3.7. Celulele de memorie
sunt dispuse într-o arie pătrată sau dreptunghiulară de locaţii de memorie, fiecare
locaţie memorând un cuvânt de m biţi. Semnalele de comandă acţionează prin
intermediul logicii de control. Eventual, memoria DRAM poate avea circuit intern de
împrospătare, care presupune un numărător de adrese de rând şi un ceas de timp real.
În funcţie de tipul memoriei, ciclurile de împrospătare pot fi realizate în trei moduri:
80 ARHITECTURA SISTEMELOR DE CALCUL

Fig. 3.7. Schema bloc a memoriei DRAM.

 ROR (RAS Only Refresh) este o metodă de împrospătare din exterior, prin
care se transmit memoriei adresa de rând (AR) şi semnalul de validare a
adresei de linie, RAS (Row Address Select), fără a se activa semnalul de
validare a adresei de coloană, CAS (Column Address Select). Unitatea
master externă este anunţată periodic să facă refresh de către un ceas de
timp real, care este programat software de către sistemul de operare.
Observaţie: RAS, CAS şi WE (Write Enable) sunt semnale active pe 0.
 CBR (CAS Before RAS) este tot o metodă de împrospătare din exterior,
prin care se transmit semnalele CAS şi RAS, activate în această ordine.
În acest caz, memoria dispune de un numărător de adrese intern, pentru
indicarea liniei care trebuie împrospătată, fără a fi nevoie de transmiterea
adresei din exterior. De asemenea, perioada de repetiţie a ciclurilor de
refresh este determinată de un ceas de timp real extern.
 Auto-împrospătare cu ajutorul circuitelor interne memoriei DRAM. În
interior, memoria conţine un numărător de adrese de rând, un ceas de
timp real şi o logică de control pentru generarea semnalelor CAS şi
RAS, conform metodei CBR.
Memoria DRAM poate fi de două tipuri: asincronă şi sincronă.
Memoria DRAM asincronă nu necesită semnal de ceas pentru sincronizarea
cu unitatea master apelantă. Ca şi la SRAM, memoriile DRAM asincrone sunt mai
lente decât cele sincrone, dar sunt mai ieftine şi au un consum de energie mai mic.
Dintre memoriile DRAM asincrone, se pot enumera: FPM (Fast Page Mode), EDO
(Extended Data Out) şi BEDO (Burst EDO) DRAM (vezi paragraful 3.2.9). La
toate memoriile, accesul aleator este lent. În acces aleator, timpul de acces faţă de
RAS (tRAC) este de 50–70 ns, iar timpul de ciclu (tC) este de 90–120 ns.
Structura unui calculator 81

O altă categorie de memorii DRAM este cea care utilizează o interfaţă


sincronă. Prin implementarea unei interfeţe sincrone, s-au eliminat perioadele de
aşteptare de către procesor, obţinându-se, de asemenea, unele avantaje
suplimentare. În cazul funcţionării sincrone, se memorează anumite date de la
procesor în circuitele latch ale memoriei DRAM, sub controlul ceasului de sistem.
Aceste circuite păstrează adresele, datele şi semnalele de control, ceea ce permite
procesorului să execute alte operaţii. După un număr specific de cicluri de ceas,
datele devin disponibile şi procesorul le poate citi de pe liniile de ieşire.
Un alt avantaj al unei interfeţe sincrone este că ceasul sistemului este
singurul semnal de sincronizare care trebuie furnizat memoriei DRAM. Aceasta
elimină necesitatea propagării semnalelor multiple de sincronizare. Intrările sunt de
asemenea simplificate, deoarece semnalele de control, adresele şi datele pot fi
memorate fără temporizările de setare şi menţinere monitorizate de procesor.
Avantaje similare se obţin şi pentru operaţiile de ieşire.
O altă categorie este reprezentată de memoriile DRAM bazate pe
protocoale. Categoriile precedente de memorii au linii separate de adrese, date şi
control, ceea ce limitează viteza la care poate funcţiona circuitul cu tehnologia
curentă. Pentru eliminarea acestui dezavantaj, au fost proiectate memorii DRAM
bazate pe protocoale, care implementează toate aceste semnale pe aceeaşi
magistrală. Cele mai cunoscute memorii din această categorie sunt DRDRAM
(Direct Rambus) şi SLDRAM (SyncLink) DRAM.
Memoria DRAM sincronă necesită un semnal de ceas pentru validarea
semnalelor de control. Ceasul primit din exterior permite operarea memoriei
sincron cu unitatea master. Deşi accesul aleator este comparativ cu cel al
memoriilor asincrone, accesul în mod pagină este mult mai rapid.
Memoriile sincrone pot fi de mai multe tipuri: SDRAM (Synchronous
DRAM), DDR SDRAM (Double Data Rate SDRAM), RDRAM (Rambus
DRAM), DRDRAM (Direct Rambus DRAM) etc. Accesul aleator este, de
asemenea, lent, fiind puţin mai rapid decât la memoriile asincrone, datorită
tehnologiei (memoriile sincrone au apărut ulterior). În acces aleator, tRAC este de
40–60 ns, iar tC este de 80–110 ns. Accesul în mod pagină este mult mai rapid decât
la memoriile asincrone şi depinde de frecvenţa semnalului de ceas de sincronizare.

3.2.4. Organizarea locaţiilor de memorie

În sistemele cu microprocesoare, modulele de memorie se conectează pe


magistrala sistemului. Accesul la locaţiile de memorie se realizează prin cicluri de
transfer (cicluri maşină), folosindu-se semnalele magistralei (de adresă, de date şi
de comenzi).
Modul de desfăşurare a diferitelor tipuri de cicluri de transfer se reprezintă
prin diagrame de timp (evoluţia în timp a semnalelor de pe magistrală implicate în
transfer). Parametrii de timp ai unui ciclu de transfer depind de tipul procesorului,
de regulile de comunicaţie pe magistrală şi de tipul circuitelor de memorie utilizate.
82 ARHITECTURA SISTEMELOR DE CALCUL

Ciclu de citire din memorie


Semnale de adresă Adresa validă

S. de c-dă MEMR\
(citire memorie) (înaltă impedanţă)
Semnale de date Date valide (citite)
>0
tAR
tMEMR
tC

Ciclu de scriere în memorie


Semnale de adresă Adresa validă

S. de c-dă MEMW\
(scriere memorie) (înaltă impedanţă)
Semnale de date Date valide (scrise)
>0
tAW tMEMW
tC

Fig. 3.8. Diagrame de citire/scriere memorie.

În figura 3.8, s-au reprezentat diagramele de transfer pentru un ciclu de citire


din memorie şi un ciclu de scriere în memorie.
La proiectarea unui modul de memorie, trebuie să se ţină cont de următorii
parametri de timp:
 timpul de acces la citire (tAR) – intervalul de timp între momentul apariţiei
adresei valide şi momentul în care data citită este prezentă pe liniile de
date. Uneori, timpul de acces se măsoară în raport cu momentul apariţiei
semnalului de comandă MEMR\. Dacă timpul de acces al circuitului de
memorie folosit este mai mare decât timpul permis pe magistrală, atunci
interfaţa modulului de memorie trebuie să prelungească ciclul de transfer,
prin dezactivarea pe un timp limitat a semnalului READY către procesor.
 timpul de menţinere a semnalului de comandă MEMR\ activ (tMEMR).
 durata unui ciclu complet de citire sau scriere (tC).
 timpul de acces la scriere (tAW) – intervalul de timp între momentul în care
adresa este validă şi momentul de generare a comenzii de scriere; în
acelaşi mod ca la citire, dacă circuitul de memorie folosit are un timp de
acces mai mare, atunci interfaţa modulului trebuie să dezactiveze temporar
semnalul READY pentru prelungirea ciclului de transfer. Momentul
activării semnalului de scriere se măsoară şi în raport cu momentul în care
data este prezentă pe magistrală.
 timpul de menţinere a semnalului de scriere (tMEMW), de obicei < tMEMR.
Structura unui calculator 83

Observaţii:
1. la citire, data este generată după apariţia semnalelor de adresă şi de
comandă şi se menţine un timp scurt după dezactivarea acestora;
2. la scriere, data trebuie să apară pe magistrală înaintea semnalului de scriere
şi să fie validă pe toată durata de activare a semnalului de comandă;
3. timpul de acces acoperă întârzierile care apar într-un modul de memorie
datorită circuitelor de decodificare a adresei şi de selecţie a
amplificatoarelor de intrare sau de ieşire;
4. proiectantul trebuie să aleagă circuite de memorie cu parametri de timp
acoperitori pentru restricţiile impuse pe magistrală şi să ia în calcul
întârzierile produse de circuitele de amplificare din interfaţă şi de pe
magistrală.
Există două moduri de organizare a octeţilor în memorie, şi anume:
a) Big Endian;
b) Little Endian.
Exemplu. Se consideră că se lucrează pe cuvinte de 32 biţi. Cele două
moduri de organizare a octeţilor sunt reprezentate în figura 3.9.

Fig. 3.9. Modurile de organizare a memoriei de tip Big Endian (a) şi Little Endian (b).

Microprocesoarele PowerPC, Motorola 6800 şi HP, folosesc o organizare a


octeţilor în memorie de tip Big Endian, iar microprocesoarele DEC şi Intel folosesc
modul Little Endian. Cuvintele pot fi pe 16 biţi în loc de 32, cu doi octeţi în loc de 4.
84 ARHITECTURA SISTEMELOR DE CALCUL

3.2.5. Metodologia de proiectare a memoriilor statice

Proiectarea unui modul de memorie se face pe baza unor parametrilor de


proiectare impuşi:
 capacitatea memoriei;
 modul de organizare (unitatea elementară de acces la memorie: octet,
cuvânt, cuvânt dublu);
 tipul de magistrală pe care se conectează (numărul semnalelor de date şi
de adresă, tipurile semnalelor de comandă, parametrii de timp pentru
ciclurile de transfer);
 amplasarea modulului de memorie în spaţiul de adresare al procesorului,
exprimată prin adresa sa de început (trebuie să fie un multiplu al
capacităţii modulului);
 tipul de circuit de memorie disponibil (poate fi un parametru impus sau
unul ales de proiectant);
 alte cerinţe speciale (de exemplu: accesul dual de pe două magistrale,
reîmprospătarea controlată centralizat, implementarea unor mecanisme
de detecţie a erorilor etc.)

3.2.6. Metodologia de proiectare a memoriilor dinamice

Proiectarea memoriilor dinamice este, în principiu, similară proiectării


memoriilor statice, cu următoarele amendamente:
 trebuie să se adauge un mecanism de reîmprospătare periodică a
memoriei (refresh);
 adresele trebuie multiplexate (generarea secvenţială pe aceleaşi semnale
a adresei de linie şi a adresei de coloană);
 trebuie să se genereze semnalul de validare a adresei de linie (RAS –
Row Address Select) şi semnalul de validare a adresei de coloană (CAS
– Column Address Select);
 selecţia circuitelor se face cu semnalele RAS şi CAS (vezi figura 3.7). Excepţie
fac circuitele tip EDO-DRAM, cu semnal separat pentru selecţia circuitului.
Pentru circuitele RAM dinamice, multiplexarea în timp a adreselor a fost
necesară pentru a reduce numărul de pini ai circuitului de memorie şi, implicit,
dimensiunea acestuia. De notat că circuitele dinamice au o capacitate relativ mare,
ceea ce impune un număr mare de linii de adresă pentru selecţie. Organizarea
internă a unei memorii dinamice este sub forma unei matrice, cu linii şi coloane, iar
selecţia unei locaţii se face prin specificarea adresei sale de linie şi de coloană.
Reîmprospătarea periodică a memoriei este necesară deoarece informaţia
este păstrată un timp limitat după ultima operaţie de citire sau scriere
(condensatorul care stochează informaţia se descarcă în timp).
În figurile 3.10, 3.11, 3.12 s-au reprezentat diagramele de timp pentru ciclurile
de citire din memorie, scriere în memorie şi, respectiv, reîmprospătare a memoriei.
Structura unui calculator 85

Adrese Adresă linie Adresă coloană

RAS\

CAS\

WR\

Date Date citite


tRAS–CAS tCAS

tacces
tciclu

Fig. 3.10. Ciclu de citire din memoria DRAM.

Adrese Adresă linie Adresă coloană

RAS\

CAS\

WR\

Date Date de scris


tRAS–CAS tCAS

tacces
tciclu

Fig. 3.11. Ciclu de scriere în memoria DRAM.

Adrese Adresă linie

RAS\

CAS\

WR\

Fig. 3.12. Ciclu de reîmprospătare a memoriei DRAM (ROR).


86 ARHITECTURA SISTEMELOR DE CALCUL

Controlul procesului de reîmprospătare poate să se facă la nivelul modulului


de memorie sau centralizat la nivelul întregului sistem. Indiferent de metoda aleasă,
proiectantul trebuie să se asigure că ciclurile de reîmprospătare nu se suprapun
peste ciclurile obişnuite de citire sau scriere. Reîmprospătarea se face simultan la
nivelul unei linii întregi din matricea de memorie.

3.2.7. Module de memorie

Modulele de memorie sunt plăcuţe cu circuite integrate care includ conectori


externi, pentru a fi introduse în soclurile disponibile pe placa de bază. Modulele de
memorie sunt prevăzute cu conectori CELP (Card Edge Low Profile), având 30–83
contacte pe fiecare parte a modulului. Conectorii aflaţi la baza modulelor de memorie
permit adăugarea sau scoaterea lor de pe placa de bază fără instrumente speciale.
În ceea ce priveşte necesarul de memorie într-un sistem de calcul, este demn
de reţinut că prin creşterea dimensiunii acesteia sistemul devine mai rapid,
deoarece microprocesorul citeşte datele din RAM foarte repede, neaşteptând citirea
de pe hard disk-ul mult mai lent, fără a mai lua în consideraţie drumul pe care l-ar
avea de parcurs datele pe magistralele la fel de lente. Acest aspect nu are însă un
caracter imperativ, deoarece s-a demonstrat că, începând de la 16–32 MB instalaţi,
performanţele sistemului rămân aproape constante.
Totuşi există anumite aplicaţii care cer resurse deosebite şi îndeosebi RAM.
Este cazul profesioniştilor care lucrează mai ales în domeniul graficii (atât statică –
proiectare CAD, fotografie, design, cât şi dinamică – animaţii, spoturi publicitare,
filme, aplicaţii ştiinţifice, simulări etc.), fiind necesari peste 256 MB de RAM. Un
alt caz deosebit este al serverelor de reţea, unde necesarul de RAM este uriaş şi
poate atinge valori peste 512 MB.
Privitor la modul în care microprocesorul operează fizic cu memoria
instalată, aceasta se plasează pe placa de bază în două sau mai multe segmente
fizice numite bancuri de memorie. Acestea sunt segmentele minime de memorie
care pot fi accesate de microprocesor, numerotate începând cu 0, fiecare banc
având unul sau mai multe sloturi pentru plăcuţele de memorie. Toate aceste bancuri
sunt văzute ca nişte porţi spre memoria fizică instalată şi au dimensiuni date de
lăţimea magistralei microprocesorului (inclusiv biţii de paritate), de exemplu, de 72
de biţi pentru Pentium.
În sloturile aceluiaşi banc, se introduc întotdeauna memorii de acelaşi tip
(având în special timpi de acces identici) şi aceeaşi dimensiune, pentru a nu
provoca accesări greşite de memorie sau chiar blocarea sistemului de calcul.
Exemplu. Pentru un banc cu două sloturi: 2 plăci  1 MB sau 2 plăci  2 MB.
În bancuri diferite, se pot monta (teoretic) memorii diferite (ex.: 2  1 MB în
bancul 0 şi 2  4 MB în bancul 1), dar, practic, este bine să se utilizeze valori pare.
Exemplu. În loc de 2  4 MB + o plăcuţă de 1 MB ar trebui montate 2  4
MB + o plăcuţă de 2 MB), pentru a evita unele neplăceri.
În figura 3.13 este prezentată dispunerea bancurilor pe placa de bază.
Structura unui calculator 87

Fig. 3.13. Dispunerea bancurilor pe placa de bază.

Arhitectura dual-channel
Motivul care a dus la dezvoltarea acestei arhitecturi a fost apariţia unui
bottleneck între procesor şi memorie. Arhitectura dual-channel presupune o
tehnologie prin care se poate dubla transferul dintre RAM şi controlerul de
memorie. Controlerele de memorie care suportă dual-channel utilizează pentru
transfer două canale de date de 64 biţi, rezultând o lăţime a căii de date de 128 biţi.
Pentru a putea beneficia de avantajele arhitecturii dual-channel, este nevoie de
două sau mai multe module de memorie instalate în bancurile corespunzătoare. De
obicei, aceste bancuri sunt colorate diferit pe placa de bază. Cele două canale permit
accesul fiecărui modul de memorie la controler, crescând astfel lărgimea de bandă.
Teoretic, nu este absolut necesar ca cele două module de memorie să fie identice, dar
acest lucru este recomandat pentru a evita eventualele probleme de compatibilitate.
De asemenea, se pot folosi un modul single-sided şi unul double-sided, dar câştigul
de performanţă şi fiabilitate depind foarte mult de controlerul de memorie.
În cazul în care pe o placă de bază există două perechi de socket-uri DIMM
din bancuri diferite (în general, culoarea socket-ului identifică bancul căruia acesta
aparţine), se poate instala o pereche de două module în bancul 0 şi o pereche de
altă capacitate în bancul 1, atât timp cât acestea funcţionează la aceeaşi viteză. În
acest mod, sistemul va folosi arhitectura dual-channel.
Chiar şi module care funcţionează la frecvenţe diferite pot fi folosite în
modul dual-channel, dar, în acest caz, toate modulele vor rula la frecvenţa celui
mai lent modul. Deşi arhitectura permite – cel puţin teoretic – toate aceste
combinaţii, foarte multe plăci de bază au probleme cu anumite module de memorie
dacă urmează să le folosească în mod dual-channel. Tocmai din acest motiv este
recomandat să se utilizeze perechi identice de module.
Merită reţinut faptul că arhitectura dual-channel este o tehnologie care ţine
de plăcile de bază, şi nu de memorii. Cu alte cuvinte, orice două module de
memorii compatibile vor suporta atât operaţii single-channel, cât şi dual-channel.
88 ARHITECTURA SISTEMELOR DE CALCUL

3.2.8. Formate fizice de memorie

Plăcuţe cu cipuri de memorie există sub următoarele tipuri de încapsulări:


DIP (Dual In-line Package)
Este varianta clasică de încapsulare, în care cipul este prevăzut cu un număr
de pini pe partea sa inferioară (de ambele părţi), pini care vor fi introduşi în socluri
speciale (vezi figura 3.14). Dezavantajul este că, din cauza rezistenţei reduse pinii,
se pot rupe destul de uşor. Acest tip de încapsulare este prezent pe sisteme (i80286)
şi plăci video vechi.

Fig. 3.14. Modul de memorie DIP.

SOJ (Small Outline J Lead)


Este o metodă de încapsulare mai modernă, regăsită la modulele SIMM şi
cipurile BIOS (uneori). Se aseamănă cu DIP-ul, cu diferenţa că, în loc de pini, sunt
folosite nişte terminale în formă de J, care se prind prin îndoire (vezi figura 3.15).

Fig. 3.15. Modul de memorie SOJ.

TSOP (Thin Small Outline Package)


Este o încapsulare de tip SMD (Surface Mounted Devices), dar care necesită
o suprafaţă foarte redusă şi, de aceea, este folosită pe plăci PCMCIA, notebook-uri
şi unele plăci video (vezi figura 3.16).

Fig. 3.16. Modul de memorie TSOP.


Structura unui calculator 89

BGA (Ball Grid Array)


Este o metodă mai nouă de încapsulare, în care cipurile sunt ataşate cu
ajutorul unor biluţe din cositor, plasate sub cip. Acestea sunt destul de ieftine şi
prezintă proprietăţi bune de conductivitate electrică şi termică (permit o mai bună
disipare a căldurii, în special în versiunea cu suport ceramic). Există mai multe
variante ale încapsulării BGA (Fine BGA şi Tiny BGA), folosite în majoritatea
modulelor de memorie de azi, inclusiv memoriile Rambus (vezi figura 3.17).

Fig. 3.17. Modul de memorie BGA.

SIMM (Single In-line Memory Module)


Este o plăcuţă de memorie cu un singur rând de pini, care se introduce în sloturi
pe placa de bază. Elimină problemele de compatibilitate, datorită standardizării ei de
către producătorii plăcilor de bază. Memoriile SIMM folosesc o magistrală de
memorie pe 32 de biţi şi există în două variante (vezi figurile 3.18 şi 3.19):
 cu 30 de pini – pentru cantităţi mici de memorie (< 8 MB);
 cu 72 de pini – pentru cantităţi mai mari de memorie (> 8 MB).
Memoriile SIMM pot fi atât single sided (cu cipuri de memorie pe o singură
parte), cât şi double sided (cipurile sunt dispuse pe ambele feţe). SIMM-urile
double sided sunt realizate din două SIMM-uri single sided, conectate împreună pe
acelaşi modul din fibră de sticlă.

Fig. 3.18. Modul de memorie SIMM cu 30 de pini.

Fig. 3.19. Modul de memorie SIMM cu 72 de pini.


90 ARHITECTURA SISTEMELOR DE CALCUL

SODIMM (Small Outline Dual In-line Memory Module)


SIMM-urile de 72 de pini sunt convenabile pentru calculatoare desktop, dar
sunt prea mari pentru laptop-uri. În consecinţă, producătorii de calculatoare
miniaturizate au transformat SIMM-urile cu 72 de pini, astfel încât, în locul
conectării la un loc a pinilor de pe cele două părţi ale modulului, au introdus nişte
spaţii pe fiecare parte, pentru a avea două semnale separate. Astfel, lungimea
modulului s-a redus la jumătate, rezultatul fiind Small Outline Dual In-line
Memory Module, numit astfel datorită dimensiunilor reduse ale modulului şi a celor
două linii de conectori independenţi de pe fiecare parte a modulului (vezi figura
3.20). Un SODIMM cu 72 de pini are lungimea jumătate faţă de SIMM-ul cu 72 de
pini (2,35 inci), fiind echivalent unui SIMM 72 cu conectorii pe ambele părţi ale
modulului.

Fig. 3.20. Modul de memorie SODIMM.

SIPP (Single In-line Pin Package)


Deşi SIPP-urile sunt identice cu SIMM-urile de 30 de pini din punct de
vedere electric, din punct de vedere fizic sunt mai mici (vezi figura 3.21).
Dimensiunile standard sunt de 3,23 inci lungime şi 1 inci înălţime. Deşi din punct
de vedere funcţional SIMM-urile şi SIPP-urile pot avea aceleaşi cipuri de memorie,
aceeaşi tehnologie şi aceeaşi capacitate, între ele există diferenţe care le fac
incompatibile. Dacă se doreşte instalarea unei noi extensii de memorie sau înlocuirea
uneia existente, trebuie specificat tipul de memorie folosit: SIMM sau SIPP.

Fig. 3.21. Modul de memorie SIPP.


Structura unui calculator 91

DIMM (Double In-line Memory Modules)


Sunt module de memorie cu două rânduri de pini, având lăţimea magistralei
de 64 de biţi, folosite la implementarea memoriilor SDRAM şi DDR SDRAM
(vezi figura 3.22). DIMM-urile SDRAM folosesc 168 de pini, pe când cele DDR
SDRAM au 184 de pini. Ele mai diferă şi prin numărul fantelor de pe partea
inferioară, cele SDRAM având două, iar cele DDR, numai una. Din punct de
vedere al designului şi al tensiunii de alimentare, există 4 variante de DIMM-uri:
de 3,3V sau 5V şi cu buffer (buffered) sau fără buffer (unbuffered). Cele mai des
întâlnite sunt de tipul 3,3V, fără buffer.

Fig. 3.22. Modul de memorie DIMM.

RIMM (Rambus In-line Memory Modules)


Este tipul de încapsulare folosit la memorii Rambus (vezi figura 3.23). Este
foarte asemănător DIMM-ului, dar foloseşte setări diferite ale pinilor. Se remarcă
prin prezenţa de radiatoare pe ambele feţe ale modulului de memorie, pentru a
preveni încălzirea excesivă a acestuia. Se prezintă şi în varianta XDIMM (vezi
paragraful 3.2.9 – XDR DRAM)

Fig. 3.23. Modul RIMM Rambus.

3.2.9. Formate logice de memorie

Încărcarea cipurilor de memorie prin adresarea liniilor şi coloanelor consumă


timp de ordinul nanosecundelor, ceea ce provoacă întârzieri la răspunsurile furnizate
microprocesoarelor. Dacă se adaugă şi timpul necesar reîmprospătării, se obţin limitele
performanţei cipului de memorie. Pentru a mări performanţele memoriei, proiectanţii
au dezvoltat o serie de tehnologii care să depăşească aceste limite, orientându-se asupra
modului în care sunt procesate datele intern – moduri care constituie formatele logice
ale memoriilor interne: s-a încercat memoria de tip coloană statică, apoi s-a trecut la
FPM, care s-a dovedit a fi mai performantă prin anul 1995, ulterior tehnologia EDO
preluând supremaţia. Toate formatele logice, au acelaşi mod de adresare a celulelor şi
aceeaşi tehnologie la bază, diferind prin anumite semnale şi cuante de timp alocate.
92 ARHITECTURA SISTEMELOR DE CALCUL

SCRAM (Static Column RAM)


Primele memorii au folosit tehnologia Static Column RAM, care efectua
citirea unei coloane de memorie şi scrierea adresei pe linia de adresă a cipului,
transmiţând apoi semnalul CAS. Odată ce coloana a fost înregistrată, se poate
trimite un nou set de adrese, prin care se va indica o linie, activând RAS. În tot
acest timp, semnalul CAS este menţinut deschis, pentru a indica faptul că acea
coloană a rămas constantă.
FPM (Fast Page Mode)
Tehnologiile FPM folosesc tot o variantă a acestei strategii. Controlerul de
memorie transmite mai întâi o linie de adrese, apoi activează semnalul RAS. Cât
timp semnalul RAS este activ, se transmite o adresă a semnalului CAS, pentru a
indica o anumită celulă. Dacă semnalul RAS este menţinut activ, controlerul poate
trimite una sau mai multe adrese, urmate de un impuls al semnalului CAS, pentru a
indica celule din cadrul aceleiaşi linii.
În terminologia de adresare a memoriei, linia este numită pagină, iar tipurile de
cipuri care permit aceste operaţii sunt numite mod pagină (page mode RAM).
Calculatorul poate astfel accesa mai rapid mai multe celule dintr-o pagină de memorie,
asigurând un timp de acces de 25–30 ns. Pentru a accesa mai multe pagini, va trebui să
se schimbe ambele adrese ale liniei şi coloanei, ceea ce va genera întârzieri.
EDO (Extended Data Out)
O altă tehnologie utilizată este numită EDO (Extended Data Out) şi este
destul de rapidă pentru calculatoarele personale. Memoria EDO lucrează cel mai
bine în combinaţie cu o memorie cache. În esenţă, EDO este o variantă a memorie
Fast Page Mode (care permite accesul repetat la biţii din cadrul unei pagini de
memorie, fără a genera întârzieri).
În timp ce memoria convenţională se descarcă după fiecare operaţie de citire
şi necesită timp de reîncărcare înainte de a fi citită din nou, EDO păstrează datele
până când primeşte un alt semnal. Memoria EDO modifică cuanta de timp alocată
pentru semnalul CAS. Linia de date mai rămâne activă un interval scurt de timp,
după ce linia CAS este dezactivată. Se elimină, astfel, timpul de aşteptare necesar
pentru un ciclu separat de citire/scriere, deci, se pot citi sau scrie date la viteza cu
care cipul poate să selecteze adresele.
La cele mai multe cipuri, este cerută în mod normal o aşteptare de 10 ns între
emiterea adreselor de coloană. Modelul EDO elimină această întârziere, permiţând
memoriei să furnizeze mai repede datele solicitate. Teoretic, EDO poate să crească
performanţele cu 50–60%, dar cele mai bune implementări au condus la o creştere
a performanţelor cu 10–20%.
Fizic, cipurile EDO şi SIMM par identice, dar, pentru a implementa EDO,
este necesar un sistem complet diferit de gestiune (management) a memoriei, care
să se potrivească cu tehnologia memoriei (BIOS-ul, în special). Astfel, se pot
instala SIMM-uri EDO în majoritatea calculatoarelor, dar vor funcţiona ca
memorie obişnuită, şi nu vor contribui la o creştere a performanţei.
Structura unui calculator 93

În aplicaţiile multimedia, diferenţa între memoria cache şi EDO nu este


notabilă, astfel că EDO poate fi considerat ca o alternativă la memoria cache
secundară. La sfârşitul anului 1995, înlocuirea memoriei FPM cu EDO devenise
cea mai comună formă de reducere a timpului de acces la memorie. Diferenţa
dintre cele două memorii este mică, astfel încât multe calculatoare create pentru
memoria FPM acceptă şi memoria EDO, deşi nu câştigă în performanţă. Cu toate
că FPM nu poate imita EDO, calculatoarele pot determina ce fel de memorie s-a
instalat, lucrând cu ea în mod adecvat. Pentru o rată de transfer dată, memoria EDO
va fi cu 30% mai rapidă decât memoria FPM.
Exemplu. Acolo unde un cip page mode de 70 ns are starea de aşteptare zero
la o frecvenţă a magistralei de 25 MHz, un cip EDO poate opera la stare de
aşteptare zero pentru o frecvenţă a magistralei de 33 MHz.
BEDO DRAM (Burst Extended Data Out DRAM)
Pentru a câştiga mai multă viteză cu EDO, Micron Technology a adăugat
circuite cipului, pentru a-l face compatibil cu modul burst folosit de
microprocesoarele Intel, începând cu 486. Noul cip, numit Burst EDO DRAM,
realizează toate operaţiile de citire şi scriere în serii de câte patru cicluri, numite burst.
Aceeaşi tehnologie este regăsită sub numele generic de pipeline nibble mode DRAM,
pentru că transferul datelor se realizează în serii de câte patru cicluri pe pipeline.
Cipul funcţionează ca un EDO sau ca un page mode DRAM atunci când
linia CAS devine activă, dar, în loc să transfere un octet de date, un numărător
binar transmite un semnal de patru ori în interiorul cipului, fiecare semnal
transferând un octet de date.
BEDO este relativ uşor de fabricat, pentru că necesită un minim de
schimbări faţă de memoria EDO sau page mode DRAM. Cipul de siliciu conţine un
fuzibil care determină dacă cipul funcţionează ca EDO sau BEDO. Cipul îşi poate
schimba starea în mod ireversibil, prin arderea fuzibilului. Tehnologia BEDO este
capabilă să opereze la o viteză a magistralei de 66 MHz cu stări de aşteptare zero,
la un timp de transfer de 52 ns.
SDRAM (Sychronous DRAM)
Datorită multiplexării, cipurile de memorie nu pot opera simultan cu
microprocesoarele. Adresarea normală cere cicluri alternante, dar, prin
reproiectarea interfeţei de bază, cipurile de memorie pot accesa date la fiecare ciclu
de ceas. Modificările cipurilor de interfaţă au făcut ca cipurile de memorie să poată
opera sincron cu microprocesoarele: acestea se numesc DRAM sincron.
Deşi schimbarea interfeţei cipului poate evita blocările sistemului, ea nu are
nicio contribuţie la creşterea vitezei. Ca şi microprocesoarele superscalare, cipurile
SDRAM sunt realizate cu stagii de operare multiple şi independente, astfel încât cipul
poate să acceseze o a doua adresă înainte de a încheia procesarea primei adrese.
Extinderea pipeline se referă doar la adresarea coloanelor unei anumite pagini.
Cipurile SDRAM au rata de transfer foarte ridicată. Interfaţa şi pipeline-ul
determină timpi de transfer de ordinul nanosecundelor, ceea ce le permite utilizarea
94 ARHITECTURA SISTEMELOR DE CALCUL

pentru magistrale de memorie de 100 MHz. Cipurile au anumite limite, care reduc
viteza la aproape 66 MHz. SDRAM-urile nu pot opera la viteze mai mari de 100
MHz, pentru că sloturile SIMM-urilor devin nesigure la frecvenţe mai mari.
Memoriile SDRAM sunt adaptate standardului de magistrală sincronă
introdus de microprocesoarele familiei Intel P6 (Pentium Pro, Pentium II şi
III). În figura 3.24 este prezentată structura unei memorii organizate pe 4 blocuri,
care sunt accesibile în mod concurent.

Fig. 3.24. Structura internă a unei memorii SDRAM de 8 MB.

Structura favorizează operaţiile în regim burst. Se poate programa numărul


de locaţii dintr-un burst la valorile de 1, 2, 4, 8 octeţi sau o pagină de memorie.
Accesul începe la o adresă specificată şi continuă cu adresele succesive, până la
numărul de locaţii programate. Circuitul de memorie acceptă mai multe tipuri de
comenzi, fiecare fiind specificată printr-o combinaţie a semnalelor de intrare.
Ratele de transfer cerute de diverse tehnologii de memorie pentru starea de
aşteptare zero la o viteză de transfer dată pe magistrală sunt prezentate în tabelul 3.1.
Structura unui calculator 95

Tabelul 3.1
Ratele de transfer la o viteză dată a magistralei locale

viteza magistralei de memorie FPM EDO BEDO SDRAM


25 MHz 70 ns 70 ns 70 ns 12 ns
33 MHz 52 ns 70 ns 70 ns 15 ns
50 MHz N/A 52 ns 70 ns 12 ns
66 MHz N/A N/A 52 ns 10 ns

Dintre versiunile rapide de SDRAM dezvoltate ulterior, se pot aminti:


 PC 100 RAM – timp de acces 8 ns, rată de transfer 500-800 MB/s;
 PC 133 RAM – timp de acces 7,5 ns, rată de transfer 800 MB/s;
 PC 2100/2700/3200 – la frecvenţele de 266/333/400 MHz.
EDRAM (Enhanced DRAM)
Memoriile de tip EDRAM sunt mai rapide şi se obţin din DRAM-urile
obişnuite prin adăugarea unor blocuri mici de memorie cache statică pe fiecare cip.
Cache-ul operează la viteză înaltă (în mod obişnuit, 1 ns), astfel încât pot să
acopere cererile de date ale microprocesorului fără a adăuga stările de aşteptare
generate de operaţia de reîmprospătare. Producătorul tehnologiei EDRAM
(Ramtron) descrie patru avantaje ale acestui tip de memorie:
 legarea cache-ului SRAM cu DRAM-ul pe acelaşi cip presupune folosirea
unei magistrale de lăţime mare pentru conectare (Ramtron foloseşte o
magistrală de 16.384 biţi), care poate determina o rată de umplere a
memoriei cache de aproximativ 60 Gb/s, comparativ cu 110 Mb/s la
cache page mode DRAM. Timpul de umplere este de aproape şapte ori
mai mic (35 ns) la EDRAM faţă de cache page mode DRAM (250 ns);
 modelul Ramtron foloseşte o structură de control diferită faţă de DRAM-
ul convenţional, ceea ce permite ca memoria să fie preîncărcată în timp
ce sistemul realizează transferul în mod burst din cache, preîncărcarea
determinând reducerea timpului de acces;
 deşi cache-ul EDRAM foloseşte proiectarea write through (vezi
paragraful 3.2.12), scrierea în memoria principală poate fi făcută cu timp
de aşteptare zero. Prima operaţie de scriere necesită 7 ns, iar ciclul de
scriere pentru o pagină normală este de 15 ns;
 proiectarea EDRAM permite accesul separat la bancurile de cache, ceea
ce reduce timpul de acces la sistemele care lucrează în multitasking.
CDRAM (Cached DRAM)
Memoria CDRAM, realizată de Mitsubishi, adaugă o memorie cache pe
fiecare cip, utilizând un model de tip asociat. Cipul iniţial de 4 MB are încorporată
o memorie cache de 2 KB, folosind două buffer-e de câte un cuvânt (16 biţi) pentru
transferul dintre cache şi circuitele externe.
96 ARHITECTURA SISTEMELOR DE CALCUL

Spre deosebire de EDRAM, părţile CDRAM asociază atât cache-ului, cât şi


DRAM-ului principal, acelaşi spaţiu de adrese, astfel încât acestea operează
independent una faţă de cealaltă, putând fi adresate separat.
Memoria cache este suficient de rapidă pentru a transfera date în mod burst,
la o frecvenţă de 100 MHz. Cipul permite celor două buffer-e să funcţioneze
independent, deci, pot lucra în flux continuu.
MDRAM (Multibanc DRAM)
Principiul de lucru este următorul: în locul unui bloc de celule, fiecare celulă
este adresată prin numărul liniei şi al coloanei. Memoria DRAM produsă de MoSys
Inc. desparte informaţia stocată într-un număr de bancuri de memorie separate.
În modelul MDRAM iniţial de 4 MB, fiecare din cele 16 bancuri de memorie
păstrează 256 KB, ele fiind legate printr-o magistrală centrală de date, care
accesează fiecare banc individual. Acest model permite unui banc de memorie să
trimită sau să primească o serie de date printr-un singur ciclu de ceas şi să comute
la un alt banc pentru un alt transfer. Deoarece fiecare banc de memorie dispune de
o interfaţă de 32 biţi care lucrează la fel ca SDRAM, cipurile MDRAM operează la
viteze de transfer de până la 1 GB/s.
RDRAM (Rambus DRAM)
Modelul Rambus foloseşte un cache RAM static de 2.048 octeţi, care se
leagă la memoria dinamică printr-o magistrală de lărgime de bandă foarte mare,
permiţând transferul unei pagini de memorie în cache într-un singur ciclu. Cache-ul
este destul de rapid, furnizând date la un timp de acces de 15 ns.
Memoria Rambus nu este implementată pe calculator ca o memorie standard.
Ea foloseşte o magistrală specială de înaltă viteză. Indiferent de legătura cu
microprocesorul, lăţimea magistralei dintre controlerul de memorie şi cipul
Rambus este de 1 octet. Rambus operează la frecvenţe între 250 şi 800 MHz,
modelul permiţând transferul a doi octeţi la fiecare ciclu de ceas: unul pe frontul
crescător, iar al doilea pe frontul descrescător al impulsului de ceas.
Accesul la memorie se face în mod inteligent, incluzând funcţia de preîncărcare
a datelor, iar citirea acestora se face în pachete mici, la viteze ridicate ale
semnalului de ceas. Viteza Rambus este izolată de microprocesor şi rămâne
constantă indiferent de viteza microprocesorului. Rata de transfer maximă poate
atinge 1,6 GB/s. Viteza ridicată a Rambus-ului impune limite în proiectarea unui
sistem de memorie: magistrala trebuie să fie scurtă şi poate suporta doar 32 de
cipuri sau 10 module de memorie Rambus, un modul conţinând 32 de cipuri
Rambus. O viteză de peste 500 MB/s a magistralei poate să inducă interferenţe;
pentru a le minimiza, Rambus funcţionează la 2 V, cu oscilaţii de 300 mV.
Rambus operează ca o mică reţea, trimiţând date în pachete cu o lungime de
până la 256 octeţi. Modelul este schimbat radical şi cere o modificare importantă a
tipului de calculator pe care se instalează, fiind util pentru sisteme care includ
integrare video. O colaborare între Intel şi Rambus s-a materializat în 1999 printr-
un DRAM care operează la 100 MHz, pe calculatoare de 64 de biţi.
În figura 3.25 este prezentată arhitectura unui cip de memorie RDRAM cu
capacitatea de 32 MB.
Structura unui calculator 97

Fig. 3.25. Cip de memorie RDRAM de 32 MB.

Aşa cum se observă din figură, unul din atu-urile memoriei RDRAM este că
fiecare cip de memorie poate conţine până la 32 de bancuri de memorie. Aceste
bancuri sunt individuale şi aparţin riguros aceluiaşi cip, spre deosebire de bancurile
SDRAM, care sunt împrăştiate printre mai multe cipuri de memorie. Revenind la
diagramă, fiecare banc de memorie are dimensiunea de 1 MB, ceea ce face ca
întregul cip să aibă o capacitate de 32 MB.
Fiecare banc reprezintă o matrice DRAM organizată în 512 linii a câte
128 dualocţi (dualoctul este cea mai mică unitate de memorie adresabilă de către
RDRAM). Fiecare dualoct conţine 16 octeţi şi, deci, dimensiunea totală a liniilor
matricei este de 2 KB. În mod ideal, se poate păstra activă câte o linie din fiecare
din cele 32 de bancuri, pentru a maximiza şansele de a primi datele dintr-o linie
activă. În realitate, însă, pot exista numai 16 bancuri deschise simultan sau, mai
precis, doar jumătate din bancurile existente pe cip.
Figura 3.26 prezintă două operaţii: una de citire şi cealaltă de scriere din/în
memorie, pentru a ilustra lucrul simultan cu doar jumătate din bancurile disponibile.
Modul de funcţionare este următorul. Atunci când procesorul citeşte un dualoct
de 16 octeţi dintr-un banc, datele respective părăsesc bancul şi pătrund în
amplificatoarele de semnal (numerotate), care sunt plasate de o parte şi de alta a
bancurilor de memorie. Data A şi Data B reprezintă două jumătăţi ale unui dualoct (cu
8 octeţi fiecare), care părăsesc bancul de memorie pe căi separate, aşa cum se observă
în figura 3.26. Cele două magistrale care încadrează bancurile de memorie au fiecare o
lăţime de 8 octeţi, deci jumătatea dualoctului reprezentată de Data A se va transfera pe
magistrala din dreapta, iar cea reprezentată de Data B pe magistrala din stânga.
Deşi pe diagramă pare că fiecare banc este conectat la 4 amplificatoare de
semnal, de fapt, fiecare pereche de căsuţe cu aceeaşi etichetă (0/1, 1/2 etc.) plasată
la stânga şi la dreapta unui banc constituie un singur amplificator de semnal.
98 ARHITECTURA SISTEMELOR DE CALCUL

Fig. 3.26. O operaţie de citire şi o operaţie de scriere din/în memoria RDRAM.

Deoarece un număr prea mare de amplificatoare ar mări considerabil


suprafaţa pastilei de memorie, fiecare banc de memorie împarte cele două
amplificatoare adiacente cu bancurile vecine lui. De exemplu, amplificatoarele 0/1
şi 1/2 sunt conectate la bancurile 0, 1 şi 2. În acest fel, se micşorează suprafaţa
cipului, ceea ce duce la o reducere a costului.
Există şi excepţii, iar acestea sunt bancurile 0, 15, 16 şi 31, care sunt conectate
fiecare la câte un singur amplificator dedicat şi, ca atare, trebuie să aştepte ca un
singur banc vecin să îşi termine activitatea pentru a deveni active. Faptul că două
bancuri de memorie ajung să împartă un singur amplificator de semnal (sense amp)
reprezintă motivul pentru care numai jumătate din bancurile unui cip pot fi active
simultan. Chiar şi aşa, numărul bancurilor de memorie active ale unui modul
RDRAM este mult mai mare faţă de cel al unui modul SDRAM. De exemplu, pentru
un singur modul RIMM cu 4 cipuri, există 32 de bancuri pe cip şi, deci, 128 de
bancuri, dintre care 64 active simultan pentru întregul modul. Acest număr ridicat de
bancuri de memorie reprezintă explicaţia pentru lărgimea de bandă şi frecvenţele
foarte mari (400 MHz, 533 MHz) cu care operează memoriile SDRAM.
Referitor la ultima diagramă prezentată, mai trebuie făcute două precizări:
 fiecare amplificator de semnal are şi o capacitate proprie de stocare de
1024 de octeţi, el fiind un buffer între bancul de memorie şi magistrala
sistemului;
 cele două magistrale de 8 octeţi amintite anterior sunt divizate numai
conceptual, în realitate formând o singură magistrală cu lăţimea de 16 octeţi.
Schema din figura 3.27 ilustrează diferenţele dintre un sistem de memorie
bazat pe RDRAM şi unul bazat pe SDRAM. Se observă că la RDRAM cipurile
sunt ataşate unor module de memorie RIMM, aşa cum memoria SDRAM este
organizată în module DIMM.
Structura unui calculator 99

Fig. 3.27. Diferenţele dintre sistemele de memorie RDRAM şi SDRAM.

Diferenţa constă în faptul că RIMM-urile sunt ataşate plăcii de bază în mod


serial, neputând exista sloturi de memorie goale. Dacă nu există suficiente module
de memorie RIMM propriu-zise, sloturile de memorie de pe placa de bază rămase
libere vor trebui completate cu module de continuitate, pentru a permite canalului
Rambus să-şi atingă rezistenţa de sarcină (terminaţia). Din punct de vedere teoretic,
pot exista oricâte canale Rambus independente într-un sistem, fiecare cu o lărgime
de bandă de 1,6 GB/s, dar, în practică, numărul canalelor este limitat din
considerente de design al plăcilor de bază.
Un alt factor care complică designul unui subsistem de memorie Rambus
este dat de faptul că semnalului de ceas provenit de la controlerul de memorie îi
este necesar un timp atât de ridicat pentru a ajunge la cel mai depărtat modul
RIMM din sistem, încât poate fi defazat de mai multe ori, faţă de semnalul ajuns la
primul modul RIMM.
Din acest motiv, canalul Rambus suportă până la cinci domenii pentru
semnalul de ceas, doar pentru a putea păstra o sincronizare între transferurile pe
magistrala de memorie. Aceste schimbări ale domeniilor de tact complică însă şi
mai mult arhitectura sistemului de memorie Rambus, prezentată în figura 3.28.
100 ARHITECTURA SISTEMELOR DE CALCUL

Fig. 3.28. Elementele de bază ale unui sistem de memorie RDRAM.

DDR SDRAM (Double Data Rate Synchronous DRAM)


Acest tip de memorie transferă date pe ambele fronturi (crescător şi
descrescător) al semnalului de ceas. În felul acesta, viteza rezultată în transferul
datelor este dublă (Double Data Rate) faţă de o memorie SDRAM. DDR SDRAM
se montează pe acelaşi tip de socluri, dar are nevoie de un nou cipset.
Faţă de RDRAM, DDR SDRAM prezintă următorul dezavantaj: dacă datele
solicitate nu există în cache, conţinutul curent al acestuia este vărsat în DRAM-ul
integrat pe cip, este accesată o altă pagină şi abia apoi are loc citirea din memorie.
Avantajele DDR SDRAM faţă de RDRAM sunt preţul şi faptul că rata de
transfer RDRAM este aproximativ 60–70% din rata DDR SDRAM (datorită
faptului că lucrează pe 16 biţi, faţă de DDR SDRAM, care lucrează pe 64 de biţi).
Deoarece memoria DDR SDRAM este o variantă evoluată a SDRAM-ului,
felul în care interacţionează cu magistrala de memorie este foarte asemănător celui
al predecesoarei sale, cu excepţia faptului că la DDR SDRAM se transferă două
cuvinte de date într-o perioadă de ceas.
Figura 3.29 prezintă funcţionarea unui sistem de memorie format din 3
DIMM-uri, fiecare cu 4 bancuri de memorie pe 64 de biţi.
În figură sunt marcate blocurile de date de 64 de biţi (alcătuite din 4 pachete
de câte 16 biţi), blocuri trimise de bancurile de memorie către procesor în timpul
unei operaţii de citire. Săgeţile indică sensul parcurs de date pe magistrala de
memorie la care sunt conectate DIMM-urile. În cazul unei operaţii de scriere,
sensul ar fi, evident, invers (CPU–memorie).
Evaluarea modulelor DDR SDRAM se face într-un mod diferit de SDRAM,
principalul criteriu nemaifiind frecvenţa, ci lărgimea de bandă maximă oferită
teoretic şi care se exprimă în MB/s.
Standardele uzuale actuale sunt PC1600, PC2100 şi PC2400. Primul are o
frecvenţă de 2100 MHz (datorită transmisiei datelor pe ambele fronturi ale
semnalului). Lărgimea de bandă de 1600 MB/s se obţine înmulţind lăţimea căii de
date (64 de biţi) cu frecvenţa memoriei (200 MHz) şi împărţind la numărul de biţi
dintr-un octet (8).
Similar, pentru PC2100 frecvenţa este 2133MHz, adică, 266 MHz, iar
pentru PC2700, frecvenţa este de 333 MHz.
Structura unui calculator 101

Fig. 3.29. Sistem de memorie DDR SDRAM cu 3 DIMM-uri a câte 4 bancuri pe 64 de biţi.

DDR2 SDRAM (Double Data Rate Two Synchronous DRAM)


Memoriile DDR2 fac parte din familia memoriilor SDRAM, reprezentând o
îmbunătăţire a memoriilor DDR SDRAM. Unul dintre principalele avantaje ale
DDR2-ului este abilitatea acestuia de a opera cu magistrala de date externă de două
ori mai repede decât DDR. Acest lucru este obţinut prin îmbunătăţirea semnalizării
magistralei şi prin operarea celulelor de memorie la jumătate din frecvenţa de ceas
(un sfert din rata de transfer a datelor).
Dacă memoria DDR2 ar opera la aceeaşi frecvenţă de ceas ca DDR, ar
asigura aceeaşi lărgime de bandă, dar ar avea o întârziere semnificativ mai mare.
Ca şi în cazul DDR, datele din memoriile DDR2 sunt transferate atât pe frontul
crescător, cât şi pe frontul descrescător al ceasului. Diferenţa principală dintre DDR
şi DDR2 este aceea că în cazul DDR2 magistrala este sincronizată la de două ori
frecvenţa la care lucrează celulele de memorie, astfel încât pot fi transferaţi 4 biţi de
date într-un ciclu al celulei de memorie, conform diagramei de timp din figura 3.30.
Frecvenţa magistralei DDR2 este crescută prin unele îmbunătăţiri la
interfaţa electrică, folosirea tehnologiei on-die termination sau folosirea unor
buffer-e de preîncărcare. Buffer-ul de preîncărcare în cazul DDR2 are o adâncime
de 4 biţi, spre deosebire de doi biţi în cazul DDR. Din păcate, implementarea
tuturor acestor tehnologii au dus la o creştere a întârzierilor. Dacă în cazul DDR
apare o întârziere între două şi trei cicluri ale magistralei de date, DDR2 poate avea
întârzieri de 4 până la 6 cicluri. Acesta este motivul care a făcut necesar ca
magistrala să lucreze la o frecvenţă de două ori mai mare.
102 ARHITECTURA SISTEMELOR DE CALCUL

Fig. 3.30. Citirea în rafale la DDR2 SDRAM.

Un alt cost cauzat de creşterea vitezei este necesitatea încapsulării cipurilor


în capsule mai scumpe şi mai dificil de asamblat, cum ar fi BGA (Ball Grid Array).
Schimbarea capsulelor a fost necesară pentru a menţine integritatea semnalului la
viteze mai mari.
Din punct de vedere al consumului de energie, DDR2 a mai făcut un pas
înainte, necesitând numai 1,8 V faţă de 2,5 V, cât era necesar pentru DDR.
Consumul de energie poate fi redus chiar şi mai mult, prin reducerea frecvenţei în
situaţiile în care nu este necesară o rată de transfer foarte mare. Tensiunea maximă
recomandată este 1,9 V, fiind chiar interzisă depăşirea acesteia în situaţiile în care
stabilitatea memoriei este un factor cheie. Totuşi, modulele de memorie ar trebui să
reziste până la 2,3 V, înainte ca memoria să fie complet distrusă.
Pentru folosirea în calculatoarele personale, memoriile DDR2 vin sub forma
unor module DIMM cu 240 de pini, identificate, de obicei, după rata maximă de
transfer a datelor.
Cele şase standarde pentru modulele DDR2 sunt prezentate în tabelul 3.2.

Tabelul 3.2
Standardele pentru modulele de memorie DDR2

frecvenţa perioada frecvenţa transferuri numele rata max.


numele
memoriei ceasului magistralei de date pe modu- de transfer
standardului
(MHz) (ns) I/O (MHz) sec. (mil.) lului (MB/s)

DDR-400 100 10 200 400 PC-3200 3200

DDR-533 133 7,5 266 533 PC-4200 4266

DDR-667 166 6 333 667 PC-5300 5333

DDR-800 200 5 400 800 PC-6400 6400

DDR-1066 266 3,75 533 1066 PC-8500 853

DDR-1300 325 3,1 650 1300 PC-10400 10400


Structura unui calculator 103

DIMM-urile DDR2 nu au fost proiectate să fie compatibile cu modulele


DDR. Cheia de siguranţă la DDR2 se află în altă poziţie, iar densitatea pinilor (240
pentru desktop, 200 pentru notebook) este uşor mai mare decât în cazul DDR
(184). Modulele DDR2 mai rapide sunt compatibile cu modulele DDR2 mai lente,
însă magistrala va funcţiona la viteza celui mai lent modul.
DDR3 SDRAM (Double Data Rate Three Synchronous DRAM)
Memoriile DDR3 sunt o îmbunătăţire a modelului precedent de memorii,
DDR2. Principala diferenţă între cele două constă în faptul că magistrala I/O
DDR3 funcţionează la o frecvenţă de patru ori mai mare decât celulele de memorie.
În plus, DDR3 permite cipuri de capacitate de la 512 Mb până la 8 Gb, ceea ce
duce la posibilitatea obţinerii de module de până la 16 GB. Memoriile DDR3
promit o reducere a consumului de energie cu 17%, tehnologia de 90 nm folosită în
fabricarea cipurilor DDR3 având nevoie de o tensiune de 1,5 V (faţă de 1,8V
pentru DDR2 sau 2,5 V pentru DDR). Unii producători propun utilizarea
tranzistoarelor dual-gate, tehnologie care ar permite reducerea şi mai mare a
scurgerilor de curent. Tensiunea maximă recomandată pentru DDR3 este 1,575 V.
În mod normal, memoriile ar trebui să reziste până la 1,975 V, fără a suferi o
distrugere totală, deşi, cel mai probabil, nu vor funcţiona corect la acest nivel.
Principalul avantaj al memoriilor DDR3 este dat de lărgimea de bandă.
Creşterea acesteia a fost posibilă şi datorită buffer-ului de preîncărcare, a cărui
adâncime a fost mărită de la 4 biţi, cât era în cazul DDR2, la 8 biţi. Această dublare
a dimensiunii buffer-ului este spectaculoasă, în comparaţie cu celelalte mici
incrementări ale dimensiunii care au avut loc anterior. Redimensionarea buffer-ului
are un cuvânt greu de spus în ceea ce priveşte întârzierea semnalului CAS.
Teoretic, modulele DDR3 pot transfera date la o frecvenţă de 800–1600 MHz,
folosind ambele fronturi ale tactului I/O, cu frecvenţa de 400–800MHz.
DIMM-urile DDR3 au acelaşi număr de pini ca modulele DDR2 (240),
având şi aceleaşi dimensiuni, dar, cu toate acestea, sunt incompatibile din punct de
vedere electric, iar cheia de securitate este situată în altă poziţie.
Cele patru standarde pentru modulele DDR3 sunt prezentate în tabelul 3.3.

Tabelul 3.3
Standardele pentru modulele de memorie DDR3

frecvenţa perioada frecvenţa transferuri numele rata max. de


numele
memoriei ceasului magistralei de date pe modu- transfer
standardului
(MHz) (ns) I/O (MHz) sec. (mil.) lului (MB/s)

DDR3-800 100 10 400 800 PC-6400 6400


DDR3-1066 133 7,5 533 1066 PC-8500 8533
DDR3-1333 166 6 667 1333 PC-10600 10667
DDR3-1600 200 5 800 1600 PC-12800 12800
104 ARHITECTURA SISTEMELOR DE CALCUL

O tehnologie complet nouă, folosită pentru prima dată în cazul DDR3, este
topologia Fly-By. Generaţiile SDRAM anterioare, inclusiv DDR2, utilizau o topologie
stea pentru a împărţi datele spre mai multe căi de semnal. Topologia Fly-By utilizează
o singură legătură directă către toate componentele DRAM, ceea ce permite un
răspuns mult mai rapid din partea sistemului.
Motivul pentru care DDR2 nu s-a putut dezvolta mai mult decât a făcut-o nu
se datorează atât procesului de fabricaţie, care ar fi trebuit rafinat mai mult, cât
unor limitări mecanice. În esenţă, DDR2 nu este pregătit să atingă viteze mai mari.
Teoretic, acest lucru ar fi posibil, dar, practic, tehnologia mecanică dezvoltată până
azi nu permite acest lucru. La frecvenţe mai mari, DIMM-ul începe să întâmpine
probleme în ceea ce priveşte integritatea semnalului. În cazul topologiei stea
folosite de DDR2, această problemă s-ar rezolva dacă s-ar reuşi echilibrarea tuturor
ramurilor. Din păcate, efortul necesar pentru a face acest lucru este peste limitele
fizice din ziua de azi.
Pentru DDR3, integritatea semnalului este rezolvată la nivelul fiecărui modul
DRAM, în locul încercării unei echilibrări la nivelul întregii platforme de memorie.
Acum, atât adresele, cât şi semnalele de control, sunt transmise pe aceeaşi cale.
Practic, topologia Fly-By elimină limitările cauzate de echilibrarea mecanică
folosită în DDR2, înlocuind-o cu un semnal automat de întârziere, generat de către
controlerul de memorie. O altă inovaţie prezentă la DDR3 constă în apariţia unui
pin de reset. Acest pin permite resetarea unui modul de memorie fără resetarea
întregului sistem, ceea ce duce la o scădere a timpului şi a energiei pierdute.
De remarcat este şi prezenţa unui senzor de temperatură, pentru prima dată
la memoriile DDR, senzor care detectează momentul în care modulul se apropie de
un anumit prag de temperatură şi, în consecinţă, poate scurta intervalele de refresh.
Acest sistem de siguranţă permite şi el o reducere a consumului de energie.
Un alt element caracteristic DDR3 este sistemul XMP (eXtended Memory
Profile). Acest sistem, implementat pe placa de bază, permite utilizatorului unei
configuraţii alcătuite dintr-un procesor Intel şi o memorie DDR3 să realizeze un
overclocking foarte simplu. Doar prin selectarea unei anumite opţiuni, sistemul va
decide singur factorii de multiplicare, tensiunile şi frecvenţele până la care poate fi
forţat ceasul pentru a câştiga un plus de performanţă.
XDR DRAM (eXtreme Data Rate DRAM)
Memoriile XDR-RAM sunt considerate ca fiind succesorul memoriilor
Rambus (RDRAM), fiind în concurenţă directă cu DDR2, SDRAM şi GDDR4
(memoriile grafice pentru plăcile grafice din familia GeForce FX). XDR-ul a fost
proiectat în special pentru sisteme mici, care necesită o lărgime de bandă ridicată,
şi pentru sisteme GPU (Graphical Processing Unit) de top. Această tehnologie
elimină problemele cauzate de întârzierile ridicate, prezente la primele modele
RDRAM. De asemenea, XDR DRAM permite o lărgime de bandă per pin mult mai
mare, ceea ce duce la scăderea costurilor de producţie a plăcilor de circuite
integrate. Scăderea costurilor este posibilă datorită faptului că sunt necesare mai
puţine căi de transmisie a datelor pentru aceeaşi lărgime de bandă.
Structura unui calculator 105

Dispozitivele XDR DRAM folosesc un nucleu DRAM cu 8 bancuri,


implementate în tehnologie CMOS, având o densitate de cel puţin 512 Mb. Spre
deosebire de alte dispozitive DRAM, dispozitivele 16 XDR DRAM implementează
o lărgime programabilă şi suportă magistrale de 8, 4 sau chiar 2 biţi.
Elementele cheie ale arhitecturii XDR care permit performanţe ridicate sunt:
 XDR DRAM este un circuit integrat de memorie de mare viteză, cu o interfaţă
care lucrează la 4 GHz, asigurând o lărgime de bandă de până la 8GB/s;
 Controlerul I/O, numit XIO în cazul XDR DRAM, asigură aceeaşi viteză
ridicată ca la DRAM, aducând şi unele îmbunătăţiri (tehnologia FlexPhase);
 Controlerul de memorie XMS este optimizat pentru a profita de inovaţiile
aduse de XDR, cum ar fi tehnologia Dynamic Point-to-Point, care
permite o extindere a capacităţii, păstrând în acelaşi timp şi integritatea
ridicată a semnalului, caracteristică modelului point-to-point;
 Generatorul de tact, XCG, asigură patru ieşiri programabile, care
garantează semnalele de tact pentru XIO şi alte dispozitive XDR DRAM.
Celula XIO este un controler I/O performant cu întârzieri reduse, care
foloseşte un sistem de semnalizare pe 8 biţi, la o frecvenţă de până la 4 GHz,
permiţând o lărgime de bandă de până la 8 GB/s de la un singur dispozitiv XDR
DRAM. XIO poate fi configurat să suporte mai multe dispozitive, asigurând astfel
lărgimea de bandă necesară aplicaţiilor grafice sau altor aplicaţii.
XIO este compus din unul până la 12 blocuri de cerere a magistralei (RQ –
ReQuest bus block), un bloc de control (CTL) şi un număr variabil de blocuri de date
de 8 sau 9 biţi – în cazul memoriilor cu cod corector de erori (DQ). Blocul RQ asigură
subsistemelor memoriei informaţiile referitoare la adrese şi control. Blocul CTL
asigură accesul la registre, iniţializarea, întreţinerea şi testarea funcţiilor sistemului. Un
bloc DQ este capabil să primească şi să transmită date cu o frecvenţă de până la 4 GHz.
Memoriile XDR DRAM vin sub forma unor module XDIMM, specifice
Rambus (vezi figura 3.31). Acestea oferă flexibilitate în ceea ce priveşte upgrade-ul,
o capacitate ridicată şi performanţă ridicată, esenţială în cazul serverelor, de
exemplu. Datorită tehnologiei Dynamic Point-to-Point, XDIMM-urile pot fi
instalate atât în configuraţie single-channel, cât şi în configuraţie dual-channel,
păstrând întreagă lărgimea de bandă a sistemului şi conservând integritatea
semnalului, caracteristică topologiei point-to-point.
O altă inovaţie tehnologică adusă de XDR este tehnologia DRSL
(Differential Rambus Signaling Level). Această tehnologie presupune un standard
de semnalizare de joasă tensiune, joasă putere, diferenţial, care permite o
magistrală scalabilă, multi-GHz, bidirecţională, de tip point-to-point, care
conectează celula XIO la dispozitivele XDR DRAM.
XDR foloseşte şi standardul RSL (Rambus Signaling Level), dezvoltat
iniţial pentru RDRAM, standard care permite conectarea a până la 36 de
dispozitive într-un mod sincron, adresate prin intermediul unei magistrale şi
comandate prin nişte semnale. Sistemul de memorie Rambus XDR satisface
nevoile computaţionale din numeroase domenii, cum ar fi computere grafice,
servere, reţelistică sau electronică de larg consum.
106 ARHITECTURA SISTEMELOR DE CALCUL

Fig. 3.31. Modul de memorie XDIMM.

eDRAM (embedded DRAM)


eDRAM reprezintă o memorie dinamică cu acces aleator, capacitivă,
integrată în mod uzual în acelaşi pachet cu procesorul, spre deosebire de modulele
DRAM externe şi SRAM-urile utilizate tipic pentru memorii cache.
Împachetarea permite folosirea de magistrale mult mai mari şi o viteză
sporită a operaţiilor. Datorită unei densităţi mult crescute pentru DRAM în
comparaţie cu SRAM, pot fi utilizate cantităţi mai mari de memorie. Diferenţa în
procesul de fabricaţie determină dificultatea integrării pe aria cipului procesorului,
astfel încât mai multe circuite integrate de pe arie trebuie împachetate într-un chip,
ridicând costul. Cele mai recente dezvoltări surmontează această limitare, utilizând
procesarea CMOS standard pentru a fabrica eDRAM, ca în formatul de memorie
1T-SRAM (vezi paragraful următor).
Memoria eDRAM este folosită într-o largă varietate de console de jocuri.
Atât celula microprocesoare utilizată în PlayStation 3, cât şi cea pentru IBM
Power, folosesc eDRAM la cache-ul L2, în nodul de procesare de 45 nm al IBM.
1T-SRAM (1 Transistor Static RAM)
Tehnologia de fabricare a memoriilor 1T-SRAM, introdusă de către MoSys,
oferă o alternativă la memoriile SRAM tradiţionale, permiţând o capacitate mai
mare. Principala utilizare a memoriilor 1T-SRAM este în cazul sistemelor
embedded (sisteme dedicate). MoSys a implementat o celulă de memorare cu un
singur tranzistor, ca în cazul DRAM, dar această celulă este susţinută de o reţea de
circuite care fac funcţionarea memoriei să fie echivalentă celei a memoriilor
SRAM (controlerul ascunde toate operaţiile specifice memoriilor DRAM, cum ar fi
preîncărcarea sau reactualizarea). În consecinţă, memoriile 1T-SRAM au o
interfaţă standard SRAM de un ciclu şi sunt percepute de restul logicii sistemului
exact ca orice altă memorie SRAM.
Datorită celulei de memorare cu un tranzistor, varianta 1T-SRAM este mai
mică decât SRAM-ul clasic, bazat pe celule de 6 tranzistoare, fiind mai apropiată
de eDRAM (embedded DRAM) în ceea ce priveşte dimensiunea şi densitatea (vezi
figura 3.32).
În acelaşi timp, 1T-SRAM oferă performanţe comparabile cu SRAM, consumă
mai puţin decât eDRAM şi este realizată în tehnologie CMOS, ca SRAM-ul clasic.
Structura unui calculator 107

Fig. 3.32. Comparaţie între celula 1T-SRAM şi celula SRAM cu 6 tranzistoare.

MoSys prezintă 1T-SRAM ca fiind soluţia ideală pentru aplicaţiile bazate pe


SOC-uri (System-On-a-Chip – se încearcă integrarea tuturor componentelor unui
computer sau a unui sistem electronic într-un singur circuit integrat), cum ar fi
microcontrolere, DSP-uri, blocuri de memorie, timer-e, regulatoare de tensiune etc.
Memoriile 1T-SRAM sunt organizate sub forma unei matrice de mici
bancuri de memorie (în general, 128 linii a câte 256 de biţi fiecare, rezultând un
total de 32 Kb) conectate la o memorie cache de dimensiunea unui banc şi la un
controler de memorie.
Chiar dacă, în comparaţie cu DRAM, 1T-SRAM este ineficient în ceea ce
priveşte spaţiul, lungimea mai mică a cuvintelor permite atingerea unor viteze mult
mai mari, reuşindu-se astfel realizarea unui ciclu RAS la fiecare acces. Fiecare
acces se face la câte un banc, permiţând astfel bancurilor nefolosite să fie
reactualizate în acelaşi timp. În plus, fiecare linie citită este copiată şi în memoria
cache. În eventualitatea unor accesări repetate la acelaşi banc, există două variante:
fie sunt accesate linii diferite, caz în care toate liniile vor fi reactualizate automat,
fie aceeaşi linie este accesată de mai multe ori. În cazul celei de-a doua variante,
următoarele citiri se vor face din memoria cache, acordându-se astfel timpul
necesar pentru realizarea reîmprospătării.
Până în mai 2008 au fost lansate patru generaţii de memorii SRAM cu un
tranzistor:
1. 1T-SRAM original, care are o dimensiune de două ori mai mică decât
6T-SRAM şi consumă mai puţin de 50% faţă de acesta.
2. 1T-SRAM-M, care este o variantă cu un consum mult mai mic în modul
stand-by, fiind proiectată pentru uzul în sisteme portabile, de genul
telefoanelor mobile.
108 ARHITECTURA SISTEMELOR DE CALCUL

3. 1T-SRAM-R, care încorporează un sistem de corecţie a erorilor (ECC).


Celulele de memorie sunt mai mici, ceea ce duce automat la o rată mai
mare de apariţie a erorilor. Totuşi, sistemul ECC rezolvă această problemă.
4. 1T-SRAM-Q, care este o versiune quad-density, folosind un proces
nestandard de fabricare a condensatoarelor, care permite înjumătăţirea
dimensiunilor memoriei încă o dată faţă de 1T-SRAM-R.
Memoriile 1T-SRAM funcţionează la viteze comparabile cu 6T-SRAM şi
sunt semnificativ mai rapide decât eDRAM, modelul quad-density fiind cu doar
10–15% mai mare. În majoritatea proceselor de fabricare a memoriei eDRAM este
necesară parcurgerea unor paşi suplimentari şi costisitori, depăşind astfel destul de
mult costul de producţie al memoriei 1T-SRAM.
Memoriile 1T-SRAM sunt disponibile şi sub formă de circuite integrate.
Nintendo GameCube a fost prima platformă care a folosit 1T-SRAM ca sistem
principal de stocare a datelor. De asemenea, memoria 1T-SRAM a fost folosită în
urmaşul lui GameCube, consola Nintendo’s Wii.
QDR II SRAM (Quad Data Rate II Static Random Access Memory)
QDR este o memorie SRAM echipată cu un pin pentru intrarea datelor şi un
pin separat pentru ieşirea datelor, spre deosebire de SRAM standard, în care cei doi
pini sunt comuni. QDR permite introducerea şi extragerea datelor pe ambele
fronturi (DDR – Double Data Rate), ducând astfel la obţinerea unor viteze foarte
mari pentru operaţiile de scriere şi de citire, care se pot desfăşura simultan. În felul
acesta, se poate realiza un transfer de până la patru cuvinte la fiecare ciclu de ceas,
cu o latenţă foarte mică. Acest tip de memorie este ideal pentru sistemele de
comunicaţii şi reţelistică, cum ar fi router-e sau switch-uri. Pentru a veni în
întâmpinarea tendinţelor din acest domeniu, QDRII SRAM utilizează porturi I/O la
o viteză foarte ridicată prin tehnologia HSTL (High Speed Transceiver Logic),
suportată de toate sistemele de networking de nouă generaţie (vezi figura 3.33).
Din punct de vedere al consumului de energie, memoriile QDR se situează
foarte bine, necesitând doar 1,8 V pentru nucleul memoriei şi 1,4 V pentru pinii de
intrare/ieşire. Acest aspect este extrem de important în domeniul pentru care sunt
concepute să funcţioneze aceste memorii.

Fig. 3.33. Arhitectura QDR II SRAM.


Structura unui calculator 109

Memoriile QDR II sunt prevăzute cu două generatoare de semnale de ceas,


unul pentru intrare, celălalt pentru ieşire. Astfel, intrarea şi ieşirea pot fi foarte uşor
defazate. Memoriile QDR II vin sub forma unor FPGA-uri de 13  15  1 mm.
O memorie QDR II hotărăşte dacă va efectua o operaţie de scriere sau de
citire, în funcţie de starea în care se află pinii de citire (R#) şi de scriere (W#) la
momentul în care ceasul se află pe front crescător. Pentru a da o comandă de citire,
R# trebuie să fie la nivelul 0 (vezi figura 3.34), iar pentru a da o comandă de
scriere, R# trebuie să fie la nivelul 1 şi W# la nivelul 0 (vezi figura 3.35).

Fig. 3.34. Operaţia de citire la QDR II.

Fig. 3.35. Operaţia de scriere la QDR II.

SGRAM (Synchronous Graphics RAM)


Funcţionarea memoriei SGRAM este asemănătoare celei de la memoria
SDRAM. Funcţia principală a memoriei SGRAM este aceea de a stoca şi citi date
simultan în zona de memorie. Deoarece este o memorie de tip DRAM, trebuie să
dispună de o reîmprospătare periodică, pentru a citi şi a scrie date eficient şi rapid.
Astfel, au fost introduse funcţii speciale, care specifică adresele grafice necesare
aplicaţiilor. Aceste funcţii sunt selectate prin folosirea unor registre speciale, dar şi
prin folosirea unor pini speciali.
110 ARHITECTURA SISTEMELOR DE CALCUL

Fig. 3.36. Formatul ciclic al diagramei de timp pentru memoria SGRAM.

La fel ca în cazul memoriei SDRAM, toate semnalele de intrare sunt


înregistrate pe frontul crescător al semnalului de ceas (vezi figura 3.36). Formatul
SGRAM conceput de IBM poate citi sau scrie un număr de locaţii dintr-un burst de
1, 2, 4, 8 octeţi sau chiar o pagină de memorie. Odată ce un rând este activ, mai
este necesară doar adresa coloanei.
Există un contor în structura sa internă, care numără fiecare locaţie de
memorie, după ce au fost introduse datele. Dacă parametrii de citire şi scriere sunt
înregistraţi, memoria continuă să introducă date până când toate spaţiile sunt
completate sau până când apar secvenţe de întrerupere. Pentru a face trecerea pe un
nou rând, acesta trebuie să fie pregătit şi astfel va deveni activ.
VRAM (Video RAM)
Problemele de acces la memorie apar cu precădere în sistemele video la care
memoria este folosită ca un buffer de cadru pentru imaginea de pe ecran, aceasta
fiind înmagazinată sub formă digitală şi alocată pentru fiecare element al imaginii.
Întregul conţinut al buffer-ului este citit de la 60 la 100 de ori pe secundă (valoarea
uzuală a ratei de refresh a monitorului). Între timp, calculatorul poate încerca să
scrie o nouă informaţie în buffer, pentru ca aceasta să apară pe ecran.
Cu memorii DRAM obişnuite, aceste operaţii de citire şi scriere nu pot
apărea simultan, una trebuie să o aştepte pe cealaltă, timpul de aşteptare afectând în
mod negativ performanţele video, viteza sistemului şi răbdarea utilizatorului.
Aşteptarea poate fi evitată prin introducerea unui cip special de memorie,
care să aibă două căi (dual ported) pentru accesul fiecărei locaţii. O astfel de
memorie permite scrierea şi citirea simultană. Cipurile de memorie video VRAM
permit citirea şi scrierea aleatorie la un port, în timp ce la celălalt port se permite
doar citirea secvenţială, care corespunde nevoilor de scanare a unei imagini video.
Dezavantajul principal al tehnologiei VRAM este că aceasta este mai
scumpă. Folosind însă memorii VRAM, se poate mări viteza sistemului video cu
aproximativ 40%.
Structura unui calculator 111

Pentru a trimite şiruri de date către monitor cu o viteză ridicată, memoria


VRAM include o serie de registre numite SAM (Serial Access Memory), legate la
un port serial. Acest port este conectat la un controler de viteză foarte mare.
Memoria VRAM are o interfaţă DRAM complet separată de portul serial. În
timp ce unele date sunt citite cu ajutorul portului serial, altele sunt citite sau stocate
din aria DRAM printr-un port DRAM. Formatul VRAM prezintă câteva
caracteristici realizate special pentru a creşte flexibilitatea în aplicaţiile grafice.
WRAM (Windows RAM)
Un model VRAM cu două porturi este WRAM (elaborat de Samsung), util
în sistemele video proiectate să asiste o interfaţă grafică gen Windows.
Cipul de bază WRAM păstrează 1 MB aranjat în plane de 32 de biţi, fiecare
fiind compus din 512  512 celule. Trei cipuri asigură memoria necesară pentru a
afişa o rezoluţie de 1024  768 sau 1920  1080 şi pentru operare în True Color pe
24 sau 36 de biţi. Intern, o magistrală de date de 256 de biţi leagă fiecare plan de
biţi cu controlerul logic intern al cipului care multiplexează datele pe 32 de biţi,
compatibile cu circuitele din calculator. Pentru a furniza date în scopul scanării
video, cipul conţine două registre serie. Cipul încarcă unul din registre, iar din
celălalt extrage datele, comutând între ele în momentul în care registrul al doilea se
goleşte. Cipul conţine patru registre de 32 de biţi, două pentru înmagazinare şi
pentru culorile de fundal, iar celelalte două pentru control şi măşti.
Cu o rată de transfer de cel puţin 640 MB/s, modelul WRAM poate mări
viteza sistemului cu 50 % în comparaţie cu VRAM.
Observaţie. Formatul Windows RAM nu are legătură cu Microsoft Windows.

3.2.10. Verificarea prin controlul parităţii

Revenind la caracteristicile generale ale memoriei, pe majoritatea plăcuţelor


de memorie se află instalate 9 cipuri (pentru memoriile paritare), primele opt având
rol de memorie efectivă de lucru (8 biţi – de la 0 la 7), iar cel de-al 9-lea fiind
numit cip de paritate (parity cip), cu rol de testare a stării de funcţionare a
celorlalte 8 cipuri, prin verificarea parităţii memoriei.
Paritatea memoriei, calculată ca sumă mod2, este de două tipuri: pară şi impară..
Exemplu. Fie cazul unei memorii impare. Un rând de biţi conţine un număr
impar de 1 (număr reţinut în câmpul 9). Datele sunt cuprinse pe 8 biţi (1 bit/cip).
Când o dată este impară/pară, bitul de paritate este 0/1, astfel încât numărul total de
biţi să rămână impar.
La pornirea sistemului, când se ajunge la etapa de verificare a memoriei, se
verifică şi paritatea rândurilor de biţi (parity check). Memoria fiind, conform
exemplului, impară, trebuie să existe un număr impar de biţi, în caz contrar
sistemul semnalând o eroare de paritate (parity error) şi deci un cip (sau mai
multe) este (sunt) defect(e). În cazul memoriei pare, procesul este identic cu cel
anterior, doar că un rând de biţi conţine un număr par de 1.
112 ARHITECTURA SISTEMELOR DE CALCUL

Memoriile SIMM se prezintă constructiv cu 8 sau 9 cipuri pe plăcuţă, după


cum sunt cipuri paritare sau nu. Nu toate plăcile SIMM folosesc verificarea
parităţii, dar toate plăcile DIMM sunt prevăzute cu aceasta facilitate.
Exemplu. SIMM-urile paritare pe 8 biţi folosesc un bit de paritate (module
pe 9 biţi), iar cele pe 32 de biţi folosesc 4 biţi de paritate (module pe 36 biţi, 8  4
= 32 biţi + 4  1 = 4 biţi de paritate).
Există şi module de memorie care folosesc cipuri compuse, pe o plăcuţă
fiind prezente doar 2 sau 4 circuite integrate. În acest caz, în aceeaşi capsulă sunt
prezente patru sau două cipuri de memorie. În cazul în care se folosesc module de
memorie neparitare, va trebui dezactivată din CMOS opţiunea de verificare a
parităţii memoriei, în caz contrar apărând erori. În nici un caz nu se pot folosi
combinaţii de module paritare cu module neparitare.
În timpul funcţionării sistemului, la detectarea unei erori de paritate este
emisă o cerere de întrerupere (de către cipul specializat), care va avea ca rezultat
final oprirea procesului aflat în execuţie şi reluarea unei rutine BIOS care va afişa
un mesaj specific. Unele variante de microprocesoare au integrat un modul special
de evaluare şi verificare a parităţii memoriei.
Anumiţi producători ai cipurilor de RAM au abandonat verificarea parităţii,
deoarece creştea preţul memoriei cu 10–15 %, la aceasta adăugându-se şi
posibilitatea unei compactări a cipurilor utilă la calculatoare de tip notebook.
Există însă şi calculatoare care au implementată o paritate falsă (fake
parity), care emite un semnal ce atestă paritatea fără să realizeze o verificare
efectivă. Datorită faptului că cipurile care generează paritate falsă sunt mai ieftine,
acestea sunt utile la calculatoarele care au implementat mecanismul de detectare a
parităţii. În general, modulele de memorie cu paritate falsă apar identice modulelor
cu paritate.
Singurul mod de a le identifica este folosind un tester pentru module de
memorie. Deoarece modulele cu paritate falsă lucrează la nivel hard, programele
obişnuite de testare nu pot să le detecteze (conform cu Kingston Tehnologies,
cipurile cu paritate falsă sunt marcate cu una din următoarele inscripţii: BP, GSM,
MPEC sau VT).
Există însă procedee care pot efectua atât detecţia, cât şi corecţia unor erori.
Un exemplu îl constituie procedeul ECC (Error Correction Code), care necesită
biţi suplimentari pentru fiecare octet memorat. Procedeul poate să localizeze bitul
care este eronat, iar eroarea poate fi remediată (se mai numeşte tehnologie Error
Detection And Correction – EDAC). Firma IBM foloseşte tehnologia ECC pe
calculatoarele proiectate pentru a funcţiona ca servere.
Acest cod poate corecta automat orice eroare de 1 bit care apare într-un
cuvânt de 64 de biţi. În acest scop, memoria foloseşte cuvinte de cod de 72 de biţi
(64 biţi de date + 8 biţi de control). Această schemă are aceeaşi eficienţă cu cea
paritară (8/9 = 64/72), dar oferă corecţie cu o robusteţe mai mică, pentru că poate
corecta o eroare la 64 de biţi, spre deosebire de cealaltă schemă, care poate detecta
o eroare la 8 biţi.
Structura unui calculator 113

Procedeul ECC nu este mai costisitor de implementat, datorită creşterii


dimensiunilor magistralelor; astfel, pentru microprocesoarele Pentium şi post-Pentium,
care au magistrala de date de 64 biţi, costul unei memorii cu verificare a parităţii şi
corecţie este acelaşi.
La fiecare acces la memorie, hardware-ul verifică dacă cuvântul de cod este
corect; dacă nu, calculează automat cel mai apropiat cuvânt de cod, pe care apoi îl
decodifică. Aceste operaţii sunt destul de complicate, astfel încât un sistem cu
memorii ECC merge cu aproximativ 5% mai lent decât unul cu memorii paritare.

3.2.11. Metode de acces la memorie

Un alt aspect care trebuie luat în considerare este timpul de acces al


memoriei RAM folosite. După cum s-a mai spus, acesta sunt de ordinul zecilor de
nanosecunde (cu excepţia memoriilor SDRAM, care pot ajunge până la câteva
nanosecunde), timp destul de mare, având în vedere vitezele de tact la care lucrează
azi diversele procesoare. Pentru a scădea timpul de acces al memoriei RAM, se
folosesc diverse metode de acces la memorie prin paginarea acesteia sau întreţesere
(Paging Mode sau Interleaving).
Paginarea asigură o citire mai rapidă, datorită faptului că în cazul unei cereri
de date din partea microprocesorului, acesta transmite cipului de memorie nu adresa
datei cerute, ci adresa unei pagini care conţine informaţia dorită şi, în cadrul paginii,
adresa datei solicitate (vezi capitolul 6). Automat, spaţiul de căutare a informaţiei este
micşorat prin paginarea memoriei, iar timpul în care este accesată o informaţie scade.
Întreţeserea presupune că procesorul desfăşoară o activitate paralelă de
accesare pentru două bancuri de memorie (memoria este împărţită, după cum s-a
mai spus, în cel puţin două bancuri, bancul 0 şi bancul 1, care nu sunt accesate
simultan). Timpul de citire din bancul 0 este folosit de memoria instalată în bancul
1 pentru operaţia de reîmprospătare, apoi timpul în care procesorul citeşte din
bancul 1 este folosit de bancul 0 pentru aceeaşi operaţie de reîmprospătare.
Acest lucru este posibil datorită faptului că microprocesorul accesează date,
în general, de la adrese apropiate sau învecinate cu adresa citită anterior. Cum
citirea este un proces secvenţial, după citirea de la adresa k din bancul 0 urmează
citirea de la adresa k+1 din bancul 1, citire care se efectuează foarte rapid (practic,
instantaneu), deoarece operaţia de refresh a bancului 1 a fost deja realizată. Se
asigură astfel citirii o fluenţă aproape perfectă.
Această metodă are un dezavantaj: în cazul citirii din locaţii succesive, doar
pare sau doar impare (la citiri succesive din acelaşi banc datele sunt scrise – cele
pare în primul banc, cele impare în cel de-al doilea banc), nu mai este timp de
refresh între două citiri consecutive şi se vor introduce una sau două stări de
aşteptare ale procesorului (wait states), ceea ce determină încetinirea generală a
vitezei sistemului. Plasarea plăcilor de memorie în bancuri separate este foarte utilă
şi uneori obligatorie, existând modele de placă de bază care nici nu funcţionează cu
o singură plăcuţă de memorie.
114 ARHITECTURA SISTEMELOR DE CALCUL

3.2.12. Memoria cache

Datorită vitezei foarte mari cu care lucrează microprocesoarele, implicit şi


fluxul de date şi informaţii cerute de acestea va fi foarte intens. Dar, deoarece unele
componente din lanţul de transmisie a datelor sunt mai lente, în speţă memoria de
lucru RAM (prin necesitatea de a fi reîmprospătată) şi magistralele calculatorului
(lente din principiu), acest flux de date cerut de procesor este mai puţin rapid decât
ar fi necesar (de exemplu, memoria RAM asigură un timp de acces de 60–120 ns,
ceea ce este foarte mult faţă de nivelul de câteva nanosecunde, timp cu care
lucrează de obicei procesoarele pentru un anumit proces).
Ca atare, între posibilităţile de prelucrare a datelor de către microprocesor şi
capacitatea RAM-ului şi magistralelor de a pune la dispoziţia microprocesorului
aceste date a apărut un decalaj foarte mare, ceea ce a dus în procesul de lucru al
unui microprocesor la introducerea stărilor de pauză (wait states), astfel încât, prin
execuţia a unuia, a două sau chiar a patru cicluri de aşteptare, datele solicitate să
aibă timp să ajungă la procesor. Practic, se întâmplă următorul lucru: microprocesorul
lucrează fie cu datele necesare calculelor, fie cu comenzi. Cum datele şi informaţiile
necesare sunt cuprinse în memoria de lucru, microprocesorul citeşte memoria RAM,
preluând anumite date, şi realizează calculele şi procesele cerute.
Cum memoria este mult mai lentă în livrarea datelor faţă de viteza cu care le
poate prelucra microprocesorul, în funcţionarea procesorului se introduc ciclurile
de aşteptare despre care s-a vorbit anterior; cât timp aceste cicluri se execută, se
permite datelor solicitate de procesor să fie localizate şi „extrase“ din RAM,
depuse pe magistrala de date şi „transportate“ către microprocesor. În final, dacă se
va înmulţi timpul cât durează un ciclu de aşteptare cu milioanele de operaţii pe
secundă ale unui microprocesor, va rezulta o pierdere de timp substanţială.
Deci, era nevoie de o memorie de lucru ceva „mai aproape de
microprocesor“ şi mult mai rapidă (ideal fără să necesite operaţii de
reîmprospătare). De aceea, între microprocesor şi memoria de lucru a mai fost
introdusă o componentă şi anume memoria cache, realizată din celule de tip
SRAM, cu rol de memorie tampon. La rândul său, memoria cache a fost divizată
fizic în două niveluri şi anume (vezi figura 3.37):
 memoria cache primară sau internă (primary level cache, L1)
 memoria cache secundară sau externă (secundary level cache, L2/L3).
Memoria cache internă este plasată chiar în capsula microproceso-rului, dar
este de dimensiuni foarte mici, în general de la 8 KB (Pentium) până la 1 MB (Xeon).
Memoria cache secundară este exterioară microprocesorului şi se montează
pe placa de bază a sistemului. Este sub formă de cipuri (DIP) care se introduc în
soclurile aferente, existând şi aici, ca şi la memoria RAM, 8 socluri pentru
memoria cache de lucru şi un al 9-lea soclu pentru cipul de control al memoriei
cache. Tipurile mai noi de cache sunt oferite sub formă de plachete asemenea
SIMM-urilor. Plăcile de bază actuale au uzual cel mult 2 MB de memorie cache.
Memoria cache este subordonată în activitatea ei unui controler de memorie
cache (de exemplu, controlerul i82385) care va realiza gestiunea adreselor şi
controlul operaţiilor de citire/scriere.
Structura unui calculator 115

1. microprocesor;
2. cache intern (un bloc de 8 KB);
3. cache intern (al doilea bloc de 8 KB);
4. cache extern;
5. cip de marcare a zonelor de memorie cache (TAG RAM);
6. memorie RAM.

Fig. 3.37. Schema unei memorii cache într-un sistem Pentium.


Memoria cache internă
Primul nivel de memorie cache (L1) se află integrat în microprocesor şi are o
porţiune destinată datelor şi instrucţiunilor (codului) şi o alta destinată comenzilor.
Cele două module de câte sunt complet separate şi lucrează independent.
Dimensiunea memoriei cache interne creşte la procesoarele moderne.
Acest tip de memorie îmbunătăţeşte mult performanţele, deoarece – fiind în
interiorul procesorului – transmisia de date este foarte rapidă, nefolosindu-se în
acest caz magistralele externe, foarte lente. În plus, fiind o memorie de tip SRAM,
nu necesită reîmprospătare şi dispune de un timp de acces extrem de scurt. Mai
mult, la unele microprocesoare, cache-ul de date este împărţit în blocuri, iar
controlerul de cache va găsi foarte rapid datele necesare, folosind o tabelă index,
alegând exact blocul de memorie care le conţine.
Memoria cache externă
Datorită dimensiunilor mici ale memoriei cache interne (limitele fiind
impuse din considerente tehnice de construcţie a microprocesoarelor) şi pentru a
mări şi mai mult performanţele sistemelor de calcul, mai ales pentru a creşte
şansele ca procesorul să găsească datele necesare în cache (cache hit) şi nu în RAM
sau, mai rău, pe hard disk (cache miss), a fost introdus încă un nivel de memorie
cache (L2 sau L3), de data aceasta în exteriorul microprocesorului, memorie care
este ca dimensiuni cu mult mai mare decât memoria cache internă (de ordinul
megaocteţilor).
Memoria cache externă este implementată pe placa de bază a sistemului.
Este formată din cipuri de memorie de tip SRAM, foarte rapide, cu timpi de acces
extrem de mici (4–15 ns).
Exemplu. Pentru un procesor cu frecvenţa internă de 166 MHz, va fi nevoie
de o memorie cache cu timp de acces de 100/166 = 6,02 ns.
Principiul de funcţionare al unei memorii cache este sintetizat în figura 3.38.
116 ARHITECTURA SISTEMELOR DE CALCUL

Fig. 3.38. Principiul memoriei cache.

3.2.12.1. Maparea memoriei cache


Figura 3.39 prezintă diagrama operaţiei de citire a memoriei cache.

Fig. 3.39. Diagrama operaţiei de citire a memoriei cache.


Structura unui calculator 117

O caracteristică de bază a memoriei cache este funcţia de mapare (de


translatare), care atribuie locaţii din memoria cache blocurilor din memoria
principală. Se pot utiliza patru tehnici:
 maparea directă;
 maparea asociativă;
 maparea asociativă pe seturi;
 maparea pseudo-asociativă.
Cu ajutorul politicilor de înlocuire se află care locaţie din memorie poate fi
depozitată în cache şi în care locaţie anume. Dacă politicile de înlocuire au libertatea
de a alege orice locaţie din cache pentru a păstra copia, cache-ul se numeşte
(complet) asociativ. La extrema cealaltă, dacă fiecare porţiune din memoria
principală poate merge într-o singură locaţie din cache, procedeul se numeşte mapare
directă. Cele mai multe memorii cache implementează un compromis între cele
două, numit mapare asociativă pe seturi.
Exemplu. Se consideră o memorie cache de 1024 B (1 KB). Datele se transferă
între memoria principală şi cache în blocuri de câte 8 octeţi. Înseamnă că memoria
cache are 128 de linii a câte 8 octeţi fiecare. Memoria principală constă din 64 KB,
fiecare octet fiind direct adresabil printr-o adresă de 16 biţi. Se poate considera că
memoria principală constă din 8 Kblocuri de câte 8 octeţi fiecare. Deoarece există un
număr mai mic de linii ale memoriei cache faţă de numărul blocurilor memoriei
principale, este necesar un algoritm pentru plasarea blocurilor memoriei principale
în liniile memoriei cache. În plus, este necesar un mijloc de a determina care bloc
al memoriei principale ocupă la un moment dat o linie a memoriei cache.
Memoria cache cu mapare directă
În cazul tehnicii celei mai simple, numită mapare directă, fiecare bloc al
memoriei principale poate ocupa o singură linie posibilă a memoriei cache, aşa
cum este reprezentat în figura 3.40.
Maparea este:

C = A mod L,

unde:
C = numărul liniei din memoria cache;
A = adresa din memoria principală;
L = numărul de linii din memoria cache.
Pentru exemplul considerat, L = 128 şi C = A mod128. Funcţia de mapare
poate fi implementată simplu, utilizând adresa de 16 biţi. Cei 3 biţi mai puţin
semnificativi, câmpul cuvânt (offset), identifică un cuvânt (octet) unic în cadrul
unui bloc al memoriei principale. Restul de 13 biţi specifică unul din cele 213 = 8
Kblocuri ale memoriei principale.
Câmpul de 7 biţi, numit linie sau index (slot), indică numărul blocului,
modulo128. Astfel, blocurile 0, 128, 256, …, 8064 vor fi amplasate în linia 0;
blocurile 1, 129, …, 8065 vor fi amplasate în linia 1, şi aşa mai departe, până la
blocurile 127, 255, …, 8191, care vor fi amplasate în linia 127.
118 ARHITECTURA SISTEMELOR DE CALCUL

Fig. 3.40. Memorie cache cu mapare directă.

Câmpul de 6 biţi, numit marcaj sau etichetă (tag), are rolul de a identifica
în mod unic blocul din linie. Astfel, blocurile 0, 128, 256, …, 8064 au numerele de
marcaj 0, 1, 2, …, respectiv 63.
Considerând din nou figura 3.40, o operaţie de citire are loc astfel. Memoriei
cache i se prezintă o adresă de 16 biţi. Numărul liniei de 7 biţi este utilizat ca un
index în memoria cache pentru accesul la o anumită linie. Dacă marcajul de 6 biţi
este egal cu marcajul liniei respective, atunci numărul de 3 biţi al cuvântului este
utilizat pentru a selecta unul din cei 8 octeţi ai liniei respective. În caz contrar,
marcajul şi numărul liniei (în total 13 biţi) se utilizează pentru a încărca un bloc din
memoria principală.
Memoria cache cu mapare asociativă
Maparea directă este o tehnică care se poate implementa simplu. Principalul
dezavantaj al acesteia este că există o locaţie fixă în memoria cache pentru oricare
bloc dat. Deci, dacă un program face referire în mod repetat la cuvinte din două
blocuri diferite care se mapează în aceeaşi linie, blocurile vor fi interschimbate în
mod continuu în memoria cache şi rata de succes va fi redusă.
O metodă care elimină dezavantajul mapării directe este maparea asociativă,
reprezentată în figura 3.41. În acest caz, adresa memoriei principale constă dintr-un
marcaj de 13 biţi şi un număr al cuvântului de 3 biţi. Un bloc din memoria principală
se poate încărca în oricare linie, iar marcajul său de 13 biţi se memorează împreună
cu blocul. Pentru a determina dacă un bloc se află în memoria cache, sunt necesare
circuite pentru a compara simultan marcajul său cu marcajele fiecărei linii.
Structura unui calculator 119

Fig. 3.41. Memorie cache cu mapare asociativă.

În cazul mapării asociative, există o flexibilitate în privinţa înlocuirii unui


bloc atunci când un nou bloc este încărcat în memoria cache. Algoritmii de
înlocuire a blocurilor din memoria cache, prezentaţi în continuare, au rolul de a
creşte eficienţa. Principalul dezavantaj al acestei metode îl reprezintă circuitele
complexe necesare pentru a examina marcajele tuturor liniilor din memoria cache.
Memoria cache cu mapare asociativă pe seturi
Maparea asociativă pe seturi reprezintă un compromis care reţine avantajele
mapării directe şi ale celei asociative. În acest caz, memoria cache este împărţită în
I seturi, iar fiecare din acestea conţine J linii, aşa cum rezultă din figura 3.42.
Rezultă:

L = I  J,

K = A mod I,

unde K este numărul setului.


Cu această metodă, blocul conţinând adresa A poate fi mapat în oricare din
liniile setului I.
Observaţie. În cazul extrem, în care I = L şi J = 1, maparea asociativă pe seturi
se reduce la maparea directă, iar dacă I = 1 şi J = L, se obţine maparea asociativă.
Utilizarea a două linii pe set (J = 2) este cea mai utilizată organizare asociativă
pe seturi, care îmbunătăţeşte semnificativ rata de succes faţă de maparea directă.
Exemplu. Cache-ul de nivel 1 din AMD Athlon este asociativ pe două seturi,
adică orice locaţie din memoria principală poate fi depozitată în 2 locaţii din L1.
120 ARHITECTURA SISTEMELOR DE CALCUL

Fig. 3.42. Memorie cache cu mapare asociativă pe seturi.

Memoria cache cu mapare pseudo-asociativă


Memoria cache asociativă pe seturi testează simultan toate căile posibile,
folosind un mecanism asemănător conţinutului adresabil al memoriei. Memoria cache
pseudo-asociativă testează fiecare cale posibilă o singură dată. În cele mai multe cazuri,
când găseşte un bloc din prima testare (succes), memoria cache pseudo-asociativă este
la fel de rapidă ca în cazul mapării directe, dar are o rată de eşec mai scăzută decât
în cazul mapării directe şi mai aproape de cea a mapării asociative.
Analize şi comparaţii
Asociativitatea poate fi privită ca un fel de schimb. Dacă sunt zece unităţi,
politica de înlocuire le tratează ca o singură intrare, dar va trebui să caute în toate
pentru un cache hit. A verifica mai multe locaţii consumă mai multă putere, spaţiu
şi timp. Pe de altă parte, depozitarea folosind asociativitatea are câteva minusuri,
de aceea viteza procesorului scade. Regula ,,degetului mare” are rolul de a dubla
asociativitatea de la maparea directă la cea asociativă pe două căi şi de la cea
asociativă pe două căi la cea pe patru căi etc., având acelaşi efect ca în cazul unui
cache hit. Mărirea asociativităţii la peste patru căi are un efect mai slab decât în
cazul unui cache hit şi este realizată, în general, pentru alte motive.
Dacă fiecare locaţie din memoria principală poate fi depozitată în alte două
locaţii din memoria cache, se pune întrebarea care din cele două va fi folosită. Cea
mai simplă şi cea mai folosită schemă utilizează LSB-ul câmpului linie (index) al
locaţiei de memorie ca index pentru memoria cache şi are două intrări pentru
fiecare linie. Avantajul acestei scheme este că etichetele stocate în cache nu trebuie
Structura unui calculator 121

să includă acea parte a adreselor din memoria principală care sunt implicate în
câmpul linie (index) al memoriei cache.
Atât timp cât etichetele cache reprezintă doar câţiva biţi, ocupă spaţiu puţin,
putând fi citite şi comparate rapid. Unul dintre avantajele mapării directe este acela
că lasă loc speculaţiilor rapide şi simple. Atunci când o adresă a fost calculată, i s-a
ataşat index cache unic, care ar putea conţine datele. Noua intrare în cache poate fi
citită, iar procesorul îşi continuă lucrul cu acele date pe care le avea înainte de a
termina procesul de verificare, dacă adresa cerută se potriveşte cu eticheta actuală.
Ideea ca procesorul să folosească date depozitate în cache înainte ca eticheta
să se potrivească complet poate fi aplicată şi la cache-ul asociativ. O parte din
etichetă, numită cheie (hint), poate fi folosită pentru a alege una din adresele
cerute, aflate posibil în harta cache. Aceste date pot fi folosite în paralel cu
verificarea întregii etichete. Tehnica hint lucrează excelent când este folosită în
contextul translatării adreselor.
Alte tehnici propun un cache „oblic” (skewed cache), unde indexul căii 0
este direct, dar indexul căii 1 este format cu o funcţie hash. O funcţie hash de
calitate are proprietatea că adresele care intră în conflict cu maparea directă tind să
nu mai aibă conflicte când sunt mapate cu funcţia hash şi este mai neplăcut ca un
program să sufere din cauza unui număr neaşteptat de mare de conflicte. Pe de altă
parte, există latenţă în implementarea funcţiei hash. În plus, când trebuie încărcată
o nouă linie şi exclusă una veche, ar putea deveni dificil să se determine care dintre
liniile existente a fost ultima folosită, deoarece noua linie intră în conflict cu datele
de la diferiţi indecşi ai fiecărei căi. Metoda LRU (vezi paragraful 3.2.12.3)
urmăreşte principiul vecinătăţii (cache nears) într-un cache non-oblic (non-skewed),
împărţindu-l pe seturi. Aşadar, asociativitatea completă are un avantaj major faţă
de asociativitatea pe seturi.

3.2.12.2. Eficienţa şi localizarea datelor în memoria cache


O memorie cache este utilă numai dacă anumite informaţii sunt folosite
frecvent şi mult timp. Atunci, acele informaţii merită să fie păstrate în memoria
cache. Din fericire, s-a constatat experimental că acest lucru este adesea adevărat.
Această observaţie poate fi formulată în mai multe moduri, unul dintre acestea
fiind principiul localizării (locality principle). Există două feluri de localizare:
 localizare spaţială – dacă este nevoie de unele date, în curând va fi
nevoie probabil de date aflate în apropierea lor în memorie;
 localizare temporală – când s-au găsit anumite date, foarte adesea
acestea vor fi folosite de mai multe ori.
Acestea sunt doar observaţii, dar se potrivesc destul de bine programelor, aşa
cum funcţionează acestea în calculatoarele actuale. Validitatea observaţiilor
permite folosirea de memorii cache. Acesta nu înseamnă că nu există programe
care folosesc prost memoriile cache; dimpotrivă, se poate scrie destul de uşor un
astfel de program (este o metodă „eficientă” de a încetini calculatorul). Programele
obişnuite însă nu se comportă astfel.
122 ARHITECTURA SISTEMELOR DE CALCUL

Eficienţa unei memorii cache se măsoară în procentajul de găsiri ale datelor,


numit rată de succes, H (hit rate). Opusul acestei valori este procentajul de ratări,
numit rată de eşec, M (miss rate). Procentajele acestea se măsoară rulând
numeroase programe şi făcând media.
Relaţia în aceste două valori este:

H = 1 – M.

Dacă timpul de citire din memoria cache este TH (hit time), iar timpul pierdut
până se ratează este TM (miss time), atunci se poate măsura timpul mediu de acces
la memoria cache cu următoarea formulă:

T = TH  H + TM  M.

Se observă că timpul unei ratări (TM) nu este neapărat egal cu timpul de citire
din memoria lentă, Tl, deoarece, în cazul unei ratări, întâi trebuie constatat dacă
datele sunt în memoria cache, iar, dacă nu sunt, se accesează memoria lentă.
Memoria cache va fi eficientă dacă T < Tl.
Parametrul H depinde de mărimea memoriei cache: pentru o memorie cache
de dimensiunea memoriei lente (caz limită), toate datele pot fi ţinute în memoria
rapidă şi se va obţine H = 1. Pentru o memorie cache de dimensiune 0, H = 0,
pentru că niciodată datele nu se găsesc în această memorie. Relaţia între mărimea
memoriei cache, a memoriei lente şi parametrul H nu este o linie dreaptă, ci creşte
rapid la început, aşa cum se observă în figura 3.43. Din cauza aceasta, o memorie
cache relativ redusă ca mărime are o importanţă mare ca eficienţă.

Fig. 3.43. Performanţa memoriei cache.

Eficienţa depinde şi de raportul dintre TH şi TM. În anumite cazuri, TM este de


ordinul a 104TH, deci chiar un parametru H de valoare redusă poate însemna mult.
Exemplu. Procesorul Intel Xeon la frecvenţa de 3,06 GHz are o memorie cache
L3 de 1 MB, cu magistrala de sistem la 533 MHz, şi contribuie la creşterea nivelului de
performanţă cu peste 15%.
Structura unui calculator 123

3.2.12.3. Reînnoirea conţinutului memoriilor cache


În ceea ce priveşte reînnoirea conţinutului memoriilor cache, pentru
ştergerea datelor curente şi aducerea altora noi, sunt folosite mai multe metode:
 metoda RW (Random Write) sau de rescriere aleatorie: datele conţinute
sunt rescrise aleator, fără a folosi un anumit criteriu sau algoritm care să
determine care bloc de date va fi rescris;
 metoda FIFO (First In – First Out): primul intrat – primul ieşit, adică,
primele blocuri de date scrise în memorie sunt rescrise primele;
 metoda LRU (Least Recently Used): datele folosite cel mai puţin recent;
blocurile de date care, temporal, nu au fost folosite timp de cel mai lung
interval sunt rescrise primele, cele accesate de curând fiind păstrate;
 metoda LFU (Least Frequently Used): datele folosite cel mai puţin
frecvent; blocurile de date care, statistic, au fost folosite cel mai rar sunt
rescrise primele, cele folosite mai des fiind păstrate.
Alte metode sunt: politica circulară (round robin), politica setului de lucru
(working set), politica optimală (optimal), politica ceasului (clock), politica celei de-a
doua şanse (second chance) etc. Metoda cea mai folosită este LRU; de aceea, cel
de-al 9-lea cip de memorie cache (TAG RAM) va juca şi rol de contor al frecvenţei
de apelare a datelor din cache, determinându-se datele care vor fi rescrise.
Modul de lucru general al microprocesoarelor cu memoria cache este
următorul: programul va căuta datele, prin intermediul controlerului de cache, în
cache-ul intern. Dacă datele solicitate nu se află la acest nivel (cache miss), va
merge mai departe cu căutarea în cache-ul extern şi apoi, în cazul negăsirii acestora
nici aici, în memoria principală RAM. Probabilitatea ca procesorul să găsească
datele necesare într-unul din cele două niveluri cache este însă destul de mare.
Totodată, magistrala memoriei care, în lipsa cache-ului, ar fi fost solicitată pentru
operaţii cu RAM-ul, este disponibilizată pentru alte procese.

3.2.12.4. Conectarea memoriei cache la microprocesor


Memoria cache este conectată cu microprocesorul şi memoria RAM în
sistem serial sau paralel.
Conectarea serială (look through) – vezi figura 3.44 – presupune ca
dialogul microprocesor–RAM să se desfăşoare prin intermediul cache-ului. Acest
sistem are dezavantajul că cererile procesorului sunt întârziate de intermediarul
cache, dar are avantajul că magistrala memoriei nu este ocupată la fiecare cerere a
procesorului. Dacă datele solicitate se află în cache (cache hit), interogarea
memoriei RAM nu se mai efectuează, iar magistrala memoriei rămâne liberă.
Conectarea paralelă (look aside) – vezi figura 3.45 – presupune ca
microprocesorul să se adreseze, în paralel, atât memoriei cache cât şi memoriei
RAM. În cazul în care ecoul din partea cache-ului este pozitiv, adresarea către
RAM este abandonată. De aici rezultă, faţă de metoda anterioară, avantajul vitezei,
evitându-se căutarea secvenţială: întâi în cache, apoi în RAM. Dezavantajul apare
prin faptul că magistrala memoriei este tot timpul folosită şi, astfel, nu mai este
disponibilă – în momentele de scanare a memoriei – altor accesări din partea
perifericelor. Mai ales în modul multitasking, acest lucru se reflectă în întârzieri
semnificative ale vitezei de execuţie a diferitelor sarcini.
124 ARHITECTURA SISTEMELOR DE CALCUL

Fig. 3.44. Diagrama conectării seriale (look through).

Fig. 3.45. Diagrama conectării paralele (look aside).

3.2.12.5. Depunerea în memorie a rezultatelor


Indiferent de tipul funcţiei de mapare, fiecărui bloc din memoria cache îi
sunt asociaţii doi biţi de comandă, numiţi V şi D.
Bitul V este un bit de validare a blocului, V = 1 fiind o condiţie necesară a
obţinerii unui cache hit. Bitul V este util îndeosebi în sistemele multiprocesor, în
vederea menţinerii coerenţei memoriilor cache locale, datorită redundanţei
informaţionale. Mai precis, aici apare necesitatea citirii din cache-ul propriu a
ultimei cópii modificate a datei respective. Când un procesor modifică o copie
locală a unei date, toate blocurile care conţin acea dată din cadrul celorlalte
procesoare trebuie invalidate prin resetarea V = 0.
Structura unui calculator 125

Necesitatea invalidării blocurilor (V = 0) apare chiar şi în sistemele


uniprocesor. Imediat după resetarea sistemului, uzual, procesorul execută un
program încărcător rezident în memoria EPROM. Cum imediat după iniţializarea
sistemului conţinutul cache-ului este, practic, aleator, pentru a evita falsele situaţii
de cache hit, la citirea programului încărcător din EPROM, se iniţializează biţii V
cu zero. La prima încărcare a unei date (instrucţiuni) în cache, bitul V aferent se va
seta pe 1, validând astfel situaţia de cache hit.
Bitul D (dirty data) este pus pe 0 la încărcarea iniţială a blocului în cache. La
prima scriere a acelui bloc, bitul se pune pe 1. Evacuarea propriu-zisă a blocului se
face doar dacă bitul D = 1. Practic, prin acest bit se minimizează evacuările de
blocuri în memoria principală, pe baza principiului că un bloc trebuie evacuat
numai dacă a fost scris în cache. În acest sens, din punct de vedere al accesărilor de
scriere de către procesor (depunerea în memorie a rezultatelor), există trei posibilităţi:
 metoda Write Through – vezi figura 3.46 –, în care se utilizează traseul
invers al citirii datelor, blocurile fiind depuse mai întâi în memoria cache
internă, apoi în cache-ul extern şi în final în memoria RAM;

Fig. 3.46. Schema metodei Write Through.

 metoda Write Back – vezi figura 3.47 –, în care scrierea se face în


cache, în cazul în care adresa de memorie la care se face scrierea există
şi ea în cache (de fapt, dacă blocul de date de la acea adresă se află
încărcat în cache). În cazul în care blocul de date localizat de acea adresă
nu mai există în cache, scrierea se face direct în RAM;

Fig. 3.47. Schema metodei Write Back.

 metoda Posted Write, prin care din memoria cache este rezervată o
anumită porţiune care va juca un rol de buffer şi în care vor fi memorate
blocuri de date până când magistrala memoriei devine disponibilă,
moment în care buffer-ul îşi transferă conţinutul în RAM.
În vederea menţinerii coerenţei memoriilor cache, cu precădere în sistemele
multiprocesor, există două posibilităţi, în funcţie de procesul de scriere:
126 ARHITECTURA SISTEMELOR DE CALCUL

 Write Invalidate, prin care CPU care scrie determină ca toate copiile din
celelalte memorii cache să fie invalidate înainte ca ea să-şi modifice
blocul din cache-ul propriu;
 Write Broadcast, prin care CPU care pune data de scris pe magistrala
comună, spre a fi actualizate toate copiile din celelalte cache-uri.
Ambele strategii de menţinere a coerenţei pot fi asociate cu oricare dintre
metodele de scriere, dar de cele mai multe ori se preferă Write Back cu invalidare.

3.2.12.6. Cache hit şi cache miss


Într-o memorie cache, apar posibile patru procese distincte, ca în tabelul 3.4.

Tabelul 3.4
Tipuri de acces în memoria cache

tip acces situaţie în cache acţiune în cache

evacuarea blocului şi încărcarea unui


citire miss
bloc nou
compararea marcajelor/etichetelor
citire hit
(tag)
evacuarea blocului, încărcarea unui
scriere miss
bloc nou şi scrierea datei în bloc
scrierea datei în blocul din cache
scriere hit
(Write Back)

Aşadar, memoriile cache îmbunătăţesc performanţa, îndeosebi pe citirile cu


cache hit, iar, în cazul utilizării scrierii tip Write Back, şi pe scrierile cu cache hit.
Îmbunătăţirea accesului la memorie pe citirile CPU este normală, având în vedere
că acestea sunt mult mai frecvente decât scrierile (orice instrucţiune implică cel
puţin o citire din memorie pentru încărcarea sa; statistic, cca. 75 % din accesările la
memorie sunt citiri, unii autori susţinând că raportul real citiri/scrieri este de 9/1).
Cache miss se referă la încercarea nereuşită de a citi sau scrie o parte din
date în memoria cache, ceea ce rezultă în scrierea/citirea în memoria principală cu
latenţe mai mari. Explicaţiile pentru cauzele situaţiilor de cache miss, conform
literaturii de specialitate, sunt de trei tipuri:
 la citirea instrucţiunilor;
 la citirea datelor;
 la scrierea datelor.
Un cache miss la citirea instrucţiunilor cauzează, în general, întârzieri,
deoarece procesorul sau ultimul fir de execuţie trebuie să aştepte până când
instrucţiunile sunt aduse din memorie.
Un cache miss la citirea datelor cauzează întârzieri mai mici, deoarece instrucţiunile
nu depind de citirea cache-ului, putând fi evitate, până când datele sunt preluate din
memoria principală şi instrucţiunile care depind de acestea îşi continuă execuţia.
Structura unui calculator 127

Un cache miss la scrierea datelor cauzează întârzieri mici, deoarece scrierea


poate fi pusă într-o coadă de aşteptare şi sunt câteva limitări în execuţia
instrucţiunilor. Procesul poate continua până când coada este plină.
Secvenţe de referinţe din memorie trecute prin benchmark-uri sunt salvate ca
urme de adrese. Ulterior, analizele simulate au arătat posibile diferenţe între
lungimile urmelor de adrese, în funcţie de designul memoriei cache. Cercetătorul
Mark Hill a separat situaţiile de cache miss în trei categorii:
 Ratări obligatorii (compulsory misses) – sunt acele pierderi cauzate de
primele referiri la date. Mărimea şi asociativitatea memoriei cache nu fac
nicio diferenţă între numărul de ratări obligatorii. Aducerea timpurile a
operanzilor din memorie nu este utilă în acest caz.
 Ratări de capacitate (capacity misses) – sunt acele pierderi care privesc
asociativitatea sau mărimea blocurilor, făcute numai de blocurile finite
din cache. Curba ratei pentru ratările de capacitate în funcţie de
capacitatea memoriei cache dă măsura localizării temporale a unui şir
temporar de referinţe. Informaţiile care indică dacă memoria cache este
plină, goală sau aproape plină nu sunt utile în acest caz.
Observaţie. Cache-ul procesorului are aproape mereu fiecare linie
umplută cu o copie a unei linii din memoria principală şi de fiecare dată
alocarea unei noi linii necesită ştergerea uneia vechi.
 Ratările de conflict (conflict misses) – sunt acele pierderi care ar putea
fi evitate dacă cache-ul ar elimina o intrare mai târziu. Ratările de
conflict pot fi puse într-o hartă de ratări (miss map), care este inevitabilă
şi care oferă un detaliu particular asociativităţii şi politicii de înlocuire.

Fig. 3.48. Rata de pierderi (miss rate) în funcţie de capacitatea memoriei cache.

Graficul din figura 3.48 ilustrează performanţele memoriei cache, obţinute


pe un benchmark pentru întregi din SPEC2000. Aceste benchmark-uri reprezintă
gradul de încărcare al unei staţii de lucru. Rata de pierderi în cazul asociativităţii
este sensibil superioară celei pentru mapare directă. Diferenţele obţinute se explică
prin utilizarea algoritmului de înlocuire LRU. Se observă, de asemenea, că pentru
memorii cache de dimensiune foarte mare, decalajele devin nesemnificative.
128 ARHITECTURA SISTEMELOR DE CALCUL

3.2.12.7. Tipuri de celule cache

În funcţie de modul de citire a cuvintelor, celulele memoriei cache pot fi:


 asincrone, la care operaţia de citire a unui cuvânt se face în două etape:
se depune adresa, apoi se transferă datele, pentru fiecare cuvânt fiind
necesar acelaşi ritual. Aceste cipuri se livrează sub formă DIP.
 sincrone, pentru care accesul se face în mod burst (se depune o singură
adresă, iar transferul se face pentru patru cuvinte simultan, primul cuvânt
cu adresa indicată de controlerul de cache şi următoarele trei). Timpul de
acces scade destul de mult, ajungând până la 9 ns. Cipurile sincrone sunt
implementate direct prin lipire pe placa de bază a sistemului.
 pipeline burst cache, care este prevăzut la ieşire cu registre speciale, în
care datele citite sunt stocate temporar. Astfel, este posibilă o nouă
adresare, practic, în acelaşi timp cu preluarea datelor de către
microprocesor din registrele de stocare (latch). Timpul de acces scade
foarte mult (chiar la 4 ns), fapt care duce la performanţe deosebite pentru
sistemele dotate cu astfel de celule de memorie cache.

3.2.12.8. Memorii cache specializate


Accesul la memoriile din procesor cu tehnica pipeline, cu stagii multiple ale
pipeline-ului, presupune:
 aducerea instrucţiunilor din memorie (instruction fetch);
 translatarea adresei virtuale în adresă fizică, realizată de controlerul TLB
(Translation Lookaside Buffer);
 aducerea datelor din memorie (data fetch).
Designul natural tinde să utilizeze diferite adrese fizice din cache pentru
fiecare dintre aceste stagii, astfel încât nicio resursă fizică nu trebuie programată să
servească simultan două stagii diferite din pipeline.
Astfel de pipeline-uri se termină cu cel puţin trei memorii cache separate
(pentru instrucţiuni, TLB şi date), fiecare fiind specializată pe un anumit rol. Dacă
pipeline-urile au instrucţiunile şi datele separate în memoria cache, se poate spune
că este emulată o arhitectură de tip Harvard. Iniţial, această fază s-a regăsit la
maşinile cu instrucţiuni şi date separate în memorie. Dar cele mai multe dintre
calculatoarele moderne sunt concepute în arhitectură von Neumann.
Cache victimă (victim cache)
Cache-ul victimă este o memorie cache folosită pentru a reţine blocurile
şterse din cache-ul procesorului datorită unui conflict sau unei ratări. Cache-ul
victimă se află între cache-ul principal şi zona de reumplere, deţinând numai
blocuri care au fost eliminate din cauza unui cache miss. Această tehnică este
utilizată pentru a reduce penalizările suportate de memoria cache la o ratare.
Exemple. Cache-ul victimă original de pe HP PA 7200 a fost mic şi complet
asociativ. Mai târziu, procesoare precum AMD K7 şi K8 au folosit multă memorie
cache secundară pe post de cache victimă, pentru a evita duplicatele de stocare.
Structura unui calculator 129

Cache de urmărire (trace cache)


Unul dintre exemplele cele mai extreme de specializare a memoriei cache
este cache-ul de urmărire, găsit în microprocesoarele Intel Pentium 4. Trace cache
este un mecanism destinat creşterii gradului de aducere din memorie a
instrucţiunilor (instruction fetch) şi lărgimii de bandă, precum şi reducerii
consumului de putere (în cazul lui P4), prin stocarea urmelor (traces)
instrucţiunilor care au fost aduse din memorie şi decodate.
Un trace cache stochează instrucţiuni chiar şi după ce acestea au fost
depozitate sau retrase. În general, instrucţiunile sunt adăugate în trace cache în
grupuri care reprezintă blocuri individuale de bază sau urme dinamice (dynamic
traces). Un bloc de bază constă dintr-un grup de instrucţiuni neramificate,
terminate cu ramificaţii. O urmă dinamică include numai instrucţiuni ale căror
rezultate sunt utilizate efectiv şi elimină următoarele instrucţiuni luate ca
ramificaţii (atât timp cât acestea nu sunt executate), o urmă dinamică putând fi o
concatenare de mai multe blocuri de bază. Acesta permite unităţii de fetch a unui
procesor să aducă din memorie câteva blocuri de bază fără să se preocupe de
ramificaţiile aflate în execuţie.
Liniile de urmărire sunt stocate în cache pe baza unui numărător de program
aflat în prima instrucţiune a urmei. Aceasta permite depozitarea pentru diferite căi a
urmelor care încep de la aceeaşi adresă, fiecare reprezentând rezultate diferite ale
ramificaţiei. În etapa de aducere din memorie (fetch) a unui pipeline, numărătorul
de program curent, împreună cu un set de predicţii ale instrucţiunilor ramificate
(branch prediction), este pus în memoria cache, mai exact, în trace cache, pentru o
situaţie de cache hit. Dacă apare un cache miss, începe construcţia unei noi urme.
Cache-ul de urmărire este folosit în procesorul P4, pentru a stoca micro-operaţii
deja decodate sau translaţii ale instrucţiunilor de pe sisteme 86, astfel încât, atunci
când va fi necesară o instrucţiune, aceasta nu va mai trebui decodată din nou.
Cache multinivel (multilevel cache)
O altă problemă este schimbul între latenţa memoriei cache şi rata de succes
(cache hit). Memoriile cache mari au o rată de succes mai bună, dar latenţe mari.
Pentru a rezolva această problemă, în majoritatea calculatoarelor se folosesc mai
multe niveluri de cache, cu blocuri de cache mai mici şi rapide, grupate într-unul
mai mare şi lent.
Un cache multinivel operează căutând prima dată în nivelul cel mai de jos
(L1) şi, în cazul unui cache hit, viteza de procesare creşte. Dacă apare cache miss
în module cache mici, atunci se caută în cache-ul cel mare (L2) şi, mai departe, în
memoria principală. Diferenţa de latenţă între memoria principală şi memoria
cache a devenit mai importantă. Unele memorii cache au început să utilizeze mai
mult de 3 niveluri pe un chip.
Exemplu. În 2003, procesorul Itanium 2 a început să fie livrat cu 6 MB de
cache L3 pe cip. Sistemele IBM Power 4 aveau 256 MB de cache L3 pe cip,
partajat între mai multe procesoare. Procesorul AMD Phenom foloseşte 2 MB de
cache L2 în schimbul celui L3.
130 ARHITECTURA SISTEMELOR DE CALCUL

Scratch Pad
Folosirea eficientă a spaţiului de memorie integrat în cipul procesorului
(on-chip) este extrem de importantă în aplicaţiile moderne ale sistemelor dedicate
(embedded systems), bazate pe nucleele procesoarelor. În completarea memoriei
cache de date, care realizează interfaţa cu memoria mai lentă din afara cipului
procesorului (off-chip), în diverse aplicaţii se foloseşte adesea o memorie SRAM
rapidă, de tip on-chip, numită memorie scratch pad (vezi schema din figura 2.29)
Cache integrat şi cache divizat
Memoria cache multinivel introduce un nou design al deciziilor.
Exemple. În unele procesoare, toate datele din cache-ul L1 trebuie să se
găsească undeva în cache-ul L2. Aceste memorii sunt numite cache strict inclusiv.
Alte procesoare (cum ar fi AMD Athlon) au un cache exclusiv: datele sunt
garantate a fi în cel mult unul dintre nivelurile L1 sau L2, nu în amândouă.
Totodată, alte procesoare, precum Intel PII, PIII şi P4, nu solicită ca datele din
cache-ul L1 să se găsească şi în L2, deşi ar putea face acest lucru.
Nu sunt acceptate nume universale pentru această politică intermediară, deşi
termenul inclusiv a fost deja folosit. Avantajul cache-ului exclusiv este acela că
depozitează mai multe date. Acest avantaj este cu atât mai mare, cu cât cache-ul L1
exclusiv este compatibil cu L2, caz în care se diminuează memoria L2, aceasta
fiind mai mare decât L1. Când apare o situaţie de cache miss în L1 şi cache hit în
L2 la un acces, linia din cache-ul L2 pe care se află blocul cu hit este schimbată cu
o linie din L1. Acest schimb implică ceva mai multă muncă decât copierea liniei
din L2 în L1, ceea ce o face doar cache-ul inclusiv.
Un avantaj al cache-ului strict inclusiv este că atunci când dispozitivele
externe sau alte procesoare într-un sistem multiprocesor doresc să şteargă o linie
cache, nu au decât să caute în L2. În memoria cache, ierarhiile care nu au pus în
aplicare mecanismele includerii trebuie să verifice şi cache-ul L1. În schimb, există
o corelaţie între asociativitatea cache-ului L1 şi cea a cache-ului L2: dacă cache-ul
L2 nu are cel puţin atâtea căi ca L1, asociativitatea cache-ului L1 este
restricţionată.
Cache-ul strict inclusiv foloseşte linii de dimensiuni mari în cache, ceea ce
reduce mărimea etichetelor din cache-ul secundar (cache-ul exclusiv necesită ca
ambele cache-uri să aibă linii de aceeaşi dimensiune, pentru a le putea schimba
când în L1 apare cache miss şi în L2, cache hit). Dacă cache-ul secundar este cu un
ordin de mărime mai mare şi datele sunt tot cu un ordin de mărime mai mari decât
etichetele, această zonă poate fi etichetată ca zonă de salvare şi poate fi
incrementată comparabil până la dimensiunile zonei de care au nevoie L1 şi L2 să
depoziteze date.
După cum s-a mai spus, calculatoarele puternice au un alt cache între L2 şi
memoria principală, numit cache de nivel trei (L3). Acest cache poate fi
implementat pe un chip separat de procesor şi, începând din 2004, poate varia ca
mărime de la 2 MB la câţiva GB. Beneficiile unui chip L3 depind de cererea de
acces a aplicaţiilor. Staţiile de lucru high-end şi serverele au memoria de tip L3
implementată în procesor, ceea ce duce la mărirea vitezei şi reducerea costurilor.
Structura unui calculator 131

Exemplu. Intel Xeon MP, produs numit Tulsa, are un cache L3 încorporat
de 16 MB, partajat între cele două nuclee ale procesorului.
În cele din urmă, la celălalt capăt al ierarhiei (în cazul staţiilor de lucru low-end),
registrul de fişiere al procesorului poate fi considerat drept cel mai mic şi cel mai
rapid cache din sistem, cu caracteristica de a fi programat software de un compilator,
ca şi cum ar aloca registre pentru a păstra valori primite din memoria principală.
Studiu de caz: memoria cache la procesorul AMD Athlon 64 (K8)
Pentru a exemplifica specializările cache-ului multinivel, integrat şi divizat, se
foloseşte ierarhia din nucleul K8 al procesorului AMD Athlon 64 (vezi figura 3.49).

Fig. 3.49. Structura nucleului K8 al procesorului AMD Athlon 64.

Nucleul K8 are patru memorii cache: una pentru instrucţiuni, una pentru
blocul TLB, una pentru datele TLB-ului şi una pentru date. Fiecare dintre aceste
cache-uri este specializat:
1. Cache-ul pentru instrucţiuni păstrează cópii ale celor 64 de linii ale
memoriei şi aduce din memorie 16 B la fiecare ciclu. Fiecare octet din acest cache
este depozitat în 10 biţi în loc de 8, cu un marcaj suplimentar de bit al limitelor
instrucţiunilor (acesta este un exemplu de precodare). Cache-ul are doar protecţie
de paritate, mai degrabă decât ECC, deoarece informaţia de paritate ocupă spaţiu
mai puţin, iar datele avariate pot fi înlocuite de date proaspete aduse din memorie.
2. Instrucţiunile blocului TLB păstrează cópii ale intrărilor din tabelul
paginilor (PTE). Fiecare ciclu de instrucţiuni adus din memorie are propria sa adresă
virtuală, translatată cu ajutorul TLB-ului într-o adresă fizică. Fiecare intrare are 4 sau
8 octeţi în memorie, iar fiecare TLB este împărţit în două secţiuni: una pentru a
păstra PTE-urile care ocupă 4 KB din hartă şi alta pentru a păstra PTE-urile care
ocupă 2 sau 4 MB din hartă. Împărţirea permite o potrivire a circuitului în fiecare
secţiune în mod complet asociativ. Sistemul de operare mapează secţiuni diferite
ale spaţiului de adrese virtuale cu diferite mărimi ale PTE-urilor.
132 ARHITECTURA SISTEMELOR DE CALCUL

3. Datele TLB-ului au două cópii, care conţin intrări identice. Cele două
cópii permit accesul la două date per ciclu, pentru a translata adresele virtuale în
adrese fizice. Ca şi instrucţiunile TLB-ului, şi aceasta este împărţită în două tipuri
de intrări.
4. Datele cache-ului păstrează cópii ale celor 64 de linii ale memoriei. Este
împărţită în 8 bancuri (fiecare depozitând câte 8 KB de date) şi poate aduce din
memorie doi octeţi de date pe ciclu.
Nucleul K8 are, de asemenea, un cache multinivel. Există instrucţiuni de
nivel 2 şi date ale TLB-ului care depozitează numai PTE-uri mapate pe 4 KB.
Ambele cache-uri, de instrucţiuni şi de date, pot fi umplute din cache-ul L2. Acest
cache este exclusiv, atât pentru instrucţiunile cât şi pentru datele din L1, ceea ce
înseamnă că orice linie de 1 octet se poate găsi numai într-o singură instrucţiune
dată cache-ului L1 sau în cache-ul L2. Cu toate acestea, este posibil ca o linie de
date în cache să aibă un PTE care este într-unul din TLB-uri – sistemul de operare
este responsabil cu păstrarea TLB-ului coerent.

3.2.12.9. Concluzii
Se poate spune că introducerea în practică a conceptului de memorie cache
ca memorie tampon a adus o serie de îmbunătăţiri sistemelor de calcul, mărind
foarte mult viteza de procesare, desigur în funcţie şi de dimensiunea memoriei
cache instalate în sistem. Totuşi, se poate pune şi aici o întrebare: până unde poate
merge memoria cache ca dimensiune şi cât de folositoare este mărimea acesteia?
În ultimul timp se construiesc sisteme care pot avea pe placa de bază până la
câţiva gigaocteţi de cache extern. Dar o supradimensionare a memoriei cache
externe fără a se ţine seama de scopul în care va fi folosit calculatorul nu va duce
decât la încărcarea notei de plată (memoria cache, fiind o memorie statică, este cu
mult mai scumpă decât RAM-ul), deoarece avantajele obţinute vor fi insesizabile.
Datorită faptului că procesorul execută programele pe segmente, bucle de
program de maximum 64 KB, un astfel de segment poate fi cuprins în primii 64
KB ai memoriei cache. Deci, un spor de viteză de circa 90–95% (din totalul
sporului adus de o memorie cache montată) se va obţine folosind doar 64 KB de
memorie cache. Ridicând dimensiunea cache-ului la 256 KB se va obţine o creştere
doar de 2–3 %.
Se consideră că o memorie cache de 256 KB este suficientă pentru un
procesor Pentium, în timp ce pentru Pentium Pro este nevoie de 512 KB cache în
condiţii de lucru deosebite, iar pentru procesoarele actuale valorile de ordinul
sutelor de MB sau chiar de GB au devenit deja comune. Problema care se pune este
atunci când se lucrează în mod multitasking sau în reţea, şi unde cei 64 KB cache
de date ai unei sarcini sunt înlocuiţi de cei 64 KB ai altei sarcini, la viteze foarte
mari. În acest caz, este evident că procesorul va avea nevoie de mai multe
„depozite“ de 64 KB, pentru fiecare sarcină cel puţin două, astfel încât să crească
probabilitatea ca procesorul să-şi găsească datele necesare într-unul din aceste
„depozite“ cache, fără să fie nevoit să mai acceseze RAM-ul. De aceea, în cazul în
care calculatorul va juca rol de file server sau va fi folosit în activităţi multitasking,
este necesară mult mai multă memorie cache.
Structura unui calculator 133

3.2.4. Memoria ROM

Un alt tip de memorie folosit în construcţia calculatoarelor şi a unor


echipamente periferice este memoria ROM (Read Only Memory). Spre deosebire
de memoria RAM, această memorie, odată scrisă prin procedee industriale, nu mai
poate fi ştearsă prin metode aflate la îndemâna utilizatorului; în plus, la decuplarea
de sub tensiune a calculatorului, informaţiile din ROM rămân intacte.
Ştergerea anumitor memorii ROM, de construcţie specială (PROM,
EPROM, EEPROM) se poate face prin lansarea unui spot de radiaţii ultraviolete
asupra ferestrei de cuarţ cu care este prevăzut cipul de memorie. Scrierea
memoriilor ROM presupune un atac distructiv şi ireversibil asupra diodelor şi
tranzistoarelor, prin „arderea” joncţiunilor interne. Rezultatul acestei acţiuni de
ardere se observă prin modificarea conţinutului informaţiei binare.
În prezent, există plăci de bază dotate cu astfel de circuite care permit
revitalizarea rutinelor BIOS prin copierea în ROM, cu ajutorul unui soft
specializat, a unor versiuni mai noi şi mai performante. Deci, ca o concluzie de
bază, datele scrise în memoria ROM au un caracter permanent şi au o importanţă
vitală în iniţializarea şi funcţionarea oricărui sistem de calcul.
Memoria ROM are aspectul unui circuit integrat cu două rânduri de pini (DIP)
şi este montat de placa de bază a calculatorului prin intermediul unui soclu. Intern,
memoriile de acest tip sunt realizate din reţele rectangulare de microtranzistoare
sau microdiode. Accesarea memoriei ROM se face la fel ca la RAM.
O celulă de memorie este alcătuită dintr-un circuit basculant bistabil (CBB).
Pentru a realiza mai multe celule, se aranjează CBB-urile sub forma unui tablou cu
un număr de coloane şi rânduri. În general numărul rândurilor este egal cu cel al
coloanelor. Fiecare celulă se află la intersecţia unei anumite linii X şi a unei
anumite coloane Y (vezi figura 3.50).

Fig. 3.50. Organizarea memoriei ROM.

Organizarea memoriei sub formă de matrice permite reducerea numărului


intrărilor de adrese la un număr mai mic decât numărul liniilor şi al coloanelor
aferente informaţiei stocate. Numărul terminalelor de adresare poate fi micşorat
prin adresarea în cod binar şi utilizarea decodificatoarele binar-zecimale. Acest
mod de adresare în cod binar este utilizat şi în cazul memoriei RAM.
134 ARHITECTURA SISTEMELOR DE CALCUL

Exemplu. Fie o memorie ROM care conţine 8 cuvinte de câte 4 biţi (vezi
figura 3.51.a). O combinaţie binară care se aplică pe cele 3 intrări de adresă (A2,
A1, A0) selectează unul din cele 8 cuvinte, iar cei 4 biţi de date ai cuvântului
selectat sunt disponibili la ieşiri (O0, O1, O2, O3), cu condiţia ca semnalul de
validare a ieşirii, OE (Output Enable) să fie activ (activarea se face pe 0 logic).
Dacă OE = 1, ieşirile memoriei sunt în starea de impedanţă înaltă (high Z). Tabelul
de adevăr din figura 3.51.b este un exemplu care arată o posibilitate de implementare
a 4 funcţii binare de câte 3 variabile.

Fig. 3.51.a. Memorie ROM cu 8 cuvinte de 4 biţi; b. Tabelul de adevăr asociat.

Structura internă a unui cip de memorie ROM organizat pe 1024 cuvinte a


câte 8 biţi, adică 1 K  8, este prezentat în figura 3.52. Matricea de memorie se
construieşte sub o formă cât mai apropiată de cea a unui pătrat. Liniile matricei
sunt selectate cu ajutorul decodificatorului cu 7 intrări de selecţie, iar coloanele, cu
ajutorul celor 8 multiplexoare a câte 3 intrări de selecţie. Intrarea suplimentară, CS
(Chip Select), activă pe 0 logic, pregăteşte cipul de memorie în vederea unei
operaţii de citire a datelor. Prin dezactivare, acţionează asupra circuitelor din
structură în scopul reducerii consumului. Schema conţine şi aspectul unui element
din matricea de memorie, dacă aceasta este realizată în tehnologia MOS.

Fig. 3.52. Structura internă a unui cip de memorie ROM cu 1024 cuvinte de 8 biţi.
Structura unui calculator 135

Pentru realizarea memoriei ROM, sunt utilizate tehnologii bipolare (TTL,


TTL-Schottky, ECL), tehnologii metal-oxid-semiconductor (MOS) cu canal N (N-
MOS), cu canal P (P-MOS), cu simetrie complementară (CMOS), cu canal negativ
(NMOS) sau tehnologii cu logică integrată de injecţie (I2L).
Ca urmare, performanţele poartă amprenta caracteristicilor tehnologice:
 bipolară – viteză de procesare mare, putere disipată ridicată, densitate de
integrare scăzută;
 MOS – densitate de integrare ridicată, viteză de procesare mai scăzută
decât la bipolară, putere disipată relativ scăzută;
 CMOS – putere disipată foarte scăzută şi viteză de procesare mare.
În alegerea unui circuit integrat de memorie, trebuie să se aibă în vedere:
 tensiunea de alimentare;
 capacitatea;
 modul de organizare (lungimea cuvântului, semnalele de control şi adresă);
 puterea disipată (în regim de funcţionare sau în regim de rezervă stand-by);
 timpul de acces;
 timpul de ciclu memorie;
 disponibilitatea şi preţul de cost.
Orice sistem de calcul foloseşte o memorie ROM care conţine următoarele
sisteme software:
1. Sistemul cu program starter sau ROM-ul de start, adică microcodul cu
rol de asistare şi control al pornirii sistemului. Aici se află înscrise mici rutine care
realizează următoarele acţiuni:
 execută testele de funcţionalitate ale tuturor componentelor ataşate hardware;
 iniţializează toate componentele ataşate calculatorului;
 iniţializează tabela vectorilor de întrerupere;
 verifică alte extensii sau periferice ataşate sistemului de calcul;
 încarcă în memorie, de pe disc, sistemul de operare.
Testele de verificare, care formează aşa-numitul POST (Power On Self
Test), durează foarte puţin pentru verificarea plăcii de bază, a controlerului de disc,
a plăcii video, a unităţilor de disc, şi ceva mai mult pentru memoria RAM, care este
verificată kilooctet cu kilooctet. Automat, în cazul în care se detectează anumite
erori şi disfuncţii pentru oricare din componentele hardware, se va lansa un mesaj
de avertizare. Sistemul de operare, odată încărcat în RAM, va prelua conducerea şi
gestiunea sistemului de calcul.
2. ROM-BIOS (Basic Input Output System) este o parte a memoriei ROM
care va asigura toate procesele şi serviciile necesare activităţii calculatorului, precum
şi gestiunea perifericelor, prin intermediul rutinelor conţinute. BIOS-ul conţinut de
ROM este elementul de legătură sau interfaţa directă între partea hardware şi cea
software, prin care se realizează hard cererile soft ale programelor, folosind
întreruperile cu serviciile aferente. Practic, orice program accesează partea hardware
prin intermediul BIOS. Rutinele conţinute vor activa canalele de comunicaţie dintre
componentele sistemului şi un sistem de operare sub care lucrează acesta.
136 ARHITECTURA SISTEMELOR DE CALCUL

Fig. 3.53. Modul de organizare al memoriei.

3. ROM-Basic este un program opţional, care conţine nucleul limbajului Basic.


4. Extensiile ROM reprezintă un sistem care conţine anumite rutine necesare
gestiunii dispozitivelor ataşate.
Întreaga memorie ROM este activă pe tot parcursul lucrului cu calculatorul.
Încă de la pornirea şi iniţializarea calculatorului (la încărcarea sistemului de
operare), în situaţiile apăsării tastei Delete, BIOS-ul va furniza o interfaţă de dialog
cu utilizatorul, prin care va oferi o serie de informaţii privind starea funcţională şi
structura sistemului de calcul. Prin intermediul unor meniuri, se poate modifica o
serie de parametri pentru a se obţine un mod de lucru optim şi rapid.
Structura unui calculator 137

Ultimii 128 KB rezervaţi din zona de memorie superioară (vezi figura 3.53)
sunt utilizaţi de componenta BIOS de pe placa de bază. Componenta BIOS este, de
obicei, memorată în cipuri de memorie ROM. Programele din componenta ROM
BIOS controlează sistemul pe durata pornirii (până la preluarea controlului de către
sistemul de operare) şi rămân ca driver-e pentru subsistemele hard pe durata
funcţionării normale a sistemului. Deoarece aceste programe trebuie să fie
disponibile imediat, la pornirea sistemului ele nu pot fi încărcate de pe discuri (sau
alte dispozitive de memorare).
Principalele funcţii ale programelor de pe placa de bază sunt:
 autotestarea la punerea sub tensiune (POST);
 rutina de încărcare a sistemului de operare (bootstrap loader) – iniţiază
căutarea sistemului de operare pe discurile disponibile;
 sistemul de bază pentru operaţii de intrare-ieşire (BIOS) – este interfaţa
soft sau programul principal de control pentru toate componentele hard
ale sistemului.
Acest sistem conţine un prim meniu – Standard CMOS Setup –, unde se
stabilesc tipul şi parametrii unităţilor de disc, tastaturii sau plăcii video, ora şi data
curentă a sistemului.
Un al doilea meniu – Advanced CMOS Setup – cuprinde o serie de parametri
reglabili pentru a obţine maximul de performanţă. În acest meniu, se pot activa sau
dezactiva memoria cache internă şi externă, se poate stabili o parolă de intrare în
sistem, ordinea de căutare a sistemului de operare pe disc etc.
Al treilea meniu – Advanced Chip-set Setup – conţine reglaje foarte fine de
optimizare, cum ar fi configurarea magistralelor sau a stărilor de aşteptare ale
microprocesorului.
Datorită uşurinţei cu care se poate accesa BIOS-ul, parametrii care definesc
funcţionarea generală a calculatorului pot fi modificaţi foarte simplu, dar
configurarea arbitrară a parametrilor BIOS poate produce dereglări ale sistemului.
Tot aici se poate menţiona unitatea specială MMU (Memory Management
Unit), care se ocupă cu transferul conţinutului memoriei ROM (cel de pe placa de
bază: ROM-ul de sistem, ROM-ul video, segmentele ROM ale unor adaptoare sau
extensii) în memoria de lucru RAM. Este un dispozitiv integrat în microprocesor.
Această posibilitate de transfer a rutinelor şi datelor ROM în RAM ridică
foarte mult performanţele sistemului, deoarece timpul de acces al memoriei ROM
este foarte mare (150–200 ns) şi operaţiile care implică folosirea conţinutului ROM
se desfăşoară lent. Activarea opţiunilor de transfer (shadowing) se face din meniul
BIOS Features Setup din CMOS, prin activarea punctelor de Shadow definite de
adrese specificate (System Shadow, Video Shadow etc.). MMU va dezactiva
automat toate cartuşele ROM al căror conţinut a fost citit şi scris apoi în RAM, iar
în continuare va marca aceste zone de memorie RAM în care s-a transferat
conţinutul ROM, protejându-le.
Legătura memoriei ROM cu exteriorul se face prin magistrala de adrese,
corespunzătoare pinilor notaţi cu A0÷Am (pentru detectarea locaţiei care conţine
informaţia cerută) şi magistrala de date, pentru transferul datelor, prin pinii notaţi
cu D0÷Dn, în funcţie de numărul de pini al cipului respectiv.

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