Documente Academic
Documente Profesional
Documente Cultură
Carte Arh Calculatoarelor
Carte Arh Calculatoarelor
Gyula SZEKELY
Calculatoare
Arhitectur i organizare
Mihai ROMANCA
Gyula SZEKELY
CALCULATOARE
- Arhitectur i organizare -
2004
500030 Braov,
B-dul Eroilor, Nr. 9
Tel/Fax: 0268 47 53 48
E-mail: editura@unitbv.ro
Tiprit la:
Tipografia Universitii Transilvania din Braov
B-dul Eroilor 9
tel/fax: 0268 47 53 48
Toate drepturile rezervate
Editur acreditat de CNCSIS
Adresa nr. 1615 din 29 mai 2002
Autorul
Autorul
CUVNT NAINTE
Cartea de fa prezint principalele aspecte ale arhitecturii i organizrii
calculatoarelor numerice. Materialul este organizat astfel nct cunotinele s poat fi
ctigate gradual pornind de la aspectele elementare ale organizrii pn la extensiile actuale
ale arhitecturii calculatorului. Materialul este dedicat n special studenilor din nvmntul
ingineresc de profil electric, constituind suportul pentru cursul de Calculatoare predat
studenilor de la specializrile Electrotehnic i Electromecanic, din cadrul Facultii de
Inginerie Electric i tiina Calculatoarelor de la Universitatea TRANSILVANIA din Braov.
Obiectivele generale pe care ni le-am propus n realizarea materialului sunt:
Prezentarea principalelor noiuni privind arhitectura setului de instruciuni, principii de
funcionare i de organizare ale diferitelor variante de implementare a calculatoarelor
numerice.
Clasificarea i exemplificarea arhitecturilor moderne actuale, descrierea i analiza
organizrii calculatoarelor.
n urma asimilrii cunotinelor predate la aceast disciplina, viitorul inginer
electrotehnician i va putea asuma responsabilitatea punerii n funciune a diferitelor
sisteme de comand cu calculatorul numeric, a ntreinerii sau a proiectrii i
construciei diferitelor interfee (acestea fiind realizabile i prin studiul suplimentar al
documentaiilor de firm).
n cadrul cursului se prezint conceptele generale privind arhitectura mainilor
electronice de calcul numeric, concepte aplicabile la orice main particular. Se fac, de
asemenea, dese referiri, cu titlu de exemplu, la arhitecturi particulare, de calculatoare
existente pe pia. S-a ales aceasta metod de abordare, pentru c domeniul este extrem de
dinamic. Arhitecturile specifice diferitelor procesoare, necesare eventual n practica viitorului
inginer, sunt tratate n documentaiile de firm, i chiar dac n viitorul apropiat vor aprea
noi implementri sau chiar noi arhitecturi, conceptele de baz, relativ "stabile" vor fi cele care
vor uura nelegerea.
Materialul cursului de fa este destinat sistemelor uni-procesor, ca o cale ctre
studierea ulterioar de ctre studeni a principiilor de organizare i de utilizare a sistemelor de
procesare paralel.
Am organizat cartea 7 capitole, cuprinznd materia ce se pred n cele 14 sptmni
ale semestrului 7 studenilor electrotehnicieni. Cartea cuprinde numeroase note de subsol, mai
ales cu explicaii ale unor denumiri provenite din limba englez. Unele din noiunile
englezeti din domeniul calculatoarelor sunt deja clasice, dar altele nc nu au cptat o
traducere exact i apar adesea ca barbarisme n limba romn. Chiar dac se face
explicarea n limba romn pentru termenii folosii peste tot se indic i termenul original
din limba englez. Ne-am ferit astfel de a clca n pcatul unei traduceri care s se ndeprteze
de la sensul iniial, pentru c aa cum spun italienii Tradutore - traditore!.
Ateptm cu interes observaiile studenilor i colegilor la materialul de fa prin
adresele noastre de e-mail: romanca@unitbv.ro i szekelyg@vega.unitbv.ro.
Autorii
CUPRINS
1. INTRODUCERE N ARHITECTURA CALCULATOARELOR ............... 1
1.1. Calculatorul numeric ...................................................................................... 2
1.2. Arhitectura calculatorului numeric................................................................. 4
1.3. Organizarea general a unui sistem uni procesor........................................ 5
1.4. Tendine ale tehnologiei ................................................................................. 7
1.5. Dezvoltare a aplicaiilor calculatoarelor numerice......................................... 8
1.6. Software (programe de sistem i aplicaii)
9
1.7. Clasificarea n ordine a sistemelor numerice ................................................. 10
1.8. Reprezentarea funcional a unui calculator .................................................. 11
1.9. Reprezentarea structural a unui calculator ................................................... 15
1.10. Scurt privire istoric asupra dezvoltrii mainilor de calcul ........................ 18
2. MODALITI DE EVALUARE A PERFORMANELOR
CALCULATOARELOR ......................................................................................31
2.1. Timpul, ca msur a performanelor ................................................................32
2.2. Alte uniti de msur.......................................................................................37
2.3. Programe etalon de testare a performanelor.................................................... 39
2.4. Compararea performanelor prin mediere ........................................................ 42
2.5. Legea lui Amdahl ............................................................................................. 46
3. FUNDAMENTE PRIVIND ARHITECTURA UNITII CENTRALE
DE PROCESARE (UCP) ......................................................................................49
3.1. Structura de procesor........................................................................................ 50
3.2. Structura unei Uniti Centrale de Procesare elementare.................................56
3.3. Perfecionarea Unitii Centrale de Procesare elementare ...............................59
3.4. Alte registre interne semnificative pentru UCP ............................................... 61
3.5. Exemple privind operaiile UCP ......................................................................64
3.6. Semnale la interfaa UCP cu exteriorul............................................................ 67
3.6.1. Magistrala de adrese .......................................................................... 67
3.6.2. Magistrala de date.............................................................................. 70
3.6.3. Magistrala de control ......................................................................... 70
3.7. Reprezentarea numerelor n calculator............................................................. 77
3.7.1. Reprezentarea cu virgul fix ............................................................77
3.7.2. Coduri binare folosite pentru reprezentarea numerelor cu semn.......78
3.8. Reprezentarea numerelor n virgul mobil .....................................................83
4. ARHITECTURA SETULUI DE INSTRUCIUNI........................................89
4.1. Introducere n arhitectura setului de instruciuni..............................................90
4.2. Formatul instruciunilor.................................................................................... 91
4.3. Interdependena set de instruciuni - organizare intern a procesorului .......... 94
4.4. Scurt privire comparativ ntre arhitecturile RISC i CISC ........................... 98
4.5. Tipuri de instruciuni ........................................................................................99
4.5.1. Instruciuni aritmetice........................................................................ 100
4.5.2. Instruciuni logice .............................................................................. 100
4.5.3. Instruciuni pentru transferul informaiei .......................................... 101
4.5.4. Instruciuni pentru deplasarea i rotirea datelor ................................ 102
4.5.5. Instruciuni de ramificare (pentru controlul secvenei de program)..103
CAPITOLUL 1
INTRODUCERE N
ARHITECTURA CALCULATOARELOR
Coninut:
1.1. Calculatorul numeric
1.2. Arhitectura calculatorului numeric
1.3. Organizarea general a unui sistem uni - procesor
1.4. Tendine ale tehnologiei
1.5. Dezvoltare a aplicaiilor calculatoarelor numerice
1.6. Software (programe de sistem i aplicaii)
1.7. Clasificarea n ordine a sistemelor numerice
1.8. Reprezentarea funcional a unui calculator
1.9. Reprezentarea structural a unui calculator
1.10. Scurt privire istoric asupra dezvoltrii mainilor de calcul
Obiective educaionale:
a. Definirea calculatorului numeric, a modului general de organizare i identificarea
principalelor aspecte privind noiunea de arhitectur a calculatorului
b. Clasificarea domeniilor de aplicaie pentru calculatoarele numerice
c. Definirea unor termeni cheie pentru arhitectura calculatorului
d. Descrierea principalelor elemente privind evoluia calculatoarelor numerice.
Capitolul 1
Nivelul arhitectural
Nivelul organizrii
Nivelul implementrii
Figura 1.1. Reprezentare ierarhic simplificat a nivelurilor de descriere a unui calculator numeric.
Portabil - aplicaia este portabil dac este capabil s funcioneze pe mai multe platforme hardware.
Prin nivelul de programare (al aplicaiilor) calculatorul este vzut ca un ansamblu de resurse
care particip la executarea unui program. Este nivelul pe care lucreaz programatorul ntr-un
limbaj de nivel nalt, avnd la dispoziie un compilator care deine informaiile detaliate despre
nivelele inferioare. Pe acest nivel se opereaz cu noiuni ca multiprocesoare, memorie distribuit,
reele de interconectare.
Pe nivelul arhitectural, care materializeaz, n mod tradiional, interfaa software-hardware, se
ncearc maximizarea performanelor prin optimizarea setului de instruciuni, tratrii
ntreruperilor, managementului i a proteciei memoriei. Este nivelul de pe care programatorul
poate accesa toate resursele microprocesorului2, prin instruciuni specifice. Deoarece att domeniul
hardware ct i cel software evolueaz rapid, n foarte puine cazuri arhitecii unui procesor au
posibilitatea s nceap "de la zero" proiectarea unui procesor. De cele mai multe ori, proiectanii
primesc ca "date de intrare" arhitectura i chiar setul de instruciuni cu care noul procesor trebuie s
fie compatibil. Meninerea compatibilitii, dei ngreuneaz proiectarea, este obligatorie datorit
faptului c nimeni nu este dispus s renune, de exemplu din trei n trei ani, la toate datele
acumulate i toat investiia fcut n software. Pe acest nivel se definete noiunea de
compatibilitate binar, ca fiind posibilitatea unei maini de a rula un program scris pentru un
procesor dintr-o generaie mai veche. Meninerea compatibilitii binare implic, pe lng
motenirea setului de instruciuni, i pstrarea modelului secvenial de execuie a instruciunilor.
Aceste dou constrngeri se dovedesc a fi foarte dure n cazul procesoarelor moderne, superscalare,
care ncearc s elimine o mare parte din secvenialitatea programului i s l transforme ntr-un
program paralel, de nalt performan, dar care s pstreze aparena de program secvenial.
Pe nivelul organizrii, denumit uneori i nivelul de microarhitectur, se precizeaz modul de
implementare a arhitecturii microprocesorului. O arhitectur de microprocesor poate avea diferite
organizri, obinndu-se astfel procesoare cu performane optimizate pentru un anumit tip de
aplicaii dar compatibile la nivelul programatorului n limbaj de asamblare. Dintre noiunile cu care
se opereaz la acest nivel se pot preciza:
Numrul, tipul i localizarea unitilor funcionale;
Descrierea setului de registre;
Structura pipeline a cii de date;
Ierarhia memoriei, localizarea i configuraia memoriei cache.
Pe nivelul de implementare, microprocesorul este vzut ca un sistem digital implementat ntr-o
tehnologie specific. Aspectele tehnologice limiteaz deciziile de pe nivele superioare. Aici se
stabilete bugetul de tranzistoare pus la dispoziie, buget ce trebuie cunoscut de ctre proiectanii de
arhitecturi. ntrebrile care i gsesc rspunsul pe acest nivel sunt:
Cum se plaseaz unitile funcionale pe chip (floorplan)
Cum se poate implementa o unitate funcional cu un numr minim de tranzistoare, pe o
suprafa minim de circuit ?
De-a lungul timpului, performanele calculatoarelor nu au crescut n ritm constant. Exist dou fore
care stimuleaz dezvoltarea calculatoarelor:
mbuntirea tehnologic i
inventarea unor noi arhitecturi.
n primii 25 de ani ai calculatoarelor electronice (1945-1970), ambele fore au determinat n
egal msur creterea performanelor. Dup 1970, tehnologia (numrul redus de tranzistoare
posibil de utilizat) a limitat ritmul de cretere, care a continuat totui s rmn la 25-30% pe an n
domeniul minicalculatoarelor i mainframe3-urilor. Apariia microprocesorului a adus posibilitatea
2
Microprocesor = Unitate Central de procesare implementat ntr-un singur circuit integrat. Conine pe aceeai achie
de siliciu: Unitate de control, Unitate aritmetic i logic i registre de uz general folosite ca memorie local de mare
vitez.
3
mainframes = calculatoare de mari dimensiuni, cu putere mare de calcul, avnd de obicei o arhitectur multi-procesor
i uniti funcionale multiple.
Capitolul 1
de integrare a unui numr mare de tranzistoare ceea ce a permis un ritm de cretere a performanelor
de 35% pe an. Ritmul de cretere a fost i mai mare dup 1980, atunci cnd a fost determinat de
apariia unor idei arhitecturale noi, ce au condus la crearea procesoarelor RISC.
ntre procesoarele existente n prezent pe pia i de asemenea ntre calculatoarele construite
cu ajutorul acestor procesoare exist o mare diversitate, diversitate ce se manifest din mai multe
puncte de vedere:
al tehnologiei folosite pentru implementarea lor,
al caracteristicilor funcionale (proprieti i funcii observabile din exterior) i
al organizrii structurii4 lor interne.
Toate aceste trei aspecte principale constituie ceea ce este cunoscut sub numele de arhitectura
unui calculator.
Structur [MDE72] = Alctuirea intern a unui corp sau sistem fizic, mod de dispunere a elementelor componente ale
unui ansamblu, mod specific de organizare a elementelor constitutive ale unei limbi, mod de organizare a unei mulimi
de elemente, prin definirea uneia sau mai multor operaii care au anumite proprieti.
5
IBM = International Business Machine
6
ASI = Arhitectura Setului de Instruciuni (n limba englez ISA = Instruction Set Architecture)
7
Arhitectur [MDE72] = tiina i arta de a proiecta i a construi cldiri.
Termenul organizare include aspectele de nivel nalt ale unui proiect de calculator, ca de
exemplu organizarea sistemului de memorie, structura i organizarea magistralelor i proiectul
intern al UCP. De exemplu, [Patterson90], doua maini cu aceeai arhitectur a setului de
instruciuni, dar organizri diferite, sunt VAX - 11/780 i VAX 8600. Noiunea de hardware
(resurse fizice) e utilizat pentru a ne referi la aspectele specifice ale implementrii mainii. Acestea
includ proiectul logic de detaliu i tehnologia de realizare a mainii de calcul.
n concluzie arhitectura calculatorului cuprinde dou componente principale:
1. arhitectura setului de instruciuni (ASI)
2. implementarea mainii, cu cele dou sub-componente:
organizare
hardware
UCP
ALU
Echipamente
periferice
Sistem de
intrare / ieire
Registre
date
adrese i
comenzi
instruciuni
Unitate de Control
Memoria
principal
Calculator
Figura 1.2. Organizarea general a unui calculator uni-procesor. ALU = Unitate aritmetic i logic.
Liniile punctate reprezint semnale de comand i sincronizare interne procesorului.
Capitolul 1
ALU
Logic de
control
Registru adrese de memorie
(pentru adresare date)
spre memoria principal
de la memoria principal
Registru tampon pentru date
Toat aceast structur hardware a procesorului (fix - ncastrat n siliciu) poate realiza
funciuni pentru utilizatorul uman, prin aplicaii dedicate, doar dac pe suportul hardware se
execut un set coerent de instruciuni care indic funciile elementare ce trebuie executate de
suportul hardware. Funciile pot fi foarte diverse i de aceea se poate spune c instruciunile ce
alctuiesc un program realizeaz o reconfigurare logic periodic a cii de date a procesorului,
pentru a se realiza funciunile cerute. Pentru a prezenta la modul foarte general informaii
UCP
Bloc
Memorie
principal
Bloc
Memorie
principal
I/O
I/O
Magistral de control
Magistral de adrese
Magistral de date
Figura 1.4. Schem bloc general ce indic conectarea componentelor calculatorului la cele trei tipuri de
magistrale externe UCP. Prin I/O sau simbolizat circuitele de interfa cu echipamentele de intrare / ieire.
PC = Personal Computer
Capitolul 1
anterior aceast dezvoltare rapid s-a fcut nu numai pe baza dezvoltrilor tehnologice (ce au
permis mrirea gradului de integrare i reducerea puterii consumate i a preului) dar i pe baza
inovaiilor n domeniul proiectrii arhitecturale.
Apariia microprocesoarelor, n anii 70 ai secolului trecut, a permis apariia unor dezvoltri
arhitecturale eseniale pentru performana calculatoarelor dintre care amintim aici doar cteva:
generalizarea utilizrii limbajelor de programare de nivel nalt i a sistemelor de operare, organizri
ce permit execuie paralel a instruciunilor i generalizarea utilizrii memoriilor temporare
(cache)
10
Termenii consacrai n literatura tiinific de limb englez sunt: Embedded Computers i Embedded Systems.
1.6. SOFTWARE
n ceea ce privete partea de program rulat pe suportul hardware exist mai multe tipuri de
programe rulate de un calculator numeric. Vom folosi termenul de "software", mprumutat din
limba englez prin care vom nelege totalitatea programelor de sistem i aplicaii. Seturile de
programe dintr-un sistem de calcul pot fi denumite dup utilizarea lor. Astfel programele ce
furnizeaz servicii utile tuturor proceselor i resurselor sistemului de calcul, n mod general, sunt
numite programe de sistem (software de sistem). Exemple de software de sistem sunt: sistemele de
operare, compilatoare, asambloare etc.
Exist ns i software - destinat programatorilor - software de asisten pentru dezvoltarea
aplicaiilor (numit uneori i software de aplicaii). Exemple de software de asisten pentru
dezvoltarea aplicaiilor: editoare de text, programe de proiectare asistat, programe pentru baze de
date etc.
- software utilizator
Software
- software de sistem
interpretoare de comenzi
sisteme de operare
sistem de fiiere
memorie virtual
drivere dispozitive de I/O
Figura 1.5. Clasificare general a componentelor software ale unui calculator.
Capitolul 1
10
mode" (mod nucleu) sau n mod supervizor. El este astfel protejat (ignorm aici procesoarele ce nu
ofer suport hardware suficient pentru rularea unui sistem de operare n mod protejat, cum ar fi
procesoarele Intel din seria 80x86 lucrnd n "mod real") mpotriva stricciunilor ce ar putea fi
provocate de programele de aplicaii sau de programele utilizator.
Tipurile de software incluse n categoria "software de asisten" se refer la resursele logice
numite adesea i programe utilitare pentru dezvoltarea de aplicaii.
S1n
S 2n
(a)
S1n
S 2n
S1n
S 2n
S 3n
S 4n
S 3n
S 4n
S 2n
S1n
(b)
(c)
(d)
Figura 1.6. Exemplificare a interconectrii sistemelor digitale: a) sistem de ordinul n serie, b) sistem de
ordinul n paralel, c) sistem de ordinul n serie - paralel, d) sistem de ordinul n+1 (dezvoltare structural prin
introducerea reaciei). Prin X s-a indicat intrarea n sistem iar prin Y ieirea. Prin S in , i = 1...4 n figur, sa indicat sistemul digital de ordinul n cu indicele i.
11
Funcii
Exemplificare circuite
funcii combinaionale
funcii de memorare
2
3
4
5
Capitolul 1
12
Figura 1.7. O main de calcul organizat din punct de vedere funcional ca o succesiune de mai
multe niveluri de maini virtuale.
13
virtual, pentru c utilizatorul unui anumit nivel lucreaz cu instruciuni specifice, vede doar nivelul la care lucreaz,
fr s conteze pentru el ce se ntmpl mai jos
13
display (engl.) = dispozitiv de afiare
Capitolul 1
14
cei pomenii, iar informaia de stare returnat de circuitul de control al discului dup o operaie este
foarte complex. Mai mult, pentru multe dispozitive de I/O, timpul joac un rol important n
programare. Una din funciile majore ale unui sistem de operare este s ascund toate aceste
complexiti i s pun la dispoziia programatorului un set de instruciuni simple cu care s
lucreze. De exemplu o comand de genul: "citete blocul X din fiierul Y" e mult mai simpl pentru
c nu trebuie s ne mai facem probleme privind detaliile micrii capetelor de citire/scriere i
timpul de ateptare pentru stabilizarea lor.
aux=z[k];
for (j=k;j<q;j++) z[j]=z[j+1];
z[q]=aux;
if(z[k]==k) k++;
else {printf("\n");k=1;
Pachete de aplicaii
Translatare sau interpretare
Asamblor
Translatare
shl dl,1
jnc adr1
add ax,bx
shl ax,1
dec cl
Interpretare parial
Instruciuni main
Interpretare
Microprogram
Interpretare
Uniti funcionale
Implementare
Dispozitive electronice
Figura 1.8. Ierarhia mainilor virtuale i a interfeelor pentru un calculator de uz general cu procesor avnd
control microprogramat.
15
utilizatori multiplii, sarcinile de administrare i protecie ale sistemului de operare sunt i mai
evidente.
Sistemele de operare au o componenta de nivel inferior (un nucleu central, monitor,
executiv, sau supervizor), care depinde de arhitectura mainii de baz (de nivelul ASI) i care
controleaz maina de baz tot timpul cu excepia momentelor cnd se ruleaz un program de
aplicaie (care ns poate folosi rutine ale executivului), iar la terminare, controlul e preluat din nou
de executiv. Colecia de rutine ce formeaz nucleul SO este componenta cea mai apropiat de
hardware care realizeaz gestiunea la nivel fizic a operaiilor de I/O, tratare a ntreruperilor,
ncrcarea i lansarea programului, citirea/scrierea unui caracter pe disc sau pe monitor etc. Orice
modificare a configuraiei mainii de baz implic modificarea acestui nucleu al SO dar nu implic
i modificarea nivelurilor superioare. Nucleul SO este pstrat de obicei n memorie de tip ROM, dar
n unele cazuri se poate stoca pe discul magnetic. De exemplu, sistemul de operare MS-DOS, are o
component numit BIOS (Basic Input Output System) stocat n memorie de tip ROM, sau
memorie RAM cu baterie tampon pentru pstrarea datelor i la oprirea calculatorului. BIOS conine
programe de control ("drivers") pentru dispozitivele standard de I/O, acestea putnd oferii o serie de
servicii care degreveaz programatorul i rutinele sistemului DOS, de toate detaliile hardware ale
circuitelor de interfaa cu dispozitivele I/O. La PC aceste servicii pot fi apelate prin mecanismul
ntreruperilor software (INT nn), dup o ncrcare prealabil cu valori adecvate, ale registrelor
mainii. Celelalte componente ale sistemului MS DOS numite io.sys (conine programele de
control de I/O) i msdos.sys (care conine rutine de gestionare a proceselor, memoriei i a
sistemului de fiiere de pe discul magnetic, interpretarea apelurilor sistem) se ncarc de pe discul
magnetic. Programele aplicative pot cere servicii sistemului de operare DOS (pot apela funciile
DOS), prin intermediul ntreruperii soft INT 21H, codul corespunztor funciei dorite fiind ncrcat
n registrul AH.
Capitolul 1
16
Sistemul de intrare / ieire (I/O) al calculatorului este locul prin care se face schimbul de
informaii ntre unitatea central i echipamentele periferice. Acest transfer se face prin intermediul
unor locaii adresabile de ctre procesor (UCP), numite porturi, ele fcnd parte din sistemul I/O al
calculatorului. Sistemul I/O realizeaz operaii de genul: modific formatul de reprezentare a
datelor (din serie n paralel, sau invers), verific corectitudinea informaiei transferate, asigur
sincronizarea dintre echipamentul periferic i UCP din punctul de vedere al vitezelor de transfer
(sincronizarea este necesar datorit vitezelor de lucru mult diferite ntre UCP i echipamentele
periferice).
Sistem de calcul cu program memorat (von Neumann)
Periferice de
intrare
Sistem de
intrare
Memoria
principal
C+A
Unitatea de
control
Sistem de
ieire
Periferice de
ieire
I
C
ALU i
registre
UCP
Calculator
Figura 1.9. Reprezentare structural a unui calculator uni-procesor de uz general. Cu linie punctat s-au
reprezentat comenzile (C) transmise de la unitatea de control i semnalele de stare-sincronizare ca rspuns
al unitilor comandate ctre unitatea de control. n cadrul semnalelor de control pentru memoria
principal a fost inclus i informaia de adresare (A) a memoriei. Cile de transfer pentru date (D) i
instruciuni (I) sunt reprezentate cu linie plin. ALU = Unitate Aritmetic i Logic.
17
Tot n cadrul unitii de control includem i circuitele pentru generarea adreselor, care
calculeaz adresele corecte (adrese pentru memoria principal, pentru porturi de I/O, sau pentru
registrele interne ale UCP) pe baza informaiilor binare din corpul instruciunilor.
d bii
Adresa 0
Adresa 1
Adresa k
Adresa 2a-1-1
Adresa 2a-1
Figura 1.10. Memoria principal prezentat ca o succesiune de locaii de memorie, fiecare locaie avnd o
adres specific. S-a presupus c adresa de memorie are a bii, iar n fiecare locaie, cu adres unic, se
poate stoca un cuvnt binar cu lungimea de d bii.
Unitatea aritmetic i logic (ALU14), realizeaz operaii logice sau aritmetice cu operanzii
adresai de UC. nainte de prelucrare, operanzii se stocheaz ntr-un set de registre de uz general,
folosite ca memorie temporar. Registrele reprezint o memorie local UCP, de foarte mare vitez.
Setul de registre de uz general poate fi folosit ns i pentru salvarea diferitelor informaii privind
adresarea memoriei principale.
n funcie de rezultatul operaiilor efectuate, ALU seteaz anumii indicatori de condiii
(indicatori de stare, fanioane15) care pot fi citii de UC i pot astfel modifica secvena de tranziie a
strilor acestui automat.
Unitatea de memorie principal (sau memorie intern) are funcia de stocare a programelor
i datelor aferente acestora. Transferul datelor cu registrele UCP se face conform comenzilor date
de unitatea de control. Memoria principal este realizat n prezent exclusiv n tehnologie
semiconductoare. Aceasta unitate de stocare a informaiei are, n principiu, o organizare liniar,
constnd din locaii (registre) de memorare, fiecare de cte d bii, locaia fiind selectabil printr-o
14
15
Capitolul 1
18
adres unic. Adresa poate lua valori cuprinse ntre 0 i 2a-1, unde prin a s-a notat numrul de bii
ai cuvntului de adres fizic.
Din punctul de vedere al denumirilor folosite facem urmtoarele observaii:
Ansamblul format din UC, ALU i registre este numit Unitate Centrala de Procesare
(UCP) fiind o structur de procesor de uz general cu set de instruciuni.
UCP mpreun cu memoria principal formeaz Unitatea Central, iar
Unitatea central mpreun cu sistemul de I/O i setul de programe de sistem constituie
structura de calculator.
Un calculator mpreun cu diversele echipamente periferice formeaz un sistem de
calcul.
Structura logic de baz a calculatorului uni-procesor, prezentat anterior, conform figurii
1.9. corespunde , n bun msur, celei stabilite de John von Neumann n 1945. n lucrarea "Prima
schi de Raport asupra lui EDVAC", el a definit structura logic de baz a calculatorului cu
program memorat, menionnd cinci criterii necesare a fi ndeplinite de acesta [Hayes88]:
1. s posede un mediu de intrare care s permit introducerea unui numr nelimitat de operanzi i
instruciuni.
2. s posede o memorie din care s se citeasc operanzi i instruciuni i n care s se poat
introduce, n ordinea dorit, rezultatele.
3. s dispun de o seciune de calcul, capabil s efectueze operaii aritmetice i logice asupra
operanzilor citii din memorie.
4. s posede un mediu de ieire, care s permit livrarea unui numr nelimitat de rezultate ctre
utilizator.
5. s posede o unitate de comand capabil s interpreteze instruciunile citite din memorie i s
selecteze diverse variante de desfurare a operaiilor, n funcie de rezultatele obinute pe
parcurs.
Marea majoritate a calculatoarelor construite pn n prezent se bazeaz pe principii
rezumate mai sus, fiind numite calculatoare de tip von Neumann, sau cu arhitectur von Neumann.
19
Nu ne vom referi aici la calculul manual i la eventualele ajutoare pentru acest calcul, ajutoare de
tip abac (primul numrtor de tip abac se pare c a aprut la chinezi cu 2600 de ani nainte de
Cristos). Calcularea manual are dou limitri serioase [Hayes88]:
a. viteza la care poate lucra calculatorul uman este limitat. Unele probleme ce presupun
foarte multe operaii nu pot fi rezolvate manual niciodat ntr-o perioad rezonabil sau la
un cost rezonabil;
b. fiinele umane sunt nclinate s fac greeli (n calcule !) astfel c rezultatul obinut cu
mna, n cazul unor calcule complexe nu prezint ncredere, dect dac s-au luat precauii
sofisticate de nlturare a greelilor.
1642 - filozoful francez Blaise Pascal (1623 - 1662) a proiectat i realizat maina automat de
adunat i sczut. Avea 2 seturi a cte 6 roi numrtoare pentru cei doi operanzi reprezentai
fiecare cu 6 cifre zecimale. Poziia specific a roilor indica valoarea zecimal stocat. Cele
dou seturi de roi erau interconectate prin angrenaje i roi dinate. Pentru realizarea acestei
maini Pascal a introdus mai multe inovaii: clichet de blocare care fcea automat transferul
transportului sau mprumutului ntre rangurile zecimale vecine, cnd roata trecea de la 9 la 0
sau invers. Numerele negative erau reprezentate printr-un cod complementar.
n jurul anului 1671 filozoful i matematicianul german Gottfried Leibniz (1646 - 1716) a
construit un calculator mecanic care aduga la maina de adunat i sczut a lui Pascal
mecanismele necesare pentru a realiza automat operaiile de nmulire i mprire. nmulirea a
fost implementat prin intermediul unor scripei i lanuri de transmisie. Aceast main,
predecesorul mainilor mecanice cu patru operaii, a rmas o curiozitate academic pn n
secolul XIX cnd s-au produs i comercializat primele maini de calcul mecanice.
n 1823 Charles Babbage profesor de matematic la Cambridge, Marea Britanie, ncepe
proiectarea unei maini de calcul, cu execuie automat a programului, numit Maina
diferenial (Difference Engine). Proiectul prevedea structura principalelor elemente ale
calculatoarelor moderne (unitile de memorie, de calcul, de intrare, ieire i comand) i era
destinat calculului automat al tabelelor matematice. Maina diferenial trebuia s calculeze
automat valorile unor tabele matematice i s le transfere prin perforatoare, unor plci
litografice, de pe care ulterior tabelele puteau fi tiprite. Singura operaie efectuat era
adunarea, prin care se calculau o mulime de funcii utile prin metoda diferenelor finite.
Proiectul mainii difereniale a fost abandonat n 1842. Un motiv este c proiectul mainii era
mult prea avansat fa de tehnologia mecanic existent atunci. Al doilea motiv, a fost scderea
interesului lui Babbage care concepuse deja o main mult mai puternic i pe care o numise
maina analitic.
Proiectul mainii analitice (Analytical Engine) a nceput n 1834. Din diverse motive nici una
din mainile proiectate de Babbage nu a fost terminat n secolul su. Ulterior, n secolul XX,
mainile au fost construite pentru a fi expuse n muzee ale tehnicii.
Structura propus pentru Maina Analitic este cea din figura 1.11. ([Hayes88]):
Proiectul mainii analitice cuprinde funciunile generale pe care le are i n prezent oricare
main de calcul de uz general. Pentru a controla succesiunea operaiilor mainii, Babbage a
propus, pentru prima oar, folosirea de cartele perforate, de genul celor folosite la rzboaiele de
esut Jacquard. Cartelele cu operaii ("operation cards") erau utilizate pentru controlul operaiilor
Capitolul 1
20
unitii de calcul. Fiecare cartel selecta una din cele 4 operaii elementare (adunare, scdere,
nmulire, mprire) ce urma s fie realizat la fiecare pas din program.
The mill
(Unitatea de
calcul)
Date
The store
(Memoria)
Imprimare i
perforare
rezultate
Instruciuni
Cartele cu
operaii
Cartele cu
variabile
Program
Figura 1.11. Structura mainii analitice a lui Babbage. n figur s-au pstrat i denumirile
originale, n limba englez, ale unor componente ale mainii, trecndu-se n parantez i funcia
corespunztoare n limba romn. Unitate de calcul (the mill - moara) avnd funciuni similare cu
unitatea aritmetic i logic din structurile moderne de procesoare. Memoria (the store - magazia)
cu rol de stocare a datelor. Echipamentul de ieire al mainii de calcul este unitatea de imprimare
i perforare rezultate. Cartele cu operaii (de comand) memoreaz codul operaiei cerute, iar
cartelele de variabile furnizeaz valorile, sau adresele datelor ce vor fi prelucrate - date de intrare
n tabele.
21
CRT = Cathode Ray Tube (engl.) = tub catodic. Este aceeai tehnologie utilizat i n televiziune.
Capitolul 1
17
22
23
(tub catodic), iar pentru memoria auxiliar se foloseau tamburul magnetic i banda magnetic.
Programele erau scrise n limbaj main, iar prin anii '50 n limbaj de asamblare.
n 1954 a nceput producia (la firma Texas Instruments) primelor tranzistoare cu siliciu
destinate comercializrii.
1958 - la firma Texas Instruments se produce primul circuit care integreaz mai mult dect un
singur tranzistor n acelai chip de siliciu.
Capitolul 1
24
scopul satisfacerii cererilor de servicii formulate de utilizator. Acestea sunt exprimate cu ajutorul
unor comenzi, interpretate de o component a sistemului de operare. Fiecare comand genereaz o
faz a lucrrii: compilare, legare, ncrcare, execuie, etc. nainte de apariia sistemelor de operare
denumirea s-a referit la cereri lansate de utilizatori ctre echipamentele sistemului de calcul., cum ar
fi de exemplu cererea pentru o sarcin de tiprire de la compartimentul de tiprire. Acest mod de
administrare a operaiilor de I/O e numit prelucrare n loturi (batch processing22), sau prelucrare
serial. Prelucrarea pe loturi cere utilizarea unui program supervizor numit monitor, care e
permanent rezident n MP. Un monitor de loturi (batch monitor) este un exemplu de program de
sistem, proiectat pentru a furniza un set de servicii comune ctre toi utilizatorii unui calculator, el
fiind un sistem de operare (SO) rudimentar. Prelucrarea pe loturi a permis utilizarea mai bun a
timpului UCP, componenta cea mai scump la acel moment. Apoi, o dat cu scdere continu a
costurilor de realizare a UCP, prelucrarea batch (pe loturi) a fost nlocuit de sistemele cu
partajarea timpului UCP, ca un ajutor al productivitii programatorilor, existnd un rspuns rapid
pentru mai muli utilizatori. Astfel, cu sprijinul sistemului de operare, se permitea unui singur
procesor (UCP) s prelucreze concurent, un set de programe independente, tehnica fiind numit
multiprogramare. Aceasta se realizeaz n felul urmtor: UCP suspend temporar execuia
programului curent, ncepe execuia unui alt program i se ntoarce la primul mai trziu. Se
realizeaz deci o multiplexare n timp a resursei UCP ntre diferitele programe. Acolo unde este
necesar programul suspendat este transferat ctre un IOP pentru un transfer I/O. n acest fel
multiprogramarea ine UCP i unul sau mai multe IOP-uri ocupate prin suprapunerea operaiilor
efectuate de UCP i IOP. Acest tip de sisteme multiprogramate se numesc sisteme timesharing (cu
partajare n timp).
Tot n perioada de timp n care sunt ncadrate calculatoarele de generaia a doua, au aprut
calculatoare foarte puternice, numite supercomputere, folosite pentru prevederea vremii, cercetare
n domenii militare, tehnic spaial, tehnic nuclear, inteligen artificial, domenii la care se cere
un volum foarte mare de pai de calcul (de exemplu UNIVAC LARC - Livermore Atomic Research
Computer i IBM 7030 - numit i Strech Computer). La supercalculatoare apare pentru prima oar
noiunea de procesare paralel. Dou din tehnicile de prelucrare paralel dezvoltate la aceast
generaie de supercalculatoare sunt:
1. Suprapunerea operaiilor de aducere (fetch) i execuie a instruciunilor din cadrul unui
program. Se realizeaz prin hardware special ce cuprinde procesoare pipeline (tip conduct,
sau band de asamblare) sau uniti ALU multiple;
2. Suprapunerea execuiei diferitelor programe. Asta se face prin proiectarea unor sisteme
multiprocesor (sistem cu mai multe uniti UCP). Ca i multiprogramarea multiprocesarea
necesita un program supervizor relativ complex.
Att LARC cit i Strech au constituit dezastre financiar-comerciale, dar au influenat
considerabil urmtoarele generaii de calculatoare. Supercalculatoarele au introdus unele soluii de
mbuntire a arhitecturii, pentru creterea vitezei de calcul, proprii mai degrab generaiei
urmtoare dect generaiei din care fac parte din punctul de vedere al tehnologiei.
Generaia a treia (aproximativ anii 1965-1978)
Anul 1965 poate fi considerat ca marcnd nceputul celei de-a treia generaii de calculatoare,
dei distinciile dintre generaiile 2 i 3 nu sunt extrem de clare. Se amintesc adesea urmtoarele
mbuntiri specifice acestei generaii:
Circuitele integrate (C.I.23) ncep s nlocuiasc circuitele cu tranzistoare discrete. Rezult o
reducere important a dimensiunilor, costurilor i consumului de putere, dar i o cretere a
vitezei de lucru.
22
23
25
Capitolul 1
26
introdus-o la sfritul anilor 60, aceasta fiind prima main comercial ce utiliza i o memorie
cache. Pentru a nelege sistemele de memorie virtual, trebuie s distingem ntre setul adreselor de
memorie specificate de un program, numit spaiul adreselor logice L i setul adreselor reale utilizate
de MP, ce formeaz spaiul adreselor fizice F. Spaiul L poate fi mult mai mare dect F i de aici
termenul de virtual. n timpul execuiei programului, fiecare adres logic n L e translatat ntr-o
adres fizic din F. Ca urmare este necesar un mecanism care implementeaz funcia de translatare
din L n F (f: L F). Dac la un moment dat se determin c informaia specificat de UCP nu este
n MP execuia programului este suspendat pn cnd pagina32 ce conine respectiva informaie
este transferat din MA (disc magnetic) n MP.
n cadrul organizrii ierarhice a memoriei, n aceast perioad, apar memoriile tampon de
mare vitez, (cache), ntre UCP i MP. Un cache este o memorie de mici dimensiuni, rapid (viteza
fiind apropiat de cea a procesorului), care pstreaz cele mai recent accesate informaii (coduri de
program i date) din memoria principal.
Tehnica microprogramarii, rspndit ncepnd cu generaia a treia de calculatoare, este o
tehnic sistematic i flexibil de implementare a unitii de control (UC) a unui procesor. Dup
apariia seriei IBM System /360, tehnica de implementare microprogramat a controlului s-a
generalizat, situaie ce s-a pstrat pn la sfritul anilor '80. La microprogramare, informaia de
control este nscris ntr-o memorie rapid integrat n UC, numita memorie de control. Semnalele
de control, n form binar, sunt asamblate n vectori binari numite microinstruciuni. Fiecare
instruciune a procesorului este "interpretat" de un microprogram format dintr-o secven de
microinstruciuni. Microinstruciunile controleaz secvena de microoperaii (n esen operaii de
transfer ntre registre) necesare pentru o faz a execuiei instruciunii i totodat conin informaii
privind adresa microinstruciunii urmtoare (informaie de secveniere). Din cauza faptului c
microprogramele reprezint software inclus n hardware procedeul poart i numele de firmware.
Dei primul microprocesor, n tehnologie de integrare la nivel VLSI, a fost proiectat n 1969
i a aprut pe pia n 1971 (Intel 4004), microprocesoarele vor fi incluse n generaia urmtoare de
calculatoare.
Generaia a patra (ncepnd aproximativ din 1979)
Arhitecturile din aceasta generaie de calculatoare se bazeaz n primul rnd pe dezvoltarea
accelerat a tehnologiei de fabricaie a circuitelor integrate VLSI. A devenit astfel posibil ca ntr-un
singur C.I.33 s se fabrice o unitate central de procesare (UCP) sau un bloc de memorie principal.
Aceste C.I. pot fi produse n cantitate mare i la un pre sczut. Astfel a putut s apar noua clas de
calculatoare personale (PC) ieftine, de mare performan, unele din ele coninnd mai multe
procesoare lucrnd n paralel.
O Unitate Central de Procesare construit pe un singur C.I. este numit microprocesor. La
nceput calculatorul construit pe baz de microprocesor a fost numit microcalculator. n prezent
toate unitile centrale folosite pentru calculatoarele de uz general pot fi ncadrate n categoria
microprocesoarelor. Pentru domeniul Embedded (pomenit mai sus) se fabric i microcalculatoare
pe un chip, care conin pe un singur circuit integrat blocurile: UCP, memorie, sistem I/O. Pentru c
aceste din urm microcalculatoare sunt construite special pentru aplicaii ce trebuie controlate, ele
sunt apelate adesea cu numele microcontroller.
Microprocesorul este o unitate complet de prelucrare de uz general, cu ALU, registre, o
anumit cantitate de memorie local i logic de control, toate ntr-un singur chip. Microprocesorul
este o component foarte eficient din punctul de vedere al costului i, datorit programabilitii
sale, este i o component foarte flexibil care poate fi utilizat ntr-o gam vast de produse (de
32
33
27
exemplu: jocuri video, aplicaii casnice, ceasuri electronice, sistem de diagnosticare i control n
automobile sau aviaie, instrumentaie electronic medical).
Microprocesorul este n prezent componenta utilizat pentru crearea de calculatoare cu mare
putere de prelucrare a informaiilor, fiind o component inclusiv pentru construcia sistemelor
multi-procesor i a super-calculatoarelor34.
n generaiile anterioare instalarea unui calculator conducea la cheltuieli importante pentru
amenajarea slii, instalarea echipamentelor de protecie la incendii i a sursei stabilizate de
tensiune, instalaia de climatizare a slii, angajarea colectivului de specialiti pentru exploatarea
sistemului de calcul etc. Apariia microprocesorului, i a micro-calculatoarelor (i n special a celor
numite calculatoare personale, PC), nepretenioase ca gabarit, pre, consum de putere, ntreinere
etc., a determinat ptrunderea informaticii n toate sectoarele de activitate.
n prezent se produce o mare diversitate de microprocesoare, microcalculatoare,
microcontrollere, procesoare digitale de semnal, microprocesoare specializate pentru prelucrarea
paralel a informaiilor (transputer), i aceasta pentru c microprocesorul a ptruns n toate
activitile vieii economice i sociale. Peste tot unde este ceva de controlat, aceast unitate de
procesare programabil ieftin i de foarte mici dimensiuni a devenit indispensabil. Aplicaia este
cea care determin tipul i caracteristicile cerute procesorului pe un chip.
n prezent microprocesoarele intr n construcia unitilor centrale a sistemelor de calcul
"mari". Ele mai sunt numite microprocesoare doar datorit faptului c ocup una sau cteva capsule
integrate. De asemenea n sistemele de calcul mari, microprocesoarele pot executa diferite funcii
de I/O.
Evoluia calculatoarelor din ultima decad se confund de fapt cu evoluia
microprocesoarelor.
Circuitele integrate ce apar n construcia calculatorului pot fi standard, sau specifice
aplicaiilor. Acestea din urma sunt apelate de obicei prin prescurtarea ASIC (Application Specific
Integrated Circuits - Circuite integrate cu aplicaii specifice).
Circuitele ASIC pot fi de urmtoarele tipuri:
a) personalizate la cerere (semicustom):
PLD (dispozitive logice programabile, care sunt configurabile) i
GA (gate arrays, reele de pori, care sunt predifuzate)
b) la comand (custom), care pot fi mprite la rndul lor n
b1) precaracterizate (Standard Cells)
b2) complet la cerere (full custom).
Circuitele semi-custom au o cantitate relativ mare de logic intern prefixat, ca circuite de
baz, implementate n siliciu. Pentru a ajunge la reeaua logic int funciile specifice intei se
programeaz pe circuit fie prin ardere la utilizator (la PLD-urile timpurii) fie prin proiectarea unor
mti de realizare a legaturilor n siliciu; n acest ultim caz operaia de realizare fizic se face la
productorul circuitului integrat.
Circuitele PLD (Programmable Logic Devices - Dispozitive logice programabile) cuprind n
principal tipurile: PROM, PLA i PAL. Aceste circuite programabile implementeaz funcii logice
disjunctive (sume de produse logice), pentru fiecare variant de circuit programabil fiind specifice
gradul de integrare, i nivelul logic care poate fi programat.
Circuitele PROM sunt memorii doar cu citire ce pot fi programate o singur dat pe nivelul
logic de SAU (nivelul logic SI, care este nivelul de intrare, este prefixat, el fiind reprezentat de un
decodificator - DCD).
34
Supercomputer (engl.) = super-calculator. Denumirea se refer la un calculator cu putere extrem de mare de calcul,
proiectat pentru a executa cu vitez maxim aplicaii cum ar fi: prognoza meteo, tehnic spaial, tehnic militar,
cercetare tiinific etc.
Capitolul 1
28
Circuitul PLA, o matrice logic programabil, are ambele niveluri (SI i SAU)
programabile. Un circuit integrat PLA (programabil cu fuzibil) conine tipic 50 - 250 pori
convenionale i poate nlocui pn la 4-6 chip-uri SSI sau MSI.
Circuitele PAL, au gradul de integrare cel mai mare dintre cele trei tipuri de PLD-uri,
aproximativ 300 de pori pe chip, situndu-se ca tehnologie intre MSI i LSI. Ele pot conine pe
chip att pori logice cit i bistabile, dar la aceste circuite este programabil doar nivelul de SI, cel de
SAU fiind prefixat.
O alt abordare a proiectrii cu logic semi-custom, ce a ctigat importan n ultimii ani,
este utilizarea reelelor de pori (GA - gate array), numite de asemenea i ULA (uncommitted logic
array - reea logic neconectat). Circuitul GA este un circuit LSI ce conine o reea de celule sau
pori logice identice, neconectate, dar nconjurate de o reea de interconectare. Interseciile reelei
sunt programabile (se face legtur, sau nu) prin masca creat de viitorul utilizator cu ajutorul unor
programe de proiectare asistat de calculator. O funcie int poate fi implementat n GA prin
plasarea elementelor specifice funciilor urmrite n porile reelei (aa numita problem a plasrii)
i conectarea adecvat a porilor selectate (aa numita problema a rutrii). Pe un circuit de tip GA
ne-personalizat, celulele de baz, identice, sunt nconjurate de un numr de pori de I/O. Avantajul
major al circuitelor GA const n faptul c realizarea unei funcii logice particulare presupune doar
sarcinile de plasare i rutare. Mai mult, din cauza naturii predeterminate a poziiei celulelor,
plasarea i rutarea pot fi eficient rezolvate utiliznd programe CAD (computer-aided design). Gate
arrays (n prezent, mai ales sub forma lor extins FPGA - Field Programmable Gate Arrays) sunt
utilizate n primul rnd din cauza timpului sczut cerut pentru proiectare i n consecin a preului
sczut de proiectare. n acelai timp, trebuie specificat c chip-urile GA necesit suprafee mai mari
n comparaie cu circuitele full-custom i nu permit uor realizarea unor niveluri foarte mari de
integrare. GA sunt produse ntr-o mare varietate de tehnologii (ECL, TTL, I2L, NMOS, CMOS) i
n consecin exist o mare varietate a densitii de pori. Circuitele GA au n jur de 1200 - 6000 de
pori i se ncadreaz tehnologic ntre LSI i VLSI. Se poate spune c o singura reea de pori (GA)
poate nlocui cteva circuite PLA. La GA se pot defini i funciunile pinilor capsulei, pe cnd la
PLA i PAL aceste funcii sunt pre-fixate.
Circuitele precaracterizate (pe baza de macrocelule - Standard Cells), folosesc ca celule
standard circuite proiectate anterior, aflate ntr-o bibliotec. n aceste macrocelule standard sunt
incluse pori logice, bistabile, numrtoare, dar i dispozitive logice programabile, cum sunt
microprocesoarele. Proiectantul i apoi productorul la turntoria de siliciu realizeaz doar
interconectrile ntre macrocelule conform dorinei beneficiarului.
Circuitele full-custom, sunt circuite specifice concepute n strict concordan cu cerinele
beneficiarului. Implementarea full-custom LSI sau VLSI a unei arhitecturi conduce la cea mai bun
exploatare a suprafeei chip-ului de semiconductor, dar dac numrul de circuite produse i vndute
este mic, preul specific va fi foarte mare, mult mai mare dect la toate celelalte variante de circuite.
Caracteristicile cele mai importante ale circuitelor full-custom pot fi rezumate n cele ce
urmeaz:
1. Pentru un set de performane i caracteristici funcionale date, abordarea full-custom conduce la
cea mai compact implementare, cu cel mai mic produs vitez-putere. Fiabilitatea circuitului va
fi de asemenea foarte mare.
2. Totui, personalizarea complet cere o investiie foarte mare n timpul de proiectare.
Proiectarea, verificarea i mai ales obinerea formei finale de organizare a chipurilor VLSI, sunt
consumatoare extreme de timp.
3. Din cauza investiiei iniiale mari, abordarea full-custom devine eficient ca i costuri dac
volumul produciei este foarte mare, de ordinul sute de mii sau milioane de exemplare. Acest
factor economic formeaz bazele produciei fabricanilor diferitelor microprocesoare.
Cu programe CAD se proiecteaz arhitectura circuitelor ASIC i totodat se face testarea
circuitului simulat nainte ca acesta s fie produs. Deci plecnd de la calculatorul universal
29
programabil folosit pentru realizarea anumite funcii prin program (logic programat), datorit
dezvoltrii metodelor CAD i a perfecionrii tehnologiei circuitelor VLSI, se remarc revenirea la
structuri hardware dedicate funcional, foarte eficiente ca viteza de lucru, numr de componente,
consum energetic (implementarea prin hardware a funciilor, sau logica cablata).
Dac analizam piaa de microprocesoare de uz general, vom observa c ea este dominat de
dou familii de procesoare diferite. Este vorba de familia 80x86 de la Intel i seria 68000 de la
Motorola. [Mesmer] Este mare pcat c cele dou familii nu sunt compatibile: modul n care
instruciunile sunt manipulate intern, limbajul la nivelul mainii de baz i modul n care sunt
alocate adresele de memorie RAM sau zonele de adrese de I/O sunt complet diferite. Procesoarele
Intel, inclusiv cele mai noi din seria Pentium, au fost utilizate pentru realizarea mainilor numite
Calculator Personal (PC - Personal Computer). Seria 68000 a fost utilizat mai ales n realizarea
mainilor Apple Macintosh, recent echipate ns cu procesoare cu set redus de instruciuni (maini
RISC).
Dezvoltarea microprocesoarelor este caracterizat de dezvoltri arhitecturale specifice, dar
i de dezvoltri tehnologice, care au permis includerea pe acelai circuit integrat a tuturor
componentelor necesare unui calculator numeric. Istoria calculatoarelor, ncepnd cu anii 70 ai
secolului XX se confund cu istoria microprocesoarelor i a fost extrem de agitat, prin marcarea
unui mare numr de evenimente. Amintim doar cteva, n ordine cronologic:
CAPITOLUL 2
MODALITI DE EVALUARE
A PERFORMANELOR CALCULATOARELOR
Coninut:
2.1. Timpul, ca msur a performanelor
2.2. Alte uniti de msur
2.3. Programe etalon de testare a performanelor
2.4. Compararea performanelor prin mediere
2.5. Legea lui Amdahl
Obiective educaionale:
a. Stabilirea i descrierea factorilor ce contribuie la performanele calculatoarelor
b. Analiza i clasificarea diferitelor metrici i programe de testare a performanelor
c. Aplicarea legii lui Amdahl pentru analiza creterilor de performan
Capitolul 2
32
2.1. TIMPUL,
CA MSUR A PERFORMANELOR CALCULATORULUI NUMERIC
Performanele procesorului unui calculator numeric se evalueaz n primul rnd prin
determinarea timpului de execuie al programelor. Timpul este msura ce indic performana.
Comparnd dou maini de calcul, concluzia de genul Maina A este mai rapid dect maina B
se refer la faptul c timpul de execuie al aceluiai program pe maina A este mai mic dect pe
maina B. Dac maina A este de n ori mai rapid dect maina B putem scrie:
Timp _ executieB
=n
Timp _ executie A
(2.1)
1
Timp _ executieB
Performanta B Performanta A
=
=
=n
1
Timp _ executie A
Performanta B
Performanta A
(2.2)
Comparaia ntre cele dou maini poate fi exprimat i procentual: Maina A este cu p%
mai rapid dect maina B. Aceasta se poate exprima analitic astfel:
Timp _ executieB
p
= 1+
Timp _ executie A
100
(2.3)
Performanta A
p
= 1+
Performanta B
100
(2.4)
sau
adic
Performanta A Performanta B
p = 100
Performanta B
(2.5)
33
programul de testare a performanelor. Acest timp reprezint timpul ct UCP realizeaz prelucrri
fr a include ateptarea operaiilor de I/O i rularea altor programe. Timpul TUCP include ns i
intervalele de timp ce corespund timpului UCP consumat de ctre sistemul de operare pentru
realizarea unor sarcini cerute de programul de test.
Evaluarea performanelor unui calculator se face pentru a putea compara aceste performane
cu performanele obinute de alte calculatoare. Un utilizator al calculatorului poate spune c un
calculator este mai rapid dect altul dac acesta ruleaz un program ntr-un timp mai scurt, pe cnd
administratorul unui centru de calcul poate spune c un calculator este mai rapid dac acesta
termin mai multe sarcini de lucru ntr-un anumit interval de timp. Utilizatorul calculatorului este
interesat n primul rnd de reducerea timpului de execuie (sau a timpul de rspuns ntre momentele
startului i terminrii unei sarcini de lucru), sau altfel spus n micorarea timpului de ateptare
(exprimat adesea ca laten). Managerul centrului de calcul este interesat n creterea
performantelor globale ale sistemului de calcul exprimate prin denumirea throughput1 (putere de
calcul).
De obicei termenii timp de rspuns2 i throughput se utilizeaz cnd se discut o
ntreag sarcin de calcul.
Atunci cnd se analizeaz performanele sistemului de memorie se folosesc termenii
bandwidth (lrgime de band) i latency (timp de ateptare, ntrziere n rspuns)
Pentru a exprima performantele calculatoarelor cercettorii n domeniu au introdus mai nti
uniti de msur care in seama de perioada de ceas a UCP. Astfel, timpul de execuie al unui
program, specific unei UCP, poate fi exprimat ca [Patterson94]:
TUCP = NrI CPI Tclk
(2.6)
unde:
Exemplu numeric:
Dac frecvena ceasului unui procesor este de 1 MHz, iar rularea unui program necesit 5
milioane de perioade de tact pentru execuie complet, care este timpul de execuie al
programului?
R:
throughput - este termenul folosit pentru a descrie performantele unui calculator prin cantitatea de date pe care le
poate prelucra n unitatea de timp, sau performantele globale ale unui calculator, exprimate prin capacitatea de a
transmite / recepiona ct mai multe date n unitatea de timp cu toate componentele sistemului, inclusiv cu dispozitivele
de stocare cum sunt unitile de disc
2
response time (engl.)
3
CPI = Clock Cycles Per Instruction
Capitolul 2
34
TUCP =
5 10 6
1 10 6
= 5 secunde
(2.7)
Din cele pomenite se contureaz cteva direcii ce pot fi folosite pentru a micora CPI i
implicit i TUCP:
proiectare adecvat a setului de instruciuni
organizare ce permite operaii paralele n execuia instruciunilor
proiectare a unitii de control n scopul micorrii timpului de decodificare i a numrului
de pai (stri ale automatului) utilizai n ciclul de execuie a instruciunilor
micorarea timpului de acces la memoria principal prin diverse metode (tehnologia de
realizare i organizarea intern a circuitelor de memorare, introducerea unor niveluri
intermediare de memorie de mare vitez, optimizarea organizrii spaiului de adresare)
A doua component din relaia (2.6), numrul de instruciuni (NrI), depinde de tipul
programului rulat, de arhitectura setului de instruciuni a procesorului i de structura i calitatea
compilatorului folosit la translatarea din program surs (n limbaj de programare de nivel nalt), n
program obiect. Remarcm c ntre direciile de micorare a aprut din nou arhitectura setului de
instruciuni, dar n sens contrar celui de la CPI. Aceasta pentru c un numr mai mic de instruciuni
pe program nseamn, n general, instruciuni mai complexe, deci care dureaz un numr mai mare
de cicluri de ceas. Dar un numr mai mic de instruciuni pe program, presupune i un numr total
mai mic de instruciuni recunoscute de procesor (funcii implementate n setul de instruciuni).
Aceasta nseamn un numr mai mic de bii necesari pentru codificarea instruciunilor i ca urmare
o posibilitate de micorare a lungimii instruciunilor, cu efect i asupra dimensiunilor necesare n
memoria local, intermediar, sau principal.
35
Exemplu numeric:
ntr-un program de testare a performanelor (benchmark) cu 250 instruciuni, exist urmtoarele
tipuri de instruciuni:
100 instruciuni de tip load/store4, fiecare consumnd 5 perioade de ceas.
80 instruciuni de transfer ntre registre interne ale UCP, fiecare consumnd 1 perioad
de ceas.
50 instruciuni de adunare sau scdere, fiecare consumnd 3 perioade de ceas.
20 instruciuni de nmulire cu ntregi, fiecare consumnd 50 perioade de ceas.
S se calculeze CPI pentru programul de test.
R:
load/store = ncarc - citete din memorie, respectiv stocheaz n memorie. Sunt operaii de transfer ntre locaii ale
memoriei principale i registre interne ale UCP.
Capitolul 2
36
CPI =
La calculul CPI, ca valoare medie, este adesea util s se calculeze numrul total de perioade
de ceas ale CPU ( NrClk p ), pentru un program, conform relaiei:
n
NrClk p = (CPI i I i )
(2.8)
i =1
unde:
Ii
CPIi
Ca urmare timpul de execuie de ctre UCP al unui program, cu n tipuri de instruciuni, poate fi
exprimat ca:
n
(2.9)
i =1
Dac se introduce noiunea de frecven a instruciunii pentru a indica care este procentul
reprezentat de instruciunea de tip i din numrul total de instruciuni ale unui program, expresia
termenului CPI total, mediu pentru un program poate fi scris i ca:
n
(CPI i I i )
NrClk P i =1
=
CPI =
NrI
NrI
(2.10)
sau
n
I
CPI = CPI i i
NrI
i =1
Ultima form a expresiei CPI, indic ca mod de calcul nmulirea fiecrei valori CPIi cu frecvena
de producere a instruciunii de tip i ntr-un program, expresie care se scrie de obicei ca:
n
CPI = CPI i Fi
(2.11)
i =1
unde
Fi =
Ii
NrI
(2.12)
Importana practic a acestei ultime forme de exprimare a CPI const n indicarea locului
unde proiectantul trebuie s investeasc mai mult efort i resurse pentru a scdea valoarea CPI i ca
urmare s mreasc performanele procesorului. Concluzia poate fi exprimat n dou moduri:
trebuie investit (optimizat) acolo unde se pierde timpul, dac frecvena de apariie a
instruciunilor respective este semnificativ n programe.
37
Exemplu numeric:
Se va calcula CPI, pentru un program de test ce ruleaz pe o main RISC (arhitectur load / store),
conform datelor din tabelul 2.1. i al relaiilor 2.11 i 2.12.
Tabelul 2.1.
Tip operaie
Operaie ALU
Load (citire memorie)
Store (scriere memorie)
Ramificare
Total:
CPI mediu total:
CPIi
1
2
2
3
Frecvena
60%
22%
3%
15%
100%
CPIi*Fi
0.60
0.44
0.06
0.45
(% Timp)
39%
28%
4%
29%
100%
1.55
NrI
TUCP 10 6
(2.13)
f clk
CPI 10 6
(2.14)
Capitolul 2
38
valoarea MIPS poate varia uneori invers proporional cu performana. Exemplul clasic
folosit pentru a demonstra aceasta, se refer la operaiile cu numere reale, reprezentate n
virgul mobil. Calculatoarele care au (co-)procesor aritmetic i care pot efectua operaii
n virgul mobil, opional, fie prin hardware (operaii cablate, prin intermediul
procesorului aritmetic), fie prin software, (prin emularea operaiilor n virgul mobil
prin uniti de prelucrare pe ntregi), conduc la valori MIPS invers proporionale cu
performana. n cazul utilizrii variantei cablate, numrul de instruciuni va fi mai mic,
dar o instruciune n virgul mobil necesit mai multe perioade de ceas (CPI mare)
dect una n virgul fix (ntregi). Cu toate c timpul de execuie al programului ce
opereaz pe numere reale va fi mai scurt dect n cazul folosirii rutinelor de emulare,
valoarea lui MIPS va rezulta mic. n varianta de efectuare prin software a operaiilor n
virgul mobil, se execut mai multe instruciuni simple, rezult un MIPS mai mare, dei
timpul total de execuie va fi mai mare.
Exemplu de interpretare greit:
Se compar dou maini, notate cu A i B. Maina A recunoate o instruciune special de
nmulire a ntregilor cu semn, care consum 50 de perioade de ceas pentru a fi executat.
Maina B nu are instruciune special de nmulire, dar o realizeaz prin instruciuni simple de
adunare, deplasare, comparare, fiecare dintre instruciunile simple consumnd dou perioade
de ceas. Dac ne referim doar la operaia de nmulire, iar frecvena de ceas pentru ambele
maini este de 200 MHz, rezult valorile MIPS astfel:
Maina A = 200/50 MIPS = 4 MIPS
Maina B = 200/2 = 100 MIPS
ceea ce ar indica c maina B este de 25 ori mai rapid, dei nu aceasta este realitatea.
(2.15)
Din pcate nici aceast msur nu este pe deplin edificatoare n compararea performanelor.
Operaiile n virgul mobil implementate pe diferite maini nu sunt aceleai. Unele procesoare pot
executa, prin implementare cablat, operaii n virgul mobil de mprire, radical, sinus etc., iar
altele pot recunoate doar instruciuni aritmetice simple ca adunare i scdere cu numere reale. Mai
mult, operaiile n virgul mobil nu au aceeai complexitate; unele se efectueaz mai rapid, altele
mai lent. De exemplu, pe aceeai main, vom obine o valoare mai mare pentru MFLOPS, dac
programul de test are doar adunri n virgul mobil, fa de cazul cnd programul de test are
operaii complexe de mprire, sinus, radical .a.m.d.
39
Script = un fiier de comenzi. O serie de instruciuni care spun unui program cum s execute o anumit procedur,
cum ar fi deschiderea unei sesiuni de lucru pe un sistem de pot electronic.
Capitolul 2
40
vezi http://www.spec.org
41
n cazul programelor pentru testarea UCP, exist n acest moment cinci generaii de seturi
de programe de test, pentru operare n virgul fix (INT - ntregi) i virgul mobil (reale, FP Floating Point): SPEC89, SPEC92, SPEC95, SPEC2000. De exemplu SPEC CPU2000 [SPEC] este
un produs software pentru testare realizat de SPEC mpreun cu un grup non-profit format din
comerciani de calculatoare, integratori de sisteme, universiti, organizaii de cercetare, edituri i
consultani din ntreaga lume. A fost proiectat pentru a face msurtori de performan ce se pot
utiliza n compararea sarcinilor intense de calcul pe diferite sisteme. SPEC CPU2000 conine dou
serii de programe de test: CINT2000 pentru msurarea i compararea performanelor sarcinilor
intense de calcul cu ntregi i CFP2000 pentru msurarea performanelor sarcinilor intense de calcul
n virgul mobil. Cele dou componente msoar performana pentru procesorul calculatorului,
pentru arhitectura memoriei i pentru compilator.
SPEC cuprinde n prezent trei grupuri de lucru, fiecare lucrnd la elaborarea propriilor seturi
de programe de test:
1. Open Systems Group (OSG): elaboreaz programe de test la nivel de componente i de
sistem pentru sisteme de operare UNIX / NT i pentru operaii n virgul mobil. Exist
subcomitete de lucru pentru testare: UCP (testare procesor), Java (programe de test la nivel
client i nivel server), Mail (programe pentru testare utilitare E-mail i performane la ISP9),
testare servere de fiiere, testare pentru sisteme UNIX multi-utilizator, WEB (programe
testare pentru web server).
2. High Performance Group (HPG): Grupul elaboreaz i ntreine programe de test pentru
aplicaii de calcul de nalt performan, pentru evaluare a performanelor de calcul interplatforme. Se adreseaz sistemelor cu arhitectur de nalt performan cum ar fi: sisteme
multiprocesor simetrice, grupuri integrate (clusters) de staii de lucru, sisteme paralele cu
memorie distribuit i supercalculatoare tradiionale vectoriale i paralel vectoriale.
3. Graphics Performance Characterization Group (GPCG): Elaboreaz programe de test
pentru subsisteme grafice, pentru OpenGL i pentru Xwindows. Cuprinde de asemenea mai
multe grupuri, pentru elaborare de programe standard de test n domenii ca: aplicaii cu
grafic intensiv, multi-media (n special pe codare, recunoatere sunete, sunete 3D, multimedia pentru jocuri i timp liber).
Un alt set de programe de test standardizate sunt programele de test TP (TransactionProcessing). Acestea msoar capacitile unui sistem n realizarea tranzaciilor, tranzacii ce
constau n accesri i actualizri de baze de date. De exemplu, sisteme simple TP sunt: un sistem de
rezervare de bilete de avion, sau un bancomat (ATM). n ani 80 s-a creat o organizaie non-profit
numit Transaction Processing Council (TPC) cu scopul de a crea un set de programe de test TP de
bun calitate. Primul program de test a aprut n 1985 i s-a numit TPC-A. Au aprut multe alte
variante de programe de test, inclusiv TPC-W pentru testarea performanelor tranzaciilor pe baz
de Web. Programele de test TPC sunt descrise la adresa www.tpc.org/.
n domeniul sistemelor cu calculator integrat, (Embedded Systems) care au cptat o extrem
de mare rspndire n ultimul deceniu, s-au dezvoltat de asemenea seturi de programe de test.
Acestea au aprut n cadrul organizaiei EDN Embedded Microprocessor Benchmark Consortium
(EEMBC - pronunat embassy). Exist cinci tipuri de seturi de programe de test n funcie de
domeniile de aplicaie:
9
Capitolul 2
42
auto i industrial
bunuri de consum
interconectare
automatizri de birou
telecomunicaii
n plus fa de programele etalon de test pomenite mai sus, exist o sumedenie de programe
de testare realizate prin cooperare universitar, sau realizate de ctre marile periodice din domeniul
calculatoarelor.
Calculator A
5
900
200
1105
Calculator B
10
100
300
410
Putem observa c:
A este de 2 ori mai rapid dect B pentru programul P1
B este de 1,5 ori mai rapid dect C pentru programul P2
A este de 3 ori mai rapid dect C pentru programul P1
C este de 45 ori mai rapid dect A pentru programul P2
.... s.a.m.d.
Calculator C
15
20
30
65
43
Dorim ns s obinem un indicator, o msur sintetic pentru fiecare main, indiferent de numrul
de programe de test rulare. Vom ncepe cu valoarea timpului total de execuie pentru fiecare main
(aa cum apare n tabel). Vom putea scrie:
B este de 2,7 ori mai rapid dect A pentru programele P1, P2 i P3 (din 1105/410)
C este de 6,31 ori mai rapid dect B pentru programele P1, P2 i P3 (din 410/65)
C este de 17 ori mai rapid dect A pentru programele P1, P2 i P3 (din 1105/65)
Se pare c deja avem un ctigtor: maina C. Dar dac sunt mai multe maini, sistemul
acesta de comparare este extrem de dificil. Dac se ruleaz mai multe programe de test pe o main
i se obin diverse msuri ale performanei pentru fiecare program (de exemplu timp, MIPS, sau
raport SPEC), vom dori s utilizm valorile obinute pentru a calcula o vitez medie de execuie
pentru main i nu un total al timpului. La nceput am fi tentai s facem pur i simplu media
aritmetic a timpilor / vitezelor de execuie pe acea main.
Msura 1: Media aritmetic
Dac sarcina de lucru a constat n rularea programelor P1, P2 i P3 de un numr egal de ori,
declaraiile de mai sus indic timpul de execuie relativ pentru sarcina de lucru pe fiecare main. O
medie a timpului de execuie care urmrete timpul total de execuie este media aritmetic:
1 n
Timpi
n i =1
(2.16)
unde timpul Timpi este timpul de execuie pentru programul i din numrul n total de sarcini de
lucru.
Pentru acelai exemplu numeric, mediile aritmetice sunt trecute n ultima linie a tabelului
2.3. Media aritmetic este simplu de calculat i uor de neles i comparat. Comparaia este ns
corect doar dac programele de test sunt rulate n mod egal n sarcina de lucru, aa cum s-a
presupus prin realizarea mediei aritmetice. n caz contrar va trebui calculat o medie ponderat.
Acest lucru este necesar pentru c valoarea obinut pentru media aritmetic nu este proporional
cu timpul de execuie pentru ntregul set de programe de test - ea este doar media timpilor de
execuie obinui individual.
Tabelul 2.3.
Program P1 (secunde)
Program P2 (secunde)
Program P3 (secunde)
Media aritmetic (secunde)
Calculator A
5
900
200
368.33
Calculator B
10
100
300
136.67
Calculator C
15
20
30
21.67
Dac toate programele de test ar fi procesat acelai tip i acelai numr de valori, am putea
s calculm un timp general (respectiv o performan de execuie general) din timpul total necesar
Capitolul 2
44
pentru setul de programe de test. Dar pentru c setul de programe cuprinde n general o mare
diversitate de programe, este nevoie de o alt abordare. Pentru programele de test SPEC se
utilizeaz media geometric calculat ca:
Ponderei Timpi
Ponderei = 1
i =1
(2.17)
i =1
unde Ponderei este frecvena programului i n sarcina de lucru iar Timpi este timpul de execuie al
acelui program. n tabelul 2.4. se indic trei rnduri de ponderi pentru acelai exemplu numeric din
tabelul 2.2.
Tabelul 2.4.
Program P1 (secunde)
Program P2 (secunde)
Program P3 (secunde)
Set 1 de ponderi
Media aritmetic pentru set 1
Set 2 de ponderi
Media aritmetic pentru set 2
Set 3 de ponderi
Media aritmetic pentru set 3
0,333
136.67
0,039
13.80
0,001
21.69
Observaii
0,333
21.67 media aritmetic neponderat
0,001
15.21
0,040
15.61
Se observ c media ponderat pentru primul set de ponderi este identic cu media
aritmetic, pentru c s-au ales ponderi egale pentru toate cele trei programe. Ponderile au fost n aa
fel modificate pentru ca la fiecare set s se obine valoarea mediei minim pentru alt main.
Efectul vizibil al ponderrii este de normalizare a ponderilor la timpii de execuie ai programelor
ce ruleaz pe acele maini.
A doua abordare n cazul unei combinaii neuniforme de programe ntr-o sarcin de testare
este s se normalizeze timpii de execuie fa de o main de referin i s se foloseasc media
timpilor de execuie normalizai. Aceasta este i abordarea folosit de seturile de programe de test
de la SPEC unde se folosete o main de referin de tip SPARCstation 10. Aceast msur
sugereaz c performana noilor programe poate fi prezis simplu prin nmulirea numrului rezultat
cu performana sa pe maina de referin.
Timpul de execuie normalizat se poate exprima fie ca o medie aritmetic, fie ca o medie
geometric. Media geometric se poate calcula cu:
45
(2.18)
i =1
(2.19)
Valorile numerice pentru exemplul iniial din tabelul 2.2, mpreun cu mediile aritmetice
normalizate i mediile geometrice normalizate sunt prezentate n tabelul 2.5. Se observ c spre
deosebire de media aritmetic, unde ierarhizarea performanelor mainilor este diferit,
performanele mainilor pe baza valorilor obinute la media geometric sunt consecvente, indiferent
de maina folosit ca referin (s-au ntrit rezultatele numerice care indic timp minim,
performan maxim). n tabelul 2.5. se indic cteva variante de medii aritmetice i geometrice
normalizate, pentru a indica faptul c media aritmetic nu este indicat a fi folosit pentru timpi de
execuie normalizai.
Media geometric a timpilor de execuie normalizai este independent de timpii de rulare
pentru programele individuale, i nu are importan care main este luat ca referin pentru
normalizare. Principalul dezavantaj al mediilor geometrice a timpilor de execuie normalizai este
c ele nu prezic un timp de execuie ci indic doar performanele mai bune sau mai rele comparativ
cu referina.
Tabelul 2.5.
Program P1
Program P2
Program P3
Medie aritmetic
Medie geometric
Timp total
Normalizat la A
1.00 2.00 3.00
1.00 0.11 0.02
1.00 1.50 0.15
1.00 1.20 1.06
1.00 0.69 0.22
1.00 0.37 0.06
Normalizat la B
Normalizat la C
0.50 1.00 1.50 0.33 0.67 1.00
9.00 1.00 0.20 45.00 5.00 1.00
0.67 1.00 0.10 6.67 10.00 1.00
3.39 1.00 0.60 17.33 5.22 1.00
1.44 1.00 0.31 4.64 3.22 1.00
2.70 1.00 0.16 17.00 6.31 1.00
Capitolul 2
46
mbuntirii unei caracteristici particulare (speedup10, ca raport ntre timpul consumat nainte de
mbuntire i timpul consumat dup mbuntire).
n legtur cu legea lui Amdahl trebuie observat c:
dac se crete viteza de execuie de n ori doar pentru o fraciune F din timpul de execuie al
unui program nu nseamn c am crescut viteza de execuie a programului de n ori.
dac se tie frecvena cu care se utilizeaz o anumit mbuntire local dintr-un sistem, se
poate calcula cu ct crete viteza ntregului sistem datorit mbuntirii. mbuntirea
local pentru o UCP se refer de exemplu la: dublarea frecvenei de ceas, reducerea la
jumtate a timpului mediu de acces la memoria principal, dublarea vitezei de lucru la
circuitul nmulitor, etc.
dac se dorete o cretere global ct mai mare a performanelor unui sistem trebuie n
primul rnd crescute performanele subsistemelor utilizate n majoritatea timpului de
execuie (alege cazul comun!).
Pentru a exprima analitic legea lui Amdahl vom nota cu Tnou timpul de execuie consumat
dup mbuntirea unei componente i cu Tvechi timpul de execuie nainte de mbuntire,
raportul lor reprezentnd creterea n vitez a sistemului.
T
Performanta noua
Speedup = vechi =
Tnou
Performantaveche
(2.20)
T
n
Speedup = vechi =
Tnou
n nF + F
(2.21)
adic
1
F
(1 F ) +
n
(2.22)
unde
Tvechi = t1 + t 2
10
(2.23)
47
sau
Tnou =
Tnou = t11 + t 2
t
= 1 + t2
n
(2.24)
F Tvechi
+ (1 F ) Tvechi
n
(2.25)
t1
(20s)
t2
(80s)
Tvechi
(100s)
cretere de 10
ori a vitezei
pentru aceast
component
t11
(2s)
t2
(80s)
Tnou
(82s)
Figura 2.1. Exemplificare, pentru justificarea expresiei analitice a Legii lui Amdhal.
(2.26)
Exemple numerice:
Exemplul 1.
Un program de test ruleaz timp de 200 milisecunde pe un sistem uni-procesor. Doar 20% din
program poate fi paralelizat pentru a rula pe un sistem multiprocesor. Presupunnd c se
utilizeaz un multiprocesor cu 10 procesoare s se calculeze care este creterea n vitez i timpul
de execuie al programului de test.
R:
F = 20% = 0.2
n = 10
Capitolul 2
48
T
Speedup = vechi =
Tnou
T
Tnou = vechi
1,22
(1 0,2) + 0,2
1
1
=
= 1,22
0.8 + 0,02 0,82
10
= 163,9 milisecunde
Exemplul 2.
La un procesor unitatea aritmetic n virgul mobil este mbuntit, astfel c ruleaz de 8 ori
mai repede. Calculai creterea n vitez a procesorului, pentru un program la care doar 20% din
instruciuni folosesc operanzi n virgul mobil.
R:
F = 20%
n=8
Speedup =
(1 0.2) + 0.2
8
= 1.212
CAPITOLUL 3
FUNDAMENTE PRIVIND ARHITECTURA
UNITII CENTRALE DE PROCESARE (UCP)
Coninut:
3.1. Structura de procesor
3.2. Structura unei Uniti Centrale de Procesare elementare
3.3. Perfecionarea Unitii Centrale de Procesare elementare
3.4. Alte registre interne semnificative pentru UCP
3.5. Exemple privind operaiile UCP
3.6. Semnale la interfaa UCP cu exteriorul
3.6.1. Magistrala de adrese
3.6.2. Magistrala de date
3.6.3. Magistrala de control
3.7. Reprezentarea numerelor n calculator
3.7.1. Reprezentarea cu virgul fix
3.7.2. Coduri binare folosite pentru reprezentarea numerelor
cu semn
3.8. Reprezentarea numerelor n virgul mobil
Obiective educaionale:
a. Descrierea i analiza funcionrii pentru o structur de procesor de uz general,
evidenierea cilor de date i de control, enumerarea ciclurilor caracteristice de
funcionare ale microprocesorului;
b. Descrierea i exemplificarea modului de aducere din memoria principal i de
execuie a instruciunilor;
c. Clasificarea, analiza i exemplificarea unor direcii de mbuntire a structurii i
performanelor procesorului;
d. Explicarea rolul registrelor specifice arhitecturii microprocesoarelor cu
arhitectur von Neumann;
e. Clasificarea i explicarea rolului principalelor semnale de la interfaa
microprocesorului cu exteriorul.
f. Enumerarea i clasificarea metodelor de codificare a numerelor n calculatoare.
Capitolul 3
50
operaii aritmetice i logice cu operanzi de intrare codificai pe n bii. Valoarea lui n este egal
de obicei cu numrul de bii ai magistralei interne de date a procesorului, dar exist i excepii
de la aceasta regul.
furnizeaz indicaii privind transportul, mprumutul, sau alte caracteristici privind rezultatul
operaiilor efectuate, prin intermediul unor valori binare numite indicatori de condiii (Fl =
flags).
n figura 3.1. datele de intrare n unitatea de prelucrare a datelor sunt intrrile pentru
operanzii citii din exterior. Aceti operanzi se citesc ca i cuvinte binare (deci cu n bii n paralel)
i se stocheaz n registre temporare, interne unitii de prelucrare a datelor. Rezultatul operaiilor
efectuate, sau coninutul unor registre de stocare temporar, se poate furniza n exterior prin liniile
notate "date ieire".
- pag 50
51
Indicatori de condiii
UNITATE DE
PRELUCRARE A
DATELOR
(ALU i registre)
Intrare date
Comenzi externe
UNITATE
DE
CONTROL
Comenzi
interne
procesorului
Instruciuni
i semnale de
stare externe
Figura 3.1. Structura de procesor, ca automat de ordinul 3. (liniile oblice pe cile de intrare i ieire a
semnalelor indic existena mai multor linii de semnal, simbolizate prin linie simpl n figur)
Capitolul 3
52
acestea producnd generarea unei secvene de comenzi elementare ctre unitatea de prelucrare i
ctre exteriorul procesorului. Aceste comenzi controleaz succesiunea micro-operaiilor pe care le
efectueaz procesorul pentru a executa operaia ce corespunde instruciunii primite. Instruciunile se
pstreaz ntr-o memorie extern procesorului. n cazul n care procesorul este "creierul" unui
calculator numeric, el trebuie s decid i succesiunea n care instruciunile vor fi aduse din
memoria operativ (funcia de secveniere). Astfel c UC trebuie s genereze n exterior i comenzi
(informaii) de adresare a instruciunilor n memorie. Pentru ca transferul instruciunilor binare s se
fac corect, alte comenzi de la UC vor activa i circuitele ce comand liniile de legtur ntre
intrrile UCP i ieirile circuitelor de memorie. Ordinea i momentele de timp la care se genereaz
comenzile externe poate fi influenat de semnalele de stare externe pe care le primete UC (de
exemplu, semnale care indic unitii de control c un circuit comandat nu poate rspunde n timp
la aceste comenzi, deci solicit o ntrziere). De aceea, se poate spune c unitatea de control poate fi
mprit funcional, n dou sub-uniti de control: prima sub-unitate face controlul la nivel de
micro-operaii, iar cea de-a doua face control la nivel de secveniere a instruciunilor din memoria
extern (automat de adresare).
Interaciunea unitii de control cu dispozitive externe necesit "sincronizarea" aciunilor.
Sincronizarea operaiilor UC (i implicit a UCP) cu exteriorul poate fi clasificat n trei niveluri de
sincronizare:
1. nivelul elementar al semnalului de ceas aplicat din exteriorul UCP;
2. nivelul semnalelor de sincronizare i control pentru transferurile de date cu memoria
principal i porturile de I/O;
3. nivelul semnalelor de ntrerupere pentru sincronizarea UCP cu evenimente externe.
Funcionarea procesorului este ciclic, conform schemei bloc din figura 3.2, pn la
terminarea execuiei tuturor instruciunilor programului.
n prima faz unitatea de control adreseaz i controleaz aducerea unei instruciuni din
memoria principal. Apoi UC decodific codul instruciunii i genereaz secvena de comenzi
specific instruciunii ctre unitatea de prelucrare i ctre exterior (de exemplu pentru citirea
operanzilor). n faza de execuie ALU execut comenzile (realiznd operaii aritmetice sau logice
asupra operanzilor) i seteaz indicatori de condiii, care sunt citii de UC. Stocarea rezultatului
prelucrrii se poate face n registre interne ale ALU, sau n registre externe UCP (de exemplu
memorie, sau port de intrare / ieire). Dac mai sunt instruciuni n program unitatea de control
revine la prima faz, de aducere a instruciunii urmtoare (ciclul de fetch).
Funcia principal a unui procesor de uz general, ca Unitate Central de Procesare (UCP) a
calculatorului, este s execute secvena de instruciuni stocat ntr-o memorie extern (numit
memoria principal (MP) a calculatorului). Secvena de operaii implicate n aducerea i execuia
unei instruciuni, descris n figura 3.2, se produce ntr-un interval de timp, multiplu al perioadei
impulsurilor de ceas, interval numit ciclu instruciune.
Comportarea UCP n timpul ciclului instruciune e definit printr-o secven de microoperaii, fiecare din acestea implicnd operaii de transfer ntre registre. Timpul tUCP cerut pentru
cea mai scurt i bine definit micro-operaie a UCP este numit timp de ciclu al UCP (sau stare a
UCP, corespunztoare unei stri a automatului UC) i este unitatea de timp de baz pentru
msurarea tuturor aciunilor UCP. Inversul acestui timp este frecvena de ceas (clock) la care
funcioneaz UCP, msurat n MHz sau GHz.
- pag 52
53
Start
Decodificare
cod instruciune
Execuie instruciune
(secven de microoperaii)
NU
Stop ?
DA
Stop
Figura 3.2. Schema bloc care indic funcionarea ciclic a procesorului. (MP = memoria principal)
Capitolul 3
54
UCP
UCP
I
Din
Din
Dout
Dout
Magistral bidirecional de
date i instruciuni
a)
b)
Figura 3.3. Blocul procesor, cu indicarea legturilor externe. Din - date de intrare, Dout - date de ieire,
C - comenzi externe-inclusiv adrese de MP, I - instruciuni, S - semnale de stare din exterior
n acest caz UC trebuie s comande (liniile punctate) i sensul de transfer a datelor prin
intermediul unor circuite tampon (buffer) de interfa pentru a elimina conflictele electrice pe liniile
bidirecionale (circuitele au posibilitatea invalidrii - blocrii ieirilor pe baza circuitelor de tip TSL
- trei stri logice, starea blocat corespunznd unei nalte impedane (HiZ) la ieire).
La majoritatea procesoarelor pe magistrala bidirecional de date se aduc i instruciunile
(I), reducnd astfel numrul de conexiuni ctre exterior. Este clar, c din punctul de vedere al
vitezei de funcionare, o organizare cu magistrale separate pentru date i instruciuni este mai
rapid. Acest ultim mod de organizare corespunde aa-numitei arhitecturi Harvard a procesorului.
Arhitecturile Harvard construite n prezent au o magistral extern unic de date i instruciuni, dar
magistrale interne (i circuite de memorie tampon locale) separate pentru date i instruciuni.
- pag 54
Memorie
55
(a) Arhitectur
von Neumann
(memorie unic)
adrese
CPU
date i
instruciuni
date
Memorie
de Program
(MP)
adrese MP
doar
instruciuni
date MP
(b) Arhitectur
Harvard
(memorii separate)
CPU
adrese MD
date MD
Memorie
de Date
(MD)
doar date
Capitolul 3
56
Tampon
bidirecional
UCP
Tampon
Tampon
unidirecional
Magistral
bidirecional de
date i instruciuni
Date
Memoria
Principal
Control
&Stri
Adrese
Magistral de
adrese
Magistral de
control
Figura 3.5. Structur de calculator, format din UCP i memorie principal, cu indicarea circuitelor
tampon la interfaa procesorului cu exteriorul.
Fan-out = este capacitatea maxim de ncrcare pentru ieirea unui circuit digital. Valoarea sa depinde de curentul
maxim ce poate fi generat / absorbit pentru nivel logic 1 / 0 la ieire i se exprim ca numrul maxim de pori ce poate
fi comandat de ieire, cu pstrarea nivelurilor corecte de tensiune la ieire.
2
Fan-in = este capacitatea maxim de ncrcare la intrare, definit similar cu fan-out pe baza curentului maxim la intrare,
deci numr maxim de pori conectate la intrare, astfel ca nivelurile de tensiune corespunztoare lui 1 i 0 logic s se
pstreze.
- pag 56
57
Unitate de control
Unitate aritmetic
i logic
Semnale
de control
intern
Logic de
control
AC
RI
RD
PC
RA
(3.1)
Capitolul 3
58
doilea registru important al unitii de control este numit Contor de Program (simbolizat prin PC3).
Start
Nu
CPU
activ ?
Da
RAPC
Lanseaz
adres
RDM(RA)
Citete
memorie
Ciclu de
Fetch
RIRD (op-code)
PC PC+1
Decodific instruciune
Nu
Nu
stocare AC?
Da
Da
RARD(adres)
salt?
adunare?
Da
RARD(adres)
Ciclu de
execuie
RDAC
DRM(RA)
M(RA)RD
ACAC+RD
PCRD(adres)
Figura 3.7. Organigram privind funcionarea UCP elementare din figura 3.6
Acest registru are capacitatea de autoincrementare. El conine adresa instruciunii urmtoare din
program (sau informaie pe baza creia se construiete adresa din memoria principal unde se
gsete instruciunea urmtoare). Ori de cte ori s-a terminat execuia unei instruciuni, coninutul
PC se transmite ctre registrul tampon de adrese (RA transparent pentru programator), iar PC se
incrementeaz pentru a pregti adresa ctre urmtoarea instruciune. Se consider c instruciunile
programului sunt aranjate secvenial, n adrese succesive ale memoriei principale. Registrul PC,
pentru adresarea instruciunilor funcioneaz n majoritatea timpului ca un contor, cu incrementare,
(pentru secvene liniare de instruciuni). La majoritatea microprocesoarelor de 8 bii coninutul
acestui registru se transmite pe magistrala de adrese, indicnd adresa cuvntului (octet, sau multioctet) ce trebuie citit din memorie, cuvnt ce face parte din cmpul binar al unei instruciuni. Dup
3
- pag 58
59
3.3. PERFECIONAREA
UNITII CENTRALE DE PROCESARE ELEMENTARE
La structura elementar de UCP din figura 3.6 se pot aduce cteva tipuri de mbuntiri ce
pot fi aduse structurii pentru a crete performanele i flexibilitatea n ceea ce privete perfomanele
procesorului. O parte se vor discuta n acest paragraf, altele n paragrafele i capitolele urmtoare.
Principalele tipuri de extindere n organizarea UCP elementar sunt urmtoarele:
1. Introducerea unor registre speciale pentru stocarea strii procesorului n care s se salveze
anumii indicatori de condiii i de control. Adesea acest tip de registru este numit registru
pentru cuvntul de stare al programului5. Indicatorii de condiii6 pot fi testai de instruciuni
de salt condiionat i astfel pot modifica succesiunea instruciunilor executate de procesor n
cadrul unui program. Indicatorii sunt importani pentru c permit implementarea
instruciunilor de testare i decizie n limbaj de nivel nalt. Indicatorii de control au un alt
rol. Aa cum le spune i numele ei sunt destinai pentru a modifica modul de funcionare al
unitii de control, sau al unor registre de adresare ale acestei uniti, n funcie de valoarea
introdus n indicatori. Cei mai simpli dintre aceti indicatori pot indica de exemplu: mod de
lucru supervizor / utilizator, mod de lucru cu auto-incrementarea sau auto-decrementarea
unor registre index, blocarea cererilor de ntrerupere mascabile, informaii privind drepturile
de acces la unele zone de memorie etc. n general indicatorii pot fi setai prin instruciuni
recunoscute de procesor.
2. Introducerea unor registre suplimentare de adresare. Adesea se folosesc i registre pentru
moduri complexe de adresare (indexat, bazat, cu baz i index).
3. Introducerea unei bnci de registre vizibile programatorilor (sau compilatorului), pentru
stocarea temporar i manipularea datelor.
4. Adugarea unei uniti aritmetice pentru numere n virgul mobil (numere reale), n plus
4
Capitolul 3
60
Registre cu
utilizare
general
Unitate de control
PC
Unitate
aritmetic i
logic
Logic de
control
RI
Registru
temporar
de date
SP
Logic de
generare a
adreselor
RA
Registru de
stare
- pag 60
61
Capitolul 3
62
14
13
12
11
10
AC
CY
AC
P/
V
Z
OF
DF
IF
TF
SF
ZF
AF
PF
CF
I2
I1
I0
Z80
MC6800
I8086
MC68000
Peste tot, biii liberi (care nu reprezint indicatori) sunt notai cu stelu (*). Pentru unele din
exemplele de mai sus se observ c n registrul de stare sunt coninui nu numai indicatori de
condiii ci i alte tipuri de indicatori; acetia sunt indicatori de control ai procesorului, influennd
funcionarea acestuia.
La microprocesorul Z80 exist un indicator comun paritate / depire (P/V), iar indicatorul
de transport auxiliar e notat cu H. Indicatorul N este folosit de circuitul de corecie zecimal (la
operaii n NBCD) el indicnd scdere (N=1) sau adunare (N=0) la operaia anterioar n NBCD. La
procesorul MC6800 al firmei Motorola n registrul de indicatori apare i un indicator de control al
ntreruperilor mascabile (permise pentru I=1). La fel, n cazul microprocesorului Intel 8086
registrul de indicatori conine i 3 indicatori de control (controleaz unele operaii ale UCP).
Notaia indicatorilor are adugat i litera F (de la flag), AF fiind indicatorul de transport auxiliar,
iar OF cel de depire. n privina indicatorilor de control la Intel 8086 menionm urmtoarele:
indicatorul de ntrerupere (Interrupt Flag = IF) determin modul n care procesorul 8086
reacioneaz la cererile de ntrerupere mascabile aplicate pe pinul INT. Valoarea IF = 1 arat
c cererile de ntrerupere sunt validate. Indicatorul poate fi poziionat pe 1 sau ters prin
instruciuni ale programului.
indicatorul de direcie (Direction Flag = DF) este utilizat n operaiile cu iruri, cnd este
necesar ca irul s fie definit prin adresa de baz i prin sensul descresctor (DF=1), sau
cresctor (DF=0) al adreselor index (indice) care definesc fiecare element din ir fa de o
adres de baz;
indicatorul de mod "pas cu pas" (Trap Flag = TF) permite implementarea unui mod de
funcionare util n depanarea programelor. Astfel, dac TF = 1, dup execuia fiecrei
instruciuni se iniiaz o ntrerupere care determin transferul controlului ntr-o zon de
memorie definit de utilizator, unde sub aciunea unui program adecvat, se poate face
- pag 62
63
analiza strii interne a procesorului. Acest indicator este folosit de programele depanatoare9.
La MC68000, octetul mai semnificativ al registrului de stare este octetul de control al
sistemului (System Byte conine Trace mode, Supervisor state, Interrupt mask: I2,I1,I0/), iar
octetul mai puin semnificativ (b7-b0) este octetul indicatorilor pentru programul utilizator (User
Byte care conine indicatorii eXtend, Negative, Zero, oVerflow, Carry). n funcie de valoarea lui S
exist indicator de stiv (SP) separat pentru supervizor i pentru utilizator; dac S=1 se folosete
SSP (=A7' Supervisor stack pointer) iar dac S=0 se folosete USP (=A7, User stack pointer). SSP
i implicit stiva sunt protejate n acest fel fa de modificrile utilizatorilor. Masca de ntrerupere
indic nivelul de ntrerupere curent. Orice ntrerupere cu nivel mai mare dect nivelul mtii fiind
recunoscut. Exist 14 combinaii ale indicatorilor C, Z, N i V ce pot fi testate pentru salturi
condiionale. Indicatorul X este rezervat exclusiv pentru aritmetica n precizie multipl.
Pentru I8080, al firmei Intel, notaia indicatorilor corespunde cu cea din prezentarea setului
tipic de indicatori.
Cu privire la indicatorul de depire (V oVerflow) remarcm urmtoarele aspecte
importante. Dac rezultatul unei operaii aritmetice cu numere cu semn reprezentate pe n bii este
prea mare ca s poat fi reprezentat pe n bii se spune c se produce depire a capacitii de
reprezentare. Aceste depiri trebuie determinate pentru c adesea ele sunt o indicaie a erorilor de
programare. Fie exemplul urmtor de adunare a dou numere binare cu semn, reprezentate n cod
complementar:
x n 1 x n 2 ...x 0 +
y n 1 y n 2 ... y 0
(3.2)
z n 1 z n 2 ...z 0
Pentru fiecare rang i , prin adunarea biilor xi, yi i ci se genereaz un bit de sum zi i un bit de
transport (carry bit) ci+1 ctre rangul urmtor, unde zi i ci se consider pentru 0 i n 1 , c0=0, iar
valorile lor se calculeaz conform relaiilor unui sumator binar complet:
z i = xi y i ci
(3.3)
ci +1 = xi y i + xi ci + y i ci
(3.4)
Notm cu V variabila binar care indic depirea (oVerflow) atunci cnd V = 1. Tabelul
3.2. indic modul de determinare al bitului de semn zn-1 i al variabilei V n funcie de biii de semn
ai celor doi operanzi, xn-1, yn-1, i bitul de transport cn-1 de la rangul n-2, care este MSb10.
Rezult c indicatorul de depire poate fi definit prin ecuaia:
V = x n 1 y n 1 c n 1 + x n 1 y n 1 c n 1
(3.5)
Dac din tabelul 3.2 se elimin liniile pentru care V = 1 va rezulta definirea corect, conform
ecuaiei (3.3)) i pentru bitul de semn al sumei:
z n 1 = x n 1 y n 1 c n 1
(3.6)
10
Capitolul 3
64
Acest lucru este deosebit de important, pentru c arat c la operaiile n cod complement fa de 2
biii de semn ai operanzilor pot fi tratai n acelai mod ca i biii ce indic mrimea numrului.
Tabelul 3.2.
Intrare
Ieire
xn-1 yn-1 cn-1 zn-1 V
0
0
0
0
0
0
Observaii
Se observ c pentru codul cifrei zecimale de pondere mai mic (tetrad inferioar) s-a
obinut un cod nepermis (1100 care este mai mare dect codul lui 9, ce are valoare maxim);
de aceea se aplic corecia zecimal, prin adunarea codului cifrei 6. Se observ de asemenea
ca indicatorii de condiii sunt setai, chiar dac unii din ei nu au semnificaie pentru operaia
efectuat.
- pag 64
65
b)
zecimal
1208
-04
Aici corecia zecimal se aplic unei operaii de scdere a dou numere zecimale codificate
n NBCD i de aceea se scade codul lui 6 din cauza apariiei mprumutului (AC=1).
2. Dac se adun dou numere binare cu lungimea de un octet, se scriu mai jos, pe prima coloana
reprezentrile n zecimal, numerele fiind interpretate ca numere cu semn (corespunznd la valoarea
binar n cod complementar), pe a doua coloan zecimal, numerele fiind interpretate ca numere fr
semn, pe a treia n binar i pe ultima coloan valorile indicatorilor de condiii:
a)
zecimal
(cu semn)
(fr semn)
+ 8+
8+
- 128
128
------- 120
136
binar
0000 1000 +
1000 0000
------------1000 1000
S=1, Z=0, P=1, V=0, C=0, AC=0
Dac numerele sunt considerate cu semn, rezultatul obinut este un numr cu semn, corect,
pentru c nu s-a produs depire a capacitii de reprezentare (V=0). De asemenea rezultatul
este corect i pentru numere fr semn, cci CY=0. La aceasta operaie AC nu are nici o
semnificaie. Indicatorul de paritate P=1 indic un rezultat cu numr par de bii 1.
b)
zecimal
(cu semn)
(fr semn)
- 128 +
+ 127
---1
128 +
127
---255
binar
1000 0000 +
0111 1111
------------1111 1111
S=1, Z=0, P=1, V=0, CY=0, AC=0
Indicatorii arat rezultat corect pe 8 bii, att pentru numere cu semn ct i pentru numere
fr semn.
zecimal
binar
Capitolul 3
66
c)
zecimal
(cu semn)
(fr semn)
- 72 +
+ 104
---+ 32
184
104
---288
binar
+
1011 1000 +
0110 1000
------------0010 0000
S=0, Z=0, P=0, V=0, CY=1, AC=1
Aici V=0 indic c pentru operaie n cod complementar (cu semn) nu s-a produs depire a
capacitii de reprezentare, deci rezultatul este corect (+32 n zecimal). Dac numerele
binare sunt considerate fr semn, rezultatul pe 8 bii nu este corect pentru c indicatorul
CY=1, deci s-a produs o depire a capacitii de reprezentare pe 8 bii (rezultatul fr semn
este mai mare cu 32 dect 255, valoarea maxim reprezentabil). Din nou AC=1 nu are nici
o semnificaie aici.
Din exemplele anterioare se observ importana definirii corecte a operanzilor cu care
lucreaz instruciunile procesorului. Interpretarea corect a numerelor, ntr-un anumit cod intern
(binar cu semn, fr semn, NBCD, ASCII, etc.) se face de ctre programul compilator, sau de ctre
programator, dac se lucreaz n limbaj de asamblare.
n ceea ce privete registrele suplimentare introduse n unitatea de adresare, exemplificm
pe scurt urmtoarele tipuri de registre:
Registre index: Registrele index realizeaz modificarea unei adrese de operand. n unele cazuri
funciile aritmetice ale registrelor index, pot fi la fel de generale ca i al registrelor aritmetice
(adunri, scderi, nmuliri, inversri ale biilor coninui pentru realizarea unor funcii
speciale), iar n altele, aceste funcii sunt limitate sever. Microprocesoarele simple nu au
registre specializate pentru adresarea indexat, ele folosind pentru acest scop registrele de uz
general.
Registre (de adres) de baz: Aceste registre sunt n mod obinuit folosite n calculatoare
pentru tehnicile de adresare ce permit adresarea unui spaiu de memorie mai mare, utiliznd un
numr limitat de bii pentru a reprezenta adresa operandului n instruciune.
Registre de protecie a memoriei (sau registre limit) se folosesc n cadrul unitilor de adresare
din calculatoarele destinate s faciliteze utilizarea unor sisteme de operare de tip multi-tasking,
multi-programming. Pentru c la acestea exist mai mult dect un program rezident (sistemul
de operare plus programele utilizator), trebuie prevzut un anumit mod de control pentru a
preveni accesele ntmpltoare sau intenionate la locaii de memorie ce nu aparin programului
utilizator. ntr-un sistem cu uni-programare (cum este i MS-DOS), este de obicei suficient s
se interzic programului utilizator s acceseze locaiile sistemului de operare, situat la adresele
mici din memoria principal.
- pag 66
67
Magistral
de adrese
Magistral
de date
Linii de
alimentare
magistrala de adrese
magistrala de date
magistrala de control
Arbitrare
magistrale
Stare
Microprocessor
tipic
Semnal
de ceas
Control
magistrale
Magistral
de control
Control cereri de
ntrerupere
Diverse
Adresare liniar
Utilizat doar pentru sistemele mici, unde se utilizeaz doar o parte din spaiul posibil de
adresare. n aceste cazuri linii ale magistralei de adrese pot fi utilizate mpreun cu semnale
de control pentru a selecta direct blocuri de memorie. Pentru exemplificare, se presupune c
pentru un microprocesor numrul de bii ai adresei este a = 16, deci spaiul maxim de
adresare este de 216 locaii de memorie (64 k locaii). Presupunem c un sistem simplu
folosete doar 12 k de memorie, format din 3 blocuri de memorie a cte 4 k. Fiecare bloc
poate fi adresat cu 12 bii de adres (212 = 4096 = 4 k).
Dac considerm cei 12 bii mai puini semnificativi pentru adresarea n cadrul blocurilor,
ceilali 4 bii din magistrala de adrese pot fi folosii pentru selecia blocurilor de memorie. O
variant a acestui mod de selecie liniar se prezint n figura 3.10, n care s-a considerat c
Capitolul 3
68
a12
a13
a14
Read
a11-a0
a11-a0
a11-a0
a11-a0
ROM 1
4K 8
ROM 2
4K 8
RAM 1
4K 4
RAM 2
4K 4
R/W
R/W
CS
D7-D4
CS
D3-D0
CS
CS
D7-D0
D7-D0
Magistal de date
Figura 3.10. Un exemplu de selecie liniar pentru o memorie de 12k8, din care 8k8 memorie ROM
La rndul su blocul de RAM 4k8 este format din dou circuite RAM cu capacitatea 4K4
bii. Pentru selecia liniar se folosesc biii a14, a13 i a12 de pe magistrala de adrese,
mpreun cu semnalele de control de citire (Read) i scriere (Write), iar biii a11 - a0 sunt
folosii pentru adresarea locaiilor interne circuitelor de memorie. Semnalele de control de
citire i scriere sunt active la nivel logic JOS (de aceea au bar deasupra).
Pentru a nelege logica de selecie (intrrile CS 13 - selecie circuit) pentru circuitele de
memorie se indic mai jos ecuaiile care definesc porile logice.
CS = RD A14
CS = RD A14
CS = RD + A14
(3.7)
R / W = WR A14 = WR + A14
Adresa
(Hex)
Circuit
Selecie
circuit
(3.8)
11
- pag 68
0000
M
0FFF
1000
M
1FFF
2000
M
2FFF
3000
M
3FFF
4000
M
4FFF
5000
M
M
FFFF
Fr
circuit
RAM
(1+2)
ROM 2
Fr
circuit
ROM 1
Fr
circuit
69
a15a14a13a12
0000
M
0000
0001
M
0001
0010
M
0010
0011
M
0011
0100
M
0100
0101
M
M
1111
a11a10a9a8
0000
M
1111
0000
M
1111
0000
M
1111
0000
M
1111
0000
M
1111
0000
M
M
1111
a7a6a5a4
0000
M
1111
0000
M
1111
0000
M
1111
0000
M
1111
0000
M
1111
0000
M
M
1111
a3a2a1a0
0000
M
1111
0000
M
1111
0000
M
1111
0000
M
1111
0000
M
1111
0000
M
M
1111
(3.9)
= (A12 + RD) (A12 + WR )
Pentru memoria din figura 3.10, n figura 3.11 se indic harta memoriei ce conine alocarea
adreselor pe circuite de memorie, adrese minime maxime pentru fiecare circuit, iar n cazul
unei adresri liniare i spaiile libere - neocupate.
b. Adres decodificat complet.
La acest mod de selectare a circuitelor de memorie toate liniile de adres (toi cei a bii)
sunt folosite pentru adresare, deci se utilizeaz ntreg spaiul de adresare disponibil. Biii
mai semnificativi ai adresei sunt decodificai astfel nct s se genereze semnale de
selecie pentru toate dispozitivele de memorie utilizate.
A15
A14
Control acces
memorie
Decodificator
2 la 4
CS
Figura 3.12. Decodificare pentru generarea semnalelor de selecie i adresarea unei memorii de 64 k prin
decodificare complet. n cazul utilizrii n sistem i a unor circuite mai mici de 16k se mai poate introduce
un bloc de decodificare circuitul decodificator fiind selectat de ieirile decodificatorului 2:4, iar pe intrrile
de adrese se introduc urmtorii bii mai semnificativi ai adresei, de la 13 n jos.
Capitolul 3
c.
70
- pag 70
71
Vom nota aceste dou semnale cu prescurtrile lor din limba englez, bara de deasupra
reprezentnd faptul c sunt active pe nivelul logic JOS (0):
Capitolul 3
72
pentru c n majoritate se pstreaz aceeai notaie pe care am folosit-o i noi n acest paragraf.
Tabelul 3.3.
Tip microprocesor
I8080+ I8228
Z80
Echivalent AS
IOW , IOR , MEMR ,
MEMW
MREQ , IOREQ , RFSH
ALE, M / IO , DT / R , DEN
AS , UDS , LDS
Echivalent GATA
READY
WAIT
READY
DTACK
La multe dintre microprocesoare semnalul de tip AS depinde de tipul ciclului main curent
executat de procesor. Din exemplele date n tabelul 3.3 se vede c aceste semnale, din categoria
validare adres ( AS ), pot fi separate pentru adresele din spaiul memoriei respectiv spaiul de I/O.
Astfel la Intel 8080 cu controller de sistem exist scriere/citire pentru dispozitiv de intrare-ieire
( IOW 14 i IOR 15) sau scriere/citire adresat memoriei principale ( MEMW / MEMR 16 ). Se observ
c la acest procesor semnalele de validare a adresei sunt combinate cu cele ce indic scrierea sau
citirea. La microprocesorul Zilog, Z80, n afara semnalelor RD i WR , exist semnale diferite de
validare a adreselor pentru memorie ( MREQ 17 indic existena unei adrese de memorie pe
magistrala de adrese) i spaiu de I/O ( IOREQ indic existena unei adrese de intrare - ieire pe
magistrala de adrese). Aceste tipuri de semnale pot fi privite i ca semnale indicatoare de stare,
pentru c ele indic existena unui ciclu main de lucru cu memoria, respectiv cu porturile de I/O.
n cazul microprocesorului I8086, n modul minim, exist un singur semnal, numit M / IO , care
indic transfer cu memoria pentru valoarea 1 logic i cu porturile de I/O pentru 0 logic. Semnalul
ALE18 de la I8086 (mod minim) valideaz existena informaiilor de adres pe pinii magistralei de
date multiplexate. Pentru c microprocesoarele de 16 i 32 de bii pot face i transferuri pe octei au
fost necesare semnale de tip BHE (la Intel 8086, validarea celor 8 linii mai semnificative de pe
magistrala de date), sau UDS (Upper Data Strobe - validare a octetului mai semnificativ de date) i
LDS (Lower) la MC68000. La procesorul Motorola 68000 nu exist semnal de tipul M / IO ca la
I8086, pentru c 68000 nu are spaiu separat pentru memorie i dispozitive I/O (dei exist un
semnal numit VMA care contribuie la selecia porturilor programabile de 8 bii din familia
MC6800). Specific microprocesorului Zilog Z80, (care are inclus n UCP i controlerul de
remprosptare a memoriei dinamice) este semnalul RFSH 19 care valideaz adresa de
remprosptare a DRAM pe biii A6-A0 ai magistralei de adrese.
14
- pag 72
73
Mag. adrese
Mag. date
UCP
RD sau WR
Dispozitiv de
memorie
AS
GATA
T1
T2
Tw
T3
T4
CLK
Adres
De la UCP
(de la
master)
AS
RD
GATA
Date
(Ieire memorie)
HiZ
De la
memorie
Figura 3.13. exemplificare general a unui ciclu de citire asincron, care are nevoie de semnale de control de
tip handshake. n schema bloc de deasupra s-au reprezentat liniile de semnal la care sunt cuplai cei doi
corespondeni, iar n diagrama de timp se prezint evoluia n timp a semnalelor pe magistrale (notaii CLK
= impulsuri de ceas, Adres = magistral de adrese, Date = ieirile dispozitivului de memorie ctre
magistrala de date)
Problema cererii / cedrii controlului magistralelor se poate pune doar n sisteme de calcul
care conin mai multe dispozitive ce pot controla cele trei tipuri de magistrale. Aceste dispozitive
Capitolul 3
74
active pe magistral (dispozitive master20 care controleaz dispozitive slave21) pot fi de exemplu:
alte procesoare de uz general (UCP), procesoare cu sarcini specifice (de exemplu procesoare de
I/O), circuite de tip controller care au i posibilitatea de transfer al datelor direct cu memoria
principal (transfer DMA22). Pentru ca un UCP s poat decide cu privire la cedarea controlului
magistralelor, sistemul de arbitrare a controlului magistralelor trebuie s conin cel puin dou
tipuri de semnale:
un semnal de intrare n UCP care face o cerere de acces la controlul magistralelor, semnal
pe care-l notm n continuare cu BR (Bus Request23).
un semnal de ieire din UCP care confirm cedarea controlului magistralelor, notat n
continuare BG (Bus Grant). n urma cedrii controlului magistralelor, UCP ctre care s-a
lansat cererea BR trece ieirile sale ctre magistralele de date, adrese i control (doar o parte
dintre semnalele de control) n stare de nalt impedan (HiZ). n acest fel se permite
controlul (din punct de vedere electric, al nivelurilor logice) liniilor de ctre cel cruia i s-a
cedat.
n tabelul 3.4. se prezint cteva exemple de semnale echivalente cu semnalele tip pe care le-am
numit BR i BG.
Tabelul 3.4.
Tip microprocesor
I8080, I8085, I8086 n mod
minim
Z80
MC680x0
Echivalent BR
HOLD
Echivalent BG
HLDA
BUSRQ
BUSAK
BR
BG i BGACK
UCP prevzut cu aceast pereche de semnale sondeaz de obicei semnalul de cerere, de tip
BR, la sfritul fiecrui ciclu main i cedeaz controlul magistralelor ct mai curnd posibil, cu
excepia unor cazuri speciale n care operaiile nu pot fi ntrerupte (de exemplu operaii prevzute
cu prefixul LOCK la I8086). ntrzierea maxim cu care este servit o cerere de acces la controlul
magistralelor este deci un ciclu main.
n cazul mai multor cereri de acordare a controlului magistralelor, analiza prioritilor se face de
obicei cu un circuit de arbitrare centralizat a cererilor de magistral.
3.6.3.c Semnale de sincronizare cu evenimente externe ce genereaz cereri de ntrerupere
- pag 74
75
ntreruperi mascabile, a cror recunoatere i servire poate fi validat sau invalidat prin
setarea unor indicatori de control
ntreruperi nemascabile, al cror efect nu poate fi blocat / mascat, fiind ntotdeauna
recunoscute.
Un set minim de semnale pentru manevrarea cererilor de ntrerupere cuprinde:
cel puin un semnal de intrare n UCP, reprezentnd o cerere de ntrerupere, prin care
dispozitivul ce a lansat cererea ateapt servicii de la UCP (notat n continuare cu INT). La
unele microprocesoare exist mai multe intrri de cerere de ntrerupere.
cel puin un semnal de ieire din UCP care reprezint confirmarea acceptrii ntreruperii
(semnal notat n continuare cu INTA) La multe dintre microprocesoare acest semnal are i
funcia de control pentru citirea vectorului de ntrerupere depus de dispozitivul ntreruptor pe
magistrala de date.
Cteva exemple de semnale de tip INT i INTA se prezint n tabelul 3.5.
Tabelul 3.5.
Tip microprocesor
I8080 i I80x86
Z80
MC680x0
Echivalent INT
INTR (mascabil),
NMI (nemascabil)
INT (mascabil),
NMI (nemascabil)
IPL2, IPL1, IPL0
Echivalent INTA
INTA
IORQ + M1
FC2, FC1, FC0
Acestea sunt de obicei semnale, sau combinaii de semnale de ieire care indic starea n
care se gsete microprocesorul. Starea automatului este important pentru diferite circuite
suplimentare conectate la interfaa microprocesorului cu exteriorul, aceste circuite avnd diverse de
funcii de control n ceea ce privete magistralele, memoria cache extern i memoria principal.
Semnalele de stare sunt extrem de diverse, de la tip la tip de microprocesor dar funciile lor pot fi
clasificate dup informaia furnizat. Astfel semnalele de stare pot indica:
tipul ciclului main curent. Informaia este util circuitelor controller de magistral, care pe
baza strii citite furnizeaz semnale specifice de control. De exemplu, la Intel 8086 n mod
maxim semnalele S0-S2 indic tipul ciclului main curent. La MC68000 exist trei linii de
ieire numite Function Codes, FC2 - FC0 care informeaz exteriorul cu privire la starea
procesorului.
informaii despre registrele interne implicate n calculul de adres. De exemplu la I8086 n mod
maxim semnalele S3 i S4 indic registrele segment utilizate pentru adresa curent, iar
semnalele QS1 i QS0 dau informaii cu privire la starea cozii de instruciuni.
informaii de sincronizare cu alte module master de magistral (de exemplu de tip lock)
starea memoriei tampon (cache, coad) intern, informaie util circuitului controller de
memorie i cache extern.
speciale, pentru lucrul cu coprocesoare aritmetice externe. De exemplu cerere i acceptare de
transfer operand (PEREQ/PEACK la Intel 80286), test busy (BUSY la I8086), informare de
eroare ( BERR la 68000).
Capitolul 3
76
n aceast categorie sunt incluse mai multe tipuri de semnale utilitare, dintre care amintim:
semnale care aduc procesorul ntr-o stare predeterminat (RESET),
semnalele de ceas (CLOCK)
alimentarea cu tensiune.
RESET
Semnalul de tip RESET este prezent la toate microprocesoarele i el aduce coninutul
registrelor microprocesorului ntr-o stare prefixat prin proiectare. n aceast stare predeterminat
contorul de program (PC) se iniializeaz la o valoare fix (de obicei la zero), iar ntreruperile
mascabile sunt invalidate. Scopul principal al acestui semnal de intrare n UCP este ca s se tie cu
precizie starea n care se gsete procesorul la alimentarea cu tensiune. Din aceast cauz la aceast
intrare se conecteaz circuite R-C de tip Power-on Reset (Resetare la alimentarea circuitului). Chiar
dac pentru majoritatea microprocesoarelor acest semnal este doar intrare pentru UCP, exist i
excepii. Astfel, la microprocesorul Motorola MC68000 linia de Reset este bidirecional. Dac
este folosit ca intrare i este forat la 0 logic din exterior, atunci cnd intrarea Halt e activ n
acelai timp, se produce iniializarea intern a microprocesorului. Aceeai linie este folosit ca
ieire, pentru iniializarea dispozitivelor de I/O, atunci cnd microprocesorul execut instruciune
Reset instruciune care ns nu modific i starea intern a microprocesorului.
Semnale de ceas
Semnalele de ceas sunt generate de ctre un oscilator intern sau extern pe baza unui cristal
de cuar extern procesorului. La unele microprocesoare circuitele de ceas pot efectua i
sincronizarea unor semnale externe, cu caracteristic asincron, cum ar fi: RESET i READY.
Unele din circuitele oscilator de ceas pot avea i alte funcii. De exemplu, la circuitul I8224 folosit
pentru Intel 8080, i la I8284 al lui Intel 8086 se genereaz i semnale RESET pentru celelalte
uniti funcionale ale calculatorului. Cristalele cu cuar au frecvene de oscilaie diferite n funcie
de direcia de prelucrare fa de reeaua cristalin i n funcie de grosime. Pot exista cristale
echivalente cu circuite rezonante (RLC) serie i paralel.
C1
X1
cuar
X1
Microprocesor
Microprocesor
X2
X2
C2
(a)
(b)
Figura 3.14. Exemplu de conectare a cristalului cu cuar cu schem echivalent paralel (a),
respectiv serie (b).
Productorii specific dac cristalele sunt rezonante serie sau paralel. Cristalele cu cuar sunt
construite cu tolerane (frecven i stabilitate a frecvenei) ce pot ajunge pn la 0,002% - 0,005%.
- pag 76
77
Pentru sistemele de calcul o este acceptabil o toleran n jurul valorii de 0,01%. n figura 3.14 se
indic dou moduri de conectare a cristalelor de curai la capsula microprocesorului. Prima, din
figura 3.14 (a) este legarea corespunztoare microprocesoarelor cu oscilator intern. Tipic fiecare
dintre condensatoarele acestei scheme are valoarea de 10 - 30 pF. n figura 3.14 (b) se indic
conectarea unui cuar cu circuit oscilant echivalent de tip serie. Capacitatea introdus n serie cu
cristalul previne polarizarea n curent continuu de ctre circuitele interne microprocesorului.
Semn
MSb
(3.11)
LSb
Capitolul 3
78
Bitul bn-1 este bitul de semn, bitul bn-2 este cel mai semnificativ bit (MSb, cu ponderea 2n-2), iar b0
este bitul cel mai puin semnificativ (LSb). Se consider c virgula are poziia fix imediat n
dreapta LSb (b0).
Pentru numerele subunitare cu semn, reprezentate pe n bii, se va folosi notaia:
N s = b0 b1b 2 b 3 ... b ( n 1)
Semn
MSb
(3.12)
LSb
unde b0 este bitul de semn, b-1 este bitul cel mai semnificativ (MSb, cu ponderea 2-1), iar b-(n-1 este
bitul cel mai puin semnificativ (LSb cu ponderea 2-(n-1)). Se consider c virgula se afl ntre bitul
de semn i MSb (b-1).
Mod de reprezentare: Modulul numrului are aceeai reprezentare att pentru numere pozitive ct i
pentru cele negative, iar semnul ia valoarea 0 pentru numere pozitive, respectiv 1 pentru numere
negative.
numere ntregi
N = bn-1 bn-2.... b1 b0
numere subunitare
Ns = b0 b-1 b-2 b-3... b-(n-1)
pentru Ns > 0, b0 = 0
pentru Ns < 0, b0 = 1
(3.13)
numere subunitare
-(1-21-n) Ns (1-21-n)
(3.14)
Domeniul de reprezentare:
numere ntregi
-(2n-1-1) N 2n-1-1
numere subunitare
- pag 78
79
n2
b
N 10 = (1) n 1 bi 2 i
i =0
Ns
b n 1
= (1) 0 b i 2 i
10
i =1
(3.15)
000000...0
100000...0
zecimal
binar
N=
+6
sau
N=
+6/128
N=
-6
sau
N=
-6/128
Mod de reprezentare: Pentru numere pozitive reprezentarea este identic cu cea fcut n MS.
Pentru numere negative, bitul de semn este 1, iar biii ce reprezint valoarea absolut a numrului
sunt formai prin complementarea bit cu bit a reprezentrii n cod direct.
numere ntregi
numere subunitare
Capitolul 3
80
numere pozitive
N = 0 bn-2.... b1 b0
numere negative
N = 1 an-2.... a1 a0
(3.16)
Reprezentarea n cod invers a unui numr N, binar negativ, se poate face n dou moduri:
a) se complementeaz toi biii reprezentrii modulului numrului ( |N| ) inclusiv bitul de semn;
b) pe baza relaiilor generale:
numere ntregi
numere fracionare
(N)C1 = 2n - |N| - 1
(3.17)
numere subunitare
-(1-21-n) Ns (1-21-n)
(3.18)
Domeniul de reprezentare:
numere ntregi
-(2 -1) N 2n-1-1
n-1
n2
N 10 = a n 1 ( 2 n 1 1) + ai 2 i
i =0
numere subunitare
n 1
N s = a0 2 0 1 n 1 + a i 2 i
10
2 i =1
(3.19)
(relaiile au fost scrise n acest fel pentru a putea fi folosite i pentru numerele pozitive)
Avantaje i dezavantaje ale codului C1:
Reprezentarea este foarte uor de realizat n hardware, dar algoritmii de nmulire i mprire
pentru numere n C1 sunt mai compleci dect la MS. Codul prezint unele avantaje pentru adunare
i scdere, dar la aceste operaii se prefer codul complementar.
Un alt element dezavantajos este faptul c exist dou reprezentri pentru zero (plus i minus zero):
000000...0
i
111111...1
Exemplu (pentru n=8):
zecimal
binar
N=
+6
sau
N=
+6/128
0000 0110
N=
-6
sau
N=
-6/128
1111 1001
(-6)C1 = 28 - |N| - 1
- pag 80
81
1111 1001
Calculul valorii zecimale pentru (N)C1 = 1111 1001:
N|10 = (-1) * 27 + 1 + (1*26 + 1*25 + 1*24 + 1*23 + 0*22 + 0*21 + 1*20) = -6
sau
N|10 = -1 + 1*2-7 +(1*2-1 + 1*2-2 + 1*2-3 + 1*2-4 + 0*2-5 + 0*2-6 + 1*2-7) =
= -1 + 1/2 + 1/4 + 1/8 + 1/16 + 1/128 + 1/128 = -6/128
3.7.2.c Reprezentarea numerelor cu semn n cod complementar (cod complement fa de 2, C2)
Mod de reprezentare: Pentru numere pozitive reprezentarea este identic cu cea fcut n MS.
Pentru reprezentarea n cod complementar a unui numr N, binar negativ, se pot folosi variantele
descrise n tabelul de mai jos:
varianta
numere ntregi
numere subunitare
(N)C2 = (N)C1 + 1
(3.20)
b
c
(Ns)C2 == 2 - |Ns|
(3.21)
Note:
La operaiile de scdere sau adunare pentru calcularea codului se consider i transportul
sau mprumutul.
Relaiile de la varianta b indic de ce codul poart numele complement fa de 2.
Metoda de la varianta c este des folosit n codificarea manual i de asemenea uor de
implementat cu pori logice.
Domeniul de reprezentare:
numere ntregi
-2 N 2n-1-1
n-1
numere subunitare
-1 Ns 1-21-n
(3.22)
numere subunitare
n 1
N s = b0 + b i 2 i
10
i =1
(3.23)
Capitolul 3
82
16b:
32b:
x2
y3
y2
x1
y1
x0
y0
Figura 3.15. Schem simplificat a unui circuit care transform un numr binar ntreg pozitiv (introdus la
intrrile ... x3x2x1x0) n codul complement fa de 2 pentru echivalentul negativ al numrului.
N|10 = -6
a) cu C1: (-6)C2 = (-6)C1 + 1
b)
(-6)C2 = 28 - |6|
1111 1001 +
1
------------1111 1010
1 0000 0000 0000 0110
----------------
- pag 82
83
1111 1010
c)
pe reprezentarea lui +6 =
0000 0110
1111 1010
primul 1 copiat, ceilali complementai
(3.24)
unde
M=
E=
B=
Capitolul 3
84
- pag 84
85
Creterea valorii
numerice
+ Nmaxim_ reprezentabil + 0.111 ... 1 2+127
23 de bii 1
Zero
Figura 3.16. Scar a numerelor reale pentru reprezentarea pe 32 de bii, din care pentru mantis sunt
rezervai 24 bii = 23 mrime + 1 semn.
n acest caz, formatul reprezentrii pe 32 bii n virgul mobil poate fi cel din figura 3.17.
S
31 30
Mantisa
23 22
Figura 3.17. Reprezentare n virgul mobil pe 32 bii cu exponent deplasat caracteristic (C)
i semnul mantisei (S).
n plus, dac mantisa este reprezentat n cod direct i este normalizat, primul bit al
acesteia este 1 pentru toate numerele. Acest prim bit poate s nu mai fie reprezentat (bit ascuns,
"hidden bit" - HB). Ca urmare, n formatul pe 32 de bii, mantisa poate fi reprezentat pe 24 de bii
(23 bii reprezentai efectiv + 1 HB) precizia de reprezentare crescnd de dou ori. De asemenea,
faptul c bitul 1 este ascuns, permite numerelor pozitive foarte mici (+0.1 * 2-127, reprezentat cu
HB) s aib numai zerouri pe toi cei 32 de bii, deci reprezentarea numrului zero este identic cu
cea de la reprezentarea ntregilor, putndu-se folosi aceleai tipuri de circuite de detecie a
rezultatului nul.
Ca urmare, la efectuarea operaiei de normalizare, virgula mobil este mutat pn cnd n
stnga sa se gsete un bit 1, iar ceilali bii se gsesc n dreapta virgulei.
Formatul de reprezentare n virgul mobil este standardizat de ctre standardul IEEE 754,
aprut n 1980 i completat ulterior. Pn la apariia sa, codurile numerice n virgul mobil variau
de la o familie de calculatoare la alta, fcnd dificil portabilitatea programelor ntre diferite maini,
cci apreau dificulti n domenii ca: erori de aproximare, tratarea depirilor superioare i
inferioare i tratarea altor condiii de excepie. Standardul se refer la reprezentrile pe 32 bii i pe
64 bii. n oricare dintre formate standardul impune folosirea exponentului deplasat, a formei
Capitolul 3
86
normalizate pentru mantis, a bitului ascuns, iar baza B este considerat a fi egal cu 2. Bitul
ascuns nu se reprezint n formatul binar n virgul mobil, dar de valoarea sa se ine cont atunci
cnd se lucreaz cu numerele (unitile aritmetice i logice in cont de bitul ascuns). Modul
standardizat de reprezentare poate fi rezumat astfel:
pentru 32 de bii: 1 bit de semn, 8 bii pentru exponentul deplasat (+127) i 23 de bii pentru
mantis). Implicit se tie ca primul bit (nainte de virgul) al mantisei nu este reprezentat i
el are valoarea 1.
pentru 64 de bii: 1 bit de semn, 11 bii pentru exponentul deplasat (+1023) i 52 de bii
pentru mantis). Implicit se tie ca primul bit 1 al mantisei nu este reprezentat i el are
valoarea 1.
Un bun exemplu de utilizare a standardului IEEE pentru reprezentarea n virgul mobil este
circuitul coprocesor Intel 8087 al familiei I8086. El folosete un format cu maximum 80 de bii,
avnd registre interne cu aceast dimensiune. Numerele pot fi reprezentate n formatele 32, 64, sau
80 de bii. n figura 3.18. s-au notat cu S semnul, cu C exponentul deplasat i cu F fracia, prin care
nelegem partea de dup virgul a mantisei, deci fr bitul ascuns:
Formatul real temporar se folosete la familia de coprocesoare Intel x87, dar i pentru
emulrile software, pentru reprezentarea temporar intern. La acest format temporar nu se mai
impune reprezentarea cu bit ascuns.
1 bit
23 bii
8 bii
31 30... 23 22
...
11 bii
1 bit
0
52 bii
Real lung:
Reprezentare pe 64 bii
Precizie mantis: 53 bii
cu HB
Caracteristic
C = E + 1023
63 62 ...
1 bit
Real scurt:
Reprezentare pe 32 bii
Precizie mantis: 24 bii
cu HB
Caracteristic C = E + 127
52 51
15 bii
79 78
...
...
64 bii
M
64 63
...
Real temporar:
Reprezentare pe 64 bii
Precizie mantis: 64 bii
fr HB
Caracteristic
C = E + 16383
Figura 3.18. Formatele numerelor reale reprezentate n virgul mobil pentru coprocesorul Intel 8087,
conform standardului IEEE 754.
- pag 86
87
mai mare de 254 pentru reprezentarea pe 32 de bii, respectiv 2046 pe 64 de bii) sunt definite n aa
fel ca s seteze indicatori de condiii ai procesorului gazd i s genereze ca urmare evenimente ce
trebuie tratate ca s nu existe erori de reprezentare sau de precizie. Dac pentru un numr
normalizat, mantisa este zero, iar exponentul are cea mai mic valoare posibil, este reprezentat
valoarea zero. Dac ns exponentul deplasat are cea mai mic valoare posibil (C=0), iar mantisa
are o valoare diferit de zero, mantisa nu este normalizat (este ne-normalizat)24, iar biii stocai ai
mantisei dau mrimea acesteia. Acest numr este prea mic pentru a fi reprezentat. Cele mai multe
din procesoarele ce lucreaz n virgul mobil fac, n acest caz, aproximarea la zero a numrului,
eroarea fiind proporional cu mrimea mantisei ne-normalizate.
n figura 3.19 se prezint modul de tratare al excepiilor n standardul IEEE 754 pentru
numere reale reprezentate pe 32 de bii. Simbolul NAN (Not-A-Number, rezultatul nu este un
numr) este folosit pentru toate operaiile care conduc la erori, de exemplu mprire la zero, sau
extragere de radical dintr-un numr negativ, pe baza interpretrii simultane a fraciei diferite de zero
F 0 (unde Mantisa M = 1.F, bitul 1 din faa virgulei fiind bitul ascuns) i a exponentului deplasat
(caracteristic) cu valoare C = 255 (la formatul pe 32 de bii) respectiv C = 2047 (la formatul pe 64
de bii).
Atunci cnd se produce o depire a capacitii de reprezentare (numrul este prea mare
pentru a putea fi reprezentat pe cei n bii) rezultatul este definit ca fiind + sau infinit ( ) i
identificarea se face de asemenea pe baza valorilor fraciei i exponentului deplasat (C = 255
respectiv C = 2047 i F = 0).
Caracteristica
C = 255
C = 255
0 < C < 255
C=0
C=0
Fracie
F 0, cu HB,
(mantis normalizat)
F = 0, cu HB,
(mantis normalizat)
Mantis normalizat,
( M = 1.F )
Interpretare rezultat
simbol de eroare NAN
(nu este numr)
depire N = (-1)S=
F = 0, cu HB,
(mantis normalizat)
F 0,
(mantis ne-normalizat)
Numr = 0
Numr real,
N = (1) S 2 C 127 (1.F )
Figura 3.19. Modul de interpretare al excepiilor n standardul IEEE 754 pentru numere reale reprezentate
pe 32 de bii.
Alt aspect definit de standardul IEEE, cu implicaii mari n ceea ce privete proiectarea
hardware, sunt regulile de rotunjire. Standardul definete patru moduri de rotunjire:
rotunjire la valoarea cea mai apropiat (round to nearest)
rotunjire ctre valoarea mai apropiat de zero (round toward 0)
rotunjire ctre + (round toward +)
rotunjire ctre - (round toward -)
Modul implicit de rotunjire este rotunjire la valoarea cea mai apropiat. n cazul n care
24
Termenul de ne-normalizat (denormalized n limba englez) se refer la numerele care pot avea orice valoare pentru
C, dar mantisa nu poate fi adus la forma normalizat, cu bit ascuns, pentru c se depesc limitele de reprezentare
pentru caracteristic (ar trebui s rezulte o caracteristic negativ).
Capitolul 3
88
numrul ce trebuie aproximat se gsete exact la jumtatea intervalului dintre dou numere
succesive reprezentabile, rotunjirea se face la un numr par (round to nearest even).
Ca o concluzie, conform standardului IEEE 754 un numr real reprezentat pe 32 de bii, la
care se respect condiia 0<C<255, se poate calcula cu relaia, :
N = (1) S 2 C 127 (1.F )
(3.27)
Pentru formatul real lung, pe 64 de bii, dac se respect condiia 0<C<2047, numrul poate fi
calculat cu relaia:
N = (1) S 2 C 1023 (1.F )
(3.28)
- pag 88
CAPITOLUL 4
ARHITECTURA SETULUI DE INSTRUCIUNI
Coninut:
4.1. Introducere n arhitectura setului de instruciuni
4.2. Formatul instruciunilor
4.3. Interdependena set de instruciuni - organizare intern a
procesorului
4.4. Scurt privire comparativ ntre arhitecturile RISC i CISC
4.5. Tipuri de instruciuni
4.5.1. Instruciuni aritmetice
4.5.2. Instruciuni logice
4.5.3. Instruciuni pentru transferul informaiei
4.5.4. Instruciuni pentru deplasarea i rotirea datelor
4.5.5. Instruciuni de ramificare (pentru controlul secvenei de
program)
4.5.6. Instruciuni pentru controlul procesorului
4.5.7. Instruciuni pentru lucrul cu iruri
4.6. Moduri de adresare
4.6.1. Adresare imediat
4.6.2. Adresare direct
4.6.3. Adresare indirect
4.6.4. Adresare relativ
4.6.5. Adresare indexat
Obiective educaionale:
a. Enumerarea caracteristicilor principale i a componentelor principale ale
arhitecturii setului de instruciuni (ASI) pentru un microprocesor
b. clasificarea diferitelor seturi de instruciuni
c. Descrierea formatului instruciunilor i a modurilor de adresare
d. Explicarea importanei alinierii datelor n memoria principal
e. Clasificarea i analiza comparativ a diferitelor ASI
Capitolul 4
90
Program n ASM
Program n C compilat
n program ASI
Nivel ASI
Hardware
91
Capitolul 4
92
OP1
OP2
OP3
Apoi urmeaz specificatorii pentru operanzi (modul de gsire al operanzilor se numete mod
de adresare al operanzilor). Ordinea n care sunt dispui specificatorii de operanzi n formatul
instruciunii difer de la procesor la procesor. Vom considera, doar pentru exemplificare, un format
de instruciune cu trei operanzi, ca cel din figura 4.2, i la care specificatorul OP1 se refer la
destinaie (aceasta poate fi un registru intern, o locaie de memorie sau porturi de I/O6), iar OP2 i
OP3 sunt specificatori de operanzi surs (operanzii putnd fi date imediate, sau stocai n registre,
memorie, ori porturi de I/O).
Instruciunea recunoscut de main este scris deci n cod binar care codific o aciune a
procesorului. Specificatorii de operand ce apar explicit n formatul instruciunii dup codul operaiei
se refer de obicei la adrese din memoria principal, adrese de porturi, operanzi imediai (date sau
adrese imediate), registre interne de uz general ale UCP. Unele din registrele interne ale UCP au
funcii specifice n cazul anumitor instruciuni, iar prin decodificarea codului operaiei acestor
instruciuni, registrele respective fiind recunoscute implicit ca surs sau destinaie de operanzi.
5
6
93
Dup modul n care se stocheaz n memoria principal adresele operanzilor imediai din
cmpul de specificatori, exist dou convenii. Convenia "Little Endian" (aluzie la irul indian care
are n fa pe cel mai mic) plaseaz ntotdeauna pe prima poziie, la adresa cea mai mic, cuvntul
cel mai puin semnificativ al unei adrese multi - cuvnt. Stocarea n memorie se face n ordine, de la
cuvntul cel mai puin semnificativ (adresa mic), ctre cuvntul cel mai semnificativ stocat la
adresa cea mai mare. n figura 4.3. se prezint un exemplu de stocare n memorie, n convenia
"Little Endian", a unui cuvnt de 32 bii. Memoria din figur este organizat pe octet, avnd deci
alocat cte o adres fiecrui cuvnt de 8 bii. Valorile numerice au fost scrise n hexazecimal.
Memoria
principal
Adres
de
memorie
A:
01
A+1:
5C
A+2:
04
A+3:
3F
Cel mai
semnificativ octet
Figura 4.3. Exemplu de stocare a unui cuvnt de 32 de bii, ntr-o memorie organizat pe octet, convenia
utilizat fiind Little Endian. ntr-o instruciune ce adreseaz aceast dat pe 32 de bii se va specifica adresa
"A", unde este stocat octetul cel mai puin semnificativ.
Pentru cealalt convenie, numit "Big Endian" (marele indian), ordinea este invers, adic
n fa, la adresa cea mai mic se plaseaz octetul cel mai semnificativ al cuvntului multi-octet.
Legat de convenia de stocare n memorie a informaiilor (instruciuni, date, adrese) trebuie
menionat aici c la unele microprocesoare accesul la obiecte mai mari dect un octet se poate face
doar dac informaia este aliniat. Alinierea se refer la faptul c accesul la un obiect de
dimensiunea D octei se face prin specificarea adresei A primului octet ocupat, unde adresa A
respect ecuaia:
A mod D = 0
Considernd o memorie adresabil la nivel de octet i un microprocesor de 32 bii, alinierea i
nealinierea informaiilor pe 32 de bii se exemplific grafic n figura 4.4.
Nealinierea produce complicaii la citirea memoriei i conduce la pierdere de timp. n
exemplul din figura 4.4. pentru informaia aliniat citirea se poate face ntr-un singur ciclu de acces
la memorie. Pentru informaie ne-aliniat trebuiesc cel puin dou cicluri de acces la memorie. Dar
situaia de ne-aliniere prezentat nu este att de critic ct ar fi dac nealinierea s-ar realiza prin
stocarea informaiei pe 32 de bii la adrese succesive, de exemplu n ordinea: 0B, 0C, 0D i 0E hex,
cnd citirea ar trebui fcut pentru fiecare octet n parte.
Capitolul 4
94
Adres
(n Hex)
4 octei
Adres
(n Hex)
4 octei
00
04
08
0C
10
14
18
00
04
08
0C
10
14
18
Cuvnt de 4 octei aliniat
la adresa 08 hex.
Figura 4.4. Exemplu de adrese de acces la obiecte aliniate i nealiniate. Cuvntul pe 32 de bii nealiniat
poate fi citit n cel mai bun caz prin dou accesri succesive la memorie pentru citirea a cte 2 octei.
4.3. INTERDEPENDENA
SET DE INSTRUCIUNI - ORGANIZARE INTERN A PROCESORULUI
O surs de controverse ncepnd de la prima generaie de calculatoare a fost: cte adrese
explicite pentru operanzi s includ o instruciune? Cu ct sunt mai puine adrese cu att e mai
scurt instruciunea. Dar limitnd numrul de adrese se limiteaz domeniul de funcii pe care
fiecare instruciune le poate realiza. n general, mai puine adrese nseamn mai multe instruciuni
primitive i deci programe mai lungi pentru o anumit sarcin de rezolvat.
n timp ce necesitile de stocare n memorie pentru instruciuni mai scurte i programe mai
lungi tind s se echilibreze cu instruciunile lungi i programe scurte, programe mai lungi cer un
timp mai lung de execuie. Pe de alta parte, instruciunile lungi, cu adrese multiple, cer de obicei
circuite mai complexe pentru decodare i prelucrare. De multe ori procesoarele sunt clasificate dup
numrul maxim de adrese de memorie principal n cmpurile instruciunilor lor. Calculatoarele
coninnd un numr diferit de adrese au n general instruciuni de lungimi diferite. Instruciunile cu
doi operanzi necesit cel mult trei adrese. De exemplu, pentru o operaie de adunare, simbolizat
prin mnemonica add pot fi implementate instruciuni cu minim 0 i maxim 3 operanzi, asa cum se
observ n tabelul 4.1.
Numrul de cmpuri de adres n formatul instruciunii unui procesor depinde organizarea
intern a registrelor sale, dar n acelai timp influeneaz modul n care este proiectat procesorul ca
organizare, din punctul de vedere al registrelor interne. Numrul de adrese poate fi diferit, de la
instruciune la instruciune la acelai procesor. De exemplu instruciunea de scdere poate avea trei
adrese de operanzi (doi surs i unul destinaie), iar instruciunea de complementare poate avea un
singur operand (registrul surs este i destinaie).
95
Tabelul 4.1.
Numr
adrese
3
Format
instruciune
add z,x,y
add
x,y
add
add
Comentariu
; z x+y , unde x,y,z, sunt locaii de
;memorie, nume de registre, sau date imediate
; x x+y sau Ac x+y , n funcie de procesor
; (Ac = registru acumulator)
; Ac Ac+x
; adun primele dou articole din vrful stivei i
; stocheaz rezultatul n noul vrf al stivei
Tip
arhitectur
Ac
Instruciuni
Comentarii
add x
RG
add r1,r2,r3
add r1,r2
mov r1,r2
add r1,x
push x
;Ac Ac + x sau Ac Ac + @x
;adun la acumulator coninutul registrului x sau al
;memoriei de la adresa dat de x
; r1 r2 + r3
; r1 r1 + r2 sau r2 r1 + r2
; r1 r2 sau invers
; r1 r1 + @x
;trimite cuvntul de adres x n vrful stivei,
;VS @x
;aduce primele 2 articole din stiv, le adun i ;
stocheaz rezultatul n stiv
ST
add
Capitolul 4
96
prelucrare. Dezavantajul arhitecturilor de tip RG este dat de faptul c fiecare registru trebuie
adresat de ctre instruciunea ce-l utilizeaz, astfel c lungimea instruciunilor este relativ
mare. Ultimul tip de arhitectur permite o evaluare extrem de uoar a operaiilor pe baza
notaiei inverse (notaia polonez - vezi exemplul de mai jos). Aceasta conduce i la
instruciuni cu lungime foarte redus. Din pcate o stiv este mai dificil de adresat n mod
aleator, iar codul rezultat este relativ ineficient. Stiva introduce i o limitare n vitez i de
aceea acest tip de arhitectur este rar implementat la procesoare de uz general.
n tabelul 4.2. s-au prezentat cteva exemple de instruciuni pentru cele trei tipuri de
arhitecturi. Multe calculatoare pot fi ncadrate n cele 3 categorii de mai sus, dar cele mai
multe combin caracteristici din mai multe moduri de organizare.
Pentru a ilustra influena numrului de adrese n programele executate de procesor vom
evalua egalitatea:
x = a (b + c)
(4.1)
add, mul,
load, store
push, pop
r#
r1,b,c
x,r1,a
;r1 @b + @c
;@x r1 * @a
r1,a
r2,b
r3,c
r2,r2,r3
r1,r1,r2
x,r1
; r1 @a
; r2 @b
;
; r2 (r2 + r3)
; r1 (r1 * r2)
; @x r1
97
r1,b
r1,c
r1,a
x,r1
;r1 @b
;r1 r1 + @c
;r1 r1 * @a
;@x r1
b
c
t
a
t
x
; ac @b
; ac ac + @c
; @t ac
; ac @a
; ac ac * @t
; @x ac
unde s-a notat cu t adresa unei locaii de memorie folosita pentru stocarea
temporara a rezultatelor intermediare
c) pentru arhitecturi pe baz de stiv (instruciuni cu zero adrese)
push
push
push
add
mul
pop
b
c
abc+*.
ab+cd+*
ab+cd+ef+**
Dup cum se vede, notaia polonez are avantajul c nu folosete paranteze. Ba mai
mult, pornind de la stnga la dreapta se indic toate operaiile ce trebuiesc efectuate, n
ordine, pe o arhitectur de tip stiv.
Capitolul 4
98
99
dezavantaj al CISC const n faptul c este dificil de mrit frecvena de ceas pentru un
circuit complex.
Rezumnd, putem enumera cteva din elementele caracteristice pentru fiecare din
cele doua arhitecturi.
Rezumat al caracteristicilor definitorii pentru mainile RISC:
1. Acces la memorie limitat, doar prin instruciuni de ncrcare (load) i stocare
(store);
2. Format de lungime fix pentru instruciuni, deci uor de decodificat; caracteristic
care contribuie la simplificarea structurii unitii de control;
3. O structur simpl a unitii de control implementat sub form cablat, deci cu
vitez mare de funcionare;
4. Relativ puine tipuri de instruciuni (tipic sub 100 de instruciuni) i puine moduri
de adresare (din nou aceast caracteristic contribuie i la simplificarea structurii
unitii de control);
5. Execuia instruciunilor ntr-un singur ciclu prin tehnici pipeline7; se face prin
suprapunerea diferitelor faze de execuie (fetch, decodificare, aducere operanzi etc.)
ale mai multor instruciuni. Tehnica de tip conduct (pipeline) este utilizat i la
arhitecturile CISC, dar la RISC tehnica este mai eficient i mai uor de
implementat, datorit lungimii constante a instruciunilor;
6. Un numr relativ mare de registre n interiorul UCP;
7. Utilizarea compilatoarelor optimizatoare - pentru a optimiza performanele codului
obiect.
La CISC cteva din caracteristicile care le deosebesc de RISC-uri sunt:
1. Multe instruciuni care prelucreaz operanzi din memorie;
2. Format de lungime variabil pentru instruciuni;
3. Unitate de control microprogramat (micro-codat), avantajoasa din punctul de
vedere al flexibilitii implementrii, dar lent;
4. Set complex (extins) de instruciuni i o mare varietate de moduri de adresare;
5. Un numr relativ mic de registre n interiorul UCP.
6. Utilizarea compilatoarelor optimizatoare - pentru a optimiza performanele codului
obiect;
7. Exista instruciuni complexe de mare eficien, dar uneori acestea sunt rar utilizate
de ctre compilatoare.
Asa cum s-a artat mai sus, arhitecturile RISC restricioneaz numrul de instruciuni care
acceseaz direct memoria principal. Cele mai multe instruciuni ale RISC presupun doar operaii
ntre registrele interne UCP. Pentru c instruciunile complexe nu exist n setul de instruciuni,
dac este nevoie de ele, acestea se implementeaz prin rutine cu ajutorul instruciunilor existente. n
final, ntr-un program executabil vor fi mai multe instruciuni dect la CISC, dar execuia pe
ansamblu va fi mai rapid. Totui, dac ntr-un program, frecvena operaiilor complexe este mare,
este foarte posibil ca performanele unei maini CISC s fie mai bune (execuie mai rapid).
Capitolul 4
100
Exemple I8086
ADD D,S
ADC D,S
scdere
SUB D,S
SBB D,S
incrementare
INC D
decrementare
DEC D
MUL S *
IMUL S *
DIV S *
IDIV S *
NEG D
comparare
CMP D,S
ajustare zecimal
Not: * = dempritul sau denmulitul se gsesc implicit n registrele acumulator i eventual DX. Din
aceast cauz la I8086 exist un singur operand. La procesoare Intel pe 32 de bii (de la I80386),
operaia de nmulire cu semn a ntregilor poate avea i forma cu doi sau trei operanzi, caz n care
se pot folosi i alte registre generale, dect AX i DX.
101
Exemple I8086
AND D,S
SAU logic
OR D,S
SAU-Exclusiv
XOR D,S
complement (NU)
NOT D
test logic
TEST D,S *
Nota: * = se efectueaz I logic ntre surs i destinaie, rezultatul nu se stocheaz nici-unde, dar
se poziioneaz indicatorii de condiii.
Tot n cadrul instruciunilor logice sunt incluse i instruciunile de prelucrare i test logic a
biilor unui cuvnt. De exemplu, la I80386 exist instruciunile de examinare (scan) a biilor unui
octet / multi-octet (BSF - ncepnd cu LSbit, BFR - ncepnd cu MSbit), sau de testare i prelucrare
a biilor unui octet / multi-octet, cu poziionarea indicatorului CF (BT, BTC, BTR, BTS).
Operaiile de prelucrare pe bit sunt importante n special pentru modificarea registrelor de
control, sau la microcontrollere integrate pentru scrierea selectiv la anumite ieiri ale portului
paralel.
Exemple I8086
MOV D,S
;DS
XCHG D,S ;DS
PUSH S
POP D
PUSHF
POPF
transfer cu stiva
; nscriere n stiv
; extragere din stiv
; scriere indicatori n stiv
; extragere indicatori din stiv
Capitolul 4
102
transferul adreselor
LEA
LDS
transfer de I/O
IN AL,adr
; AL adr (port)
IN AX,adr
; AL adr (port), 16 bii
IN AL,DX
; AL (DX)
OUT adr,AL
OUT DX,AL
r16,adr
r16,adr
;(r16)adr
;r16Low [DS:adr]
;r16High [DS:(adr+1)]
;DSLow [DS:(adr+2)]
;DSHigh [DS:(adr+3)]
CF
SAL D,1
SHL D,1
0
D
rotire la stnga
CF
ROL D,1
D
103
CF
RCL D,1
SAR D,1
Semn
SHR D,1
0
D
rotire dreapta
CF
ROR D,1
D
RCR D,1
D
Capitolul 4
104
105
JNZ/JNE, JO, JNO, JP/JPE, JNP/JPO, JS, JNS (ultimele se refer la testarea indicatorilor de
condiii, condiia fiind valoarea 1 a indicatorului, sau valoarea zero daca n fata numelui de
indicator apare N(ot).
Capitolul 4
REP
106
107
(4.2)
Aceast sumare nu se face de ctre ALU ci de ctre un sumator separat de 20 bii i este
transparent pentru programator.
Standardul IEEE pentru limbajul de asamblare al microcalculatoarelor amintete cel puin
19 moduri diferite de calcul al adreselor efective att pentru operanzii surs ct i pentru cei
destinaie. Se va face clasificarea modurilor de adresare n 5 tipuri [Gorsline86]:
1.
2.
3.
4.
5.
adresarea imediat
adresarea direct
adresarea indirect
adresarea relativ
adresarea indexat
Capitolul 4
108
cod operaie
data imediat
a:
cod operaie
a+1:
data (low)
a+2:
[data (high)]
a+3:
109
Formatul instruciunii
cod operaie
a:
cod operaie
a+1:
adres low
a+2:
adres high]
adres
a+3:
AE
Capitolul 4
110
mov ax,@bx
mov ax,@there
Memorie
principal (RAM)
cod operaie
adres registru
(intern sau
extern UCP)
adres operand
operand
registru de
adresare
Adresarea indirect prin registru (figura 4.7) poate fi folosit i la instruciunile de apel al
procedurilor, adresa efectiv gsindu-se indirect, prin citirea coninutului unui registru de adresare.
De exemplu la Intel 8086 se poate scrie:
call bx
;bx ip, care face o adresare direct la registrul bx
sau
call [bx]
;@bx IPL i @(bx+1) IPH, acesta fiind o adresare indirect prin
;registrul bx. Adresa de nceput a procedurii se gsete n memorie
;la adresa dat de registrul bx.
La microprocesoarele care au spaii de adresare separate pentru memorie i pentru
dispozitivele de I/O exist o variant interesant a adresrii indirecte prin registru a porturilor.
Aceast adresare este similar cu adresarea indirect prin registre a memoriei. Numrul porturilor
posibil de adresat este dat de dimensiunea registrului folosit n adresare. De exemplu, la I8086,
adresa portului este stocat n registrul dx de 16 bii, deci numrul maxim de porturi adresabile
este 65536. La acest microprocesor, registrul dx este singurul ce poate fi folosit la adresare indirect
111
Capitolul 4
112
113
CAPITOLUL 5
UNITATEA DE CONTROL A UCP
Coninut:
5.1. Funciile principale ale unitii de control a UCP
5.2. Control cablat
5.2.1. Metoda tabelului de tranziie a strilor
5.2.2. Metoda sincronizrii prin numrtoare de secvene
5.3. Controlul microprogramat
5.3.1. Metode de optimizare a UC microprogramate
5.4. Paralelism n execuia instruciunilor prin tehnici pipeline
5.5. ntreruperi i excepii
5.6. Rolul memoriei stiv
5.7. Utilizarea ferestrelor de registre
Obiective educaionale:
a. Analiza funciilor principale ale unitii de control i a modului de interpretare i
execuie a instruciunilor main
b. Explicarea metodelor de proiectare i implementare a unitilor de control
c. Analiza comparativ a avantajelor i dezavantajelor modurilor diverse de
implementare
d. Explicarea fundamentelor privind implementarea paralelismului la nivelul
instruciunii prin tehnicile de tip pipeline
e. Descrierea i clasificarea sistemului de ntreruperi al microprocesoarelor
f. Analiza modului de implementare i utilizare a memoriei stiv
Capitolul 5
116
(5.1)
Unitatea de Control
117
(b) Interpretarea instruciunilor se refer la modul n care UC decodific codul fiecrei instruciuni
i la modalitatea de generare a semnalelor de control ctre calea de date, pentru a comanda execuia
instruciunilor. Comportarea UC din punctul de vedere al semnalelor de control generate (ca funcie
i ca succesiune n timp) pentru comanda operaiilor se poate descrie pe baza unor tabele de
tranziie a strilor, organigrame, limbaje de descriere, dar i pe baza unor combinaii ale metodelor
amintite. Fiecrei instruciuni interpretate de UC, i corespunde o succesiune de funcii logice de
ieire din UC, conform algoritmului dorit de proiectantul UC.
Tipurile de semnale de intrare i ieire dintr-o unitate de control tipic pot fi descrise cu
ajutorul figurii 5.1.
Csin
Cout
Intrare
Date
Csout
Unitate
de
Control
Cin
Cale
de date
Ieire
Date
Figura 5.1. Semnale de intrare i ieire al unitii de control la interfaa cu calea de date i
cu alte sub-sisteme
Capitolul 5
118
Unitatea de Control
119
Unitatea de control
Logic de
control
Registru de
instruciuni
Cale de date
Magistrale
ctre
memoria
principal
Registru stare
Figura 5.2. Unitate de control cablat, cu o structur simplificat i relaia cu calea de date
i memoria principal.
Capitolul 5
120
I1
Stri
interne
S1
Im
S11,C11
S12,C12
...
S1m,C1m
S2
S21,C21
S22,C22
...
S2m,C2m
...
...
...
...
...
Sn
Sn1,Cn1
Sn2,Cn2
...
Snm,Cnm
Figura 5.3. Exemplu general de tranziie al strilor. Pentru fiecare stare Si a automatului la aplicarea unui
set de intrri I j (pe coloan) se indic combinaia ( S ij , Cij ) ntre stare urmtoare n care va trece
automatul i setul de semnale de control generate n starea actual.
Aceast metod, dei sugestiv, este destul de greoaie n cazul n care UC are multe stri i
multe combinaii ale semnalelor de intrare. La fel ca i la urmtoarea metod amintit aici, la
descrierea prin tabel de tranziie a strilor modul de codificare al fiecrei stri este deosebit de
important din punctul de vedere al minimizrii funciilor rezultate. Pentru aceasta se folosesc
programe de proiectare asistat, care ajut la o codificare optim a strilor automatului i apoi la
minimizarea circuitelor unitii de control.
T1
T2
Clock
Secveniator
cu contor
modulo n
Cout
CLC
Tn
Cin
Figura 5.4. Exemplu de implementare cablat a unei uniti de control cu ajutorul unui secveniator modulo
n i a logicii combinaionale. Modul de defazare n timp a semnalelor Ti se poate vedea n figura 5.5b.
Unitatea de Control
121
Structura intern a unui circuit secveniator ar putea arta ca n figura 5.5. Pentru un semnal
de ceas (Clock) continuu, numrtorul cicleaz continuu prin cele n stri. Asta presupune c
numrtorul are cel puin m celule, iar n este mai mic sau egal cu 2m. Cele m ieiri ale
numrtorului sunt apoi decodificate de ctre decodificatorul 1:n care este validat prin intrarea sa de
Validare doar pe palierul pozitiv al impulsurilor de ceas. Decodificatorul genereaz semnale de
impuls {Ti} la liniile de ieire (i = 1,n). Succesiunea {Ti} mparte timpul cerut pentru un ciclu
complet de numrare n n pri egale, semnalele Ti fiind numite semnale de faz.
Posibilitatea utilizrii secveniatoarelor cu contoare modulo n, de tipul amintit mai sus, rezult i
din faptul ca multe circuite digitale sunt proiectate s realizeze un numr relativ mic de aciuni, n
mod repetat, funcionare ce poate fi descris ca o organigram constnd dintr-o singur bucl
coninnd n pai.
Daca cei n pai succesivi corespund operaiilor elementare ce se efectueaz la execuia unei
instruciuni ntr-un procesor, este util ca unitatea care controleaz aceste operaii s fie capabil s
modifice operaiile realizate ntr-un pas oarecare i, n funcie de semnalele primite pe intrare de
ctre UC i n funcie de starea i n care se gsete UC. De aceea n figura 5.4 s-au adugat i
semnalele de intrare Cin.
T1
T2
Tn
Validare
Decodificator
1:n
Clock
CLK
Start
S
End
Q
Reset
Latch
RS
R
Numrtor
modulo n
Reset
Figura 5.5a. Exemplu de structur de secveniator construit cu pe baza unui numrtor modulo n ale crui
ieiri sunt decodificate sincron cu impulsul de ceas (clock)
Capitolul 5
122
T1
T2
T3
Tn
Figura 5.5b. Diagrama semnalelor de faz Ti generate de secveniatorul modulo n din figura 5.5a.
Unitatea de Control
123
Memorie de
control
Cale de date
Magistrale
ctre
memoria
principal
Contor de instruciuni
Microsecveniator
(logic de selecie
adres)
Registru de instruciuni
Capitolul 5
124
microprogramat. Orice operaie apelat printr-o instruciune (recunoscut prin cmpul cod al
operaiei) a mainii, presupune o secven de pai ce poate cuprinde transferuri ntre registre
interne, sau registre interne i registre de memorie. Fiecare din aceti pai, realizeaz o
microoperaie, care se efectueaz prin activarea unor semnale asociate registrelor respective.
Execuia unei instruciuni main este deci compus dintr-o secven de microoperaii comandat
de un microprogram. Microprogramul este memorat de obicei ntr-un ROM de control.
Tabel (informaie)
de secveiere
Tabel (informaie)
de control
Intrri de la
calea de date
Registrul de
instruciuni
(codul operaiei)
Logic de
selecie
microadres
microadres
Memorie de
microprograme
secveniere
Comenzi
(Cout)
Figura 5.7. Schema bloc de principiu a unei structuri de control microprogramate. Informaiile de
secveniere i control incluse n microinstruciunile din memoria de microprograme au fost denumite
tabele ca n enunul structurii microprogramate a lui Wilkes.
Operaie ALU
Cond
Adresa urmtoare
Figura 5.8. Exemplu de microinstruciune cu mai multe cmpuri de control i secveniere. n afara operaiei
comandate pentru ALU se specific codul adres pentru registrele surs i destinaie, eventuali bii pentru
testarea de condiii (Cond.) i informaii diverse (Divers) de control. Cmpul de secveniere (adresa
urmtoare) se d de obicei ca adres relativ fa de adresa microinstruciunii curente sau la secvene
liniare indic doar necesitatea incrementrii micro-contorului de program.
Cea mai simpl secven de comand a unei ci de date este o secven liniar, n care starea
urmtoare a acestui automat simplu ar putea generat de un numrtor cu incrementare. n mod
obinuit adresa generat pe baza codului operaiei instruciunii este o adres de start a unui
microprogram din memoria de control. Microprogramul poate fi rulat secvenial, dar unitatea de
control trebuie s aib i capacitatea de a rspunde la semnale externe, sau condiii, prin efectuarea
de salturi, deci de ntrerupere a secvenei liniare de microinstruciuni. Salturile sunt efectuate pe
baza testrii semnalelor de la calea de date i pe baza informaiei de secveniere. Circuitul de
Unitatea de Control
125
generare a adresei urmtoare din microprogram este numit microsecveniator. Astfel c adresarea
unei microinstruciuni se poate face:
secvenial, similar cu adresarea la nivel macro a instruciunilor prin contorul de program (PC),
micro-adresa fiind generat de un micro-contor de program (PC);
salturi condiionate, prin testarea de ctre microinstruciuni a reaciilor de la calea de date;
salturi absolute prin specificatori de micro-adrese urmtoare(secveniere), saltul fiind de obicei
relativ la adresa microinstruciunii curente.
...
Cmp A
(3 bii)
...
Decodificator
1:8
Cmp B
(2 bii)
...
Microinstruciune
vertical
Decodificator
1:4
...
A0
A1
A7
8 resurse comandate de
cmpul codat A
B0 B1 B2 B3
4 resurse comandate
de cmpul codat B
Figura 5.9. Exemplu de microinstruciune vertical ce utilizeaz codarea informaiei de control n dou
cmpuri binare. Cmpul A poate comanda simultan una singur din resursele A0 - A7 prin semnalul de la
ieirea decodificatorului.
Capitolul 5
126
Unitatea de Control
127
Instruciuni
Instruciuni
Microsecveniator
Microsecveniator
Memorie de
control
(microprograme)
Memorie de
control
(microprograme)
secveniere
Registru
microinstruciuni
control
(c)
(a)
secveniere
Numr
microinstruciune
Numr
microinstruciune
TA
I(n+2)
TA
I(n+1)
I(n)
TA
control
TE
TE
TA
I(n+2)
TA
I(n+1)
TE
I(n)
TA
TE
TE
Timp
Timp
(b)
TE
(d)
Figura 5.10. Structura bloc a unitii de control i distribuirea n timp a execuiei microinstruciunilor. (a)
structura bloc cu funcionare serial, (b) sincronizarea n timp a execuiei a trei microinstruciuni succesive,
(c) structura bloc cu registru pipeline de microinstruciuni, (d) sincronizarea n timp a execuiei a trei
microinstruciuni succesive.
Capitolul 5
128
nS
nMC
MC
nRI
RI
Secveniere
Comenzi
resurse hard
interne UCP
Secveniere
Unitatea de Control
129
Intrare
R1
CLC1
etaj 1
R2
CLC2
Registru de
memorare
R3
CLC3
Circuit de prelucrare
(Circuit Logic
Combinaional
R4
CLC4
Ieire
etaj 4
Capitolul 5
130
combinaional. Aceste ieiri ale etajului se aplic la intrrile unui registru dintr-un alt etaj similar i
aa mai departe. Dac ncrcarea registrelor cu datele de la etajul anterior se face sincron cu un
impuls de ceas, perioada ceasului trebuie s fie suficient de mare astfel ca cel mai lent dintre etaje
s termine prelucrarea.
Revenind la conducta pentru instruciuni, vom presupune c este format din patru etaje, a
cror notaie i funcie este:
Etaj 1
Etaj 2
Etaj 3
Etaj 4
Funcionarea unei conducte este explicat adeseori cu ajutorul unei diagrame timp-spaiu
cum este cea din figura 5.13, corespunztoare unei conducte cu 4 etaje cu notaiile propuse mai sus.
Axa orizontal reprezint timpul n multiplii de impulsuri de ceas iar axa vertical d numrul
segmentului.
Etaj:
IF
ID
OF
EX
1
I1
2
I2
I1
3
I3
I2
I1
4
I4
I3
I2
I1
5
I5
I4
I3
I2
6
I6
I5
I4
I3
I6
I5
I4
I6
I5
I6
Impulsuri
de ceas
Figura 5.13 Diagrama timp-spaiu pentru o conduct cu 4 etaje (IF, ID, OF, EX) corespunztor unui ciclu
instruciune. S-a presupus introducerea n conducta de execuie a 6 instruciuni, notate de la I1 la I6.
(5.3)
Unitatea de Control
131
mediu de execuie al unei instruciuni n unitatea construit ca pipeline (adic k TCLK ), creterea
n vitez tinde ctre k, numrul de etaje al conductei. Aceasta este doar o limit teoretic, pentru c
pe msura creterii numrului de etaje diferenele ntre Tmediu i k TCLK se mresc. Mai mult, cu
ct crete numrul de etaje cu att mai greu este s echilibreze timpii de execuie pe fiecare etaj.
n plus apar probleme de care nu s-a inut cont n relaia calculului de cretere n vitez: salturile n
program i dependena de date i resurse hardware inter-instruciuni. Aceste din urm elemente
creeaz ceea ce se numete hazardul structurii de tip conduct.
n general exist trei probleme mari care pot face ca o conduct de instruciuni s nu funcioneze
normal:
1. Conflicte de resurse produse de accesul la aceleai resurse din dou etaje diferite ale
conductei. De exemplu accesul simultan al dou etaje la memoria principal, unul din
accese pentru aducerea codului unei instruciuni, iar cellalt pentru accesarea operanzilor.
Aceste conflicte se rezolv prin mrirea numrului de uniti funcionale (de exemplu ALU
multiple) i prin utilizarea de spaii separate de memorie pentru date i instruciuni. (hazard
structural)
2. Dependena datelor se refer la instruciuni care folosesc ca operanzi rezultate ale
instruciunilor anterioare din conduct, dar acestea nc nu au fost executate, iar rezultatul
nu este disponibil. (hazard de date). Hazardul de date se nltur fie prin metode hardware
(bypass) fie prin reordonarea instruciunilor din program.
3. Ramificrile produc probleme pentru c dac se face saltul stiva trebuie golit i nceput
procesul de execuie al instruciunilor de la adresa de salt (hazard de control). Problemele
hazardului de control se rezolv prin predicia salturilor, sau prin instruciuni de salt
ntrziat, la care se execut ntotdeauna cteva dintre instruciunile ce urmeaz dup
instruciunea de salt condiionat, n aa fel conducta s rmn plin pn la execuia
instruciunii de salt i aflarea adresei urmtoare de instruciune.
Capitolul 5
132
Efectul general al unei ntreruperi, att pentru ntreruperea hardware ct i pentru ntreruperea
software este o deviere ctre o rutin de tratare a ntreruperii (rutin de servire a ntreruperii).
Indiferent de sursa ce a generat ntreruperea cele dou tipuri sunt servite n mod asemntor, prin
saltul la o rutin de tratare a evenimentului ntreruptor sau de excepie. n literatura actual,
termenii de "ntrerupere" i "cerere de ntrerupere" sunt folosii, n general, pentru evenimente ce
produc cereri asincrone cu programul curent rulat. Excepiile - sincrone cu programul rulat - produc
devieri, care la rndul lor pot fi clasificate n mai multe tipuri.
De exemplu, dup modul de manifestare i tratare a excepiilor, Intel mparte aceste excepii n
urmtoarele categorii:
devieri ('traps'). O deviere poate fi recunoscut doar dup terminarea ciclului instruciune
curent (recunoscut doar nainte de nceperea ciclului de execuie al unei instruciuni ce
urmeaz imediat dup instruciunea n care s-a detectat excepia). Dup tratare devierile
produc reluarea programului ntrerupt ncepnd cu instruciunea urmtoare.
erori ('faults') . Sunt excepii ce sunt detectate fie nainte de nceputul execuiei instruciunii,
fie in timpul execuiei acestora. Dac erorile se detecteaz n timpul execuiei unei
instruciuni, dup tratarea erorii reluarea programului se va face ncepnd cu instruciunea
ntrerupt.
esecuri - terminari anormale ('abort'). Produc abandonarea procesului, iar rutina de tratare
afieaz mesaje stresante pentru utilizator. Eecurile sunt utilizate pentru a trata erori
severe cum sunt valori ilegale si / sau inconsecvente n tabelele sistemului sau erori de
hardware.
Din cele expuse de mai sus se observ c indiferent dac evenimentul ce produce
ntreruperea provine de la circuitele calculatorului (hardware), sau de la rularea instruciunilor
programului (software), tratarea evenimentului se face n mod asemntor:
cnd UCP recunoate o eroare sau o condiie neobinuit, el oprete obligatoriu rularea
programului aflat n execuie, i produce saltul la o rutin care va trata corespunztor
condiia aprut.
cnd UCP recepioneaz o cerere de ntrerupere, el oprete rularea programului aflat n
execuie (presupunem c sunt permise i ntreruperile mascabile) i produce saltul la o rutin
de tratare corespunztoare a cererii de ntrerupere
Conform clasificrii de mai sus, cererile de ntrerupere (asincrone) sunt ntreruperile generate
hardware (prin semnal electric). O ntrerupere generat hardware se produce ca rspuns la activarea
unui pin de intrare n UCP. Dup modul de servire al cererilor de ntrerupere, exista dou tipuri de
intrri n microprocesor (vezi i figura 5.14):
Unitatea de Control
133
cerere de ntrerupere este mascabil (notat INTR n figura 5.14), la care se poate bloca
(masca) aciunea de recunoatere a acesteia de ctre UCP. Ca urmare a mascrii programul
rulat de UCP nu va fi ntrerupt, iar semnalul de cerere de ntrerupere va fi neglijat;
cerere de ntrerupere nemascabil (notat NMI n figura 5.14). Acest tip de ntrerupere este
obligatoriu, va fi recunoscut necondiionat de UCP i ca urmare va produce deviere ctre o
rutin de tratare.
Figura 5.14. prezint schematic logica de intrare n microprocesor, pentru ntreruperile
mascabile i nemascabile.
La intrarea de ntreruperi mascabile se conecteaz de obicei linii de semnal de la
dispozitivele de I/O. Electric acest lucru este posibil pentru c la majoritatea microprocesoarelor
intrarea este activ pe nivel logic JOS fiind destinat ieirilor cu colector n gol de la dispozitive.
Intrarea INTR permite dispozitivelor externe s ntrerup execuia unui program. Pentru a asigura
recunoaterea cererii, intrarea INTR trebuie s fie meninuta la nivel activ pn cnd procesorul
confirm ntreruperea prin realizarea unei secvene de confirmare a acceptrii ntreruperii. Intrarea
INTR este eantionat la sfritul execuiei fiecrei instruciuni. n plus, ntreruperile mascabile
trebuie sa fie validate prin software (instruciuni ce produc setarea indicatorului de control a
ntreruperilor mascabile - reprezentat ca un bistabil n figur) pentru a putea fi recunoscute.
Semnalul INTR poate fi furnizat direct de un dispozitiv periferic, sau este furnizat de circuite
specializate pentru controlul si arbitrarea mai multor semnale externe de cerere de ntrerupere
(controller programabil de ntreruperi).
Microprocesor
Intrare ntrerupere
nemascabil (NMI)
SAU
SI
Comand
ntrerupere
(deviere)
Validare
INTR
Invalidare
INTR
Intrare ntrerupere
mascabil (INTR)
S
CLOCK
Q
Indicator pentru
mascarea
ntreruperilor
Intrarea NMI (pentru cerere de ntrerupere ne-mascabil) este folosit de obicei de circuitele
externe UCP care supravegheaz buna funcionare a sistemului hardware. Ele pot semnala de
exemplu erori de paritate la transferul datelor, erori de memorie, creterea peste limite a
temperaturii interne, cderea iminent a tensiunii de alimentare etc. Activarea intrrii NMI face ca
procesorul s ntrerup programul la sfritul ciclului instruciune curent i s execute automat o
rutin de servire care corespunde, de obicei, unei locaii fixe din memoria principal (ntrerupere
ne-vectorizat). Procesorul nu va servi cereri succesive NMI pn cnd tratarea cererii curente nu
este terminat.
Capitolul 5
134
time sharing = partajarea timpului procesor pentru execuia mai multor programe. Fiecrui program i se aloc un
interval de timp conform unui mecanism de planificare implementat de sistemul de operare.
Unitatea de Control
135
imediat i sunt relativ uor de rezolvat pentru tehnicianul de service. Totui, cea mai frecvent
form de erori se produce ocazional, iar erorile pot s nu fie repetitive, chiar n aceleai condiii.
Aceste erori nu se produc foarte des ci probabil doar la intervale mari, de ore sau zile. De aceea sunt
dificil de localizat, deci dificil de depanat. Totui unele erori sunt detectate automat de hardware;
iar detecia unei erori produce o deviere (trap) i astfel sistemul de operare poate decide ce trebuie
fcut. Rutina de monitorizare a sistemului de operare poate repeta aciunea pentru a vedea dac se
produce fr eroare a doua oar. Daca repetarea se face cu succes, controlul poate fi returnat
programului utilizator i nu trebuie s ne mai facem probleme cu privire la acea eroare. Dac
eroarea se produce repetat, programul utilizator va fi abandonat (aborted) i se va afia un mesaj
informativ adecvat pentru utilizator. De obicei dispozitivele de memorie au unele echipamente de
detecie a erorilor, tipic pentru generarea i detecia bitului de paritate. Paritatea permite doar
detectarea erorilor izolate, dar erorile multiple n acelai grup de bii pot s treac nedetectate.
Unitatea central de procesare rspunde la o cerere de ntrerupere (hardware sau software) i
trateaz evenimentul ce a produs ntreruperea n pai succesivi care pot fi rezumai astfel:
1. UCP identific sursa ce a produs ntreruperea. Aceast identificare se poate face fie
printr-o informaie furnizat de evenimentul ntreruptor (informaie numit de obicei
vector de ntrerupere) fie prin testarea coninutului unor registre interne pre-definite
sau a unor zone pre-definite din memoria principal. Uneori, n cazul cererilor de
ntrerupere hardware exist intrri separate de ntrerupere la care se conecteaz
dispozitive de I/O, identificarea fiind fcut automat prin identificarea intrrii de cerere
de ntrerupere activat.
2. Pe baza informaiei de identificare UCP calculeaz adresa unde se gsete rutina de
tratare a ntreruperii.
3. Se salveaz informaia de stare a programului ce va fi ntrerupt (n primul rnd
coninutul contorului de program) ntr-o memorie de tip stiv. Se face saltul la rutina de
tratare prin ncrcarea PC cu adresa de nceput a rutinei de tratare.
4. Se execut rutina de tratare a ntreruperii.
5. Se face revenire la programul ntrerupt prin restaurarea informaiei de stare.
De observat c dup ce rutina de tratare a fost executat, ea va face revenire la programul
ntrerupt (printr-o instruciune special de tip return from interrupt3) i se va continua cu execuia
acestuia. Este important ca rutina de tratare s salveze coninutul registrelor interne pe care urmeaz
s le modifice, ca s poat reface coninutul acestora nainte de revenirea la programul ntrerupt.
Dac rutina de tratare nu este scris n acest mod este foarte posibil ca programul ntrerupt s nu
mai funcioneze corect. Pentru a se realiza operaia de revenire la programul ntrerupt este necesar
s se tie locaia ultimei instruciuni executate din programul ntrerupt. De aceea n momentul
saltului la o rutin de tratare, sistemul de ntreruperi al UCP salveaz automat adresa urmtoarei
instruciuni (adresa de ntoarcere). Salvarea i restaurarea contorului de program (PC) cu aceast
adres sunt automate i nu cad n sarcina programului ntrerupt. Vom numi "vector de stare"
informaia salvat n momentul devierii; ea cuprinde de obicei nu numai adresa locaiei urmtoarei
instruciuni, dar i coninutul registrelor de stare i control ai UCP. Informaia vectorului de stare,
mpreun cu coninutul spaiului de memorie alocat programului utilizator, furnizeaz o descriere
complet a strii procesului la momentul devierii, numita context de lucru al procesului. Procesul
poate fi repornit prin restaurarea acestei informaii n registrele potrivite i n locaiile de memorie.
Cu privire la identificarea evenimentului ce a produs ntreruperea, unele procesoare produc
saltul ctre o adres diferit pentru fiecare tip diferit de condiie / ntrerupere (ntreruperi
vectorizate). Altele produc saltul la aceeai adres i stocheaz informaia pentru identificarea i
tratarea ntreruperii la anumite adrese prestabilite din registrele procesorului sau din memorie
3
Capitolul 5
136
(ntreruperi nevectorizate). n oricare din cazuri, efectul este acelai, prin saltul la un program
diferit (program care deviaz cursul normal al programului ntrerupt i care este numit "rutin de
tratare"), cunoscndu-se care este condiia care a produs aceasta devierea. Existena mecanismului
de deviere, implementat n aa numitul "subsistem de ntreruperi" prezent n toate tipurile de
procesoare, face sarcinile de programare ale utilizatorului mai simple.
n cazul ntreruperilor vectorizate identificarea se face pe baza unui vector de ntrerupere.
Cu ajutorul acestuia UCP calculeaz o adres pointer ntr-un tabel al vectorilor de ntrerupere unde
UCP gsete adresa de nceput a rutinei de tratare a ntreruperii (RTI) respective. Modul de calcul al
adresei pointer i modul de construcie al tabelei vectorilor de ntrerupere este diferit de la
microprocesor la microprocesor dei principiul este asemntor. Ca exemplificare al modului de
determinare al adresei RTI se propune exemplul din figura 5.15. Se presupune pentru simplificare
c la acest sistem pot exista doar patru dispozitive ce pot lansa cerere de ntrerupere, deci vectorul
de ntrerupere (notat VI) poate fi codificat cu doi bii. Memoria este adresabil pe octet, iar adresele
au lrgimea de 16 bii. La recunoaterea unei cereri de ntrerupere UCP citete VI de 2 bii i l
salveaz n PC pe poziiile binare cu ponderile 23 i 22 iar n acelai timp ceilali 14 bii ai PC sunt
poziionai la zero.
Adresa (hex):
0000
Contor de program (16 bii)
VI=00
Memoria principal
Salt la adresa
RTI-0
0004
Salt la adresa
RTI-1
VI=01
VI=10
0008
VI=11
000C
RTI-2
Tabela
vectorilor
de
ntrerupere
Salt la adresa
RTI-2
Salt la adresa
RTI-3
Rutina de
tratare
ntrerupere cu
VI=10
Figura 5.15. Exemplificare privind calculul adresei rutinei de tratare a ntreruperilor (RTI) pentru un sistem
cu doar patru cereri de ntrerupere posibile. Cu VI s-a notat vectorul de ntrerupere furnizat de dispozitivul
ntreruptor.
Unitatea de Control
137
n acest fel fiecare intrare n tabela vectorilor de ntrerupere din memoria principal
corespunde la 4 octei unde se poate nscrie o instruciune de salt ctre RTI specific. n
figur s-a indicat prin linie punctat saltul la rutina de tratare a cererii de ntrerupere cu
vector de ntrerupere egal cu 10. La unele microprocesoare ntre adresele pointer de
intrare n tabela vectorilor de ntrerupere poate exista o distan de 8 adrese n aa fel nct o
eventual RTI foarte scurt s poat fi introdus aici. Mai mult tabela poate fi stocate
oriunde n memoria principal i nu doar ncepnd cu adresa zero, ca n exemplificarea din
figur.
De observat c mecanismul de salt la RTI face o adresare indirect prin locaie de memorie.
Avantajul determinrii adresei rutinei de tratare, prin acest mod indirect (relativ lent) este dat de
faptul c rutinele de tratare pot fi stocate la orice adres n memoria principal. De observat c o
soluie rigid care ar stoca rutinele de tratare la adrese pre-fixate din memoria principal, pe lng
faptul c ar impune nite restricii n alocarea memoriei, ar fi foarte puin flexibil, fiind aproape
imposibil de rescris o anumit rutin de tratare, dac aceasta are lungime mai mare dect spaiul
alocat iniial.
Exemplul 1 pentru ntreruperi vectorizate
n cazul microprocesorului Z80 (mod 2 de lucru al sistemului de ntreruperi),
dac procesorul recunoate cererea de ntrerupere, lanseaz pe magistrala de
control semnale de acceptare a cererii de ntrerupere (M1+IORQ n figura 5.16).
M1+
IORQ
MP
Dispozitiv
I/O
VI
Adres pointer
n tabel
(LSB)
ARTI
INT
(MSB)
Z 80
ARTI:
Rutina
de
Tratare
Figura 5.16. Exemplu simplificat pentru salt la rutina de tratare a unei ntreruperii, n cazul
procesorului Z80, n modul 2 de ntreruperi. I = registru de ntreruperi (pstreaz octetul
mai semnificativ - MSB - al adreselor din tabelul vectorilor de ntrerupere); VI=vector de
ntrerupere, furnizat de dispozitivul de intrare/ieire (I/O) cruia i s-a acceptat cererea de
ntrerupere; ARTI=adresa rutinei de tratare a ntreruperii (este o adres pe 16 bii, iar
memoria Z80 e organizat pe octet; de aceea pentru a citi ARTI se citesc doi octei ncepnd
de la adresa pointer construit).
Capitolul 5
138
Pentru toate evenimentele care pot produce ntrerupere, este deosebit de important viteza cu
care sistemul rspunde la cerere. Timpul care se scurge nainte ca o ntrerupere s fie tratat depinde
de mai muli factori. Sursa de ntrerupere trebuie s ia n considerare aceasta ntrziere. Toi factorii
urmtori pot afecta timpul scurs pn la recunoaterea i tratarea unei ntreruperi:
dac ntreruperile mascabile sunt invalidate, o cerere INTR nu va fi recunoscut pn cnd
ntreruperile nu sunt re-validate (prin indicatorul de ntreruperi).
dac se servete o ntrerupere nemascabil, o nou cerere de ntrerupere nemascabil nu va fi
recunoscut pn cnd procesorul nu execut instruciunea de revenire din rutina de tratare a
ntreruperii (return from interrupt).
salvarea registrelor de indicatori i a altor registre consum timp.
de obicei instruciunile sunt nentreruptibile. O cerere de ntrerupere poate fi recunoscut
doar la sfritul ciclului instruciune curent. Exist i excepii de la aceast regul, care se
refer la ntreruperi software de tip faults (erori) i instruciuni cu prefix de repetare a
execuiei. Acestea din urm pot fi de obicei ntrerupte dup fiecare execuie.
dac mai mult de o ntrerupere sau excepie ateapt terminarea unei instruciuni, procesorul
le servete pe rnd, n ordinea prioritii. n general, cea mai mare prioritate din list o au
excepiile, sincrone cu programul (nu se ncadreaz aici excepiile (trap) folosite pentru a
depana un program). Urmeaz apoi cererile de ntrerupere nemascabile. Cea mai mic
prioritate o au ntreruperile mascabile.
Unitatea de Control
139
Capitolul 5
140
IN
I2
I1
Y1
Y2
YN
VS c11
c12
c1N
c21
c22
c2N
c21
c32
c3N
c41
c42
c4N
BS cM1
cM2
cMN
R1
R2
RN
P
U
S
H
P
O
P
Figura 5.17. Implementarea hardware a stivei, cu ajutorul unui set de registre cu deplasare serial
bidirecional.
n lumea microprocesoarelor exist dou convenii pentru creterea stivei: cretere ctre
adrese mici (convenia Intel) i cretere ctre adrese mari (convenia Motorola). Aici vom considera
creterea stivei doar ctre adrese mici, ceea ce nseamn c ori de cte ori se introduce un nou
articol n stiv acesta va avea adres mai mic dect anteriorul cuvnt nscris i c la scriere
registrul SP se decrementeaz. Dac memoria este organizat pe octet (fiecare octet are o adres
specific), la scriere, micorarea valorii de adres coninut n SP const n scderea din valoarea
iniial a lui SP a unui numr egal cu numrul de octei nscrii n stiv. n cazul extragerii
cuvintelor din stiv operaiile sunt inverse, coninutul registrului SP fiind incrementat
Valoarea iniial a coninutului lui SP se numete adresa de baz a stivei (baza stivei) i
aceasta se fixeaz la lansarea programului n execuie conform directivelor introduse de utilizator n
programul surs.
Transferul ntre UCP i stiva construit n memoria principal se poate face n dou moduri:
automat (de ctre unitatea de control) la ntreruperea unui program prin ncrcarea n VS a
adresei de revenire i a altor informaii de stare. ntreruperea poate s constea ntr-un salt la o
rutin de tratare de ntrerupere, sau ntr-un salt la o procedur.
prin instruciuni speciale pentru transfer cu stiva (numite PUSH i POP ca n figura 5.17,
sau MOV - mut n stiv). La fiecare ncrcare sau extragere din stiv se actualizeaz SP.
Dup cum s-a menionat la nceputul paragrafului memoria stiv este folosit pentru salvare
i restaurare automat nu numai de ctre sistemul de ntreruperi dar i de apelurile de proceduri. O
procedur este o secven de instruciuni apelat ntr-un punct al alteia, executat, dup care are loc
revenirea n secvena apelant, la adresa imediat urmtoare celei n care s-a fcut apelarea. Rutinele
de tratare a ntreruperilor produc o secven similar de aciuni, dar apelarea nu se face prin
instruciuni de tip CALL, ci ca urmare a recunoaterii unui eveniment extern, numit cerere de
ntrerupere. La unele microprocesoare exist n plus instruciuni numite "ntreruperi software", care
de asemenea folosesc stiva i care se apeleaz prin furnizarea codului instruciunii i a unei valori
(tip) de identificare. De exemplu la Intel instruciunea se scrie "INT tip"
Atunci cnd se face apel la o procedur, unitatea de control trebuie s fac salvarea valorii
Unitatea de Control
141
curente (adresa de revenire) coninut n registrului contor de program. Pentru prezentarea lucrului
cu memoria stiv de mai jos este deocamdat neimportant dac informaia salvat provine dintr-un
registru numit contor de program (PC), sau dac n afar de registrul contor (IP - Instruction Pointer
la Intel), n stiv se mai salveaz i coninutul unui registru de adres de segment, cum se ntmpl
la Intel 8086 pentru proceduri far. Dup salvare urmeaz ncrcarea PC cu adresa la care se face
saltul (adresa unde ncepe procedura). Procedura se termin cu o instruciune de salt de tip
RETURN prin care se produce ncrcarea automat a PC cu adresa de revenire la programul
ntrerupt. Alte salvri /restaurri ale variabilelor contextului ntrerupt se pot efectua n cadrul
procedurii, prin intermediul unor instruciuni de nscriere (push) / extragere (pop) din stiv.
Pentru a se urmri coninutul memoriei stiv la apelul procedurilor n figura 5.18a se prezint un
exemplu de apel de proceduri, P1 din programul principal PP i P2 din procedura P1. n cadrul
fiecreia dintre rutine s-au notat cu IN instruciuni oarecare ale programelor (cu excepia
instruciunilor de tip call, ret, int, push, pop etc., care afecteaz i coninutul stivei); cu litere mici i
dou puncte s-au notat adresele, <t> reprezint momente de timp succesive (ordinea corespunde cu
indicele folosit).
PP
IN
IN
<t0>
IN
.
CALL b
a: IN
<t4>
P1
b: PUSH R1
PUSH R2
PUSH R3
IN
<t1>
IN
CALL c
<t3> d: IN
POP R3
POP R2
POP R1
RET
P2
<t2> c:
IN
IN
IN
RET
END
Figura 5.18a. Exemplu de apel a dou proceduri notate cu P1 i P2. Pe figur s-au notat momentele de timp
la care n figura 5.18b se analizeaz coninutul memoriei stiv.
n figura 5.18b s-a prezentat poziia vrfului stivei la momente de timp succesive.
Se observ c s-a notat baza stivei (adresa iniial a vrfului stivei cu x). De asemenea s-au notat cu
aH si aL, octeii mai semnificativ (High), respectiv mai puin semnificativ (Low) ai adresei a. n
procedura P1 s-au fcut i salvri ale coninutului unor registre (presupuse cu dimensiune jumtate
Capitolul 5
142
fa de adres, n numr de bii). Restaurarea coninutului acestora trebuie fcut n ordine invers
salvrii n stiv, datorit modului de lucru al acesteia.
timp
t0
t1
t2
t3
t4
SP
SP
SP
SP
SP
adres
Memorie
x-7:
dL
x-6:
dH
x-5:
R3
x-4:
R2
x-3:
R1
x-2:
aL
x-1:
aH
x:
VS iniial
5. 18b. Coninutul stivei i indicarea adresei vrfului stivei pentru exemplul din figura 5.18a.
Unitatea de Control
143
nivel i+1
Registre
de intrare
Registre
locale
Apel procedur
Registre
de ieire
Registre
de intrare
Revenire
Registre
locale
Registre
de ieire
La fiecare moment de timp doar o fereastr de registre este vizibil i adresabil, ca i cum
nu ar exista dect acel numr limitat de registre. Fereastra este mprit n trei zone de lungime
fix. Registrele de intrare pstreaz parametrii primii de la programul (printe) ce a apelat
procedura i de asemenea pstreaz rezultatele ce vor fi returnate printelui. Registrele locale sunt
utilizate pentru variabile locale, aa cum sunt atribuite de compilator. Registrele de ieire sunt
utilizate pentru a schimba parametrii i rezultate cu urmtorul nivel inferior (procedur apelat din
procedura curent). Registrele de ieire de pe un nivel sunt fizic aceleai cu registrele de intrare de
Capitolul 5
144
Pointer fereastr
salvat
Fereastra 1
Intrare
P1
Local
P1
Intrare
P2
Local
P4
Local
P2
Revenire
Intrare
P4
Local
P3
Fereastra 3
Fereastra 2
Fereastra 4
Apel
procedur
Intrare
P3
Pointer fereastr
curent
Figura 5.20. Ferestre suprapuse de registre cu organizare circular i indicarea sensului de apel al
procedurilor respectiv revenire din procedur.
Pointerul pentru fereastra salvat identific cea mai recent fereastr salvat n memoria
principal. Astfel dac procedura P4 ar apela o alt procedur, de exemplu P5, registrul de ieire al
ferestrei 4 (identic cu registrul de intrare al ferestrei 1) ar ncerca s scrie parametrii ctre procedura
P5 peste registrele de intrare alocate procedurii P1. Astfel c atunci cnd PFC este incrementat
(modulo 4 pentru acest exemplu) el devine egal cu pointerul ferestrei salvate ceea ce va produce o
ntrerupere (excepie) iar fereastra procedurii P1 este salvat n memoria extern. La revenire, dac
prin depirea capacitii numrului de ferestre a fost necesar salvarea n memoria principal,
apare o nou ntrerupere, care va restaura informaia corespunztoare procedurii P1. Ori de cte ori
se face apelare, registrul PFC se incrementeaz, iar la revenire (return) se decrementeaz.
Unitatea de Control
145
Un bun exemplu al acestei abordri este procesorul SPARC. Procesorul SPARC4 are o
arhitectur RISC pe 32 de bii dezvoltat de firma Sun Microsystems. Arhitectura de baz este
conform modelului RISC Berkeley i utilizeaz ferestre de registre pentru a mbunti comutarea
de context i transmiterea parametrilor.
Se utilizeaz o banc de 120 de registre de 32 de bii mprit n 7 ferestre de registre plus
un set de opt registre disponibile global (16 registre 7 ferestre =112 registre plus cele 8 globale).
Fiecare fereastr conine 24 de registre mprite n trei seciuni pentru a furniza 8 registre de
intrare, 8 registre locale i 8 registre de ieire. Cele 8 registre de ieire furnizeaz cele 8 intrri
pentru urmtoarea fereastr. Dac se selecteaz o nou fereastr n timpul unei schimbri de context
sau ca urmare a apelrii unei proceduri, datele sunt copiate n registrele de ieire, care constituie
registre de intrare pentru procedura noului context de lucru. Ferestrele sunt suprapuse formnd un
lan continuu (circular) ultima fereastr avnd registre comune cu prima fereastr.
La revenire, informaia returnat la rutina apelant este pus n registrele de intrare i se execut
return.
CAPITOLUL 6
SISTEMUL DE MEMORIE
Coninut:
6.1. Organizarea ierarhic a sistemului de memorie
6.2. Caracteristici principale ale dispozitivelor de memorie
6.3. Structura si organizarea memoriilor statice cu acces aleator (SRAM)
6.4. Structura i funcionarea memoriilor dinamice cu acces aleator
(DRAM)
6.4.1. Structura i modul de lucru al unei DRAM convenional
6.4.2. Moduri de lucru de mare vitez ale DRAM
6.4.3. Moduri de remprosptare
6.4.4. Exemple de circuite DRAM cu interfa asincron
6.4.5. Circuite DRAM sincrone (SDRAM)
6.5. Memoria cache
6.6. Tehnici de adresare i alocare a memoriei
6.7. Tehnici de translatare a adreselor
6.7.1. Maparea adreselor folosind pagini
6.7.2. Mapare prin segmentare
6.7.3. Mapare segmentat-paginat
6.7.4. Memoria virtual
6.7.5. Noiuni privind protecia memoriei
Obiective educaionale:
a. Clasificarea tipurilor de memorie folosite n calculator i identificarea
principalelor caracteristici
b. Analiza modurilor specifice de funcionare ale dispozitivelor de memorie statice
i dinamice
c. Demonstrarea principalelor metode de alocare a spaiului de memorie, pentru
asigurarea conceptelor memoriei virtuale i a proteciei informaiei
Capitolul 6
148
Sistemul de memorie
149
principal" (dar i memorie intern, sau memorie operativ). Memoria principala este folosit
pentru stocarea programelor i datelor necesare la un anumit moment de timp. Programele utilizator
se ncarc (copiaz) n memoria principal doar atunci cnd se lanseaz n execuie. Memoria
principal este caracterizat de faptul c locaiile sale pot fi accesate direct i rapid de setul de
instruciuni al UCP. Memoria principal este realizat n tehnologie semiconductoare (circuite
integrate).
Ultimul nivel, cel mai ndeprtat de UCP este numit "memorie secundar" (memorie
auxiliara, sau memorie extern) i are o capacitate foarte mare de stocare i o vitez mult mai
redus dect memoria principal. Este folosit pentru stocarea programelor de sistem, a fiierelor de
program i date i altele de acest gen, care nu sunt cerute permanent de UCP. Informaia din
memoria auxiliara este accesat indirect de ctre UCP, prin intermediul sistemului de intrare - ieire
(I/O), cu ajutorul cruia informaia cerut de UCP este adus mai nti n memoria principal.
Tehnologii reprezentative pentru realizarea memoriei auxiliare sunt: magnetic (discuri i benzi),
optic, semiconductoare.
Utilizarea unei ierarhii de dispozitive de memorie este determinat de asigurarea unui
compromis ntre cerinele impuse de programele rulate (capacitatea de stocare, vitez medie de
transfer cu memoria, protecia informaiei) i costurile sistemului de memorie (tehnologie
disponibil, pre, gabarit, algoritmi de transfer ntre diferitele niveluri ale ierarhiei de memorie).
Acces direct
Acces indirect
UCP
IO
Registre de
memorie
intern
UCP
Memorie
cache
(tampon)
Memorie
auxiliar
(extern)
Memorie
principal
S
c, v
Figura 6.1 Evidenierea organizrii ierarhizate a memoriei ntr-un sistem de calcul: Nivelul 1 este
nivelul de memorie intern UCP, iar pe nivelurile 2 i 3 se gsesc memoria principal, respectiv memoria
auxiliar (extern), privit ca un echipament periferic de I/O pentru stocarea datelor. Parametrii viteza (v),
cost specific (c) i capacitate de stocare (S), cresc n direciile indicate de sgeile de sub figura. Memoria
cache este o memorie tampon, intermediar nivelurilor 1 i 2.
Capitolul 6
150
memorare) numit memorie "cache". Aceast memorie are doar rol de memorie temporar, fiind un
tampon de vitez mare ntre registrele interne ale procesorului i registrele ce constituie locaiile
memoriei principale. Memoria cache conine n permanen doar copii din memoria principal ale
zonelor de program i date active la un moment dat. Spre deosebire de cele trei niveluri de
organizare a memoriei, memoria cache este transparent pentru programator / utilizator (nu este
vazut efectiv, pentru c nu exist adrese separate pentru cache i pentru memoria principal. S-a
mers chiar mai departe, nct la multe din procesoarele moderne se folosesc dou niveluri
intermediare de cache, cel mai apropiat de UCP fiind mai mic i mai rapid i ncastrat n acelai
circuit integrat cu UCP. Conform aceluiai principiu de compensare a diferenelor de vitez dintre
niveluri, ntre memoria principal i memoria auxiliar pot aprea niveluri de memorie tampon, de
asemenea transparente utilizatorului. Asemenea memorii tampon sunt specifice fiecrui dispozitiv
periferic folosit ca memorie extern i se gsesc de obicei n cadrul circuitelor de control ale acestor
dispozitive.
Este important de observat (figura 6.1) c datorit vitezei mari de lucru a memoriei cache,
este de preferat ca toate operaiile procesorului s se desfoare cu memoria cache, care permite de
obicei citiri / scrieri ntr-o singur perioad de ceas. Pentru ca acest lucru s fie posibil, circuitul
care controleaz memoria cache (controller de cache) trebuie s fac o anticipare a zonei din
memoria principal n care se gsesc informaiile ce vor fi cerute de programul rulat de UCP.
Controllerul este responsabil de copierea acestor informaii din memoria principal n memoria
cache i de scrierea n memoria principal a zonelor de date ce se elimin din cache i care au fost
modificate n cache.
Memoria principal are un timp de acces moderat ca valoare (zeci de nanosecunde) i o
capacitate de stocare mai mare de civa zeci de mega-octei. Transferul direct ntre UCP i
memoria principal se face numai n cazul cnd informaia cerut nu a fost gsit n cache
(evenimentul este numit ratare la acces cache1).
Memoria auxiliar poate fi realizat n diferite tehnologii, avnd capaciti de stocare mari i
foarte mari (peste ordinul giga-byte n prezent), iar timpul de acces depinde puternic de tipul
memoriei auxiliare i de modul cum se face transferul de informaie ntre memoria auxiliar i cea
principal. Legtura direct dintre cele doua niveluri de memorie, simbolizat n figura 6.1, indic
un transfer prin acces direct la memorie (DMA2) ntre perifericul memorie auxiliar i memoria
principal. Transferul de informaie ntre memoriile principal i auxiliar poate fi fcut ns i prin
intermediul UCP, cnd UCP citete sau scrie prin program memoria auxiliar.
Schimbul de informaii ntre diversele niveluri ale memoriei, trebuie s aib un caracter
transparent pentru utilizator. Aceasta se realizeaz prin folosirea unor resurse hardware i a unor
tehnici software pentru administrarea i alocarea spaiului memoriei (principale) cu acces direct.
De obicei, la rularea unui program se folosete proprietatea numit localizarea referinelor
la memorie. Pe baza acestei proprieti sistemul de memorie pstreaz cele mai recent accesate
articole, pe ct posibil, n memoria cea mai rapid (care are i cea mai mic capacitate de stocare).
Localizarea referinelor la memorie, observabil n majoritatea programelor, se exprim sub dou
forme:
localizare temporal a referinelor: dac programul face acces la o celul de memorie la
momentul t, este foarte probabil ca programul s fac din nou acces la aceeai celul la
momentul t +
localizare spaial a referinelor: dac la momentul t programul face acces la o celul de
memorie de adres X, este foarte probabil ca la momentul t + programul s fac acces la
celula de adres X + .
1
2
cache mis
DMA = Direct Memory Access
Sistemul de memorie
151
Pentru a folosi proprietatea referinelor localizate n timp, datele cele mai recent accesate
trebuie pstrate ct mai aproape de procesor. Pentru a folosi proprietatea referinelor localizate n
spaiu la transferul ntre niveluri trebuie mutate blocuri continue de date i nu cuvinte individuale.
Dar organizarea ierarhic i folosirea proprietii localizrii referinelor la memorie, face ca
pe diferite niveluri ierarhice s existe informaii copii ale aceluiai bloc de date, date ce pot fi
modificate doar pe nivelul cel mai apropiat de UCP, sau i pe nivelurile inferioare. De aceea
sistemele de memorie multi-nivel, cu posibilitatea de scriere-citire trebuie s satisfac dou
proprieti privind informaia stocat:
proprietatea de incluziune
proprietatea de coeren
Memory
Level 1
CPU
Memory
Level i
Block
A
Memory
Level i+1
Block
B
Figura 6.2. Sistemul de memorie indicat ca o succesiune de niveluri de memorie. Creterea distanei fa de
UCP reprezint, n general, o cretere a timpului de acces, dar i o cretere a capacitii de stocare.
Capitolul 6
152
Sistemul de memorie
153
instruciuni. Aceast valoare, numit uneori cuvnt calculator, este specific fiecrui procesor i
este, n general, un multiplu de octet. Ca urmare viteza de transfer poate fi exprimat i ca:
w
bM =
[bii/sec]
(6.3)
tM
Atunci cnd tM este diferit de tA se folosesc amindou mrimile caracteristice pentru a
msura viteza memoriei. Din punctul de vedere al cuplrii memoriei la UCP timpul de acces (tA)
este deosebit de important pentru c arat timpul ct procesorul trebuie s atepte dup iniierea
unui acces la memorie.
Timpul de ciclu al memoriei este definit ca timpul minim ce trebuie alocat ntre iniierea a
doua operaii succesive cu acelai dispozitiv de memorie (scriere sau citire). Timpul de ciclu pentru
un dispozitiv de memorie, poate s fie diferit, n funcie de operaiile de scriere sau citire. Pentru
memoriile semiconductoare statice (bipolare sau CMOS) cele dou intervale de timp sunt foarte
apropiate. Cel mai des ns tM > tA pentru alte tipuri de memorie, cum ar fi cele semiconductoare de
tip RAM dinamic (DRAM), din cauza naturii distructive a operaiei de citire i a necesitii
remprosptrii ulterioare a informaiei stocate. Desfurarea n timp a operaiilor unui ciclu de
lucru cu memoria poate fi descris prin figura 6.3.
Timp de ciclu al memoriei
Timp de acces
Timp de
cutare
Timp de
transfer
Timp de
ateptare
Timp
t1
t2
t3
t4
Figura 6.3. Explicativ la desfurarea n timp a operaiilor de acces la un dispozitiv de memorie.
n figura 6.3. s-au notat momentele de timp semnificative ale unui ciclu de acces la
memorie. Astfel la momentul t1 se face referirea la memorie (prin adres i semnale de control selecie). La momentul t2 locaia adresat a fost gsit. La momentul t3 informaia adresat este
complet transferat (scriere sau citire), iar la momentul t4 este permis o nou referire la acelai
dispozitiv (circuit) de memorie.
Costul dispozitivului de memorie nu cuprinde de obicei doar costul celulelor de stocare ci i
pe cel al echipamentelor periferice sau circuitelor de acces necesare n funcionarea memoriei. Se
exprim de obicei global, pe niveluri de memorie, sau pentru ntreaga memorie a unui calculator, n
uniti specifice, (cost/bit). Valoarea specific se obine prin mprirea costului total al blocului,
sau sistemului de memorie la capacitatea total de stocare. Exist o contradicie ntre viteza
memoriei i costul pe bit: costul specific al memoriei scade pe msur ce crete timpul de acces
(scade viteza de acces) la memorie i, de fapt, aceast relaie constituie fundamentul tehnicoeconomic al realizrii memoriei sub form de mai multe niveluri ierarhice.
Puterea consumat se exprim de obicei ca putere consumat raportat la un bit de
informaie, obinndu-se prin mprirea puterii totale consumate de memorie la capacitatea de
stocare.
Capitolul 6
154
p=
Ptot
S
[W/bit]
(6.4)
Geometria sau modul de organizare al memoriei este exprimat sub forma M N, unde M
reprezint numrul de cuvinte posibil de memorat, iar N dimensiunea cuvntului, n bii.
Caracteristica numit geometrie este folosit doar pentru dispozitive de memorie din memoria
principal. Este o caracteristic important din punctul de vedere al accesrii informaiei din
memoria principal, pentru c indic cantitatea minim de informaie adresabil. Dac memoria
este organizat pe octet, atunci N = 8 i fiecrui octet i se aloc o adres specific, chiar dac
magistrala de date este de 32 sau de 64 de bii.
Alterabilitate. Este caracteristica care se refer la posibilitatea modificrii, de ctre procesor
(on-line) a informaiei nscrise ntr-un dispozitiv de memorie. La circuitele semiconductoare ROM,
metoda utilizat pentru scrierea informaiei n memorie este ireversibila; nu mai poate fi modificat
n timpul funcionrii memoriei. La PROM-urile semiconductoare schimbarea, (PROM i EPROM)
schimbarea coninutului se poate face off-line prin programarea memoriilor cu ajutorul unui circuit
programator. Toate aceste circuite sunt incluse n categoria celor ne-alterabile. Dispozitivele de
memorie alterabile sunt cele la care coninutul poate fi modificat de ctre UCP n timpul rulrii
programelor. Ca exemple putem specifica dispozitivele RAM statice i dinamice, discul magnetic,
banda magnetic etc.
Permanenta stocrii. Procesul fizic folosit pentru stocarea informaiei este uneori instabil,
astfel c informaia s-ar pierde dup un timp dac nu se iau msuri de restaurare. Exist trei
evenimente care pot duce la pierderea informaiei stocate:
citire distructiv
stocare dinamic
volatilitatea
Citirea distructiv se refer la faptul c dac o celul de memorie este citit, informaia din
celul este alterat i ea trebuie restaurat imediat dup citire. Citirea distructiv se datoreaz n
primul rnd fenomenului fizic folosit pentru stocarea informaiei i apoi structurii hardware a
celulei. Exemple de celule la care citirea este distructiva: celule dinamice cu un singur tranzistor
unipolar de acces i celule pe baz de ferit. Citirea trebuie urmat obligatoriu de operaia de
scriere, pentru restaurarea informaiei. Operaia este efectuat de ctre circuite specifice
dispozitivului de memorie i nu intr de obicei n sarcina UCP.
Stocarea dinamic a informaiei se refer la stocarea n celule ce folosesc capacitoare MOS.
Aceste capacitoare se descarc n timp, i dac informaia coninut nu este remprosptat dinamic
(condensatoarele re-ncrcate), la intervale pre-stabilite informaia se pierde.
Memoriile volatile sunt cele care pierd informaia la pierderea tensiunii de alimentare.
ncadrm aici toate memoriile RAM semiconductoare, indiferent c sunt dinamice sau statice. Ca
exemple de memorii nevolatile: ROM, PROM, EPROM, EEPROM, disc, band etc.
Sistemul de memorie
155
Magistral
a
DCD
adrese
Comenzi interne
w
Circuite de control
i temporizare
CS
R/W
OE
Amplificatoare de
intrare-ieire
Magistral
date
Figura 6.4. Schem bloc pentru memorie RAM static cu adresare uni-dimensional
a locaiilor de memorie
Capitolul 6
156
Adres
ax
DCD
adrese
X
Matrice de
memorie
Nx
Ny
ay
DCD
adrese
Y
Figura 6.5. Schem bloc care indic selecia bidimensional a matricei de celule de memorie
Celulele de memorie din figura 6.5 sunt selectabile individual, prin adresa de linii i adresa de
a
Sistemul de memorie
157
8
8K celule
3
8K celule
2
8K celule
1
8K celule
128
DCD
X
128
ADRES
64
64
DCD
Y
6
Figura 6.6. Schem bloc de principiu pentru o memorie SRAM cu capacitatea 8k 8 bii i selecie
bidimensional.
ADRES
DCD
X
256
Matrice de Memorie
256 256 celule
32
32
32
5
MDX
0
MDX
0
MDX
0
d0
d1
d7
Amplificatoare de
citire/scriere
8
La magistrala
de date
Figura 6.7. Exemplu de memorie RAM static cu dimensiunea de 8k 8 i selecie bidimensional a matricei
de memorie.
Capitolul 6
158
Selecia este bidimensional, iar n locul decodificatorului de coloane s-au introdus circuite
multiplexor / demultiplexor (MDX). Structura unui asemenea circuit poate fi gsit n [Stefan93].
Circuitul MDX conine un decodificator, iar la ieirea sa se comand pori de transfer de tip MOS.
Atunci cnd se face citire funcionarea circuituitului este cea specific demultiplexorului, iar cnd
se face scriere funcionarea este de multiplexor.
Conform caracteristicilor prezentate n paragraful anterior, fiecrui dispozitiv de memorie
care lucreaz cu procesorul i se impun anumite condiii i restricii de timp. Acestea sunt descrise
de obicei prin diagrame de semnale n timp, pe baza unor cicluri caracteristice de funcionare ale
dispozitivelor de memorie.
Pentru o memorie static cu acces aleator ciclurile caracteristice de funcionare pot fi doar
cele de citire i de scriere. n figura 6.8.a se prezint un ciclu tipic de citire, iar n figura
6.8.b un ciclu tipic de scriere.
tCR
ADR
ADRES
CS
R /W
Ieiri
date
tAC
HiZ
HiZ
DATE VALIDE
tAA
tCW
ADR
CS
tW
R /W
tAW
Magistral
date
tDW
tDS
tDH
Sistemul de memorie
159
n cele dou figuri s-au notat intervalele de timp importante, cu urmtoarea semnificaie:
tCR = durata ciclului de citire (se impune ca timp minim pentru funcionarea corect a
memoriei)
tAA = timp de acces de la activarea adreselor (se garanteaz ca o valoare maxim ce se poate
obine)
tAC = timp de acces de la activarea semnalului CS (se garanteaz ca o valoare maxim ce
se poate obine)
tHD = timp de meninere a datelor (valoare minim impus)
tCW = durata ciclului de scriere (se impune ca timp minim pentru funcionarea corect a
memoriei)
tW = durata semnalului de comand de scriere (write - este valoare minim n catalog)
tDS = timp de prestabilire date (valoare minim impus)
tDH = timp de meninere a datelor (valoare minim impus)
tDW = ntrzierea validrii datelor la intrare
tAW = ntrziere ntre stabilirea adreselor i semnal de control de scriere
Toate restriciile de timp se indic n foile de catalog ale dispozitivelor de memorie i ele
trebuie privite ca limitri n viteza cu care se desfoar comunicaia dintre UCP i respectivul
dispozitiv. n general valorile de catalog ale acestor timpi trebuiesc considerate ca valori minime,
sub care nu este bine sa se scad. Acestea limiteaz frecvena maxim a operaiilor efectuate de
UCP cu memoria. De asemenea n cazul valorilor timpilor de acces este bine s se considere
valorile maxime date n catalog ca valori dup care UCP este sigur c datele au fost citite (de pe
magistrala de date) sau nscrise n memorie. De aici rezult uneori necesitatea unor mecanisme de
sincronizare (de tip READY) ale UCP cu dispozitivele de memorie.
n figura 6.8.a s-au reprezentat terminalele de ieire ale dispozitivului de memorie, terminale
ce se cupleaz la magistrala de date. Ele se gsesc n stare de nalt impedan pn n momentul
cnd s-a scurs timpul de acces i atunci cnd dispozitivul de memorie este neselectat. Pentru ciclul
de scriere din figura 6.8.b zona haurat a magistralei de date reprezint valori neimportante pentru
ciclul de scriere. Poriunea ne-haurat reprezint datele stabile puse de microprocesor pe
magistrala de date, pentru a putea fi scrise corect n dispozitivul de memorie.
6.4. STRUCTURA I FUNCIONAREA
MEMORIILOR DINAMICE CU ACCES ALEATOR (DRAM)
Acest tip de memorii se numesc "dinamice" datorit principiul de lucru al celulelor interne.
n fiecare celul se reine informaia sub form de sarcin electric ntr-un capacitor MOS3.
Indiferent de tehnologia de realizare sarcina electric dintr-un capacitor se descarc lent. n cazul
memoriei, pierderea sarcinii, nseamn pierderea informaiei - circuitul "uit" informaia stocat.
Pentru a preveni acest fenomen, din timp n timp, informaia trebuie remprosptat, adic
condensatoarele trebuie rencrcate cu informaia stocat anterior. Aceasta nseamn c informaia
poate fi pstrat doar printr-o funcionare dinamic, ce presupune ncrcarea periodic a
condensatoarelor interne.
Dispozitivele DRAM4 sunt n prezent cele folosite dispozitive pentru construirea memoriei
principale a calculatoarelor de uz general, pentru c ele prezint cea mai mare densitate de integrare
dintre tehnologiile adecvate memoriei principale i totodat prezint cel mai mic cost pe bit.
3
4
Capitolul 6
160
Structura bloc a unui circuit DRAM convenional este prezentat n figura 6.9.
Amplificatoarele senzor din figur sunt circuite care genereaz nivel logic 0 sau 1 pornind de la
tensiunea de pe condensatorul - celul selectat. De cte ori se selecteaz o linie, acelai circuit
amplificator face i renscrierea tuturor condensatoarelor de pe linia respectiv.
RAS
a
2
a
2
Registru
adres
linie
Matrice de Memorie
DCD
linii
a
2
a
2
2 *2
a
2
Dout
Buffer
I/O
Amplificatoare senzor
i pori transfer I/O
Din
DCD Coloane
Registru
adres
coloan
RAS
Ready
CAS
Alte comenzi
interne
Circuit de Control
CAS
CAS
RAS
WE
OE
Figura 6.9. Structura bloc a unui circuit DRAM convenional i semnalele tipice de interfaare
cu procesorul
Sistemul de memorie
161
Circuitele de control ale memoriei principale construite cu DRAM au trei sarcini principale:
separarea adreselor de la UCP n adrese de linii i adrese de coloan;
activarea corect a semnalelor RAS , CAS , WE
transmisia i recepia datelor citite sau scrise
generarea semnalelor de control pentru remprosptare (la unele memorii trebuie generate
din exterior i adresele de remprosptare)
Noile concepte ale DRAM moderne cum sunt modul de lucru prin ntreesere i modul
pagin, creeaz sarcini suplimentare pentru circuitul care controleaz DRAM. De aceea controllerul
extern de memorie reprezint o parte extrem de important a calculatorului. n ceea ce privete
semnalele furnizate DRAM (figura 6.10), adresele de linii i coloane trebuie s fie stabile nainte
(timp de pre-stabilire5) i dup apariia frontului descresctor al RAS respectiv CAS (timp de
meninere6).
n mod normal selecia celulei pentru citire sau scriere nu mai are loc dac succesiunea
RAS - CAS nu s-a produs (Exist ns situaii cnd aceast ordine este nclcat, la memoriile
moderne unde remprosptarea se face cu activare CAS nainte RAS ). Mai specificm pe scurt
cteva caracteristici pentru semnalele de control i temporizrile la DRAM convenionale:
WE = 0 comand scriere, iar WE = 1 citire. Dac WE trece n zero naintea lui CAS (ciclu de
scriere n avans) ieirile de date rmn n HiZ de-a lungul ntregului ciclu de scriere. Dac ns
WE trece n zero dup CAS (ciclu de scriere - citire) dup operaia de scriere datele apar i
la ieirile de date ale circuitului. La scriere, ultimul dintre semnalele CAS i WE (fronturi
cztoare) capteaz datele pentru scriere n celul.
Semnalul RAS mai contribuie la activarea decodificatorului de linii i a circuitelor de
remprospatare.
5
6
Capitolul 6
162
ADR
C
HiZ
Ieire
DATE
HiZ
HiZ
Date
Date
Date
tCAC
tRAC
Figura 6.10. Cicluri de acces pentru citire la DRAM convenional. Pe formele de und ce simbolizeaz
magistrala de adrese s-a notat cu L adresa de Linie i cu C adresa de Coloan.
Principiul de lucru n modul pagin consider c pagina corespunde unei adrese de linie i
toate adresele de coloan, cu aceeai adres de linie se gsesc n aceeai pagin. n mod pagin
controllerul de memorie schimb n mod repetat doar adresa de coloan. De aceea o pagin este
echivalent unei linii din matricea de celule de memorie.
Sistemul de memorie
163
RAS
CAS
ADR
Ieire DATE
L
HiZ
Date
Date
Date
Date
De exemplu, pentru un DRAM 4 Mbit (cu matrice 1024 linii x 4096 coloane; 1M x 4) o
pagin are 1024 locaii (a cte 4 bii).
La citire, sau scriere, RAS rmne activat, iar CAS se activeaz de mai multe ori, pentru a
valida adrese din aceeai pagin. Toate tranzistoarele de acces ale liniei selectate (prin adresa de
linie unic paginii) de ctre decodificatorul de linii, rmn deschise. Toate datele citite de la liniile
de bit sunt meninute ntr-o stare stabil de ctre amplificatoarele senzor. Decodificatorul de
coloane va decodifica noua adres de coloan i va deschide porile de transfer corespunztoare. Se
observ c n modul pagin, timpul necesar pentru ncrcarea adresei de linie i timpul de transfer i
decodificare a adresei de linie nu se mai adaug la timpul de acces, ncepnd cu cel de-al doilea
acces pe aceeai linie. Dup iniializarea adresei de linie (pagin) se transfer i se decodific doar
adresa de coloan. Astfel c, n comparaie cu modul standard de acces, timpul de acces este redus
cu aproximativ 50% iar timpul de ciclu cu aproximativ 70%.
Durata activa a lui RAS nu poate fi ns foarte mare din motive de stabilitate. Tipic, se pot
executa aproximativ 200 de accesri succesive ntr-o pagin naintea necesitii ca dispozitivul de
control a memoriei s dezactiveze semnalul RAS pentru un interval de un ciclu.
Procedurile de scriere i citire pot fi mixate n mod pagin, fr a fi nevoie s se prseasc
acest mod cnd se comut de la scriere la citire sau invers.
Mod coloan static ("static column mode")
Este asemntor modului pagin (vezi figura 6.12). La modul coloan static semnalul CAS nu mai
comut pentru fiecare adres nou de coloan, ci rmne stabil la nivel jos. Dup un scurt timp de
rspuns circuitul controller DRAM intern recunoate c adresa de coloan furnizat s-a modificat.
Spre deosebire de modul pagin se economisete timpul suplimentar pentru comutarea CAS i
timpul de rspuns, deci acest mod este mai rapid dect anteriorul.
Nici la acest mod de lucru nu este permis ca RAS i CAS sa rmn n stare activ (nivel
jos) pentru o perioad foarte lung de timp. Prin logic intern pe chip se face deschiderea (ctre
tamponul I/O) doar a porilor ce corespund noii adrese de coloan.
Capitolul 6
164
RAS
CAS
ADR
Date
Ieire DATE
Date
Date
Date
Date
Date
Este un mod rafal simplu, prin care 4 bii de date dintr-o linie i de la patru adrese
succesive de coloan, sunt transmii secvenial spre exterior (un nibble este echivalent cu jumtate
de octet) prin comutarea lui CAS care e repetat de 4 ori. Prima dat accesat este determinat de
adresa de coloan furnizat circuitului, iar urmtoarele trei sunt de la adresele succesive de coloan.
RAS
CAS
ADR
Ieire DATE
L
HiZ
Date
Date
Date
Date
n mod nibble DRAM are intern (pe chip) un tampon intermediar de 4 bii, care
recepioneaz simultan cei 4 bii succesivi de date i i scrie apoi unul dup altul la tamponul de
iesire, sincronizat cu semnalul de CAS . Operaia de transfer se efectueaz foarte rapid, pentru c
toi cei 4 bii adresai (unul explicit i 3 implicit) au fost deja transferai ctre tamponul (buffer-ul)
intermediar.
Modul rafal - burst (sau mod serial)
Poate fi privit ca o extindere (o versiune extins) a modului nibble. i aici, biii de pe o linie
adresat sunt furnizai sincronizat cu CAS . Diferena fa de modul nibble este c numrul de
Sistemul de memorie
165
comutri a lui CAS nu mai este limitat la 4. n principiu, se poate accesa pe chip o ntreag linie de
date succesive - n rafal. n acest caz organizarea intern a chip-ului joac un rol foarte important,
pentru c la un chip de 4 Mbit linia poate avea de exemplu 1024, 2048 sau 4096 coloane.
RAS
CAS
ADR
L
HiZ
Ieire DATE
Date
Date
Date
Date
Date
Adresele de linie i coloan furnizate identific doar adresa de start a accesului. Circuitele
interne DRAM incrementeaz adresa de coloan independent. Modul rafal (serial) este avantajos
pentru citirea memoriei video sau pentru umplerea unei linii de cache, pentru c accesrile de citire
pentru un controller CRT sau pentru un controller de cache sunt n mod natural seriale pe numr
mare de bii.
Ciclu remprosptare
RAS
CAS
ADR
Refresh
Refresh
Capitolul 6
166
RAS
CAS
Remprosptare ascuns
Este de asemenea o metoda elegant, care economisete timpul de lucru cu DRAM (figura
6.17). Aici ciclul de remprosptare se produce ascuns n spatele unui ciclu de acces de citire
normal. Cnd se face aceast remprosptare, semnalul CAS e meninut jos, iar RAS este comutat.
Datele citite n timpul ciclului vor fi prezente n continuare la ieirea circuitului, chiar i n timpul
remprosptrii. Ca durat, un ciclu de remprosptare este mai scurt dect un ciclu de citire i de
aceea acest mod de remprosptare economisete timpul. i aici exist un contor de adrese de
remprosptare intern n DRAM. Dac semnalul CAS este meninut jos un timp suficient de lung,
pot fi efectuate mai multe cicluri de remprosptare, unul dup altul, prin comutarea lui RAS .
Sistemul de memorie
167
Ciclu remprosptare
RAS
CAS
ADR
L
HiZ
Ieire DATE
Date valide
Registru
adrese
linie
DCD
linie
Matrice celule de
memorie
Address
Logic remprosptare
(timer, arbiter)
Amplificatoare senzor i
pori de transfer I/O
D
DCD coloane
Registru
adrese
coloane
Din
Dout
Figura 6.18. Diagram bloc Extended Data Out (EDO). Se adaug un latch de memorare la ieire care
permite comutarea mai rapid dect la FPM a CAS
Capitolul 6
168
DRAM
Nu au intrare de ceas (sistem)
Control RAS pe nivel
operare cu o singur banc de
memorie
un transfer pentru fiecare adres de
coloan (sau impuls de selecie
coloan) furnizat
ntrzierea la citire (read latency) este
neprogramabil
SDRAM
lucreaz cu frecvena ceasului de sistem
control RAS prin impuls (tranziie)
dou bnci de memorie pe chip cu
ntreeserea adreselor
transfer rafal (burst) cu 1, 2, 4, 8, sau
256 transferuri pentru o singur adres de
coloan furnizat
ntrzierea la citire este programabil
Sistemul de memorie
169
Capitolul 6
170
programelor. Conform proprietii referinelor localizate dac un ntreg bloc de instruciuni este
copiat din memoria principal n cache, exist o mare probabilitate ca un timp toate accesrile s se
fac la cache.
Atunci cnd UCP lanseaz o adres pentru a face acces la memoria principal se
examineaz mai nti coninutul memoriei cache. Daca cuvntul este gsit, este citit din cache, iar
dac nu este gsit, se acceseaz memoria principal pentru citirea cuvntului. Deoarece accesul la
cache se efectueaz foarte rapid, de obicei ntr-o perioad de tact, procesorul va controla direct
aceste operaii, n timp ce accesul la memoria principal, mai lent, se va efectua sub controlul
unitii de comand a memoriei cache. Transferul ntre memoria principal i cache nu se face ns
la nivel de cuvnt ci la nivel de bloc de cuvinte, bloc care cuprinde i cuvntul adresat de UCP i
negsit n cache. Dac un cuvnt cutat se gsete n cache se spune ca s-a produs un acces reuit la
cache (sau pe scurt o reuit, "cache hit" n limba englez). Dac cuvntul cutat nu este n cache sa produs o ratare ("cache miss"). Performana memoriei cache este adesea msurat cantitativ prin
aa-numitul raport de reuit ("hit ratio", notat n continuare cu hr). Valoarea acestuia se calculeaz
ca raport ntre numrul total de reuite i numrul total de accesri la memorie (ratri plus reuite).
Acest raport se msoar de obicei prin rularea unor programe de test reprezentative pentru clase de
programe. Valoarea lui hr este subunitar dar mai mare dect 0,9. Timpul mediu de acces la o
memorie se mbuntete considerabil dac se utilizeaz memorie cache. De exemplu dac timpul
de acces la memoria cache este de 10 ns, iar la memoria principal de 100 ns, iar hr = 0,9 rezult un
timp de acces mediu de 19 ns. ( din 10 accesri nou sunt reuite).
9 10 + 100
t acm =
= 19ns
10
Un algoritm special de anticipare aduce n memoria cache secvenele de program care urmeaz
logic unei instruciuni deja executate. Procesorul execut programele fr s simt practic c
memoria de lucru este mai lent. Factorul de succes al memoriei cache este legat de dimensiunea sa
i de eficiena algoritmului de nlocuire a informaiei din cache.
Din punctul de vedere al structurii i organizrii memoriei cache exist trei tehnici
principale (tehnici de mapare):
1. mapare asociativ
2. mapare direct
3. mapare asociativ pe seturi.
Mapare Asociativ
Sistemul de memorie
171
de la UCP
Registru adrese
Registru date
adrese
date
Registru adrese
Registru date
la RAM
La lansarea unei adrese de ctre UCP aceasta se compar cu toate adresele memorate n
matricea de adrese a memoriei cache asociative. Dac compararea combinaional conduce la o
reuit data corespunztoare apare la ieire i se nscrie n registrul de date (pentru operaia de
citire).
Mapare direct
Memoriile asociative sunt scumpe i de aceea s-au cutat metode de organizare cu ajutorul
unor memorii RAM statice. Exemplificarea acestei mapri este prezentat n figura 6.20. Adresa de
a bii (n exemplul din figur a = 32) este logic mprit n dou cmpuri, numite index (cel mai
puin semnificativ, care din punct de vedere logic poate fi privit ca fiind format din alte dou
cmpuri: bloc i cuvnt) i respectiv etichet. Indexul are un numr k de bii, numr determinat de
dimensiunea memoriei cache (2k cuvinte adresabile prin index), valoarea sa constituind adresa
pentru memoria cache. n cache se stocheaz nu numai data corespunztoare ci i eticheta (din
format din a-k bii) asociat datei. De asemenea, lng etichet mai pot fi nscrise i alte informaii
cum ar fi:
bit ce indic dac datele sunt valide sau locaia e privit ca fiind goal,
bit de protecie la scriere a locaiei etc. Protecia la scriere este util atunci cnd datele se
refer la rutine ale sistemului de operare.
La citire cmpul etichet al adresei de memorie de la UCP este comparat cu eticheta
cuvntului gsit n cache i avnd aceeai adres de index cu adresa de memorie. Dac se potrivesc,
s-a produs un eveniment de reuit. Pot exista 2a-k cuvinte cu acelai index deci stocabile n aceeai
linie de memorie cache. Dac se acceseaz repetat dou sau mai multe adrese cu acelai index
(distana ntre dou asemenea adrese succesive este 2k) factorul de reuit scade mult.
Dar atunci cnd se produce o ratare nu se aduce un singur cuvnt ci un ntreg bloc de
Capitolul 6
172
cuvinte, cu aceeai adres de bloc. Blocurile sunt alese cu dimensiunea putere a lui doi. Mai mult,
n cache se stocheaz o singur dat eticheta unui bloc, pentru c ea este aceeai pentru toate
cuvintele blocului. n figura 6.20 s-a presupus c se folosete o adres de memorie de 32 de bii,
dintre care 8 bii sunt folosii pentru etichet, 20 de bii pentru adresarea blocurilor de memorie i 4
bii pentru adresarea cuvintelor n blocuri (deci 16 cuvinte pe bloc de cache).
Index (k bii)
a-k bii
b bii
etichet
c bii
bloc
cuvnt
b=20 bii
c=4 bii
cuvnt
etichet
0
00000 H
00001 H
00002 H
1D
00003 H
FFFFF H
Figura 6.20. Exemplu de mapare direct la memoria cache. S-a haurat cuvntul gsit n cache
la adresa de memorie: 1D00002E hex
Sistemul de memorie
173
adres etichet
bloc
00000
00001
00010
00011
cuvinte
...
etichet
cuvinte
...
Pentru scrierea n memoria cache se folosesc dou strategii principale, pe care le-am amintit i la
organizarea pe niveluri ierarhice a memoriei:
scriere cu propagare ctre nivelurile inferioare de memorie ("write-through"), notat pe
scurt WT
scriere prin actualizarea nivelurilor inferioare n momentul nlocuirii informaiei din
cache ("write-back"), notat pe scurt WB.
La pornire, pentru scrierea n cache, se foreaz ratri pentru toate liniile memoriei cache,
pn cnd memoria cache se umple cu date valide.
Capitolul 6
174
date
UCP
control
MMU
Cache
(acces
direct)
MP
(acces
indirect)
MA
adrese logice
adrese fizice
Se folosesc trei procedee de translatare a adreselor logice n adrese fizice toate bazndu-se pe
o divizare a spaiului adreselor logice n blocuri de adrese logice continue, dup cum
urmeaz:
segmente de lungime arbitrar;
pagini (n spaiul adreselor logice) i cadre-pagin / blocuri (n cadrul adreselor
fizice), de lungime fix;
combinaii de adresare segmentat-paginat.
Mecanismul de translatare, indiferent c se folosesc pagini sau segmente, se produce n faza
de execuie a programului i include printre altele, un tabel de translatare prin care se face
corespondena ntre adrese logice i adrese fizice (principiul de lucru al mecanismului este
prezentat n figura 6.23).
Memoria
principal
Tabel de
translatare
Adresa logic
de la UCP
M
L
Adresa
fizic
M
Cuvnt
adresat
Sistemul de memorie
175
memoria principal, la o adres fizic a crei valoare M se nscrie n registrul de adres L din
tabela de translatare. Daca elementul adresat este n memoria principal rezult c adresa
fizic este M. Acest mecanism este totui ineficient, cci tabela de translatare are
dimensiunile egale cu ale memoriei principale. Pentru micorarea dimensiunii tabelelor se
folosete divizarea spaiului logic n segmente / pagini, iar referirile se fac doar la nivelul de
adres logic de bloc. Trebuie menionat c dac sunt lansate dou procese n execuie,
fiecare cu spaiul su de adrese logice, exist dou tabele de translatare spre memoria
principal. Sistemul de operare va reactualiza coninutul tabelei de translatare ori de cte ori
va avea loc o relocare (schimbare de poziie n spaiul adreselor fizice) a programelor n
memorie.
2. s susin mecanismele de implementare ale memoriei virtuale
Mecanismul memoriei virtuale permite programelor s fie executate chiar dac numai o
parte din instruciunile lor se ncarc n memoria principal, iar restul se gsesc n memoria
auxiliar de tip disc magnetic. Adresele logice sunt numite adrese virtuale, n cazul
implementrii memoriei virtuale, pentru c nu exist fizic n memoria principal ci ele se
gsesc n memoria auxiliar.
3. s poat furniza protecie i securitate pentru memorie
Cerina se refer la protecia informaiei, la alocarea de drepturi de acces la zone din
memoria principal i la zone din spaiul adreselor logice, (protecie la citire, scriere,
tergere, copiere, execuie). Se protejeaz memoria disponibil alocat programelor de
sistem i programelor utilizator, asigurndu-se securitatea informaiei (acces limitat la
informaii), prin controlul accesului la resursele sistemului.
Aa cum s-a pomenit i mai sus exist dou strategii folosite pentru implementarea MMU:
a) MMU se afl pe chip-ul procesorului; se aplic la microprocesoarele cu spaiul segmentat al
adreselor logice. De exemplu: Intel x86, Pentium, Zilog Z800, Z8000)
b) MMU este construit separat de UCP, variant aleas la microprocesoarele cu spaiu liniar
(organizare liniar a) al adreselor logice. De exemplu: MC 680x0, Z8001).
n cazul n care organizarea logic a memoriei este liniar, adresele ncep n mod obinuit de
la 0 i avanseaz liniar. Memoria poate fi apoi structurat prin software, la nivelul translaiei de
adrese. n cazul n care organizarea memoriei este segmentat, programele nu sunt scrise ca
secvene liniare de instruciuni i date, ci ca segmente separate de cod, date, sau stiv. Spaiul
adreselor logice este spart n mai multe spaii cu adresare liniar, fiecare cu lungime diferit,
definit de compilator sau de programator. O adres logic efectiv este calculat ca o combinaie
ntre numrul segmentului (care indic adresa de baz a unui bloc de memorie) i un deplasament
(offset) n cadrul segmentului.
n general schemele de adresare liniar sunt mai potrivite pentru manipularea structurilor
mari de date, n timp ce segmentarea faciliteaz programarea, permind programatorului s
structureze programele n module segment. n plus adresarea segmentat simplific protecia i
relocarea obiectelor n memorie. Segmentarea faciliteaz gestiunea memoriei n sistemele de calcul
multiuser, multitasking.
Capitolul 6
176
Sistemul de memorie
177
Numr
pagin
Numr linie
1000000000000001
Adresa virtual
Adres
tabel
0000
Tabel
pagini
de
memorie
0001
0010
11
0011
00
0100
0101
0110
01
0111
1000
10
1001
1010
1011
1100
1101
1110
1111
Registru bloc
de memorie
10
0
0
1
1
0
1
0
0
1
0
0
0
0
0
0
0
Bit
prezen
Adresa fizic
(real) de memorie
principal
10 000000000001
Memoria principal
00
01
10
11
BLOCK 0
BLOCK 1
BLOCK 2
BLOCK 3
Figura 6.24: Schem de principiu, explicativ la operaia de paginare (modalitatea de translatare din figur
nu se aplic din cauza dimensiunii mari a tabelului de translatare a paginilor de memorie)
n tabelul paginii de memorie, adresa conduce la numrul paginii, iar coninutul indic
numrul blocului unde pagina este stocat n memoria principal. Se observ c paginile virtuale 2,
3, 5 i 8 se afl n memoria principal, n blocurile 3, 0, 1 i respectiv 2. Un bit de prezen adugat
fiecrei locaii a tabelului indic dac pagina respectiv a fost mapat n memoria principal (i s-a
alocat spaiu i a fost transferat din memoria auxiliar n memoria principal). Valoarea 0 a bitului
de prezen indic c pagina nu este n memoria principal. n exemplul dat, cei 4 bii ai adresei
virtuale specific att numrul paginii ct i adresa n tabelul paginilor de memorie. Coninutul
tabelului este citit n registrul ce indic blocul de memorie. Dac bitul de prezen este 1, numrul
de bloc e transferat n registrul ce pstreaz adresa fizic din memoria principal. Dac bitul de
prezen este 0 rezult c adresa virtual se refer la un articol ce nu se gsete n memoria
principal. n acest caz, se genereaz o cerere (n forma unei ntreruperi software, de tip eroare de
pagin8) ctre sistemul de operare (SO) pentru a aduce pagina cerut din memoria auxiliar n
memoria principal, nainte de reluarea programului care a accesat adresa din pagina respectiv.
O astfel de organizare n memoria principal a tabelului de translatare este ns ineficient,
cci tabelul are multe locaii goale. Dac presupunem un calculator cu spaiul de adrese de 4 GB
8
Capitolul 6
178
(232), cu pagini de memorie de 32 KB (215), iar spaiul memoriei fizice este 32 MB (225) rezult 128
K-pagini virtuale de memorie i 1024 blocuri (1 K-blocuri). Conform principiului din figura 6.24
tabelul de translatare ar avea 131071 (217 = 128 K) linii i doar 1024 locaii ar fi ocupate (cu bit de
prezen 1), restul fiind goale, neutilizate. O soluie a acestei probleme o constituie folosirea unei
memorii asociative, ca n figura 6.25, (tabel asociativ de pagini de memorie) cu numr de locaii
egal cu numrul de blocuri din memoria principal.
Adres logic
Numr pagin
1000
Numr linie
Registru argument
1111
00
Registru masc
0010
11
0011
00
0101
01
1000
10
Numr pagin
Numr bloc
Figura 6.25. Exemplificare a tabelului pentru translatarea adresei de pagin construit cu memorie
asociativ (adresabil prin coninut)
Sistemul de memorie
179
Offset
Adres fizic
segment
Adres logic
Adres liniar
(fizic)
Segment
Adresa de baz a
segmentului
Tabel de translatare
a segmentelor
Capitolul 6
180
Adres logic
Offset
bloc
Bloc
Tabel de mapare a
segmentelor
Offset
Adres fizic
Tabel de mapare a
paginilor
Valoarea gsit n tabelul de pagin furnizeaz numrul de bloc din memoria fizic. Cele
dou tabele pot fi construite n memoria principal, dar de asemenea pot fi construite separat de
memoria principal, eventual ntr-o memorie local procesorului. Ultima variant este mai
avantajoas ca vitez, pentru c organizarea n memoria principal conduce la trei accesri
succesive, deci vitez mic. Se folosete de aceea o memorie asociativ pentru a stoca n tabele
intrrile cele mai recent referite. Aceasta memorie asociativ este numit "Translation Lookaside
Buffer" = tabel pentru memorarea funciilor de translatare (TLB), i are structura din figura 6.28.
Registru Argument
TLB
Segmente
Pagini
Blocuri
Figura 6.28. Structura de principiu a unui TLB (tablou asociativ pentru memorarea funciilor de
translatare)
Prima oar cnd un anume bloc e referit, valoarea sa mpreun cu numerele corespunztoare
de segment i pagin intr n TLB. Dac, la adresare, adresa cerut nu este mapat n TLB se
folosete maparea mai lent, cu tabele n memorie, descris mai sus, iar rezultatul e nscris n
memoria asociativa (TLB) pentru referirile ulterioare.
Sistemul de memorie
181
adres
fizic
MMU
MP
(RAM)
MA
(disc
magnetic)
Figura 6.29. Schema bloc de principiu a sistemului de memorie virtual (MMU =unitate de control a
memoriei, MP = memoria principal, MA = memoria auxiliar)
Capitolul 6
182
Organizare fizic a
MV n MA
Organizare logic
Pagina 0
Pagina 1
Id.pagin
P1
Id.segment
Nr.pagini
S1
P2
P3
Pagina 212-1
Id.pagin
Pagin MV
Id.pagin
Pagin MV
P1
S2
Figura 6.30. Organizarea logic i fizic a memoriei virtuale. Cu Pi s-a notat structura paginii fizice i din
memoria virtual, iar cu Si s-a notat structura segmentului i. (MV = memorie virtual,MA = memorie
auxiliar)
Organizarea fizic a memoriei virtuale n cadrul memoriei auxiliare este prezentat de asemenea n
figura 6.30. Programul utilizatorului este constituit dintr-un numr oarecare de pagini, organizate
ntr-un segment. Prima pagin, din cadrul fiecrui segment, conine, pe lng un identificator de
pagin, un identificator de segment i numrul de pagini din segmentul dat. Celelalte pagini vor fi
constituite dintr-un antet de identificare pagin i din pagina propriu-zis. n cazul de fa se
consider c sistemul de operare se ocup cu gestiunea segmentelor/fiierelor, n memoria extern.
Fie de exemplu o memorie principal cu capacitatea de 256 k 32 de bii. Se pot stoca n
cadrul memoriei principale maximum 26 = 64 pagini, avnd fiecare o capacitate de 212 = 4096
cuvinte. Nucleul sistemului de operare va fi rezident n memoria principal i va ocupa, de
exemplu, primele 8 pagini (32 k-cuvinte ). Sistemul de operare va gestiona o serie de tabele de
translatare a adreselor logice / virtuale n adrese fizice. Schimbarea paginilor ntre memoria
principal i memoria auxiliar se face dup algoritmi de nlocuire asemntori cu cei de la
memoria cache. Pentru exemplul dat anterior n figura 6.31 se prezint modalitatea de translatare a
adreselor virtuale, folosind urmtoarele notaii:
TA - Tablou Asociativ n celulele cruia sunt stocate numerele paginilor virtuale
aduse n memoria principal. Conine 64 de cuvinte de cte 12 bii.
CU - Contoare de Utilizare a paginilor prezente n memoria principal. Se
folosesc n mecanismul de nlocuire. La fiecare acces contoarele ce corespund
intrrilor neselectate se decrementeaz, pn la zero, iar contorul liniei selectate
se seteaz la valoarea maxim. Dac este nevoie de spaiu pentru noi intrri vor
fi nlocuite liniile care au contoarele cu coninut 0;
BLOC - Memorie cu coninut permanent (doar cu citire), adresat asociativ, care
transform numrul paginii virtuale n numr de pagin fizic din memoria
principal RAM;
AM - Registrul de adrese pentru memoria principal (adresa fizic), de 18 bii
RI - Registrul de Instruciuni, cu 32 de bii
PC - Contorul de Program cu lungimea de 24 de bii;
MP - Memoria principal RAM (218 x 32 bii);
Sistemul de memorie
183
Dac o pagin oarecare din memoria virtual a fost adus n memoria principal, ea poate fi
localizat, ca numr de pagin fizic, prin referirea la o memorie asociativ cu coninut fix pe care o
notm BLOC. n cazul coincidentei ntre numrul paginii virtuale, i coninutul unei celule din
Tabloul Asociativ, celula corespunztoare, situat pe aceeai linie, n BLOC, va furniza primii 6 bii
mai semnificativi ai adresei fizice. Acetia vor fi concatenai n registrul AM, cu ultimii 12 bii din
RI sau PC, pentru a forma adresa fizic de acces la memoria principal. Primele opt celule din
BLOC au coninuturi fixe, corespunznd numerelor primelor opt pagini din memoria principal n
care se afl nucleul sistemului de operare. Primele opt celule din TA vor conine numerele paginilor
virtuale corespunztoare nucleului sistemului de operare. Coninutul acestora va fi fix. De
asemenea, coninuturile primelor opt contoare de utilizare nu vor suferi decrementri. Gestiunea
memoriei virtuale ncepe prin transferul unui segment sau al unui numr de pagini, dintr-un
segment, corespunztor unui program din memoria secundar n memoria principal, sub controlul
sistemului de operare, i lansarea n execuie.
CU
TA
Tabel de translatare
adrese virtuale
BLOC
AM
adresa
fizic
12
RI
12
12
12
PC
Figura 6.31 Mecanismul asociativ care asigura suportul pentru translatarea adreselor virtuale
n adrese fizice.
Dac se constat lipsa unei pagini, se trece la aducerea paginii virtuale n memoria
principal. n figura 6.32. operaiile din blocurile 1 i 4 se execut prin software, n timp ce
operaiile din blocurile 2 i 3 se execut prin hardware. Operaiile din cadrul blocului 2 sunt operaii
obinuite de citire-interpretare i execuie a instruciunilor programului. Dup generarea ntreruperii
de tip lips-pagin n memoria principal ntreaga responsabilitate pentru transferul paginilor
revine sistemului de operare. ntr-o memorie auxiliar pe disc magnetic organizat cu scopul de a
facilita implementarea memoriei virtuale, pagina de memorie auxiliar va nlocui nregistrarea,
drept cea mai mic unitate de date adresabil pe disc. Sistemul de operare va gestiona o serie de
tabele de translatare a adreselor logice n adrese fizice.
Dup terminarea transferului programul ntrerupt se poate relua. La transfer, dac memoria
principal este plin, trebuie tears o pagin veche pentru a face loc celei noi. Algoritmul de
nlocuire poate fi de tip, de exemplu:
FIFO - selecteaz pentru nlocuire paginile care au stat n memorie cel mai lung timp. De
fiecare data cnd o pagina e ncrcat n memorie, numrul sau de identificare este introdus
ntr-o stiv FIFO (primul intrat, primul ieit). Dac tamponul FIFO este plin i trebuie adus
alt pagin, se elimin pagina cea mai veche n tampon i care e n vrful stivei FIFO. Este
un algoritm uor de implementat dar nu foarte eficient.
LRU - least recently used (cel mai puin recent utilizat) este un algoritm mai dificil de
implementat, dar mai eficient. Se nlocuiete cea mai puin recent folosit pagin. Folosete
cte un contor pentru fiecare pagin ce se afl n memoria principal. Cnd se face referire la
Capitolul 6
184
o pagin, contorul asociat ei este setat la la valoarea maxim, iar celelalte contoare asociate
paginilor se decrementeaz. Ele sunt numite adesea registre de vrst, pentru ca ele indic
vrsta ct n-au mai fost referite.
2.Execut programul
3.Identific:
- numrul paginii lips
- numrul paginii ce va fi
nlocuit
Da
Nu
Lips
pagin ?
Program terminat
Generare ntrerupere
software ctre S.O.
4.S.O. face interschimbarea
Sistemul de memorie
185
La unele sisteme adresa este considerat ca un numr fr semn, care se adun ntotdeauna la o
adres de baz, astfel c testul de adres limit se reduce la:
(Baz + Adres) Limit
Dac proceselor utilizator li s-ar permite s modifice registrele de adrese de baz i limit,
atunci acest mecanism de protecie nu ar putea funciona. Modificarea respectivelor registre este
permis doar sistemului de operare, pentru asigurarea proteciei ntre procese.
Pentru asigurarea proteciei sistemul de operare (SO) are trei responsabiliti principale:
1. S furnizeze cel puin dou moduri de execuie indicnd c procesul aflat n rulare este un
proces utilizator, sau un proces al sistemului de operare. La diferite SO ultimul tip de proces
este numit n diferite feluri: proces kernel (nucleu), proces supervizor, sau proces executiv.
2. S prevad o poriune a strii CPU pe care procesul utilizator o poate doar citi, dar nu o poate
scrie. Aceasta include registrele baz / limit, indicatori (bii) pentru moduri utilizator /
supervizor i indicatori pentru validare / invalidare evenimente de tip excepie.
3. S prevad un mecanism prin care UCP poate trece din mod utilizator (user) n mod
supervizor i viceversa. Primul sens de trecere este specific apelurilor sistem (system calls
apeluri de servicii oferite de SO), implementate ca instruciuni speciale care transfer
temporar controlul la o locaie precis din spaiul de cod al supervizorului. Registrul contor
de program corespunztor locului unde se face un apel sistem este salvat, iar UCP trece n
mod supervizor. Revenirea la modul utilizator este similar cu cea produs la o revenire din
procedur.
Adresele de baz i limit constituie minimul unui sistem de protecie. Mecanismul memoriei
virtuale ofer alternative mai complexe i mai sigure dect modelul simplu prin baz i limit. Aa
cum s-a vzut, adresele virtuale sunt translatate n adrese fizice pe baza unor tabele de translatare.
Acest mod de mapare, prin tabele, ofer posibilitatea introducerii de informaii pentru controlul
erorilor de program (intenionate sau nu) care ncearc s treac peste mecanismele de protecie.
Cea mai simpl cale este introducerea unor indicatori de permisie pentru fiecare pagin sau
segment. De exemplu pot exista indicatori care s permit doar citire, doar execuie, sau care s
interzic accesul unui proces utilizator la anumite pagini / segmente. Fiecare proces poate face
adresare doar ctre paginile proprii de memorie, procesul utilizator neavnd dreptul s modifice
tabelele sale de pagin / segment.
Protecia poate fi extins chiar pe mai mult dect dou niveluri (nu doar utilizator i
supervizor), privite ca i inele concentrice de protecie, n centru gsindu-se nivelul de protecie cel
mai nalt. n aceast ierarhie de niveluri de protecie un program poate accesa doar date de pe
nivelul su de protecie i de pe nivelurile inferioare n ierarhie. Poate face ns operaii de apelare
(call) a serviciilor sistemului de operare, servicii oferite de rutine ce se afl pe niveluri superioare
de protecie. Adesea se face comparaia, n oarecare msur nefericit, cu clasificri de tip militar
ale sistemelor: top secret, secret, confidenial i neclasificat. Programele utilizator (civilii n
exemplul militar) au doar dreptul de acces la nivelul de protecie cel mai de jos: ne-clasificat. La
sistemele de protecie de tip inele concentrice, deosebirea fa de exemplul anterior, este c se pot
face apelri la rutine situate pe niveluri superioare de protecie, dac exist chei de acces ctre
acele niveluri. Poate exista dreptul de apelare a unor servicii ale sistemului de operare, prin
mecanismul de comutare a proceselor.
Aa cum am pomenit i mai sus, informaia de protecie este setat n registre speciale ataate
fiecrei intrri n tabelele de translatare, registre setate doar de rutine de control al sistemului de
operare. Drepturile de acces pot fi de tipul:
a. Atribuirea de privilegii complete de citire i scriere. Aceste drepturi se atribuie programului
atunci cnd execut propriile instruciuni.
b. Read-only (protecie la scriere). Protecia la scriere este util la operaiile de partajare a unor
Capitolul 6
186
CAPITOLUL 7
SISTEMUL DE INTRARE - IEIRE
Coninut:
7.1. Circuite de interfa
7.2. Organizarea ierarhic a magistralelor
7.3. Transferuri asincrone de date
7.3.1. Transmisie asincron cu un singur semnal de control
7.3.2. Transmisie asincron cu dou semnale de control
7.4. Modaliti de transfer de intrare-ieire
7.4.1. Transferul de I/O prin program
7.4.2. Transferul I/O prin ntreruperi
7.4.3. Transferul prin acces direct la memorie
Obiective educaionale:
a. Descrierea rolului circuitelor de interfa
b. Analiza organizrii magistralelor sistemului pe mai multe niveluri
c. Clasificarea i descrierea diferitelor moduri de transfer al datelor cu dispozitivele
de intrare - ieire
Capitolul 7
188
189
calculatorul;
b. ritmul de transfer al datelor este mult mai sczut la periferice fa de UCP. Pentru transferul
de date ntre periferice i UCP sau memorie trebuie deci s existe mecanisme de
sincronizare.
c. codurile i formatele datelor n echipamentele periferice pot fi diferite fa de codurile i
formatele folosite n UCP i memorie.
d. exist o varietate de periferice, cu moduri de funcionare diferite i de aceea acestea trebuie
controlate adecvat, pentru a nu perturba celelalte periferice conectate la UCP.
magistral I/O
Date
Adrese
Procesor
Control
Interfa
Interfa
Interfa
Interfa
Tastatur i
duispozitiv
de afiare
Imprimant
Disc
magnetic
Band
magnetic
Circuitul de interfa rezolv toate aceste diferene, fiind inclus ntre UCP i periferice,
pentru a superviza i sincroniza toate transferurile de intrare / ieire. n plus aa cum am amintit,
fiecare periferic poate avea propriul controller care supervizeaza funcionarea corect, specific a
respectivului periferic. Interfaarea a dou dispozitive fizice (hardware interfacing) const n a
proiecta circuitele de interconectare fizic dintre aceste dou dispozitive. Iat cteva exemple
obisnuite de sarcini de "hardware interfacing":
interfaarea unei imprimante (printer) la un calculator (de exemplu, pentru PC, posibil doar
prin respectarea standardului de interfaare USB1 sau Centronix);
interfaarea unei legaturi de comunicaie seriala la un calculator
interfaarea unui port de I/O digital la un calculator
interfaarea unor convertoare D/A sau A/D la un calculator
interfaarea unei uniti de dischet sau a unui controler de disc fix (hard disc) la un
calculator.
Notiunea de interfaare poate fi folosit ns i dac ne referim la programele rulate de
calculator (software interfacing). Cnd cele dou obiecte ce definesc interfaa sunt programe de
calculator, sarcinile de interfaare constau n proiectarea unui alt program ce asigur comunicarea
dintre primele dou programe. De exemplu, un program poate fi un program de control al
imprimantei (printer-driver), iar cellalt poate fi un program general de aplicaie al utilizatorului.
Programul de control al imprimantei este o procedur care tiprete un caracter la imprimant ori de
cte ori este apelat. Interfaa software se refer la faptul ca programul de aplicaie trebuie s
cunoasc locul n care trebuie s plaseze caracterul de tiprit, nainte de a invoca programul printer
1
Capitolul 7
190
driver. Dup cum se vede din acest exemplu, interfaarea software face ca parametrii s fie
transmii corect de la un program la cellalt. Protocolul de transmitere a parametrilor este stabilit
doar de unul din cele doua programe ce comunic prin intermediul interfeei. De exemplu la un
PC2, ce ruleaz sub sistemul de operare DOS, dintre cele doua programe ce se interfaeaz, un
program este, n general, un program de aplicaie; cellalt program poate fi un program de control
pentru un dispozitiv (device driver), de exemplu un printer-driver, sau poate realiza doar o
anumit funcie simpl (ca de exemplu alocarea memoriei). Al doilea program este cel care
definete protocolul pentru transmiterea parametrilor. Distincia dintre un hardware driver (program
de control al unui dispozitiv fizic) i o funcie nu prezint importan aici, elementul important este
modul cum se transmit parametrii.
Circuitul de interfa fiind legat ntre magistrala de I/O a sistemului i echipamentul
periferic, are semnale specifice de cuplare - interfaare cu magistrala, respectiv cu echipamentul
periferic. Dac spre periferic tipurile de semnale i modul de lucru cu acestea depind n mare
msur de caracteristicile dispozitivului periferic, partea dinspre magistral, face legtura cu
memoria i UCP i cuprinde semnale pentru selecia circuitelor de I/O, pentru controlul transferului
datelor i semnale de cerere de servicii ctre UCP.
Transferul datelor ntre un port de I/O i UCP are loc, n principiu, asemntor cu transferul
datelor ntre procesor i memorie.
Exist patru tipuri de semnale de comand pe care le poate recepiona/transmite o interfa:
1.
2.
3.
4.
semnale de control
semnale de stare
date de ieire
date de intrare
Semnalele de control sunt transmise de UCP pentru a activa perifericul i pentru a-l informa
ce operaie trebuie s efectueze. De exemplu, o unitate de band magnetic poate fi comandat s
deplaseze banda nainte cu o nregistrare de date, s deruleze rapid banda la nceput, sau s
porneasc citirea unui bloc de nregistrri. Semnalele de control emise sunt specifice pentru fiecare
tip de periferic.
Semnalele de stare sunt utilizate pentru a testa diferite condiii ale interfeei i ale
perifericului. De exemplu, calculatorul poate testa dac un periferic este gata pentru un viitor
transfer de date. n timpul transferului se pot produce erori care sunt detectate de interfa. Aceste
erori sunt marcate prin setarea unor bii dintr-un registru de stare al interfeei, registru ce poate fi
citit de procesor.
Semnalele de comand pentru date de ieire fac ca interfaa s rspund prin transferarea
datelor de la magistrala de date ctre registrele sale interne. Considerai exemplul cu unitatea de
band. Calculatorul pornete derularea benzii prin semnale de control. Apoi procesorul
monitorizeaz efectuarea comenzii trimise prin citirea informaiilor de stare. Cnd banda a ajuns la
poziia corect, procesorul transmite comenzile (adres i control) i datele de ieire, iar interfaa
transfer informaia ctre registrele interne, iar apoi ctre controllerul unitii de band, pentru
stocare.
Comenzile pentru date de intrare sunt similare cu cele pentru ieirea datelor, diferind doar
sensul de circulaie al informaiei. Procesorul testeaz starea interfeei pentru a verifica dac datele
cerute pot fi transferate ctre magistrala de date.
PC = Personal Computer
191
Memorie
cache i
controller
Controller I/O
local
Memoria
principal
Magistral sistem
Interfa cu
magistrala de
extensie
Reea
SCSI
Port paralel
Port serial
Magistral de extensie
Capitolul 7
192
reele pe arii extinse. Controllerul SCSI (small computer system interface) conecteaz la magistrala
de extensie o magistral SCSI la care se pot conecta controllere de hard disc locale i alte periferice.
Portul serial poate fi folosit pentru conectarea unei imprimante sau a unui scanner. Magistralele de
extensie (numite i magistrale de I/O) suport o gam larg de rate de transfer, pentru a permite
conectarea unei game largi de dispozitive I/O.
Arhitectura clasic a magistralelor este eficient, dar nu face fa la noile dispozitive de I/O
ce funcioneaz la viteze din ce n ce mai mari. Ca urmare au aprut noi organizri, care introduc un
nivel intermedia de magistral de mare vitez (numit uneori magistral la mezanin) care se
interfaeaz cu o punte (bridge) cu magistrala local a procesorului. Figura 7.3 prezint aceast
abordare, n care controllerul de cache este integrat ntr-o punte, sau dispozitiv tampon, care se
conecteaz la magistrala de mare vitez. La aceast magistral de mare vitez se pot conecta
circuite controller de mare vitez pentru LAN, (cum ar fi Fast Ethernet la 100 Mbps, controller
video-grafic). Dispozitivele de I/O cu vitez mic se cupleaz n continuare la magistrala de
extensie conectat printr-o interfaa cu magistrala de mare vitez. Avantajul acestei aranjri este c
dispozitivele de I/O de mare vitez sunt integrate mai aproape de procesor i n acelai timp pot
funciona n paralel cu procesorul.
Memorie
principal
Magistral
local
Procesor
SCSI
Controller
video
Cache i
Bridge
Magistral sistem
Procesor
grafic
LAN
Paralel
Interfa
Serial
Conectori extensii
diverse
Magistral de extensie
Figura 7.3. Exemplu de organizare ierarhic a magistralelor la care se introduce magistrala de mare vitez
de la mezanin
193
s se ncadreze ntr-un interval fix de timp, iar controlul transferurilor se face cu ajutorul unor
semnale de control ntre cei doi corespondeni (handshaking).
Transferurile cu porturile de I/O sunt n general de tip asincron, cu posibilitatea de a
introduce stri suplimentare de ateptare ale UCP pentru a mri durata unui ciclu main.
Pentru majoritatea procesoarelor ce pot organiza spaiu separat de adrese pentru porturile de
I/O, n ciclurile de transfer cu porturile se introduc automat (de ctre UCP) stri de ateptare (wait),
care adapteaz viteza UCP la viteza sczut a dispozitivelor de I/O. Dac porturile sunt organizate
n spaiul de memorie, acest mecanism de sincronizare, cu ajutorul strilor de wait, trebuie construit
n exteriorul UCP i el trebuie s acioneze ori de cte ori se face acces la o adres ce corespunde
spaiului de I/O.
Capitolul 7
194
Dat
Destinai
Strob
Surs
Dat
Dat
Destinai
Strob
Date
date
Strob
Strob
t1
t2
t3
t1
t2
(a)
t3
(b)
Figura 7.4. Transfer asincron de date cu un singur semnal de control. (a) diagrama bloc i diagrama
semnalelor n timp pentru transfer iniiat de surs. (b) diagrama bloc i diagrama semnalelor n timp pentru
transfer iniiat de destinaie.
195
Magistral
Surs
Strob
Destinai
Read
Magistral
Date
Strob
Read
Figura 7.5. Diagrama bloc i evoluia semnalelor n timp pentru transfer de tip handshaking
iniiat de sursa datelor.
Surs
Read
Destinai
Strob
Magistral de
Date
Strobe (cerere de
Ready (validare
date)
Figura 7.6. Diagrama bloc i evoluia semnalelor n timp pentru transfer de tip handshaking iniiat
de destinaia datelor.
Capitolul 7
196
CITIRE_MEM:
START
iniializare POINTER adres de memorie;
iniializare CONTOR al lungimii transferului;
UCP citete date din memorie
197
TEST_STARE:
TRANSF:
EROARE:
FINAL:
.....
END
Pentru I8086, dac la adresa simbolica "port" se gsete informaia de stare (bitul 0 indicnd prin 1
logic, stare gata de transfer), iar la adresa port+1 se vor transfera datele, fragmentul de program
arat astfel:
start:
mov dx, port
lea bx, buffer
mov cx, count
mov si, wait
test_st:
in al,dx
test al,1
jnz transf
dec si
jnz test_st
transf:
inc dx
mov al,[bx]
out dx,al
dec dx
inc bx
dec cx
jnz test_st
Dac sunt mai multe porturi, (portul I avnd adresa registrului de stare "port1", iar bitul 0 al
cuvntului de stare arat dac portul e gata (1) sau nu (0) de transfer), bucla de interogare ar putea
arata astfel:
test1:
in al,port1
test al,1
jz test2
call transf1
test2:
in al,port2
test al,1
jz test3
call transf2
:::::::
testN:
in al,portN
test al,1
Capitolul 7
198
jz test1
call transfN
Arbitrare
199
controlat de UCP
prin software
prin hardware
n cazul arbitrrii controlate de UCP prin hardware, UCP conine intern circuitele necesare
realizrii arbitrrii. Circuitul de arbitrare primete mai multe intrri de cereri de ntrerupere, acestea,
sau combinaii ale acestora, corespunznd la un anumit nivel prefixat de prioritate. Adresele
rutinelor de tratare pot fi fixe (cum este de exemplu cazul microprocesorului I8085) sau variabile
(de exemplu la microprocesorul MC68000).
De exemplu, la microprocesorul Intel 8085 exist 5 intrri de cereri de ntrerupere. Una
dintre intrri este numit INT i ea funcioneaz pentru ntreruperi vectorizate, deci pe baz de
vector de ntrerupere. Celelalte intrri nu au nevoie de vector de ntrerupere, pentru c intern ele au
alocat cte o prioritate fix, iar saltul ctre rutina de tratare se face tot la o adres fix. n tabelul
7.1. se indic intrrile de ntrerupere la microprocesorul I8085, mpreun cu ordinea de prioritate
alocat (prioritatea 1 fiind maxim) i adresele de salt.
Tabel 7.1. ntreruperi la I8085.
Prioritate
Nume intrare
fix
ntrerupere
1
TRAP
2
RST 5.5
3
RST 6.5
4
RST 7.5
5
RST 7.5
Adres de salt
24h
2Ch
34h
3Ch
prin Vector
Arbitrarea controlat de UCP prin software, const ntr-un suport hardware minimal, extern
UCP, care s sprijine operaiile de recepie a cererilor de ntrerupere i respectiv de identificare i
validare sau nu a ntreruptorului, n funcie de prioritatea alocat. Circuitele au ca element principal
un registru-port de intrare, n care se aloc cte un bit pentru fiecare dispozitiv ntreruptor. Dac
acest bit este setat, dispozitivul a cerut cerere de ntrerupere. Simultan cu setarea bitului din
registru, semnalul de cerere de ntrerupere se transmite i ctre UCP. Prin citirea registrului port de
intrare i compararea cu situaia anterioar (memorat ntr-un registru intern), UCP detecteaz dac
a aprut o cerere de ntrerupere cu prioritate mai mare dect cea a programului curent. n cazul unei
ntreruperi cu prioritate mai mic se continu programul curent (dup eventuala nregistrare a
cererilor n vederea servirii ulterioare). n cazul prioritii mai mari, UCP ncepe execuia subrutinei
de servire asociat noii cereri, ntrerupnd astfel programul curent i actualiznd registrul de
serviciu. Dup terminarea execuiei subrutinei de servire se reia ultimul program ntrerupt. De
asemenea, dup comutarea contextului, UCP trebuie s revalideze ntreruperile pentru a permite
unor eventuale cereri de ntrerupere prioritare s fie luate n considerare. Cererile de ntrerupere ale
dispozitivelor individuale de I/O, pot fi activate sau dezactivate prin program, prin intermediul unor
bistabili de masc, asamblai de obicei ntr-un registru de mascare. Astfel c la momente diferite de
timp, prin aplicarea unor mti diferite, programul poate modifica ordinea de (prioritate de) servire
a cererilor de ntrerupere.
Arbitrarea controlat de circuit controler de ntreruperi, este cea mai des ntlnit la
Capitolul 7
200
IEUC
UC
IEI
IE
IEI
IE
IEI
IE
IEI
IE
D1
D2
D3
DN
INT
INT
INT
INT
INT
+V
Figura 7.7. Exemplu de arbitrare a cererilor multiple de ntrerupere prin lan de prioriti
n figur fiecare dispozitiv Di , i = 1,N dispune de cte o ieire INT (cu colector / dren n
gol), ceea ce permite legarea mpreun a acestor ieiri la linia de intrare INT a UCP. Se realizeaz
astfel un SAU cablat pe aceast intrare a UCP. (de fapt legnd ieirile mpreun avem un SI cablat
ntre ieiri active n stare JOS, adic:
3
201
A B C = A + B + C +
(7.1)
Capitolul 7
202
Memoria
W
R
date
adres
W
UC
INT
BR
Interfa i dispozitiv
DMA
BG
cerere
acceptare
Transferul de date se va face direct ntre periferic i memoria principal, fr ca UCP s mai
fie intermediar al acestui transfer (aa cum se ntmpla la transferul prin program i prin
ntreruperi). Un ciclu DMA reprezint transferul unui cuvnt din sau n memorie. Dup terminarea
unui ciclu, controllerul DMA poate continua cu alte cicluri DMA (dac a fost programat s fac
acest lucru i dac cererea DMA de la periferic se pstreaz activ), sau poate returna controlul
magistralelor ctre UCP prin inactivarea semnalului BR. Pentru transfer pe cuvnt, secvena de
semnale de cerere DMA (cerere BR BG acceptare) conduce la desfurarea unui singur
ciclu DMA. Pentru un alt ciclu DMA, secvena de semnale trebuie repetat i abia apoi se transfer
un nou cuvnt. Cealalt variant de transfer, n mod rafal-bloc, presupune transferul mai multor
cuvinte pentru fiecare cerere de transfer DMA. Este un mod de mare vitez, care ns dac
controllerul i UCP sunt legate la aceleai magistrale poate menine procesorul n inactivitate pentru
o perioad de timp. n cazul transferului pe cuvnt, ntreruperea poate fi insesizabil, ca timp,
pentru procesor, i de aceea uneori acest mod de transfer este numit "cu furt de ciclu".
De obicei circuitele controler DMA pot gestiona transferuri cu mai multe periferice
simultan, pentru fiecare periferic existnd (intern controllerului) un canal DMA.
Conform funciilor pomenite pe scurt mai sus, structura controllerului DMA trebuie s cuprind:
Logic de comand i sincronizare. Modul de lucru al controllerului DMA este programabil.
De aceea el este iniializat printr-o rutin de iniializare rulat de UCP, fixndu-se astfel:
modul de transfer (cuvnt sau bloc-rafal), sensul transferului (la memoria principal sau de
la memoria principal), nivelul activ al semnalelor de interfa cu echipamentul periferic,
prioritile acordate canalelor, modul de tratare al sfritului de transfer etc. Circuitul
controller DMA are de asemenea o interfa cu UCP, care permite iniializarea registrelor
controllerului, comanda ulterioar de ctre UCP a controllerului, precum i realizarea
protocolului BR/BG;
203
Transferul prin DMA prezint avantaje din punctul de vedere al vitezelor mari de transfer, pentru
blocuri mari de date. Este un transfer folosit n aplicaii de genul: transfer cu discurile magnetice,
transfer cu plci periferice ce conin convertoare AD sau DA rapide etc.
BIBLIOGRAFIE
1. [Borcoci95] Borcoci E., Zoican S., Popovici E., Arhitectura microprocesoarelor, partea I,
Ed. Media Publishing, Bucureti, 1995.
2. [Burileanu94] Burileanu,C., Arhitectura microprocesoarelor, Editura DENIX, Bucureti,
1994;
3. [Crutu87] Crutu, Gh., Romanca, M., Fratu, A., Calculatoare, microsisteme de calcul,
Universitatea din Brasov, 1987;
4. [Dodescu80] Dodescu, Gh., Ionescu, D., Misdolea, T., Nisipeanu, L., Pilat, F., Sisteme
electronice de calcul i teleprelucrare, Ed.Didactic i Pedagogic, Bucuresti, 1980;
5. [Furht87] Furht, B., Milutinovic, V., A survey of microprocessor architecture for memory
management, IEEE Computer, March 1987, vol.20, no3, pp. 48-66.
6. [Hayes88] Hayes, J., Computer Architecture and Organisation, McGrow Hill Comp., 1988.
7. [Lupu86] Lupu, C., s.a., Microprocesoare, Ed. Militar, Bucureti 1986;
8. [Mano93] Mano, M., Computer System Architecture, Prentice-Hall Inc. 1993.
9. [MDE72] Mic dicionar enciclopedic, Editura enciclopedic romn, Bucureti, 1972
10. [Nicula97] Nicula, D., Arhitecturi de microprocesoare de performane ridicate, Tez de
doctorat, Universitatea TRANSILVANIA Braov, 1997
11. [Patterson90] Patterson, D., Hennessy, J., Computer Architecture A Quantitative Approach,
Morgan Kaufmann Publishers, Inc. 1990;
12. [Patterson96] Patterson, D., Hennessy, J., Computer Architecture - A Quantitative Approach,
second edition, Morgan Kaufmann Publishers, Inc. 1996;
13. [Patterson94] Patterson, D., Hennessy, J., Computer Organization & Design, the Hardware
Software Interface, Morgan Kaufmann Publishers, Inc. 1994;
14. [Pfaffenberger96] Pfaffenberger, B., Dicionar explicativ de calculatoare, Ed. Teora,
Bucureti, 1996
15. [Pop2000] http://www.ida.liu.se/~paupo, Slides for Advanced Computer Architecture, Paul
Pop, Institutionen fr Datavetenskap, Linkpings Universitet
16. [SPEC] The Standard Performance Evaluation Corporation, http://www.spec.org
17. [Stallings00] Stallings, W., Computer Organization and Architecture, 5th edition, Prentice
Hall International, Inc., 2000.
18. [Stefan91] tefan, Gh., Funcie i structur n sistemele digitale Ed. Academiei Romne,
1991;
19. [Stefan83] tefan, Gh., Drghici, I., Murean, T., Barbu, E., Circuite integrate digitale,
Ed.Didactic i Pedagogic, Bucureti 1983;
20. [Strugaru92] Strugaru, C., Popa, M., Microprocesoare pe 16 bii, Editura TM, Timioara
1992;
21. [Sztojanov87] Sztojanov, I., Borcoci, E., Tomescu, N., Bulik, D., Petrec, M., Petrec, C., De
la poarta TTL la microprocesor, Ed.Tehnic, Bucureti, 1987;
22. [Tanenbaum99] Tanenbaum, A., Organizarea structurat a calculatoarelor, ediia a IV-a,
Computer Press AGORA, Tg. Mure, 1999.
23. [Toacse85] Toacse, Gh., Introducere n microprocesoare, Ed. tiinific i Enciclopedic,
1985;
24. [Toacse96] Toace, Gh. Nicula, D. Electronic digital, Ed. Teora, 1996
25. [Weems96] Weems, Ch. Jr., Computer Science Course 635, Notes from Lecture 3, at
www.cs.umass.edu/~weems/index.hrml