Sunteți pe pagina 1din 207

Mihai ROMANCA Gyula SZEKELY

Calculatoare
Arhitectur i organizare





Universitatea Transilvania Braov
2004




Mihai ROMANCA Gyula SZEKELY











CALCULATOARE

- Arhitectur i organizare -














2004





2004 EDITURA UNIVERSITII TRANSILVANIA BRAOV

Adresa: 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



Refereni tiinifici: Prof. dr. ing. Gheorghe TOACE
Prof. dr. ing. Petre OGRUAN


Tehnoredactare: Autorul
Corectur: Autorul



Descriere CIP a Bibliotecii Naionale a Romniei
ROMANCA, MIHAI
Calculatoare: arhitectur i organizare/ Romanca Mihai,
Szekely Gyula. Braov: Editura Universitii Transilvania, 2004
Bibliogr.
ISBN 973-635-309-5

004


















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
4.5.6. Instruciuni pentru controlul procesorului ......................................... 105
4.5.7. Instruciuni pentru lucrul cu iruri ..................................................... 105
4.6. Moduri de adresare........................................................................................... 106
4.6.1. Adresare imediat.............................................................................. 107
4.6.2. Adresare direct................................................................................. 108
4.6.3. Adresare indirect.............................................................................. 110
4.6.4. Adresare relativ................................................................................ 112
4.6.5. Adresare indexat .............................................................................. 113
5. UNITATEA DE CONTROL A UCP............................................................... 115
5.1. Funciile principale ale unitii de control a UCP............................................ 116
5.2. Control cablat ................................................................................................... 118
5.2.1. Metoda tabelului de tranziie a strilor.............................................. 119
5.2.2. Metoda sincronizrii prin numrtoare de secvene.......................... 120
5.3. Controlul microprogramat ................................................................................ 122
5.3.1. Metode de optimizare a UC microprogramate .................................. 125
5.4. Paralelism n execuia instruciunilor prin tehnici pipeline.............................. 129
5.5. ntreruperi i excepii........................................................................................ 132
5.6. Rolul memoriei stiv 139
5.7. Utilizarea ferestrelor de registre....................................................................... 143
6. SISTEMUL DE MEMORIE ............................................................................ 147
6.1. Organizarea ierarhic a sistemului de memorie ............................................... 148
6.2. Caracteristici principale ale dispozitivelor de memorie................................... 151
6.3. Structura si organizarea memoriilor statice cu acces aleator (SRAM) ............ 154
6.4. Structura i funcionarea memoriilor dinamice cu acces aleator (DRAM) ...... 159
6.4.1. Structura i modul de lucru al unei DRAM convenional ................. 160
6.4.2. Moduri de lucru de mare vitez ale DRAM...................................... 162
6.4.3. Moduri de remprosptare ................................................................. 165
6.4.4. Exemple de circuite DRAM cu interfa asincron........................... 167
6.4.5. Circuite DRAM sincrone (SDRAM)................................................. 168
6.5. Memoria cache ................................................................................................. 169
6.6. Tehnici de adresare i alocare a memoriei ....................................................... 173
6.7. Tehnici de translatare a adreselor..................................................................... 175
6.7.1. Maparea adreselor folosind pagini .................................................... 176
6.7.2. Mapare prin segmentare .................................................................... 178
6.7.3. Mapare segmentat-paginat............................................................... 179
6.7.4. Memoria virtual ............................................................................... 181
6.7.5. Noiuni privind protecia memoriei ................................................... 184
7. SISTEMUL DE INTRARE IEIRE............................................................. 187
7.1. Circuite de interfa.......................................................................................... 188
7.2. Organizarea ierarhic a magistralelor............................................................... 191
7.3. Transferuri asincrone de date ........................................................................... 193
7.3.1. Transmisie asincron cu un singur semnal de control....................... 193
7.3.2. Transmisie asincron cu dou semnale de control ............................ 194
7.4. Modaliti de transfer de intrare-ieire............................................................. 196
7.4.1. Transferul de I/O prin program......................................................... 196
7.4.2. Transferul I/O prin ntreruperi........................................................... 198
7.4.3. Transferul prin acces direct la memorie ............................................ 201
BIBLIOGRAFIE................................................................................................... 204







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 2



1.1. CALCULATORUL NUMERIC

Un calculator numeric este constituit dintr-un ansamblu de resurse fizice (hardware) i de
programe de sistem (software de sistem) care asigur prelucrarea automat a informaiilor, n
conformitate cu algoritmii specificai de utilizator prin programele de aplicaii (software utilizator).
Descrierea unui calculator, ca sistem digital complex, se poate face innd cont de diferite
aspecte [Nicula97]. Astfel, la nivel nalt, calculatorul poate fi definit ca o main care uureaz o
anumit activitate uman. Acest aspect uman al calculatorului a condus la studii care vizeaz
uurarea utilizrii calculatorului, ergonomia locului de munc, creterea accesibilitii calculatorului
pentru utilizatorul uman ce are o pregtire divers.
Calculatorul poate fi definit, de asemenea, ca fiind o main care ruleaz programe. Studiile
efectuate pe acest nivel vizeaz optimizarea calculatorului n scopul minimizrii timpului de
execuie a programelor (aplicaiilor). Modul de scriere al unui program trebuie s permit ca
aplicaiile s fie portabile
1
de pe o main pe alta. Importana aspectului software al calculatorului
este determinat de necesitatea de a proteja investiia n programare, n condiiile mediului deosebit
de dinamic al calculatoarelor.
Calculatorul poate fi definit ca fiind un sistem digital care realizeaz un set de funciuni.
Studiile efectuate pe acest nivel vizeaz realizarea unor funcii date la viteze maxime i resurse
fizice (suprafa pe chip) minime, ntr-o tehnologie accesibil la un moment dat. Acesta este
aspectul "hardware" al calculatorului. Hardware este termenul general care desemneaz resursele
fizice (circuitele, dispozitivele i echipamentele componente) ale unui calculator numeric;
Cele trei aspecte, uman, software i hardware, nu sunt independente. Perfecionarea unuia
dintre aspecte determin i progresul celorlalte dou, chiar dac nu n acelai ritm. De exemplu,
randamentul muncii unui utilizator de calculator (mbuntire a aspectului uman) va crete dac
acesta i schimb tastatura cu una optimizat ergonomic, n condiiile pstrrii resurselor hardware
i a programelor rulate (software). Randamentul muncii va crete mai mult dac se ruleaz,
programe mai puternice, de exemplu prin algoritmi mai rapizi sau sisteme de operare mai
performante (mbuntire software), n condiiile pstrrii acelorai resurse hardware. O cretere
remarcabil a randamentului muncii se obine, ns, dac se nlocuiete calculatorul cu unul mai
performant (mbuntire a aspectului hardware), n condiiile pstrrii tastaturii i a aplicaiilor
rulate. Aspectele software i hardware se ntreptrund i nu pot exista independent. Studiul unui
calculator numeric poate fi realizat la diferite niveluri, organizate ierarhic n schema din figura 1.1.
De menionat c, pe toate aceste niveluri, aspectele software i hardware coexist.












Figura 1.1. Reprezentare ierarhic simplificat a nivelurilor de descriere a unui calculator numeric.


1
Portabil - aplicaia este portabil dac este capabil s funcioneze pe mai multe platforme hardware.
Nivelul aplicaiei (programare)
Nivelul arhitectural
Nivelul organizrii
Nivelul implementrii
Introducere n arhitectura calculatoarelor 3

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 microprocesorului
2
, 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 mainframe
3
-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 4


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 structurii
4
lor interne.
Toate aceste trei aspecte principale constituie ceea ce este cunoscut sub numele de arhitectura
unui calculator.


1.2. ARHITECTURA CALCULATORULUI NUMERIC

Termenul "arhitectur" este o abstractizare a proprietilor unui calculator. Ca urmare a
evoluiei funciilor i structurii calculatoarelor i noiunea de arhitectura a evoluat, reprezentnd n
prezent mai mult dect "interfaa" ntre hardware i software definit iniial de cercettorii de la
firma IBM
5
n deceniul al aselea al acestui secol. Un arhitect de calculatoare proiecteaz maini
care vor rula programe, iar sarcinile sale de proiectare vor include: proiectarea setului de
instruciuni, organizarea funcional, proiectarea logic i implementarea. Implementarea cuprinde
totul ncepnd de la circuitele integrate utilizate, pn la aspectele privind puterea consumat i
tipul de rcire.
Arhitectura, n sensul iniial de definire, ca interfa ntre hardware i software, ngloba
funciuni n hardware, prin micro-programare (microcod). Orice main ulterioar unei maini din
aceeai serie, este obligat - prin arhitectura definit - s recunoasc setul de instruciuni al celei
vechi, chiar dac are i funciuni suplimentare, [Patterson94]. La momentul introducerii sale,
noiunea de arhitectur a calculatorului se referea doar la ceea ce astzi se nelege prin arhitectura
setului de instruciuni. Aceasta este o interfaa ntre resursele hardware i resursele cele mai
rudimentare de software (cod maina - forma binar a programelor neleas de main).
Arhitectura setului de instruciuni este ceea trebuie s tie un programator pentru a scrie
programe n limbaj de asamblare, respectiv pentru a concepe i construi un program de tip
compilator, sau rutine destinate sistemului de operare. Setul de instruciuni, ca i component
arhitectural, permite att proiectantului ct i utilizatorului procesorului, s vorbeasc despre
funcii, independent de suportul hardware specific care le realizeaz. Arhitectura setului de
instruciuni (notat n continuare cu ASI
6
), ca interfa ntre hardware i software, permite mai
multor implementri, cu costuri i performane diferite, s ruleze acelai software.
Noiunea de arhitectur trebuie privit, prin analogie cu nelesul clasic al noiunii de
arhitectura
7
, care se refera la construcii, nu numai n sens declarativ al ASI (care definete un set de
proprieti abstracte, un plan) dar i n sens procedural, al unei discipline de proiectare, care implic
procesul de producere i implementare a acestor proprieti abstracte. Aceasta a doua componenta a
noiunii de arhitectura, care se refera la aspectele de implementare a funciilor (proiectare i
realizare a circuitelor ce realizeaz funciile), are la rndul su dou componente: organizare i
hardware.

4
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.
Introducere n arhitectura calculatoarelor 5

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

1.3. ORGANIZAREA GENERAL A UNUI SISTEM UNI - PROCESOR

Ca organizare general, independent de tehnologia de realizare, resursele fizice (hardware) ale unui
calculator numeric uni-procesor cuprind (figura 1.2.):
a. Procesorul. Procesorul central (de uz general) al unui calculator este numit Unitate
Centrala de Prelucrare (UCP) i este format din cale de date i unitate de control. Calea
de date cuprinde unitatea aritmetic i logic (ALU
8
), setul de registre interne, eventuale
blocuri de memorie temporar i magistralele interne procesorului, necesare transferului
informaiei. Componentele cii de date execut, n fiecare moment, operaii elementare
conform comenzilor primite de la Unitatea de Control (UC). Unitatea de control a
procesorului este automatul care, n funcie de informaiile primite din exterior, comand
celelalte uniti funcionale ale procesorului, cu scopul execuiei instruciunilor;

















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.

b. Memoria principal (numit i memorie intern sau memorie operativ). Este
adresabil, prin adres lansat de UCP, la nivel de cuvnt (octet sau multiplu de octet) i
este selectat i prin semnale de comand de ctre procesor. n memoria principal, dac
se consider arhitectura cu memorie unic de date i instruciuni, se stocheaz

8
ALU - Arithmetic and Logic Unit (engl.)
Unitate de Control

Memoria
principal
instruciuni
date
Calculator
Registre ALU
adrese i
comenzi
UCP

Sistem de
intrare / ieire
Echipamente
periferice
Capitolul 1 6


instruciunile programelor rulate de procesor i se pot scrie / citi date aferente
programelor. Este o memorie de tip semiconductor, putnd fi memorie doar cu citire
(ROM - Read Only Memory), sau memorie cu citire scriere (RAM - Random Access
Memory). Din punctul de vedere al modului de funcionare i construcie al celulelor de
memorie se pot folosi dou tipuri de memorie RAM semiconductoare: RAM static i
RAM dinamic.
c. Sistemul de intrare / ieire. Sistemul de intrare - ieire este, "poarta" prin care se face
legtura calculatorului cu lumea extern, pentru a citi i furniza date. Echipamentele
cuplate la acest sistem sunt numite echipamente periferice, iar conversaia ntre calculator
i aceste echipamente se face prin logic adresabil. Fiecare circuit de comunicare cu
exteriorul adresabil printr-o adres unic, este numit "port". Dintre echipamentele
periferice standard pentru un calculator de uz general amintim: tastatura, echipamentul de
afiare alfanumeric (display) i memoria extern (Hard-disc).

Dup cum se observ din figur Unitatea de Control i Calea de date (registre, ALU, registre
de adresare, registre de interfa cu magistralele) formeaz Unitatea Central de Procesare - UCP
(procesorul calculatorului numeric). Calculatorul numeric cuprinde cel puin o unitate UCP i
memoria principal. Un sistem de calcul este format dintr-un calculator numeric i diferite
dispozitive periferice.























Figura 1.3. Organizarea general a unui procesor, cu prezentarea interaciunilor principale
dintre unitile funcionale (prin linie punctat s-au simbolizat comenzile interne procesorului)

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
Banc de
registre de uz
general
Contor de program pentru
adresarea i aducerea
instruciunilor (fetch)
ALU
Registru adrese de memorie
(pentru adresare date)
Registru pentru stocarea
codului instruciunii curente
spre memoria principal
Logic de
control
spre memoria principal
de la memoria principal
de la memoria principal
Registru tampon pentru date
Introducere n arhitectura calculatoarelor 7

elementare ce se vehiculeaz ntre procesor i memoria principal n figura 1.3. se prezint
schematic interaciunea dintre principalele componente ale unui procesor i memoria principal
(extern procesorului).
Conform figurilor 1.2. i 1.3. informaiile principale pe care procesorul le schimb cu
exteriorul sunt: date (operanzi i rezultate) , instruciuni, adrese, informaii de control. Toate acestea
se transmit ca semnale electrice prin linii conductoare grupate n magistrale. n mod tradiional
magistralele externe procesorului sunt clasificate n:
magistral de date (Bus de date)
magistral de adrese (Bus de adrese)
magistral de control (Bus de control)

Legarea diferitelor componente ale calculatorului la aceste trei magistrale este simbolizat n
figura 1.4. Se va folosi i termenul mprumutat din limba englez pentru magistral: "bus"












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.


1.4. TENDINE ALE TEHNOLOGIEI LEGEA LUI MOORE

n 1965, Dr. Gordon E. Moore, la acel moment vicepreedinte executiv la Intel Corporation,
a prezis c numrul de tranzistoare echivalente pe un singur chip va crete n ritm constant i se
prevedea o cretere n acelai ritm pentru urmtoarele decenii. Aceast predicie, numit Legea lui
Moore, spune c puterea de calcul va crete exponenial, dublndu-se la fiecare 18 - 24 luni, pentru
un viitor previzibil. Legea lui Moore este adesea criticat, pentru c utilizatorii sunt interesai n
primul rnd de creterea performanelor procesoarelor. Este greu s se echivaleze creterea
numrului de tranzistoare pe un chip cu creterea performanei procesoarelor. n plus adesea
creterea numrului echivalent de tranzistoare nu a produs o cretere a performanelor n aceeai
msur - de aceea criticii spun c n ultimele decenii mbuntirile aduse circuitelor (procesoare,
memorii) au fost dictate mai mult de sistemul de operare Windows al firmei Microsoft, dect de
cerinele de putere de calcul din partea utilizatorilor. Creterea gradului de integrare reflectat n
creterea puterii procesoarelor reprezint doar un procent al afacerilor din domeniul dezvoltrii
tehnologiei - procent care se reduce continuu - i de obicei exist mai mult putere disponibil dect
cea necesar.
Tehnologia calculatoarelor electronice a evoluat ntr-un ritm incredibil n ultimii 60 de ani,
de la conceperea primului calculator electronic. n prezent un calculator de tip PC
9
cu pre mai mic
de 1000 de dolari, are vitez i capacitate de memorare mult mai mare dect un calculator din anii
80 al crui pre era la nivelul sutelor de mii sau milioanelor de dolari. Aa cum s-a menionat

9
PC = Personal Computer

UCP
Bloc
Memorie
principal
Bloc
Memorie
principal

I/O

I/O
Magistral de control
Magistral de date
Magistral de adrese
Capitolul 1 8


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)


1.5. DEZVOLTARE A APLICAIILOR

n prezent lumea calculatoarelor numerice este dominat de unitile centrale de procesare
(UCP) numite microprocesoare. Acestea constituie UCP nu numai pentru calculatoarele personale,
att de rspndite, dar i pentru supercomputere, staii de lucru, calculatoare de bord la mijloacele
de transport auto, aeronautice i spaiale, sau navale. Principalele domenii de aplicare a UCP sub
form de microprocesor integrat pe un singur circuit integrat sunt:
Calculatoare desktop i staii de lucru (calculatoare de uz general ce se pot aeza pe
birou)
Servere de reele sau pentru Web
Calculatoare integrate n sisteme dedicate aplicaiilor specifice
10


Calculatoarele de tip desktop sunt construite pentru utilizare general, ct mai larg, att n
domeniul procesrii de tip text, sau baze de date ct i al realizrii de calcule matematico-tiinifice,
principalul scop urmrit fiind obinerea unui raport pre / performan ct mai mic.
Calculatoarele de tip server, conin procesoare cu putere mare de calcul, sunt relativ scumpe,
iar principalele obiective ale proiectrii sunt furnizarea de servicii de calcul i de transfer al
fiierelor, cu asigurarea unei cantiti ct mai mari de operaii pe unitatea de timp. Aceste
calculatoare trebuie s prezinte n plus o mare siguran n funcionare i s aib calitatea de
scalabilitate (de extindere simpl a resurselor pe msura creterii cerinelor).
Sistemele cu calculator integrat aplicaiei (Embedded) sunt sisteme pe baz de
microprocesor construite pentru a controla o funcie sau un domeniu de funcii particulare i nu sunt
proiectate pentru a fi programate de ctre utilizatorul final, aa cum se ntmpl de exemplu cu un
PC. Sigura interaciune cu utilizatorul se face n scopul realizrii funciilor impuse sistemului -
aplicaiei. Pentru cele mai multe aplicaii aceste sisteme trebuie s rspund n timp real la
evenimentele din mediul extern. Sistemele de acest tip au constrngeri mari de proiectare n ceea ce
privete costurile, consumul de putere i gabaritul. Au un domeniu de aplicaii extrem de vast:
Sistemele de comunicaii cu i fr fir (wireless),
Sisteme de transport (auto, feroviar, naval, aeronautic)
Aplicaiile casnice i electronica de larg consum,
Sistemele de control n industrie, finane
Echipamente medicale

Lucrarea de fa nu se refer la domeniul Embedded systems ci doar la calculatoarele de uz
general i la descrierea arhitecturii i organizrii acestora.

10
Termenii consacrai n literatura tiinific de limb englez sunt: Embedded Computers i Embedded Systems.
Introducere n arhitectura calculatoarelor 9


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.

















Figura 1.5. Clasificare general a componentelor software ale unui calculator.

Ultimul tip de software n clasificarea prezentat n figura 1.5. este reprezentat de
programele utilizator ce rezolv anumite probleme specifice (software utilizator sau aplicativ). O
clasificare foarte general a sub-sistemului software al calculatorului numeric, sub forma de
niveluri ierarhice, este prezentat n figura 1.5. De observat c la sistemul de operare s-au trecut
doar funciile principale, "vizibile" utilizatorului:
administrarea sistemului de fiiere (administrarea memoriei auxiliare - MA)
gestiunea memoriei principale (MP) i asigurarea tehnicilor software pentru implementarea
memoriei virtuale,
gestionarea programelor de control (drivere) pentru dispozitivele de ntrare / ieire (I/O).

n cadrul programelor de sistem, n afara sistemului de operare s-au specificat programele de
sistem ce ofer servicii generale programatorilor (compilatoare, asambloare, editoare de legturi
11
,
programe de depanare i corectare a erorilor, bibliotecari, etc.)
Este important de observat ca aceste programe nu fac parte din sistemul de operare, chiar
daca sunt furnizate n mod obinuit de productorii de calculatoare, mpreun cu sistemul de
operare. Sistemul de operare este, n general, acea poriune din software ce ruleaz n "kernel

11
linker (engl.): tradus prin link-editor, sau editor de legturi
- software de sistem
- software utilizator
- software de asisten (pentru dezvoltarea aplicaiilor)
Software
sistem de fiiere
memorie virtual
drivere dispozitive de I/O
interpretoare de comenzi
sisteme de operare
compilatoare
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.


1.7. CLASIFICAREA N ORDINE A SISTEMELOR NUMERICE

Calculatorul numeric este un sistem digital, cu o serie de funcii ce corespund organizrii
sale interne. n literatura romneasc a fost introdus n 1983, [Stefan83], o modalitate sugestiv de
clasificare a sistemelor digitale n ordine, clasificare care ne va ajuta s ncadrm calculatorul n
clasa mai general a sistemelor numerice i totodat s exemplificam ulterior corelaia ce exist
ntre gradul de dezvoltare structural i funciile calculatoarelor numerice.

n mod tradiional, sistemele digitale sunt mprite n:
sisteme logice combinaionale (ieirile la momentul de timp t, depind numai de
valorile ntrrilor la momentul t) i
sisteme logice secveniale (la care ieirile la momentul t depind att de ntrrile la
momentul t ct i de starea sistemului la momentul t, stare determinat ntrrile i ieirile
circuitului la momente anterioare lui t).
Aceast clasificare general nu evideniaz deosebirile de structur i funcionare a circuitelor ce
sunt incluse n cadrul celor secveniale. Criteriul de clasificare propus [Stefan93] mparte
sistemele digitale n ordine, fiecrui ordin fiindu-i asociat o anumit clas de funcii.



















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
n
i
S , i = 1...4 n figur, s-
a indicat sistemul digital de ordinul n cu indicele i.
n
S
2

n
S
1

Y
X
n
S
2

n
S
1

X
Y
X
Y
n
S
4
n
S
3
n
S
2

n
S
1
X
Y
n
S
4
n
S
3
n
S
2
n
S
1
(a) (b) (c) (d)
Introducere n arhitectura calculatoarelor 11


Ordinele sunt determinate de gradul de structurare (organizare intern), numrul ordinului
crescnd pe msura creterii structurale.

Clasificarea se face conform urmtoarelor definiii:
1. Sistemul de ordinul zero cel mai simplu este reprezentat de o poart logic (circuit
combinaional elementar).
2. Extensiile serie (figura 1.6. a), paralel (figura 1.6.b) sau serie-paralel (figura 1.6.c), ale unor
sisteme ce au ordinul maxim n genereaz tot un sistem de ordinul n;
3. Un sistem de ordinul n+1 poate fi generat prin interconectarea unor sisteme cu ordin mai mic
sau egal cu n, dar ntre care cel puin unul este de ordinul n, ntr-o configuraie ce prezint o
bucl de reacie (figura 1.6.d);
n clasificarea descris pe scurt mai sus, ordinele sunt numerotate de la 0 la n, teoretic n
putnd fi orict de mare. Unui anumit ordin i corespunde o anumit clas de funcii, funcii ce pot
fi realizate i pe oricare din sistemele de ordin superior.
ncercnd s exemplificm corespondena ntre ordine, funcii i circuite existente pe pia,
vom observa c ncepnd de la ordinul cinci n sus nu mai putem s dm nite exemple concrete
[Stefan91], nu numai pentru c realizrile tehnologice actuale sunt limitate, ci i pentru c funcia
nu mai este dictat strict de structura fizic ci i de posibile structuri informaionale:

Ordinul
n =
Funcii Exemplificare circuite
0 funcii combinaionale circuite logice combinaionale
1 funcii de memorare circuite de memorare, (latch RS, latch D,
registre, RAM, structura master-slave)
2 funcii de automat finit bistabile JK, T, numrtoare digitale
3 funcii de prelucrare structura de procesor (automate cu stiva,
automate microprogramabile);
4 funcii de prelucrare programabile calculator
5 funcii de prelucrare n reea reele de prelucrare digital


1.8. REPREZENTAREA FUNCIONAL A UNUI CALCULATOR

Un calculator poate fi descris att sub aspect funcional ct i structural.
Circuitele electronice ale unui calculator recunosc i execut doar un set limitat de instruciuni
elementare, codificate n form binar. Aceste instruciuni sunt doar succesiuni de bii (1 i 0) pe
care procesorul le nelege - decodific i le execut. Indiferent de tipul de main, instruciunile
recunoscute sunt rareori mai complicate dect [Tanenbaum99]:
adun dou numere
verific dac un numr este egal cu zero
copiaz date dintr-o zon a memoriei calculatorului n alt zon.
De exemplu, la procesoarele Intel din seria 80x86 codul binar al instruciunii urmtoare:

0000 0100 0000 0110

comand adunarea coninutului unui registru intern de 8 bii (numit registrul al) cu valoarea
imediat 6. Adesea, cnd utilizatorul uman este obligat s lucreze cu valori numerice binare, se
folosete reprezentarea n hexazecimal, care este mai compact i mai uor de citit. Codul, n
hexazecimal, al instruciunii corespunztoare succesiunii binare de mai sus este 04 06 hex.
i acest mod de scriere a instruciunilor este ns complicat pentru programator.
Capitolul 1 12


Instruciunile elementare, recunoscute de un procesor formeaz limbajul main al
procesorului. Vom nota acest limbaj cu L0, el corespunznd mainii fizice M0. Limbajul main
cuprinde ns doar instruciuni codate sub form de cuvinte binare i de aceea este dificil de utilizat
de ctre om.
Presupunem c programatorul poate scrie programele sale ntr-un limbaj L1, format din
instruciuni simbolice (succesiuni de litere i cifre) mai apropiat de limbajul uman. Pentru a putea
executa acest program pe maina M0 fiecare instruciune din L1 a programului trebuie translatat
n instruciuni din limbajul L0. De exemplu programatorul poate scrie n L1 instruciunea:
add al,6
iar programul de translatare va genera succesiunea binar, corespunztoare lui L0:

0000 0100 0000 0110

Se poate spune c limbajul L1 corespunde unei maini virtuale programabile numit M1.
Numele acestui limbaj simbolic de programare este limbaj de asamblare, iar programul de
translatare este numit asamblor.
Translatarea presupune c tot programul scris n L1 este mai nti transformat n program
scris n L0. Apoi programul n L0 este ncrcat n memoria calculatorului i executat, iar programul
n L1 este abandonat. Calculatorul este controlat de programul n L0, lansat n execuie. Exemple de
programe de translatare: compilator, asamblor.
Exist ns i varianta rulrii programelor pe M0 prin interpretare, de ctre un program
numit interpretor. Interpretorul este un program n L0 care ruleaz pe maina M0 i care preia
instruciunile programului n L1 ca pe date de intrare. Interpretorul citete i decodific fiecare
instruciune din L1 i apoi trece imediat la execuia acesteia. n cazul interpretorului nu se
genereaz un program executabil ca la translatare. n acest caz calculatorul este controlat de
programul interpretor.




















Figura 1.7. O main de calcul organizat din punct de vedere funcional ca o succesiune de mai
multe niveluri de maini virtuale.
Nivelul 0: Programele n L0 pot fi
executate direct de ctre circuitele
electronice
Maina fizic (real)
M0, cu limbajul
main L0
Maina virtual M1, cu
limbajul main L1
Maina virtual M2, cu limbajul
main L2
Maina virtual Mn, cu limbajul
main Ln
Nivelul 1: Programele n L1 pot s fie
interpretate de un interpretor ce ruleaz pe
M0, sau pot s fie translatate n L0
Nivelul 2: Programele n L2 pot s fie
interpretate de un interpretor ce ruleaz pe
M1 sau M0, sau pot s fie translatate n L1
sau L0
Nivelul n: Programele n Ln pot s fie
interpretate de un interpretor ce ruleaz pe
o main de nivel inferior, sau pot s fie
translatate ctre limbajul main al unei
maini inferioare
Introducere n arhitectura calculatoarelor 13


Programatorii doresc adesea s dispun de un limbaj de programare mult mai apropiat de
limbajul uman, n care s existe comenzi de genul: tiprete un ir la imprimant, afieaz un
text pe ecranul calculatorului, extrage radical dintr-un numr etc. Diferenele dintre un limbaj de
acest fel i L0 sunt mari, iar la transformarea direct ctre L0 a instruciunilor noului limbaj fiecrei
instruciuni i va corespunde o succesiune de instruciuni elementare din L0. Dac noul limbaj ar fi
numit L1, iar transformarea s-ar face direct n L0 programul de translatare ar fi extrem de complex.
De aceea programul scris n noul limbaj, s-l numim limbajul L2, corespunztor mainii virtuale
M2, va fi translatat mai nti ctre un program n L1 i apoi ctre programul n L0.
Conform ierarhiei de limbaje descrise mai sus, un calculator poate fi privit, din punct de vedere
funcional, ca o succesiune de maini virtuale M
i
, fiecare corespunztoare unui limbaj L
i
(i = 1, n),
ca n figura 1.7. Fiecare nivel are un set de funciuni specifice care prelucreaz un set de intrri
specifice i genereaz un set de ieiri specifice. O main virtual de pe un anumit nivel poate
utiliza toate funciile oferite de maina de pe nivelul inferior.
Structura ierarhic a mainii de calcul indic c ntre fiecare dou niveluri vecine exist o
interfa, deci exist i o ierarhie vertical de interfee. Pentru un calculator de uz general, cu
procesor avnd unitatea de control microprogramat, aceast ierarhie de maini virtuale i ierarhie
de interfee se indic n figura 1.8. n partea dreapt a figurii s-a exemplificat aspectul programului
la nivelul respectiv.
n figura 1.7. nivelurile succesive de maini virtuale au fost imbricate. Aceasta pentru c o
maina virtual
12
de pe un nivel superior folosete toate funciile oferite de nivelurile inferioare. Un
nivel este constituit din mulimea aplicaiilor asupra elementelor mulimii de intrare pentru nivelul
dat, ct i asupra elementelor mulimilor de intrare i ieire de la nivelul imediat inferior. Aplicaiile
de la un nivel dat pot constitui aplicaii i pentru nivelul superior urmtor. Cele mai multe
calculatoare moderne au 2 sau mai multe niveluri. Exist ns i maini de calcul la care se pot
identifica mai mult de 5 niveluri ierarhice de maini virtuale.
n figura 1.8. se observ c la nivelul cel mai de jos se gsesc dispozitivele i circuitele
electronice digitale care alctuiesc structura hardware a calculatorului. La urmtoarele dou niveluri
se exemplific existena unui nivel combinat hardware - software (firmware) care cuprinde pe lng
unitile logice funcionale (set de registre, ALU, unitate de control, etc.) i un nivel de
microprogram, ncastrat ntr-o memorie local de control. Acest nivel face parte din unitatea de
control microprogramat, iar microprogramele se constituie ca un interpretor al instruciunilor de la
nivelul inferior al unitilor funcionale. n cazul n care unitatea de control este cablat, nivelul de
microprogram nu apare explicit n ierarhia mainilor virtuale.
La urmtorul nivel se observ nivelul instruciunilor elementare recunoscute de procesor.
Este nivelul funciilor de baz pe care le ofer un anumit procesor de calculator i el este descris de
ctre productori n manualele de descriere a procesoarelor. Acesta este nivelul ASI (nivelul
arhitecturii setului de instruciuni), iar maina virtual maina de baz.
Dei maina "nelege" setul specific de instruciuni binare i toate unitile funcionale sunt
asamblate, la acest nivel maina poate fi folosit cu greu i numai dac utilizatorul scrie n cod
main nu numai programul de aplicaie utilizator, dar i rutinele necesare pentru accesul la
perifericele de intrare i de ieire (tastatur, display
13
, disc magnetic, etc.). La acest nivel,
dispozitivele de intrare / ieire (I/O) pot fi controlate prin ncrcarea de valori n registre speciale
ale circuitelor de control ale acestor dispozitive I/O (controllere I/O). De exemplu, controlul unei
uniti de disc, pentru citirea informaiei de pe disc, se poate face prin ncrcarea valorilor
corespunztoare adresei de pe disc, adresei memoriei principale, a numrului de octei de transferat,
i alte informaii de stare i sincronizare. n practic, sunt necesari mult mai muli parametrii dect

12
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.
























Figura 1.8. Ierarhia mainilor virtuale i a interfeelor pentru un calculator de uz general cu procesor avnd
control microprogramat.


Nivelul mainii virtuale a sistemului de operare este de fapt un sistem hibrid.
[Tanenbaum99], pentru c cele mai multe dintre instruciunile (funciile) oferite sunt de asemenea
instruciuni i pentru nivelul imediat inferior. Funciile suplimentare oferite se refer la
administrarea resurselor hardware i software ale calculatorului (alocarea memoriei principale,
administrarea memoriei secundare, posibilitatea de execuie concurent a programelor etc.). Uneori
acest nivel este numit nivelul mainii extinse, pentru c la acest nivel calculatorul este vzut de
utilizator prin intermediul sistemului de operare (SO). Comunicarea utilizatorului, sau programului
utilizator, cu SO se realizeaz pe dou niveluri: prin intermediul limbajului de comand cu ajutorul
cruia utilizatorul solicita diferite resurse ale sistemului i prin intermediul unor instruciuni
speciale (apeluri sistem) la execuia crora sunt activate unele componente ale SO
Sistemul de operare nu este doar o interfa ntre utilizator i maina de calcul. El are i
sarcina de administrator al resurselor calculatorului. El trebuie sa administreze toate procesele
(programele n cursul execuiei, mpreun cu contextul de lucru), memoriile intern i extern,
discurile magnetice, dispozitive de intrare / ieire, etc. Sarcina sistemului de operare este s fac o
alocare ordonat i controlat a proceselor, blocurilor de memorie, dispozitivelor de I/O, ntre
diferitele programe ce se afl n competiie pentru a le folosi. Atunci cnd un calculator are
Pachete de aplicaii
Limbaj de nivel nalt
Asamblor
Maina virtual a sistemului de operare
Instruciuni main
Microprogram
Uniti funcionale
Dispozitive electronice
Translatare sau interpretare
Translatare
Translatare
Interpretare
Implementare
Interpretare parial
Interpretare
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;
shl dl,1
jnc adr1
add ax,bx
shl ax,1
dec cl
0110 1101 0000 0100 1110 1011 1101 1100
1000 0000 1101 1001 0100 1101 1110 1110
1000 0110 1110 1100 0111 0000 1110 1101
0111 1010 1111 1011 1000 0010 1110 1001
Introducere n arhitectura calculatoarelor 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.

1.9. REPREZENTAREA STRUCTURAL A UNUI CALCULATOR

Structural, un calculator este format din uniti funcionale interconectate pentru a putea
prelucra informaia, pe baza comenzilor transmise prin program. Pentru un calculator uni-procesor,
structura general este cea din figura 1.9., ea corespunznd structurii propuse de von Neumann n
1945 pentru calculatorul secvenial, cu program memorat. n cadrul structurii calculatorului
secvenial din figura 1.9. se disting urmtoarele uniti [Sztojanov87]:
unitatea de intrare, format din echipamente periferice de intrare i sistemul de intrare al
calculatorului,
unitatea central a calculatorului, format din memoria principal (memorie ce conine
date i instruciuni) i Unitatea Central de Procesare (UCP),
unitatea de ieire, format din echipamente periferice de ieire i sistemul de ieire al
calculatorului.

Echipamentul periferic de intrare, preia datele din exterior (prin diverse traductoare) i le
transform ca natur fizic i format de reprezentare, n aa fel nct informaia s fie compatibil
cu nivelurile de tensiuni i formatul de reprezentare binar folosit de sistemul de intrare al
calculatorului.
Echipamentul periferic de ieire are funcia invers perifericului de intrare, el prelund
datele de la sistemul de ieire al calculatorului. Echipamentul periferic de ieire transform datele
primite ntr-o form corespunztoare elementului de execuie comandat de calculator. Dac este
vorba de dispozitive de memorie extern informaia se stocheaz pe suportul extern, conversia
informaiei binare fcndu-se n conformitate cu tipul circuitului de control i cu natura fizic a
suportului de stocare (hrtie, semiconductor, material magnetic etc.).
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).


















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.


Unitatea central asigur prelucrarea automat a datelor, prin interpretarea instruciunilor
unui program. Programul rulat (aflat n execuie) este stocat mpreun cu datele aferente n memoria
principal (intern calculatorului). Introducerea datelor iniiale, comanda lansrii n execuie,
afiarea, tiprirea sau transmisia la alte dispozitive a rezultatelor se face prin unitile de intrare,
respectiv de ieire ale sistemului de calcul.
Ca structur intern, unitatea central este format din memoria principal i din Unitatea
Central de Procesare (UCP). La rndul ei UCP include calea de date (ALU, registre, magistrale
interne pentru transferul informaiilor) i unitatea de control.
Unitatea de control (UC), adreseaz (A) i citete din memorie instruciunile binare ale
programului, le interpreteaz i genereaz n consecin semnale de comand ctre toate celelalte
uniti funcionale ale calculatorului. Ca urmare a acestor semnale instruciunea curent (I) este
executat. n plus UC analizeaz semnale de stare i sincronizare, ce provin de la celelalte uniti
funcionale i ca urmare poate schimba succesiunea semnalelor de control pe care le genereaz, sau
poate modifica momentele de timp ale succesiunii semnalelor de comand, pentru a realiza
sincronizarea cu celelalte uniti. Exist dou moduri de implementare a unitii de control:
control cablat: dac unitatea de control este realizat ca un automat secvenial
convenional, la care algoritmul de interpretare a fiecrei instruciuni binare este inclus n
Sistem de calcul cu program memorat (von Neumann)

Periferice de
intrare

Periferice de
ieire

Sistem de
intrare

Sistem de
ieire

Memoria
principal

ALU i
registre

Unitatea de
control
I
D
UCP
Calculator
C
C+A
Introducere n arhitectura calculatoarelor 17

circuitele fizice (hardware). Pentru modificarea setului de instruciuni recunoscut unitatea
de control trebuie re-proiectat complet.
control microprogramat (micro-codat): dac succesiunea de semnale de comand
specifice fiecrei instruciuni (succesiune numit microprogram) se nscrie ntr-o memorie
de control local, de obicei, memorie numai cu citire. Pentru modificarea setului de
instruciuni recunoscut trebuie doar rescris coninutul memoriei de control.

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.





















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 (ALU
14
), 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, fanioane
15
) 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
ALU = Arithmetic and Logic Unit (engl.) - Unitate aritmetic i logic
15
flag (engl.) = fanion, indicator de condiii / de stare
Adresa 0
Adresa 1
Adresa k
Adresa 2
a-1
-1
Adresa 2
a
-1
d bii
Capitolul 1 18


adres unic. Adresa poate lua valori cuprinse ntre 0 i 2
a
-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.

1.10. SCURT PRIVIRE ISTORIC
ASUPRA DEZVOLTRII MAINILOR DE CALCUL

Un calculator modern reprezint un sistem complex care nglobeaz n construcia s mai
multe tehnologii: electronice, magnetice, electromecanice etc. Evoluia calculatoarelor este strns
legat de progresele nregistrate n aceste tehnologii. Astfel, n prezent, pentru realizarea unitii
centrale a unui calculator se utilizeaz, cu precdere, tehnologii microelectronice. Att memoria
principal ct i UCP (microprocesorul) sunt construite ca circuite integrate pentru toate
calculatoarele moderne. Pentru stocarea datelor i a programelor pe termen lung se folosesc
suporturi magnetice sub forma de discuri sau benzi, bazate pe diverse tehnologii magnetice / optice.
Pentru implementarea dispozitivelor periferice de intrare / ieire sunt folosite n principal
tehnologiile electromecanice.
n evoluia mijloacelor de calcul se pot evidenia patru etape [Hayes88]:
etapa calculului manual
etapa mainilor mecanice de calcul
etapa mainilor electromecanice de calculat
etapa mainilor electronice de calcul

Introducere n arhitectura calculatoarelor 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.

1.10.1. Etapa mainilor mecanice de calcul

La aceste maini roata dinat a jucat rolul elementului cu mai multe stri stabile. Fiecare cifr
zecimal poate fi exprimat printr-o poziie a roii. La reprezentarea numerelor zecimale se foloseau
attea roi cte cifre erau necesare pentru reprezentarea unui numr. Ca evenimente semnificative
ale mainilor mecanice de calcul amintim:

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.















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.

Cartelele cu variabile ("variable cards") se foloseau pentru a selecta locaiile de memorie
utilizate de o anumit operaie (de exemplu sursa operandului de intrare i destinaia
rezultatului). Informaiile numerice constante se puteau furniza fie prin cartele perforate, fie
prin setarea manual a roilor dinate numrtoare.
Alta contribuie important a lui Babbage a fost concepia mecanismului care s permit
unui program s-i modifice automat secvena liniar de operaii. n termenii actuali putem
spune ca el a conceput mecanismul de execuie a instruciunilor de salt condiional, prin
testarea semnului unui numr.
1912. ncepe producia industrial, de mas, a mainilor mecanice de calculat, cu patru operaii
aritmetice.

1.10.2. Maini electromecanice de calculat

Aceste maini de calcul erau construite cu roi dinate, electromagnei i maini electrice de
acionare a roilor dinate. Principalele momente n dezvoltare sunt urmtoarele:
1896 -Herman Hollerith, care anterior inventase o main comercial cu cartele perforate pentru
calcul, sortare, i catalogare a cantitilor mari de date, a nfiinat "The Tabulating Machine
Company " pentru a fabrica echipamentul inventat de el. n 1911 aceast companie s-a unit cu
altele i a format "Computing-Tabulating-Recording Company" redenumit n 1924
"International Business Machines ( IBM ). Este interesant de menionat ca prototipul mainii
de sortare i catalogare construit de Hollerith, a fost folosit n calcularea rezultatelor pentru
recensmntul populaiei SUA din 1890.
1904 - inventarea tubului electronic (dioda) de ctre John Fleming, menionat aici ca prim
dispozitiv electronic ce va permite apariia calculatoarelor electronice.

The mill
(Unitatea de
calcul)

The store
(Memoria)

Imprimare i
perforare
rezultate
Cartele cu
operaii
Cartele cu
variabile
Program
Instruciuni
Date
Introducere n arhitectura calculatoarelor 21

1930 - Producie de mas a mainilor electromecanice de calculat cu cele patru operaii
aritmetice elementare.
1937 - 1945. n SUA s-au dezvoltat mai multe maini electromecanice de calculat, bazate pe
relee electromagnetice, majoritatea funcionnd n aritmetic zecimal, dei electromagnetul
putea fi suport pentru aritmetica binar. Astfel, Howard Aiken fizician la Universitatea Harvard
a propus n 1937 proiectul unui calculator electromecanic de uz general, bazat pe principiile
enunate de Charles Babbage. Construcia calculatorului, numit MARK 1, a nceput n 1939 i
s-a terminat n 1944. Era programat cu informaii nscrise pe band de hrtie perforat, sau cu
cartelele de comand i variabile.
In 1938 Konrad Zuse a construit, n Germania, calculatorul electromecanic, numit Z1, care
utiliza aritmetica binar n loc de cea zecimal. n 1941 Zuse realizeaz o variant mbuntit
a calculatorului su, pe care o numete Z3 i care se consider c a fost primul calculator
operaional de uz general controlat prin program. Unitatea aritmetic era construit cu relee i
utiliza reprezentarea numerelor n virgul mobil.

1.10.3. Maini electronice de calcul

Mainile electronice de calcul, s-au dezvoltat n strns legtur cu dezvoltarea tehnologiilor
de realizare a dispozitivelor electronice i a circuitelor integrate i de asemenea pe msur
dezvoltrii tiinei calculatoarelor (organizare, arhitectura setului de instruciuni, limbaje de
programare, programe de sistem etc.). Un element revoluionar pentru dezvoltarea resurselor fizice
ale sistemelor de calcul l-a constituit perfecionarea tehnologiilor de producere a circuitelor
integrate i apariia circuitelor integrate pe scar foarte mare (VLSI). Amintim ca n funcie de
gradul de integrare circuitele integrate pot fi clasificate n:
circuite integrate pe scar mic (SSI- aproximativ 1-10 pori logice convenionale pe chip-ul
de siliciu; o poart se consider a avea aproximativ 5 tranzistoare echivalente)
circuite integrate pe scar medie (MSI - pn la o sut de pori / chip)
circuite integrate pe scar mare (LSI - mii de pori / chip)
circuite integrate pe scar foarte mare (VLSI - sute de mii de pori / chip)

Pentru a clasifica mainile de calcul electronice, n literatura de specialitate se vorbete
adesea despre generaii de calculatoare electronice. Aceast clasificare pe generaii succesive, dei
util, este totui bazat pe criterii destul de vagi, astfel c pentru unele calculatoare este destul de
dificil ncadrarea ntr-o generaie sau alta. Trebuie inut cont aici, c pe lng dezvoltrile
tehnologice, inovaiile n proiectare, dezvoltarea limbajelor i a tehnicilor de programare, un efect
important asupra dezvoltrii calculatoarelor l-a avut piaa - criteriul comercial.
Avnd n vedere tehnologiile utilizate n construcia calculatoarelor, ncepnd cu anul 1945,
se pot evidenia cinci generaii de calculatoare, ce vor fi descrise pe scurt n continuare ([Hayes88]).

Generaia I de calculatoare electronice (aproximativ 1945-1954)

Caracteristici principale ale calculatoarelor de generaia I:
Utilizarea tuburilor electronice pentru realizarea circuitelor electronice
Folosirea memoriilor interne cu tub catodic (CRT
16
) i linii de ntrziere cu mercur;
Capacitatea memoriei principale de aproximativ 1-2 kilo-cuvinte
Aritmetica n virgul fix
Viteza de operare: mii sau zeci de mii de instruciuni pe secund.
Programarea se fcea iniial doar n cod maina, iar apoi i n limbaje de asamblare.
Ca evenimente principale menionm n ordine cronologic:

16
CRT = Cathode Ray Tube (engl.) = tub catodic. Este aceeai tehnologie utilizat i n televiziune.
Capitolul 1 22


In 1943 la Universitatea din Pennsylvania a nceput construcia primului calculator bazat pe
tuburi electronice, numit ENIAC (Electronic Numerical Integrator And Computer), ce va fi
terminat n 1946. Echipa de proiectani i constructori a fost condus de Presper Eckert, John
Mauchly i John von Neumann. Calculatorul avea 18000 de tuburi electronice, cntrea 30 tone
i era folosit pentru generarea automat a tabelelor balistice pentru armata SUA. Era cel mai
rapid calculator construit pn atunci, putnd realiza cam 5000 de operaii de adunare ntr-o
secund. ENIAC a fost construit pentru a funciona n aritmetic zecimal. Pentru memorarea n
acumulatori a unei cifre zecimale se utiliza un cerc constnd din 10 bistabile cu tuburi. Contorul
n cerc cu tuburi electronice era echivalentul roilor contoare mecanice din generaiile anteriore
de maini de calcul. Maina putea efectua operaii de adunare i scdere, dar avea uniti
suplimentare pentru nmulire, mprire i rdcin ptrat. Programarea se fcea manual prin
comutatoare i cuple pentru cabluri de legtur la diferite module. De exemplu pentru adunarea
a dou numere din acumulatoarele A1 i A2 trebuia stabilit manual o cale de date ntre A1 i
A2. Introducerea datelor se fcea prin cartele perforate. Mai cuprindea nite memorii speciale,
numite tabele de funcii, utilizate pentru stocarea tabelelor i constantelor. Rezultatele se
obineau fie pe cartele perforate, fie la maina electric de scris. La aceast main de calcul
datele i programele erau stocate separat.
n timpul realizrii lui ENIAC, n 1945, John von Neumann a lansat ideea de a stoca n aceeai
memorie att datele ct i programul, descriind arhitectura unui "calculator cu program
memorat".
n 1945 a nceput construcia unui alt calculator electronic, EDVAC (Electronic Discrete
Variable Automatic Computer ) pe baza lucrrii lui von Neumann "Prima schi de Raport
asupra lui EDVAC". Pe lng facilitarea procesului de programare, conceptul de program
stocat, fcea posibil ca un program s-i modifice propriile instruciuni, proprietate rar utilizat
n prezent. nainte ca programul s fie executat, toate instruciunile i datele se stocau n
memoria principal.
In 1946 un colectiv condus de von Neumann a nceput proiectarea unei noi maini, numit IAS,
la Institute for Advanced Studies din Princeton (calculatorul a fost terminat n 1951). Aceast
main utiliza o memorie principal cu acces aleator cu tub catodic, care permitea s se
acceseze ntr-o operaie un ntreg cuvnt. Spre deosebire de EDVAC se utilizau circuite binare
paralele. Calculatorului IAS, avea posibilitatea de a-i modifica partea de adres din
instruciune. Aceasta permitea utilizarea aceluiai program pentru prelucrarea mai multor seturi
de date, reducndu-se astfel spaiul ocupat de program n memorie. UCP coninea cteva
registre cu tuburi electronice, folosite ca locaii de stocare rapid, implicit a operanzilor i
rezultatelor. Dei avea faciliti limitate de intrare-ieire, maina IAS era destul de modern n
concepie. Ea poate fi privit ca un prototip pentru toate calculatoarele de uz general ce au
urmat. n cadrul memoriei auxiliare, se folosea un dispozitiv cu fir magnetic i se puteau stoca
aproximativ 20 k-cuvinte.
n 1948 cercettorii americani John Bardeen, Walter Brattain i William Shockley au inventat
tranzistorul (cu contact punctiform), deschiznd era miniaturizrii n circuitele electronice.
Pentru descoperirea lor au primit n 1956 premiul Nobel n domeniul fizic.
Pe baza proiectului EDVAC, Eckert i Mauchly, n cadrul unei companii proprii (Eckert-
Mauchly Computer Corporation), au produs n 1951, primul calculator comercial, numit
UNIVAC
17
1. Memoria principala era realizat cu linie de ntrziere cu mercur, iar memoria
auxiliar cu band magnetic.
In 1953 firma IBM construiete calculatorul cu program memorat, IBM 701, dup ce anterior
construise doar echipamente pentru cartele perforate i doar o main de calcul, modelul
Howard Mark I (relee electronice i program cablat). Memoria principal era de tip electrostatic

17
UNIVAC = Universal Automatic Computer
Introducere n arhitectura calculatoarelor 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.

Generaia a II-a de calculatoare electronice (aproximativ anii 1955 - 1964)

Din punct de vedere al tehnologiei de realizare este generaia caracterizat de folosirea
tranzistoarelor discrete. Totodat n aceast generaie se dezvolt limbajele de nivel nalt pentru a
uura munca programatorilor, i se dezvolt sisteme de operare, pentru a gestiona resursele
hardware i software ale sistemului.
Caracteristici principale ale calculatoarelor din generaia a doua:
Utilizarea tranzistoarelor n locul tuburilor electronice
Apariia cablajului imprimat.
Apariia memoriilor interne cu miezuri de ferit i tambur magnetic;
Utilizarea registrelor index i implementarea cablat (n hardware) pentru aritmetica n
virgul mobil;
Se rspndesc limbajele de nivel nalt, independente de main, care simplific munca de
programare: ALGOL, COBOL, FORTRAN;
Introducerea procesoarelor de intrare-ieire (IOP
18
) pentru a supraveghea operaiile de I/O i
pentru a elibera UCP de aceste sarcini. Procesoarele de intrare-ieire (au fost numite i
"canale", sau "sincronizatoare de date") au acces direct la memoria principal (prin
multiplexarea adreselor ntre IOP i UCP). Ele recunosc un set redus de instruciuni i
ruleaz programe specifice, independent i simultan cu UCP, iniierea oricrui transfer avnd
ns nevoie de iniializarea fcut de UCP;
Productorii de calculatoare au nceput s furnizeze i software de sistem, ca de exemplu:
compilatoare, biblioteci de subrutine i monitoare pe loturi;
Performane principale: capacitatea memoriei principale de aproximativ 32 kilo-octei i
vitez de operare de aproximativ 2 MIPS.
Multe din mbuntirile pomenite mai sus au aprut sporadic n unele calculatoare cu tuburi,
deci ncadrate formal n generaia anterioar. De la generaia a 2-a se vorbete despre sisteme de
calcul, pentru c numrul unitilor de memorie, al procesoarelor, al dispozitivelor de I/O i alte
componente de sistem puteau varia ntre diferite instalaii, chiar dac se utiliza acelai calculator de
baz. La unele calculatoarele din aceast generaie apare pentru prima oar memoria stiv
19

(Electric KDF-9 i Burroughs B5000). Pentru aceast memorie de tip LIFO
20
, la maina B5000
primele dou cuvinte din stiv reprezint registre rapide ale UCP n timp ce restul stivei se gsete
n memoria principal. Memoria stiv era folosit n aa fel nct toate instruciunile i operanzii
erau preluate din vrful stivei, iar rezultatele erau de asemenea plasate n vrful stivei. De aici
rezult c n cele mai multe din instruciuni nu este nevoie de specificarea adresei operanzilor.
O dat cu mbuntirea echipamentelor de I/O (din punctul de vedere al vitezei), a aprut
necesitatea de a se pregti loturi de lucrri
21
pentru execuie. nainte de rulare acestea erau stocate
pe band magnetic, iar apoi calculatorul le prelucra ntr-o secven continu plasnd rezultatele pe
o alt band magnetic, de ieire. Prin lucrare / job, nelegem o nlnuire a execuiei mai multor
programe: compilator, programe de legare i ncrcare, programe utilitare, lansare n execuie, cu

18
IOP = Input-Output Processor
19
stack / stack memory (engl.) = stiv / memoria stiv
20
LIFO = Last-In First-Out; ultimul articol introdus este primul ieit-citit din memorie.
21
batch of jobs (engl.) = loturi de lucrri.
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 processing
22
), 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
batch processing = prelucrare secvenial / pe loturi succesive.
23
C.I. = Circuit Integrat, original n englez Integrated Circuit - I.C.
Introducere n arhitectura calculatoarelor 25

Memoriile semiconductoare sub forma de C.I. au capacitate de memorare crescut i
nlocuiesc treptat celelalte tipuri de dispozitive n cadrul memoriei principale.
Se generalizeaz tehnica microprogramrii pentru realizarea unitii de control. Ca urmare
se simplific activitile de proiectare a UCP. Este unul din elementele care au permis
dezvoltarea seriilor de calculatoare compatibile din punctul de vedere al arhitecturii.
Se dezvolt o serie de tehnici menite a crete viteza de execuie a programelor: pipelining,
multiprocesare.
Se dezvolt sisteme de operare, acestea furnizndu-se o dat cu sistemul de calcul.
Apar noi limbaje de programare (Pascal, C, LISP), grafica pe calculator, baze de date, etc.
n perioada de timp descris ca fiind a generaiei a treia apare un numr foarte mare de
calculatoare, preul lor scznd semnificativ fa de generaia anterioar (de exemplu: IBM
24

System/360 (1965), IBM System/370 (1970), CDC 6600
25
, CDC 7600, CYBER, ASC
26
, ILLIAC
IV
27
).
Tot n aceast generaie se produc i comercializeaz primele calculatoare multiprocesor.
O caracteristic important a calculatoarelor din aceast generaie este utilizarea
generalizat a sistemelor de operare. Se dezvolt sistemele de operare multiprogramare
28

(multiprogramming), multiutilizator
29
i multi-procesare
30
(multiprocessing)
Generaia a treia este generaia n care se produce un fenomen deosebit pentru dezvoltarea i
rspndirea tehnicii de calcul, prin producia de mas a unor calculatoare mici i de pre sczut,
numite minicalculatoare. Ca exemple se pomenete seria de minicalculatoarele PDP - Programmed
Data Processor de la firma Digital Equipement Corporation (DEC) i seria LINC - Laboratory
Instrument Computer al firmei MIT.
Datorit costului lor sczut, minicalculatoarele erau adecvate pentru o mare varietate de
aplicaii, ca de exemplu controlul industrial, unde era nevoie de calculatoare dedicate permanent
unei anumite aplicaii. Unele minicalculatoare au performane comparabile, sau chiar mai bune,
dect calculatoarele mari din generaia a 2-a.
n aceast perioad se implementeaz conceptul memoriei virtuale. Memoria virtual
presupune o tehnic de organizare ierarhic (pe cel puin dou niveluri) a memoriei, administrarea
sistemului de memorie fcndu-se de un sistem de operare, cu scopul de a mri capacitatea aparent
a memoriei la care UCP are acces direct
31
. Deoarece capacitatea memoriei principale este limitat,
n primul rnd din considerente de cost, este imposibil s se stocheze n memoria principal (MP)
toate programele aflate n execuie i datele aferente lor. De aceea, este necesar s se aloce dinamic
spaiul de memorie ntre diferitele programe concurente i s se transfere (copieze) informaia din
memoria auxiliar (MA) n MP, pe msur ce ea este cerut. De asemenea programarea este mult
simplificat dac calculatorul poate fi vzut ca avnd o singur memorie adresabil direct,
nelimitat ca dimensiuni, i la care s aib acces fr restricii toi programatorii. Memoria virtual
a aprut pentru prima dat pe o main numit Atlas, proiectat n Anglia n 1962. IBM 360/85, a

24
IBM = International Business Machines
25
CDC = Control Data Corporation
26
ASC = Advanced Scientific Computer, Texas Instruments
27
ILLIAC = Illinois Automatic Computer
28
multiprogramming = multiprogramare. Execuia simultan ntreesut a dou sau mai multe programe sau sarcini.
ntreeserea se refer la faptul c la un anumit moment de timp se execut un singur program, dar exist mai multe
programe lansate n execuie. Cele suspendate temporar ateapt producerea unor evenimente care s le relanseze n
execuie.
29
multiuser = multiutilizator. Se refer la un sistem de calcul ce poate fi folosit de mai muli utilizatori ce au acces
simultan la resursele sistemului, de obicei de la terminale diferite. n cazul sistemelor de calcul uni-procesor, accesul
multiplu la resurse se asigur prin partajarea timpului UCP.
30
multiprocessing = multiprocesare. Prelucrare a dou sau mai multe programe sau sarcini de lucru de ctre dou sau
mai multe procesoare de uz general (UCP), ntr-un calculator numit multiprocesor.
31
acces direct = transferul datelor se face direct ntre memorie i registrele UCP, conform informaiilor de adresare i
selecie generate de UCP.
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 pagina
32
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
pagin de memorie = o zon continu de memorie de o anumit dimensiune
33
C.I. = Circuit Integrat
Introducere n arhitectura calculatoarelor 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-calculatoarelor
34
.
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
Introducere n arhitectura calculatoarelor 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:

1971 - Intel a produs primul microprocesor de 4 bii (Intel 4004)
1974 - Intel produce microprocesorul de 8 bii I8080
1974 - Motorola produce microprocesorul de 8 bii MC 6800
1976 - Apare primul microcalculator, destinat n special activitilor recreative, produs de noua
firm Apple. Ca UCP s-a folosit un microprocesor 6502 (asemntor cu MC6800) de la firma
MOS Technologies, proiectanii microcalculatorului fiind doi americani entuziati - Stephen
Jobs i Steven Wozniak.
1976 - Zilog produce popularul microprocesor de 8 bii numit Z80
1978 - Intel produce microprocesorul de 16 bii I8086
1979 - Motorola produce microprocesorul de 16 bii MC 68000, la care apare pentru prima oar
o structur de tip pipeline rudimentar cu trei etaje.
1981 - IBM lanseaz pe pia Personal Computer (IBM PC), moment extrem de important n
rspndirea calculatoarelor de uz general construite pe baz de microprocesor.
1981 - apariia primelor proiecte de arhitecturi RISC: RISC 1 i RISC 2 la Universitatea din
Berkeley, respectiv MIPS la Universitatea Stanford
1984 - Motorola MC68020, care introduce paralelismul la nivelul executrii instruciunilor
printr-o structur pipeline cu cinci etaje.
1985 - procesor ARM (proiectat n prezent la Advanced RISC Machine, iniial denumit Acorn
RISC Machine) - procesoare RISC destinate n special domeniului Embedded, pentru
dispozitive portabile. Dac n 1985 a aprut ARM1, n 2002 a fost lansat ARM 11, un RISC pe
32 bii cu extensii arhitecturale pentru instruciuni codate pe 16 bii (TDMI) sau set de
instruciuni Java. Este considerat un procesor extrem de reuit, astfel c nuclee ARM doteaz
majoritatea telefoanelor mobile digitale i agendele electronice din prezent.
1990 - maini RISC de la Motorola (MC 88110) i Intel (80960)
1990 - Apariia arhitecturilor superscalare
1991 - R4000 un procesor RISC de 64 bii de la MIPS Computer Systems
1994 - Intel produce primul procesor Pentium la 133 MHz
1999 - Intel Pentium III la 500 MHz
2000 - Apariia primelor procesoare cu frecven de ceas peste 1 GHz.
2002 - Apariia primelor procesoare cu frecven de ceas peste 2 GHz.










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:

n
executie Timp
executie Timp
A
B
=
_
_
(2.1)

sau considernd c performana (ca vitez de execuie) este inversul timpului:

n
a Performant
a Performant
a Performant
a Performant
executie Timp
executie Timp
B
A
A
B
A
B
= = =
1
1
_
_
(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:

100
1
_
_ p
executie Timp
executie Timp
A
B
+ = (2.3)
sau
100
1
p
a Performant
a Performant
B
A
+ = (2.4)
adic


=
B
B A
a Performant
a Performant a Performant
p 100 (2.5)

O expresie de genul Maina A este mai performant cu 50% fa de maina B indic c
numrul de sarcini de lucru terminate n unitatea de timp pe maina A este de 1.5 ori mai mare
dect pe maina B.
Cele spuse mai sus sunt adevrate pentru un calculator care execut un singur program de
testare, fr ntrerupere de la lansare, pn la terminarea sarcinii de lucru. n alte cazuri, cum ar fi
de exemplu un sistem cu multi-programare, UCP poate abandona temporar un program
(ntreruperea execuiei) n timp ce se ateapt operaii de I/O i s se treac la execuia altui
program. Ca urmare, n msurarea timpului de execuie al unui program pe un anumit procesor
trebuie inut cont i de eventuala ntrerupere temporar a programului. Evident c din punctul de
vedere al utilizatorului timpul este un timp de rspuns (de la lansare pn la terminarea execuiei)
sau un timp de ateptare, care include i intervalele de timp cnd se ruleaz altceva, prin partajarea
timpului procesorului. De aceea, n [Patterson96] se introduce noiunea de timp al UCP (pe care l
vom nota n continuare T
UCP
), care este o msur a timpului efectiv ct procesorul (UCP) ruleaz

Modaliti de evaluare a performanelor 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 T
UCP
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 throughput
1
(putere de
calcul).
De obicei termenii timp de rspuns
2
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]:

clk UCP
T CPI NrI T = (2.6)

unde:
NrI = numrul de instruciuni din program
CPI
3
= numrul mediu de perioade de ceas pe instruciune; poate fi calculat prin
mprirea numrului de perioade de ceas pentru un program, la numrul de
instruciuni din program.
T
clk
= perioada impulsului de ceas a procesorului.


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:
clk
clk
clk UCP
f
program pe tact Perioade
T program pe tact Perioade
T CPI NrI T
_ _ _
_ _ _
=
=
=


1
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


5
10 1
10 5
6
6
=

=
UCP
T secunde

ncercnd s comparm diferite sisteme, apar urmtoarele problemele:

frecvenele de ceas sunt diferite pentru diferite calculatoare
arhitecturile celor dou calculatoare comparate pot fi diferite, conducnd la valori diferite
pentru componentele din relaia timpului de execuie pe UCP.

De aceea, pentru a putea face o comparaie ct de ct acceptabil, trebuie rulat acelai program de
testare a performanelor pentru ambele calculatoare care se compar.

Pentru a micora timpul de execuie ar trebui s micorm cele trei componente din relaia
(2.6), componente care nu sunt ns independente.
Numrul mediu de perioade de ceas pe instruciune (CPI) este determinat de:
arhitectura procesorului, prin componentele: set de instruciuni i modul de organizare
viteza de lucru a procesorului cu memoria principal, datorit faptului c instruciunile i
datele iniiale / finale se stocheaz n aceast memorie.

Valoarea medie CPI poate fi exprimat fie ca raport ntre numrul total de cicluri de ceas i
numrul de instruciuni, fie n funcie de numrul mediu al perioadelor de ceas, (P), necesare
procesorului pentru decodificarea i execuia instruciunilor, numrul mediu de referine-accesri la
memorie (A) i raportul k dintre timpul de acces la memorie i perioada de ceas a procesorului,
conform relaiei:

k A P CPI + = (2.7)

Din cele pomenite se contureaz cteva direcii ce pot fi folosite pentru a micora CPI i
implicit i T
UCP
:

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.

Modaliti de evaluare a performanelor 35


Frecvena impulsului de ceas (clock) a UCP depinde n primul rnd de tehnologia de
realizare a procesorului, dar i de organizarea intern a acestuia. Din pcate creterea frecvenei de
oscilaie a impulsului de ceas conduce la creterea puterii consumate i a cldurii disipate de
circuite.
mbuntirea tehnologic este o condiie necesar, dar nu i suficient pentru creterea
spectaculoas a performanelor. Procesarea paralel a informaiei conduce la mbuntirea
performanelor globale ale mainii, fr a modifica ciclurile de baz ale procesorului. Condiia de
funcionare a arhitecturilor care permit execuia n paralel a mai multor instruciuni este ca
instruciunile s fie independente. Procesarea paralel a instruciunilor ntr-o arhitectur pipeline,
poate conduce, n cazul ideal, la terminarea unei instruciuni la fiecare perioad de ceas. n cazul
ideal performana se va mbunti de un numr de ori egal cu numrul de nivele ale arhitecturii
pipeline.
mbuntirea performanelor dincolo de nivelul obinut prin pipeline (ideal - o instruciune
pe ciclu de ceas) se poate face n dou moduri [Nicula97]:

creterea numrului de etaje pipeline i lansarea succesiv a mai multor instruciuni pe o
perioad de ceas (arhitectur superpipeline);
lansarea simultan a mai multor instruciuni pe o perioad de ceas, spre uniti de execuie
multiple (arhitectur superscalar).

Ambele variante se bazeaz pe aceeai idee: lansarea mai multor instruciuni ntr-o
perioad de ceas nu garanteaz terminarea mai multor instruciuni pe perioad de ceas; dar, lansarea
unei singure instruciuni pe perioad de ceas n mod sigur nu poate determina terminarea mai
multor instruciuni pe perioad de ceas.
Cu privire la termenul CPI, care este o valoare medie, calculat pentru un anumit program, a
numrului de perioade de ceas pe instruciune, trebuie s observm urmtoarele:

ntr-un program exist mai multe tipuri de instruciuni, fiecare tip de instruciune putnd
avea un numr diferit de cicluri de ceas pentru execuie complet. De exemplu o instruciune
de transfer ntre dou registre va dura mult mai puin dect o instruciune de nmulire a dou
numere.
arhitectura setului de instruciuni, prin modurile de adresare folosite, poate conduce la
diferene de timp, chiar ntre instruciuni similare. Astfel o instruciune de scdere a doi
operanzi aflai n registrele interne ale UCP va dura mai puine cicluri de ceas dect o
instruciune la care unul din operanzi se gsete n memorie.


Exemplu numeric:
ntr-un program de testare a performanelor (benchmark) cu 250 instruciuni, exist urmtoarele
tipuri de instruciuni:
100 instruciuni de tip load/store
4
, 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:

4
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


92 . 6
250
1730
250
) 50 20 ( ) 3 50 ( ) 1 80 ( ) 5 100 (
= =
+ + +
= CPI

La calculul CPI, ca valoare medie, este adesea util s se calculeze numrul total de perioade
de ceas ale CPU ( ), pentru un program, conform relaiei:
p
NrClk

(

=
=
n
i
i i p
I CPI NrClk
1
) (2.8)
unde:
I
i
- indic de cte ori este executat instruciunea i ntr-un program
CPI
i
- numrul mediu de perioade de ceas necesare pentru execuia instruciunii i.

Ca urmare timpul de execuie de ctre UCP al unui program, cu n tipuri de instruciuni, poate fi
exprimat ca:

=
=
n
i
i i clk UCP
I CPI T T
1
(2.9)

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:

( )
NrI
I CPI
NrI
NrClk
CPI
n
i
i i
P

= =
1
(2.10)
sau

=
n
i
i
i
NrI
I
CPI CPI
1


Ultima form a expresiei CPI, indic ca mod de calcul nmulirea fiecrei valori CPI
i
cu frecvena
de producere a instruciunii de tip
i
ntr-un program, expresie care se scrie de obicei ca:

=
=
n
i
i i
F CPI CPI
1
(2.11)

unde
NrI
I
F
i
i
= (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.

Modaliti de evaluare a performanelor 37


trebuie investit n instruciunile cu frecven mare i nu n cele ce se folosesc rar.


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 CPI
i
Frecvena CPI
i
*F
i
(% Timp)
Operaie ALU 1 60% 0.60 39%
Load (citire memorie) 2 22% 0.44 28%
Store (scriere memorie) 2 3% 0.06 4%
Ramificare 3 15% 0.45 29%
Total: 100% 100%
CPI mediu total: 1.55



2.2. ALTE UNITI DE MSUR


n scopul msurrii i comparrii performanelor s-a introdus mrimea MIPS
5
(Milioane de
Instruciuni Pe Secund) exprimat ca:

6
10
=
UCP
T
NrI
MIPS (2.13)

sau prin nlocuirea lui T
UCP
din ecuaia (2.6) i simplificare:

6
10
=
CPI
f
MIPS
clk
(2.14)

unde f
clk
= 1/T
clk
este frecvena oscilatorului de ceas.

Ultima relaie (2.14) este mai des folosit, fiind mai uor de calculat, pentru c depinde de
frecvena de ceas i nu de numrul de instruciuni din program. De asemenea relaia (2.14) pare s
indice corect faptul c un procesor cu frecven de ceas mai mare are o valoare MIPS mai mare. De
fapt nu este chiar aa, pentru c frecvena ceasului este inclus i n relaia termenului CPI.
Avantajul introducerii parametrului MIPS const n exprimarea uoar i n faptul c este deosebit
de sugestiv pentru clienii cumprtori de maini de calcul. Msura prezint ns dezavantaje atunci
cnd este folosit pentru a compara diferite maini, pentru c: [Patterson94]:

valoarea MIPS este dependent de setul de instruciuni, fcnd dificil i neconcludent
compararea ntre calculatoare cu seturi diferite de instruciuni;
valoarea MIPS, pentru acelai calculator, variaz n funcie de programele rulate. La
programele cu operaii complexe valoarea medie CPI este mare;

5
MIPS = Millions of Instructions per Second
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.


Urmtoarea msur introdus a ncercat s se refere doar la operaiile n virgul mobil:
MFLOPS
6
= milioane de operaii n virgul mobil pe secund. Bazat pe operaii i nu pe
instruciuni, MFLOPS are intenia s fac o comparaie corect ntre diferite maini, cu referire nu
la instruciuni ci doar la operaii n virgul mobil. Ideea de la care s-a pornit a fost c acelai
program, rulat pe diferite calculatoare, va executa un numr diferit de instruciuni, dar acelai
numr de operaii n virgul mobil. Relaia folosit pentru calcul este:

6
10
program din VM n operatii Nr.

=
UCP
T
MFLOPS (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.

2.3. PROGRAME ETALON DE TESTARE A PERFORMANELOR

6
MFLOPS = Millions FLoating-point Operations Per Second

Modaliti de evaluare a performanelor 39




Alt direcie n crearea de msurtori n scopul comparrii performanelor diferitelor maini
este rularea unor programe etalon de testare a performanelor (benchmarks). Utilizarea
programelor benchmarks dorete s fac evaluarea i compararea performanelor mainilor, prin
rularea acelorai programe, analiznd n final timpul de execuie.

Programele etalon de testare se pot referi la diferite componente ale sistemului de calcul:

UCP (Unitatea central de procesare)
aritmetic n virgul fix / mobil
sistemul de memorie
sistemul de I/O
sistemul de operare

Programele de test pot fi mprite n urmtoarele categorii [Patterson94]:

1. Programe reale: de exemplu compilatoare de C, programe de procesare a textelor,
programe de proiectare asistat (Spice). Testarea se face n condiii similare privind
intrrile, ieirile i setarea opiunilor. Aplicaiile reale folosite pentru testarea
performanelor i comparare au dezavantajul c uneori se pot ntlni probleme de
portabilitate, mai ales datorit dependenei de sistemul de operare folosit pe calculator.

2. Aplicaii modificate: adesea aplicaiile reale sunt folosite ca i blocuri componente ale
unor programe de testare. Modificrile constau n eliminarea unor componente (de
exemplu eliminarea componentelor de I/O dac programul de test este destinat
performanelor UCP) sau prin introducerea unor componente care mresc gradul de
portabilitate al programelor. n aceast categorie sunt incluse i aplicaiile controlate prin
fiiere de comenzi (scripted
7
applications). Script-urile sunt folosite pentru a simula
programe de aplicaie i de asemenea cu scopul de a reproduce o comportare interactiv,
de exemplu prin afiri pe ecranul calculatorului, sau pentru a simula interaciunea multi-
user produs pe un sistem de tip server.

3. Nuclee (kernels) din programe reale: s-au extras poriuni semnificative, numite nuclee,
din programe reale, pentru a fi folosite ca rutine de test. Ele sunt utile pentru a indica
performana, referit la caracteristici individuale ale unei maini, permind s se explice
motivele diferenelor n performan pentru programele reale. Exemple: Livermore
Loops, Linpack.

4. Toy benchmarks (programe de test amuzante - jucrie): sunt programe scurte (maxim
100 de linii de cod) care produc un rezultat cunoscut nainte de rulare, folosite doar
pentru a testa viteza de execuie. Exemplu Sieve of Erastosthenes, Puzzle, Quicksort. Nu
sunt foarte concludente, acesta fiind un motiv suplimentar pentru care sunt privite ca
jucrii.

5. Programe de test sintetice (synthetic benchmarks): sunt programe artificial create, dar
asemntoare din punctul de vedere al inteniilor cu programele de test de tip kernels,
ncercnd s fac testarea pe baza unor operaii i operanzi ce se consider a fi

7
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



caracteristici pentru frecvena medie de apariie a acestora n programele reale. Dintre
testele des folosite, amintim Drystone i Whetstone. Programul de test Dhrystone se
bazeaz pe analiz statistic i este utilizat pentru testarea performanelor la aritmetica cu
numere ntregi i pentru modul de transmitere a parametrilor la apelul unor funcii. A
fost implementa n limbajele Ada i C. Programul de test raporteaz un numr de
Dhrystones/secund - o valoare util doar n compararea cu alte valori obinute la
execuia programului de test. Numele programului Dhrystone s-a dat comparativ cu
numele celuilalt test sintetic numit Whetstone (traducerea din englez a numelui
Whetstone nseamn tocil, piatr de ascuit). Faptul c Dhrystone nu folosete operaii
n virgul mobil (n englez floating point, iar float nseamn a pluti ) adic, dac
nu plutete trebuie s fie uscat (n englez Dry). Pentru aritmetica n virgul mobil se
folosete testul Whetstone. Whetstone este o colecie de coduri care testeaz performana
la rularea unor biblioteci matematice n virgul mobil. A fost scris iniial n Algol, dar
ulterior a fost implementat n mai multe limbaje de programare de nivel nalt. Programul
de test raporteaz un numr de Whetstones/secund - o valoare intenionat fr valoare
intrinsec, util doar n compararea cu alte valori obinute la execuia programului de
test. Sunt utilizate n calcule funcii sinus, cosinus i funcii transcendente, pentru a
msur performana coprocesorului sau a simulrii acestuia de ctre UCP prin unitatea
de prelucrare a ntregilor (ALU).

Teste ca Drystone i Whetstone, testeaz amnunit doar UCP, dar nu testeaz performana
celorlalte componente ale sistemului, cum ar fi unitile de disc, dispozitivul de afiare, etc. De
aceea au aprut rutine de test specializate pentru testarea periferiei i a interfeelor cu periferia
sistemului de calcul.

n 1988 s-a nfiinat corporaia SPEC (The Standard Performance Evaluation
Corporation) ca organizaie non-profit format cu scopul de a stabili, menine i garanta seturi
standardizate de programe de test (benchmarks) ce pot fi aplicate la noile generaii de calculatoare
de nalt performan. Organizaia s-a numit iniial System Performance Evaluation Cooperative
i ea cuprindea firmele HP, DEC, MIPS i Sun. SPEC
8
a crescut n timp, incluznd n prezent peste
60 de companii, i a devenit una dintre organizaiile de succes privind standardizarea programelor
de test n multe domenii ale sistemelor de calcul, al reelelor de calculatoare, al sistemelor cu
calculator integrat (embedded systems) i al prelucrrii datelor.
Organizaia SPEC nu realizeaz testare de maini de calcul, ea doar dezvolt seturi de
programe de test i de asemenea analizeaz i public rezultatele propuse/obinute de membrii
organizaiei i alte instituii liceniate pentru aceasta. Rezultatele ce se gsesc pe web-site-ul
organizaiei au fost transmise de parteneri. SPEC nu ruleaz nici un program de test, ci doar
dezvolt programe de test, analizeaz i public rezultatele obinute i transmise ctre SPEC de
membrii organizaiei i alte instituii liceniate pentru aceasta. SPEC nu are control asupra
companiilor partenere i nici asupra sistemelor sau configuraiilor pe care s-au fcut testele, dar
SPEC analizeaz i valideaz doar rezultatele ce apar pe web-site-ul lor.
Consoriul stabilete setul de programe de test (doar programe reale, nuclee, sau aplicaii
modificate) i intrrile folosite la rularea acestor programe. Principala caracteristic a programelor
de test SPEC este c sunt formate din seturi (suite) de aplicaii pentru testarea procesoarelor.
Avantajul setului de programe de test este dat de faptul c eventuala slbiciune a uneia dintre
aplicaiile de testare poate fi compensat rulnd celelalte aplicaii din setul etalon de testare
(benchmark).

8
vezi http://www.spec.org

Modaliti de evaluare a performanelor 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 ISP
9
),
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 inter-
platforme. 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, multi-
media pentru jocuri i timp liber).

Un alt set de programe de test standardizate sunt programele de test TP (Transaction-
Processing). 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
ISP = Internet Service Provider
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.


2.4. COMPARAREA PERFORMANELOR PRIN MEDIERE


Modul de comparare a performanelor diferitelor maini de calcul a fost i va fi un
permanent subiect de discuie pentru cercettori. Aceasta pentru c exist nu numai interese
financiare i de carier la mijloc, dar i din cauz c puini vor putea spune ntotdeauna i fr nici o
urm de ndoial, c o main testat este mai bun dect alta. Trebuie luate n considerare foarte
multe elemente ale sistemului de calcul, dar n final, cel mai bun calculator este cel care prezint cel
mai bun raport performan / pre. Dar performana este strns legat de aplicaiile ce vor fi rulate
pe maina respectiv.
Pentru compararea mai multor maini, cea mai simpl metod este s se ruleze acelai
program pe fiecare dintre maini i s se determine timpul de execuie. Dar dac una dintre maini
are performanele cele mai bune pentru un program de test rulat, iar dac se alege un alt program de
test are rezultate mai slabe dect competitorii? Pentru a evita o asemenea situaie se face testarea
prin rularea mai multe programe diferite pe fiecare din mainile testate i apoi s se ia o decizie cu
privire la performane.
Cel mai simplu mod de comparare consider fiecare program i fiecare main n parte, ca n
exemplul urmtor:

Exemplul 1 privind compararea performanelor

Se dau trei maini notate A, B i C i trei programe de test notate P1, P2 i P3
Dup rulare se obin timpii din tabelul de mai jos:

Tabelul 2.2.
Calculator A Calculator B Calculator C
Program P1 (secunde) 5 10 15
Program P2 (secunde) 900 100 20
Program P3 (secunde) 200 300 30
Timp total (secunde) 1105 410 65

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.

Modaliti de evaluare a performanelor 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:

=
n
i
i
Timp
n
1
1
(2.16)

unde timpul Timp
i
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.

Calculator A Calculator B Calculator C
Program P1 (secunde) 5 10 15
Program P2 (secunde) 900 100 20
Program P3 (secunde) 200 300 30
Media aritmetic (secunde) 368.33 136.67 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:


Msura 2: Media aritmetic ponderat

Dac programele P1, P2 i P3 nu sunt rulate n mod egal n sarcina de lucru de testare a
performanelor, exist dou abordri pentru rezumarea performanei.
Prima abordare atunci cnd exist o combinaie inegal de programe n sarcina de lucru
este s se atribuie factori de ponderare w
i
pentru fiecare program, pentru a indica frecvena relativ
a programului n acea sarcin de lucru. Dac, de exemplu, 20% din sarcin a constat n programul
P1 i 70% din sarcin a fost programul P2, atunci factorii de ponderare vor fi 0,2 pentru P1, 0,7
pentru P2 i 0,1 pentru P3 (ei nsumai trebuie s fie 1). Rezult media aritmetic ponderat:

n
i
i i
Timp Pondere
1
(2.17)

=
=
n
i
i
Pondere
1
1

unde Pondere
i
este frecvena programului i n sarcina de lucru iar Timp
i
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
A
Program
B
Program
C
Observaii
Program P1 (secunde) 5 10 15
Program P2 (secunde) 900 100 20
Program P3 (secunde) 200 300 30

Set 1 de ponderi 0,333 0,333 0,333
Media aritmetic pentru set 1 368.33 136.67 21.67 media aritmetic neponderat
Set 2 de ponderi 0,960 0,039 0,001
Media aritmetic pentru set 2 40.10 13.80 15.21
Set 3 de ponderi 0,959 0,001 0,040
Media aritmetic pentru set 3 13.70 21.69 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:

Modaliti de evaluare a performanelor 45



n
n
i
i
Executie Timp Raport

=1
_ _ (2.18)

unde Raport_Timp_Executie
i
este timpul de execuie normalizat (raportat) la maina de referin,
pentru programul cu numrul i din numrul total de n ale sarcinii de lucru. Raportul se poate calcula
uor, pentru c media geometric are o proprietate avantajoas pentru dou eantioane A
i
i B
i
,
astfel c putem face fie raportul mediilor. fie media rapoartelor:

=
i
i
i
i
B
A
Geometrica Medie
B Geometrica Medie
A Geometrica Medie
_
) ( _
) ( _
(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.
Normalizat la A Normalizat la B Normalizat la C
Program P1 1.00 2.00 3.00 0.50 1.00 1.50 0.33 0.67 1.00
Program P2 1.00 0.11 0.02 9.00 1.00 0.20 45.00 5.00 1.00
Program P3 1.00 1.50 0.15 0.67 1.00 0.10 6.67 10.00 1.00
Medie aritmetic 1.00 1.20 1.06 3.39 1.00 0.60 17.33 5.22 1.00
Medie geometric 1.00 0.69 0.22 1.44 1.00 0.31 4.64 3.22 1.00
Timp total 1.00 0.37 0.06 2.70 1.00 0.16 17.00 6.31 1.00



2.5. LEGEA LUI AMDAHL


Ctigul n performan ce se poate obine prin mbuntirea unei componente a unui
calculator poate fi calculat cu ajutorul Legii lui Amdahl. Legea stabilete valoarea creterii globale
a vitezei sistemului n condiiile utilizrii unei metode de cretere a vitezei doar pentru una din
componentele sistemului, creterea global depinznd de fraciunea de timp ct acea component
este utilizat. Legea permite calculul valorii numerice a creterii n vitez a sistemului pe baza
Capitolul 2 46


mbuntirii unei caracteristici particulare (speedup
10
, 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 timpul de execuie consumat
dup mbuntirea unei componente i cu timpul de execuie nainte de mbuntire,
raportul lor reprezentnd creterea n vitez a sistemului.
nou
T
vechi
T

veche
noua
nou
vechi
a Performant
a Performant
T
T
Speedup = = (2.20)
adic
F nF n
n
T
T
Speedup
nou
vechi
+
= = (2.21)
sau expresia final:
n
F
F
Speedup
+
=
) 1 (
1
(2.22)
unde
nou
T = timpul de execuie consumat dup mbuntirea de n ori a unei
componente
vechi
T = timpul de execuie nainte de mbuntire
F = fraciunea de timp ct este utilizat componenta mbuntit
n = de cte ori au fost crescute performanele unei componente.

Relaia legii lui Amdahl, conform ecuaiei (2.22) poate fi dedus pe baza unui exemplu, pe care-l
prezentm n continuare. (vezi i figura 2.1.). Se presupune c un sistem execut un program de test
n 100 de secunde. Dac se crete de 10 ori viteza unei componente a sistemului, iar aceast
component este utilizat doar 20% din timpul total de execuie al programului, s se determine cu
ct crete viteza ntregului sistem.
Pentru timpul de rulare nainte de mbuntirea unei componente putem scrie

2 1
t t T
vechi
+ = (2.23)


10
speedup (engl.) = cretere n vitez.

Modaliti de evaluare a performanelor 47


n care , , iar F = fraciunea de timp ct este utilizat componenta
ce va fi mbuntit. Pentru exemplul numeric din figura 2.1., F = 20%.
vechi
T F t =
1 vechi
T F t = ) 1 (
2
Dup realizarea mbuntirii, prin creterea vitezei componentei de n = 10 ori putem scrie:

2
1
2 11
t
n
t
t t T
nou
+ =
+ =
(2.24)

sau
vechi
vechi
nou
T F
n
T F
T +

= ) 1 ( (2.25)





t
11
(2s)
t
2
(80s)
cretere de 10
ori a vitezei
pentru aceast
component
t
2
(80s)
t
1
(20s)

T
vechi
(100s)






T
nou
(82s)




Figura 2.1. Exemplificare, pentru justificarea expresiei analitice a Legii lui Amdhal.



i aranjat pentru comparaie cu ecuaia (2.22):

) 1 ( F
n
F
T
T
vechi
nou
+ = (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


( )
22 , 1
82 , 0
1
02 , 0 8 . 0
1
10
2 , 0
2 , 0 1
1
= =
+
=
+
= =
nou
vechi
T
T
Speedup
9 , 163
22 , 1
= =
vechi
nou
T
T 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
( )
212 . 1
8
2 . 0
2 . 0 1
1
=
+
= Speedup







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


- pag 50

3.1. STRUCTURA DE PROCESOR


Unitatea Central de Prelucrare (UCP) a calculatorului numeric este o structur de procesor
de uz general, cu set de instruciuni. UCP este un procesor de uz general, spre deosebire de alte
procesoare cu set de instruciuni, cum ar fi procesoarele de I/O, sau procesoarele aritmetice, care
ndeplinesc doar funcii limitate, specifice. De asemenea UCP este un procesor cu set de
instruciuni, pentru c UCP recunoate i execut un set specific de instruciuni, furnizate din
exteriorul su, sub form binar.
n cadrul unui sistem de calcul, UCP are responsabilitatea general de interpretare i
execuie a instruciunilor unui program.
n accepiunea clasic (von Neumann) a unui sistem de calcul, maina conine o singur
Unitate Central de Prelucrare. Un astfel de calculator este numit uniprocesor, pentru a-l deosebi de
calculatoarele multiprocesor, care conin dou sau mai multe UCP.
Cele mai importante consideraii privind arhitectura i organizarea unei UCP se refer la
urmtoarele:

Tipurile de instruciuni, ce formeaz setul de instruciuni al UCP;
Organizarea la nivel de registru a unitii aritmetice i logice;
Organizarea la nivel de registru a unitii de control a UCP;
Modul n care UCP comunic cu dispozitivele externe.

Ca structur general, un procesor cuprinde o unitate de prelucrare a datelor (care conine o
unitate aritmetic i logic i registrele folosite ca memorie local) i o unitate de control. Conform
modalitii de clasificare a circuitelor digitale n ordine, fiecare dintre cele dou componente
amintite se constituie ca un automat cu ordinul cel puin egal cu 2. Structura procesorului,
presupune o bucl de reacie ntre cele dou automate componente, deci procesorul este, conform
clasificrii n ordine descris n capitolul 1, un automat de ordinul 3.
Unitatea Aritmetic i Logic (ALU), efectueaz operaii cu datele de intrare (operanzi) i
conine pe lng structurile combinaionale pentru efectuarea acestor operaii, circuite de tip
registru pentru memorarea local, sau prelucrarea datelor i circuite necesare transferului de
informaie ntre registre i cu exteriorul ALU (circuite de decodificare, codificare, multiplexare,
comparare, circuite tampon, etc.). Registrele locale folosite ca memorie de mare vitez, pot fi
folosite i pentru efectuarea unor operaii aritmetice sau logice. Principalele operaii realizate de
Unitatea Aritmetic i Logic (ALU) sunt:

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".
Fundamente ale arhitecturii UCP 51


Intrrile n unitatea de prelucrare notate "comenzi interne procesorului", reprezint comenzi
ctre ALU generate de unitatea de control. Conform acestor comenzi ALU va prelucra datele de la
intrare i va furniza datele la ieire (registre interne sau externe). Aceste comenzi (n form binar)
pot reprezenta:

codul operaiei pe care trebuie s o execute ALU;
informaii de adresare a registrelor interne unitii de prelucrare, (de exemplu pentru a se
indica registrele surs i / sau destinaie ale operaiilor efectuate de ALU, pentru a se selecta
/ valida registre tampon de memorare a valorilor binare de la "Intrare date " sau la "Ieire
date ");
semnale de sincronizare (destinat logicii secveniale interne a unitii de prelucrare); aceste
semnale indic momentele de timp cnd se face transferul ntre registre, respectiv momentele
de ncrcare a unor registre.

Indicatorii de condiii sunt poziionai de unitatea de prelucrare n conformitate cu "evenimentele"
ce s-au produs la efectuarea operaiei comandate anterior pentru ALU. Aceti indicatori (numii i
fanioane) sunt memorai de obicei n bistabile, incluse ca celule ale unor registre de indicatori,
registre interne UCP. Indicatorii de condiii pot reprezenta, de exemplu, semnul rezultatului,
rezultat zero, paritatea rezultatului etc.
















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)


Succesiunea de comenzi primit de ALU este generat de ctre un automat cu algoritm de
stare ncorporat, numit Unitate de Control (UC). Algoritmul de stare definete succesiunea strilor
automatului, respectiv succesiunea i natura comenzilor. Algoritmul de stare poate fi implementat
fie n structura fizic (hardware) a UC, fie prin nscrierea comenzilor binare secveniale ntr-o
memorie de control de mare vitez. n primul caz vorbim de unitate de control cablat, iar n al
doilea caz de unitate de control microprogramat.
Sistemul digital format dintr-un automat de prelucrare aritmetic i logic i o unitate de
control este numit procesor.
Datorit reaciei pe care UC o primete de la Unitatea de prelucrare, UC examineaz
caracteristicile rezultatelor (prin testarea valorii indicatorilor de condiii) i astfel poate modifica
secvena de comenzi n mod corespunztor. UC primete din exterior "instruciuni", fiecare din
UNITATE DE
PRELUCRARE A
DATELOR
(ALU i registre)
UNITATE
DE
CONTROL
Ieire date
Intrare date
Comenzi
interne
procesorului
Indicatori de condiii
Comenzi externe
Instruciuni
i semnale de
stare externe
Capitolul 3 52


- pag 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 micro-
operaii, fiecare din acestea implicnd operaii de transfer ntre registre. Timpul t
UCP
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.
Fundamente ale arhitecturii UCP 53


























Figura 3.2. Schema bloc care indic funcionarea ciclic a procesorului. (MP = memoria principal)


Aceasta frecven este dependent direct de arhitectura i de tehnologia de fabricaie a UCP.
n cele mai multe dintre (micro-)procesoarele implementate frecvena la care funcioneaz UCP nu
este identic cu frecvena oscilatorului de ceas cu cuar, care fixeaz baza de timp a
microprocesorului. Frecvena de lucru a UCP este un multiplu, sau submultiplu al frecvenei
oscilatorului de ceas.
n plus, pentru a executa programele stocate n memoria principal, UCP controleaz
celelalte componente ale sistemului, prin linii de comand i stare speciale. De exemplu, UCP
controleaz direct sau indirect operaiile de I/O, cum ar fi transferul datelor ntre dispozitivele de
I/O i memoria principal (MP).
De multe ori operaiile cu porturile de I/O cer rar intervenia UCP i de aceea este mai
eficient pentru UCP s ignore dispozitivele de I/O pn cnd acestea cer servicii de la UCP.
Asemenea cereri sunt numite ntreruperi. Dac apare o cerere de ntrerupere, UCP poate suspenda
execuia programului executat pentru a trece temporar controlul la o rutin de tratare a cererii de
ntrerupere. Un test al prezentei cererilor de ntrerupere se face la sfritul fiecrui ciclu
instruciune.
n cadrul unui calculator pot ns s existe i cereri simultane de acces la un anume
dispozitiv sau la o magistral. Motivul principal l constituie comunicarea, n general asincron (n
sensul c diferitele dispozitive nu pot fi sincronizate direct de un semnal comun de ceas), dintre
procesor i alte dispozitive. Comunicarea asincron este dictat de mai multe cauze:
Exist un mare grad de independen ntre componentele sistemului. De exemplu, ntr-
un calculator, UCP i procesoarele de intrare-ieire (IOP) pot executa programe
diferite, ceea ce nseamn c cele dou componente interacioneaz relativ rar i la
momente de timp nepredictibile.
Adresare i aducere instruciune
curent din MP (Fetch)
Decodificare
cod instruciune
Execuie instruciune
(secven de microoperaii)
Start
Stop ?
Stop
DA
NU
Capitolul 3 54


- pag 54
Viteza de funcionare a componentelor fizice ale calculatorului variaz n limite largi.
De exemplu UCP poate lucra la viteze de zeci de ori mai mari fa de dispozitivele de
memorie principal, n timp ce viteza MP poate fi cu cteva ordine de mrime mai
mare ca viteza dispozitivelor de I/O.
Distana fizic ntre componente poate fi prea mare pentru a permite transmisia
sincron a informaiei ntre ele.
Operaiile efectuate ntr-un ciclu instruciune pot fi mprite n operaii intermediare de tip:
aducere cod instruciune (citire memorie), aducere operand (citire memorie sau registru I/O), scriere
memorie sau registru I/O, etc. Ciclul ce corespunde desfurrii n timp a acestor operaii
intermediare va fi numit ciclu main (CM). El cuprinde deci suma activitilor ce rezolv o
operaie intermediar bine definit, cu o finalitate clar. Primul ciclu main al oricrui ciclu
instruciune este ciclul de fetch (extragere-aducere a codului operaiei).
Concluzionnd putem spune c un ciclu instruciune (CI) cuprinde mai multe cicluri main,
fiecare ciclu main desfurndu-se de-a lungul mai multor stri ale UCP.
Din punctul de vedere al liniilor de legtur cu exteriorul UCP (blocul procesor a fost
redesenat n figura 3.3.), de obicei liniile de intrare date (D
in
) i ieire date (D
out
) se unific n linii
comune de date de intrare-ieire ce sunt legate la o magistral (bus) extern bidirecional (fig.
3.3b).



















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.
D
in
I D
out

S
C
UCP
D
in
I
D
out

S
C
UCP
Magistral bidirecional de
date i instruciuni
b)
a)
Fundamente ale arhitecturii UCP 55




















Figura 3.4. Diagrame bloc pentru exemplificarea deosebirilor dintre arhitecturile:
(a)von Neumann i (b) Harvard.

Magistrala unic de date i instruciuni este numit magistral de date bidirecional i ea
ofer anumite avantaje sistemului, din punctul de vedere al flexibilitii modului de lucru cu
exteriorul. Cteva din aceste avantajele unei magistrale unice de date i instruciuni sunt:

se folosete o memorie unic pentru stocarea datelor i instruciunilor (memoria principal,
extern procesorului). Rezult simplificarea UCP din punctul de vedere al automatului de
adresare a memoriei i al numrului de registre implicate.
folosirea unei memorii unice, unde se stocheaz att date ct i instruciuni crete
flexibilitatea sistemului, pentru c nu exista restricii privind adresele de stocare a datelor i
instruciunilor n memoria principal.

Acest mod de organizare are i dezavantaje, din punctul de vedere al vitezei de lucru i din
punctul de vedere al unei relative creteri n complexitate a unitii de control, care trebuie s
interpreteze n mod corect cuvintele citite din memorie ca fiind date, sau instruciuni.
n cadrul liniilor notate ca i comenzi de ieire (C) am inclus i adresele binare pe care
procesorul le trimite ctre memorie sau circuitele de intrare - ieire ale calculatorului. Acestea sunt
grupate de obicei ntr-o magistral separat, numit magistral de adrese.
Deosebirile dintre arhitecturile von-Neumann i Harvard pentru organizarea memoriei
principale i a magistralelor de acces cu aceast memorie sunt indicate n schemele bloc din figura
3.4.
Prin conectarea procesorului cu un circuit de memorie, n care se stocheaz programul de
executat (ansamblul instruciunilor binare) mpreun cu datele eferente programului, se realizeaz o
structur de calculator. Aici reacia, care conduce la automatul de ordin superior (ordinul 4) se
nchide prin programul stocat n memorie, program care controleaz comportarea n timp a
procesorului.
Schema bloc din figura 3.5. indic faptul c procesorul are circuite de interfa (tampoane)
pe toate liniile de conectare cu exteriorul. Acestea permit "deconectarea" procesorului de la
magistralele externe de date i adrese i de asemenea eliberarea unor linii de control externe, astfel
nct alte dispozitive active (procesoare) din sistem s poat prelua temporar controlul
(a) Arhitectur
von Neumann
(memorie unic)
adrese
date
Memorie
date i
instruciuni
CPU
adrese MP
date MP
Memorie
de Program
(MP)
doar
instruciuni
CPU
adrese MD
date MD
Memorie
de Date
(MD)
doar date
(b) Arhitectur
Harvard
(memorii separate)
Capitolul 3 56


- pag 56
magistralelor. Uneori tampoanele de la interfaa procesorului cu exteriorul, au n afara capacitii de
trecere n stare de nalt impedan (HiZ) i capacitatea de memorare (latch).
Trebuie menionat c rolul principal al tampoanelor la interfaa procesorului cu exteriorul nu
const n posibilitatea de HiZ, ci n capacitatea de a asigura factorii de ncrcare de ieire (fan-out
1
)
i intrare (fan-in
2
) necesari circuitelor logice, pentru asigurarea nivelurilor corecte de tensiune.
Circuitele tampon au de asemenea rol de izolare ntre circuitele interne i cele externe procesorului
i rolul de a permite controlul unor valori de capacitate parazit limit, pe fiecare linie.




















Figura 3.5. Structur de calculator, format din UCP i memorie principal, cu indicarea circuitelor
tampon la interfaa procesorului cu exteriorul.

3.2. STRUCTURA UNEI
UNITI CENTRALE DE PROCESARE ELEMENTARE


Cea mai simpl structur de UCP, bazat pe registru acumulator poate fi descris ca n
figura 3.6. n fiecare dintre unitile componente ale procesorului s-a figurat elementele principale
ce permit interpretarea instruciunilor i execuia acestora.
n Unitatea de prelucrare a datelor s-au inclus Unitatea Aritmetic i Logic (ALU),
registrul Acumulator (AC) i cile interne de transfer a datelor. n afara acestor elemente pot exista
i registre de memorare temporar, registre folosite de procesor pentru operaii intermediare, dar
inaccesibile programatorului. ALU este un circuit combinaional i, aa cum s-a pomenit anterior,
realizeaz operaii aritmetice sau logice cu operanzii de la intrare. Operaia este comandat de
semnale de control intern provenite la unitatea de control. De exemplu, dac operaia ALU este
selectat prin 4 bii, se pot selecta pn la 16 operaii elementare (adunare, complementare, I logic,

1
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.
Control
&Stri
Tampon
bidirecional
Tampon
unidirecional
Tampon

UCP
Adrese
Date
Memoria
Principal
Magistral
bidirecional de
date i instruciuni
Magistral de
adrese
Magistral de
control
Fundamente ale arhitecturii UCP 57


SAU, scdere etc.).





















Figura 3.6. O structur simpl de procesor de uz general, pe baz de acumulator:

Pentru un procesor de uz general, n structura unitii de prelucrare a datelor pe lng logica
combinaional de prelucrare, decodificare, multiplexare, exist de obicei i un set de registre de uz
general, vizibile programatorului i folosite pentru stocarea temporar a operanzilor i a
rezultatelor. Aceste registre sunt selectate cu ajutorul unor cmpuri binare din cadrul codului
fiecrei instruciuni. n structura UCP elementare se consider, pentru moment, doar existena
registrului acumulator. Acumulatorul este prezent n arhitectura majoritii microprocesoarelor de 8
bii i este un registru cu funcie special, el fiind att registru de stocare pentru un operand surs,
ct i registru de stocare pentru operandul destinaie, pentru multe din instruciunile
microprocesorului. n codul acestor instruciuni, selecia acumulatorului se face implicit (deci fr
cmp binar de adresare explicit). Folosirea acumulatorului prezint avantaje din punctul de vedere
al simplificrii arhitecturii (adresare implicit a acumulatorului pentru multe din instruciuni, deci
cod mai scurt al acestora), dar prezint dezavantaje din punctul de vedere al vitezei de execuie i al
flexibilitii instruciunilor (acumulatorul este un loc ngust, o "trangulare", prin care trebuie s
treac fluxul informaional pentru toate instruciunile executate). Dac se noteaz cu sgeat sensul
de transfer al datelor i cu f operaia efectuat de ALU, funcionarea AC poate fi simbolizat prin
relaia:

ACf(AC,RD) (3.1)

unde RD este registrul tampon de date, la interfaa cu magistrala extern de date.
n cadrul unitii de control s-a simbolizat blocul ce realizeaz generarea semnalelor de
control (logica secvenial de control) n care se implementeaz algoritmul de tranziie al strilor
automatului de control. Succesiunea specific a strilor corespunde codului instruciunii curente
care se stocheaz ntr-un registru de instruciuni (RI) pe toat durata execuiei instruciunii. Un al
Unitate de prelucrare
a datelor
Unitate aritmetic
i logic
AC

RD

RA
Unitate de control
PC RI
Logic de
control
Semnale
de control
intern
Spre memoria principal i
dispozitive de IO
Capitolul 3 58


- pag 58
doilea registru important al unitii de control este numit Contor de Program (simbolizat prin PC
3
).



































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 multi-
octet) ce trebuie citit din memorie, cuvnt ce face parte din cmpul binar al unei instruciuni. Dup

3
PC = Program Counter (engl.) Contor de program
Start
CPU
activ ?
RAPC
RDM(RA)
RIRD (op-code)
PC PC+1
Decodific instruciune
stocare AC?
RARD(adres)
RDAC
M(RA)RD
Da
Nu
Da
Nu
PCRD(adres)
Ciclu de
execuie
Ciclu de
Fetch
Lanseaz
adres
Citete
memorie
RARD(adres)
DRM(RA)
ACAC+RD
adunare? salt?
Nu
Da
Da
Fundamente ale arhitecturii UCP 59


fiecare ciclu de extragere (fetch) a unui cuvnt din memorie, PC se auto-incrementeaz
(PC:=PC+1), pentru a pregti extragerea urmtorului cuvnt. Dac lrgimea magistralei de date a
procesorului permite s se aduc simultan mai mult de un cuvnt operaia poate fi scris:
PC=PC+N, unde N este numrul de cuvinte citite simultan. La pornirea execuiei unui program, sau
ori de cte ori se face un salt n program coninutul PC se ncarc automat cu o valoare de adres,
urmnd ca n continuare s funcioneze ca i contor de instruciuni.
n figura 3.7. se indic un exemplu de secven a strilor (microoperaii) pentru aducerea
(fetch) i execuia instruciunilor pentru structura elementar a UCP din figura 3.6. Fiecrei stri
(dreptunghi n figur) i sunt asociate semnale de control intern UCP, pentru realizarea operaiilor
simbolizate pe figur. Orice transfer este indicat cu sgeat, pe poziia din stnga fiind indicat
destinaia, iar pe cea din dreapta sursa. Prin notaia M(RA) s-a indicat o adresare la memoria
principal, adresa fiind cea coninut n registrul de adrese RA. La unele dintre operaii s-a folosit
notaia RD (cmp) care semnific faptul c se citete doar cmpul de adres sau cod al operaiei
(op-code) din formatul binar al instruciunii aduse n registrul RD.
Secvena din figura 3.7 este doar teoretic, funcionarea procesorului elementar nefiind
optimizat din punctul de vedere al minimizrii strilor mainii cu algoritm de stare. De exemplu
blocurile de comparare, pentru testarea codului instruciunii (op-code
4
) funcioneaz secvenial i ar
nsemna c pentru ultima instruciune trecut n lista de comparri s-ar parcurge toate operaiile de
comparare. Operaia de tip switch (sau case) n limbaj de nivel nalt poate fi implementat n
hardware, pentru saltul direct la ramura corespunztoare execuiei instruciunii.

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 programului
5
. Indicatorii de condiii
6
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
op-code (engl.) este prescurtarea de la operation code (codul operaiei)
5
PSW - program status word
6
flags n limba englez
Capitolul 3 60


- pag 60
fa de unitatea ALU pe ntregi.
5. Introducerea de suport hardware (logic plus registre de adresare specializate) pentru
implementarea memorie stiv. Memoria stiv este util n primul rnd util n operaiile de
apelare i revenire din proceduri, dar are i alte utilizri. Uneori memoria stiv este
implementat hardware, prin registre construite n cadrul UCP, dar cel mai adesea ea este
organizat software (stocare n memoria principal i administrare printr-un registru
indicator al vrfului stivei SP = stack pointer).
O structur de UCP mbuntit cu o parte din extensiile pomenite mai sus se prezint n
figura 3.8.





























Figura 3.8. UCP tipic pentru organizarea pe baz de registre de uz general.

n unitatea de prelucrare a datelor s-a introdus o banc de registre de uz general, adresabile
individual de ctre program. n acelai bloc se consider a fi inclus i logica de selecie (adresare)
i de multiplexare a ieirilor ctre cile interne de date. Acestea sunt transparente pentru utilizator
(deci inaccesibile explicit prin instruciuni). S-a figurat de asemenea un registru pentru stocarea
indicatorilor de condiii (registru de stare). Indicatorii sunt setai n funcie de rezultatul operaiilor
efectuate de ALU (unitatea aritmetic i logic) i sunt testai de unitatea de control, reacie
simbolizat n figur prin liniile de intrare n blocul de logic de control. Toate circuitele tampon cu
magistralele externe au fost introduse ntr-un bloc numit interfa pentru controlul magistralelor.
Pe calea de date apare de asemenea un registru temporar pentru stocarea operanzilor i a
rezultatelor care se citesc / stocheaz n memoria principal (registrul temporar nu este vizibil de
Unitate de prelucrare a datelor
Unitate
aritmetic i
logic
Interfa pentru controlul
magistralelor
Unitate de control
RA RI
Logic de
control
Spre memoria principal i
dispozitive de IO

Registre cu
utilizare
general
Registru de
stare
Registru
temporar
de date
PC
Logic de
generare a
adreselor
SP
Fundamente ale arhitecturii UCP 61


instruciuni programator). Pentru c se consider un procesor cu magistral bidirecional de date
i instruciuni registrul de instruciuni recepioneaz codul instruciunii curente din acelai registru
temporar de date. n cazul n care instruciunile conin adrese (sau informaii de adresare) pentru
operanzi din memoria principal, acestea se pot citi n registrul de adrese (RA) care poate citi
registrul temporar de date.
Pentru automatul de adresare al unitii de control s-a prevzut logica necesar pentru
generarea adreselor din memoria principal. Informaia de adresare poate proveni de la contorul de
program (PC) pentru instruciuni, sau de la registrul indicator de stiv (SP
7
) n cazul cnd se
efectueaz operaii cu memoria stiv. Registrul SP indic ntotdeauna adresa vrfului stivei,
memoria stiv lucrnd pe principiul LIFO
8
. Vrful stivei conine ultimul articol (cuvnt) nscris n
stiv.
Nu s-au desenat cile interne de control, dar s-a indicat prin linie punctat existena
semnalelor de control i sincronizare cu exteriorul UCP, care prin interfaa cu magistralele vor
forma magistrala de control extern procesorului.

3.4. ALTE REGISTRE INTERNE SEMNIFICATIVE PENTRU UCP

Aa cum s-a spus n paragraful anterior, unitatea aritmetic i logic seteaz biii unui
registru special, numit registru de stare, sau registru al indicatorilor de condiii. Aceti indicatori
(Flags - fanioane) sunt numii de condiii" pentru c ei reflect anumite stri ale rezultatului
operaiilor aritmetico-logice, fiind testai de ctre Unitatea de Control, care poate astfel efectua
devierea secvenei programului prin aa-numitele salturi condiionate. Indicatorii de condiii (stare)
sunt modificai ca urmare a execuiei instruciunilor aritmetice, logice sau prin execuia unor
instruciuni de control, a cror singur funcie este modificarea indicatorilor. Coninutul lor, n
general, nu poate fi citit direct, ci doar testat indirect prin instruciuni de salt condiionat ce
transfer controlul programului la diferite ramuri, n funcie de valoarea indicatorului testat.
Vom descrie n continuare un set tipic de indicatori de condiii i apoi vom da cteva
exemple pentru microprocesoare existente pe pia:
Semn (S) - Indicatorul de semn ia valoarea 1 logic dac rezultatul unei operaii cu numere
cu semn este un numr negativ. n cazul n care se lucreaz cu numere fr semn, de obicei,
indicatorul va copia valoarea logic a celui mai semnificativ bit (MSb) al rezultatului (dar
atunci nu mai are interpretarea de indicator de semn).
Zero (Z) - acest indicator ia valoarea 1 logic dac toi biii rezultatului unei operaii
aritmetice sau logice sunt zero; altfel Z = 0.
Paritate (P) - indic paritatea rezultatului n convenia de imparitate (suma modulo 2 a
tuturor biilor rezultatului, inclusiv a bitului P, este ntotdeauna 1). Acest indicator este deci
setat (poziionat pe 1 logic) dac rezultatul conine un numr par de bii de valoare "1". Dac
numrul este impar, atunci P=0. Se seteaz, n general, n urma operaiilor logice.
Depire (V, oVerflow)) a capacitii de reprezentare. Prin depire a capacitii de
reprezentare se nelege faptul c rezultatul unei operaii aritmetice nu poate fi reprezentat pe
n bii ca numr cu semn. Indicatorul V se poziioneaz la 1 logic n urma operaiilor
aritmetice, indicnd depirea capacitii de reprezentare n cazul operrii cu numere cu
semn, depire ce se manifest prin alterarea bitului de semn (deci V=1 indic rezultat
eronat). Valoarea indicatorului poate fi descris printr-o operaie "SAU EXCLUSIV" ntre
transporturile de la rangul n-2 (MSb) i respectiv n-1 (poziie bit de semn), pentru numere cu
semn reprezentate pe n bii, n cod complementar (complement fa de doi).
Transport (CY, Carry) - indicator de transport. Se poziioneaz pe 1 logic dac operaia

7
SP Stack Pointer (engl.) = Indicator sau pointer de stiv.
8
LIFO Last In First Out (engl.) Ultimul intrat, primul ieit din memoria stiv
Capitolul 3 62


- pag 62
anterioar a produs un transport sau un mprumut la/de la rangul n-1.
Transport auxiliar (AC, Auxiliary Carry) - Se poziioneaz pe 1 dac o operaie de adunare
n cod NBCD a produs transport de la o cifr zecimal codificat n NBCD ctre cifra
zecimal de rang superior (transport de la o tetrad binar inferioar ctre o tetrad binar
superioar). n cazul operaiilor de scdere n NBCD acest indicator indic mprumutul.
Adunare sau scdere n NBCD (N) - apare doar la unele microprocesoare. Prin valoarea 1
arat c operaia anterioara n NBCD a fost o scdere. La microprocesoarele care folosesc
acest tip de indicator exist o singur instruciune de corecie zecimal, folosit att pentru
adunare ct i pentru scdere, spre deosebire de microprocesoarele ce nu au indicator de tipul
N i care au instruciuni de corecie zecimal separate pentru adunare i scdere. Indicatorii
specifici operaiilor n NBCD (AC i N) nu pot fi testai prin program, ei fiind destinai doar
circuitului de corecie zecimal inclus n unitatea aritmetic i logic.

Exemple de registre de indicatori, la diferite microprocesoare:

Tabelul 3.1.
Tip Poziia binar n registrul de indicatori
procesor
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
I8080
S Z * AC * P * CY
Z80
S Z * H * P/
V
N C
MC6800
* * AC I S Z V C
I8086
* * * * OF DF IF TF SF ZF * AF * PF * CF
MC68000
T * S * * I2 I1 I0 * * * X N Z V C

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
Fundamente ale arhitecturii UCP 63


analiza strii interne a procesorului. Acest indicator este folosit de programele depanatoare
9
.

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 (b
7
-b
0
) 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:
0 2 1
0 2 1
0 2 1
...
...
...
z z z
y y y
x x x
n n
n n
n n



+
(3.2)

Pentru fiecare rang i , prin adunarea biilor x
i
, y
i
i c
i
se genereaz un bit de sum z
i
i un bit de
transport (carry bit) c
i+1
ctre rangul urmtor, unde z
i
i c
i
se consider pentru 1 0 n i , c
0
=0, iar
valorile lor se calculeaz conform relaiilor unui sumator binar complet:
i i i i
c y x z = (3.3)
i i i i i i i
c y c x y x c + + =
+1
(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 z
n-1
i al variabilei V n funcie de biii de semn
ai celor doi operanzi, x
n-1
, y
n-1
, i bitul de transport c
n-1
de la rangul n-2, care este MSb
10
.

Rezult c indicatorul de depire poate fi definit prin ecuaia:

1 1 1 1 1 1
+ =
n n n n n n
c y x c y x V (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:
1 1 1 1
=
n n n n
c y x z (3.6)

9
Debugger (engl.) = Program depanator
10
MSb Most significant bit (engl.) = cel mai semnificativ bit
Capitolul 3 64


- pag 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
x
n-1
y
n-1
c
n-1
z
n-1
V
Observaii
0 0 0 0 0

0 0 1 0 1 Se adun dou numere pozitive,
deci suma trebuie s fie pozitiv
0 1 0 1 0

0 1 1 0 0

1 0 0 1 0

1 0 1 0 0

1 1 0 1 1 Se adun dou numere negative,
deci suma trebuie s fie negativ
1 1 1 1 0



3.5. EXEMPLE PRIVIND OPERAIILE UCP I MODUL DE SETARE AL
INDICATORILOR DE CONDIII

1. Dac se adun, sau se scad, dou numere reprezentate n cod NBCD, corecia zecimal
(adunarea, respectiv scderea codului lui 6) se aplic fie dac rezultatul nu este un cod NBCD, fie
dac se produce transport de la bitul cel mai semnificativ al codului (AC=1):

a)











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.
zecimal binar n cod NBCD

07+ 0000 0111+
05 0000 0101
--- ---------------
12 0000 1100 + (>1001) S=0, Z=0, P=1, V=0, C=0, AC=0
0110 corecie zecimal
---------------
0001 0010
Fundamente ale arhitecturii UCP 65


b)











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)










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)











Indicatorii arat rezultat corect pe 8 bii, att pentru numere cu semn ct i pentru numere
fr semn.
zecimal binar n cod NBCD
12- 0001 0010-
08 1000
-- ----------------
04 0000 1010 - S=0, Z=0, P=1, V=0, C=0, AC=1
0110 corecie zecimal
---------------
0000 0100

zecimal binar
(cu semn) (fr semn)
+ 8 + 8 + 0000 1000 +
- 128 128 1000 0000
---- ---- -------------
- 120 136 1000 1000
S=1, Z=0, P=1, V=0, C=0, AC=0

zecimal binar
(cu semn) (fr semn)

- 128 + 128 + 1000 0000 +
+ 127 127 0111 1111
---- ---- -------------
- 1 255 1111 1111

S=1, Z=0, P=1, V=0, CY=0, AC=0
zecimal binar
( ) (f )
Capitolul 3 66


- pag 66

c)












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.
zecimal binar
(cu semn) (fr semn)

- 72 + 184 + 1011 1000 +
+ 104 104 0110 1000
---- ---- -------------
+ 32 288 0010 0000

S=0, Z=0, P=0, V=0, CY=1, AC=1
Fundamente ale arhitecturii UCP 67


3.6. SEMNALE LA INTERFAA UCP CU EXTERIORUL

Semnalele de la interfaa Unitii Centrale de Procesare (UCP) cu exteriorul pot fi grupate,
funcional, n 3 tipuri de magistrale:

1. magistrala de adrese
2. magistrala de date
3. magistrala de control















Figura 3.9. Semnale tipice la interfaa unui microprocesor cu exteriorul


3.6.1. Magistrala de adrese

Aceast magistral cuprinde linii de adres, ce transmit doar semnale de ieire din
microprocesor, fiind deci o magistral unidirecional. Ieirile UCP spre aceast magistral extern
de adrese pot trece n starea de nalt impedan (HiZ) la o cerere extern, cnd UCP cedeaz
controlul magistralelor ctre alt dispozitiv. Liniile de pe aceast magistral se folosesc pentru
adresarea locaiilor de memorie i a porturilor de intrare-ieire. De obicei valorile binare cele mai
semnificative (cu ponderea binar maxim) din adres se folosesc pentru selectarea blocurilor de
memorie. Exist trei moduri n care se pot obine aceste semnale de selecie, pe baza informaiei de
adresare:

a. 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 2
16
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 (2
12
= 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





Microprocessor
tipic
Magistral
de adrese
a
Magistral
de date
d
Arbitrare
magistrale
Stare
Control
magistrale
Control cereri de
ntrerupere
Diverse
Linii de
alimentare
Semnal
de ceas
Magistral
de control
Capitolul 3 68


- pag 68
exist dou blocuri de ROM
11
a cte 4 kilo-octei (4 kB) i un bloc de RAM
12
.


























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 a
14
, a
13
i a
12
de pe magistrala de adrese,
mpreun cu semnalele de control de citire (Read) i scriere (Write), iar biii a
11
- a
0
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.
14 A RD CS =
14 A RD CS =
14 A RD CS + = (3.7)

14 A WR 14 A WR W / R + = = (3.8)
Adresa
(Hex)
Circuit Selecie
circuit
Selecie locaii memorie

11
ROM = Read Only Memory (engl.) - memorie doatr cu citire
12
RAM = Random Access Memory (engl.) - memorie cu citire scriere (traducerea exact este memorie cu acces
aleator)
13
CS = Chip Select

a
11
-a
0

ROM 1
4K 8
CS
D7-D0
ROM 2
4K 8
CS
D7-D0
RAM 1
4K 4
CS
D7-D4
RAM 2
4K 4
CS
D3-D0
R/W R/W
Read
Write
Magistral de adrese
a12
a13 a14
Magistal de date
a
11
-a
0
a
11
-a
0
a
11
-a
0

Fundamente ale arhitecturii UCP 69


a
15
a
14
a
13
a
12
a
11
a
10
a
9
a
8
a
7
a
6
a
5
a
4
a
3
a
2
a
1
a
0

0000 Fr 0000 0000 0000 0000
M
circuit
M M M M
0FFF 0000 1111 1111 1111
1000 RAM 0001 0000 0000 0000
M
(1+2)
M M M M
1FFF 0001 1111 1111 1111
2000 0010 0000 0000 0000
M
ROM 2
M M M M
2FFF 0010 1111 1111 1111
3000 Fr 0011 0000 0000 0000
M
circuit
M M M M
3FFF 0011 1111 1111 1111
4000 0100 0000 0000 0000
M
ROM 1
M M M M
4FFF 0100 1111 1111 1111
5000 0101 0000 0000 0000
M
Fr
M M M M
M
circuit
M M M M
FFFF 1111 1111 1111 1111

Figura 3.11. Harta memoriei selectat liniar ca n figura 3.10.

) WR 12 A ( ) RD 12 A (
WR 12 A RD 12 A WR 12 A RD 12 A ) WR RD ( 12 A CS
+ + =
= + = + =
(3.9)
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.










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.

Ca exemplificare, n figura 3.12, se prezint modul de decodificare i generare de semnale
de selecie pentru un microprocesor similar cu cel de la adresarea liniar unde a = 16 bii.



Decodificator
2 la 4
A
15

A
14

Selecie bloc 1 (16 k) 0
1
2
3
CS
Control acces
memorie
Selecie bloc 2 (16 k)
Selecie bloc 3 (16 k)
Selecie bloc 4 (16 k)
Capitolul 3 70


- pag 70
Prin decodificare complet se pot adresa 2
16
locaii de memorie.
c. Adresare combinat. Combinaie ntre cele dou moduri descrise anterior.

3.6.2. Magistrala de date

Lrgimea magistralei de date este de obicei multiplu de octet (d = 8, 16, 32, 64...). Cele d
linii ale magistralei de date au posibilitatea de transmitere bidirecional a informaiilor (intrare sau
ieire din UCP), cu posibilitatea de trecere n starea de nalt impedan (HiZ). Pentru economie de
pini, unele microprocesoare multiplexeaz n timp liniile magistralei de date, astfel c n primul
ciclu main al fiecrei instruciuni pe magistrala de date se pot transmite informaii de adres sau
informaii de control. n acest caz, n prima parte a ciclului main, pe pinii multiplexai, se
genereaz semnalele de adres sau control, nsoite de un semnal indicator pe magistrala de control
care servete pentru memorarea informaiei n registre externe procesorului. De exemplu la
procesoarele Intel 8085 i 8086 pini ai magistralei de date sunt multiplexai pentru a se putea
transmite i informaie de adres. Semnalul de control care comand stocarea adresei ntr-un
registru extern este numit ALE (Address Latch Enable). Apoi, pentru tot restul ciclului instruciune
liniile magistralei de date transfer date propriu-zise sau instruciuni.

3.6.3. Magistrala de control

Magistral de control conine o diversitate de linii de control i sincronizare, unele fiind
doar uni-direcionale (intrare sau ieire din UCP), iar altele permind transferul bidirecional de
semnale. De aceea adesea se spune c magistrala de control este bidirecional. Aceast magistral
cuprinde semnalele de control cu funcie diferit de la un tip de microprocesor la altul. Cu toate
acestea, funcional, liniile magistralei de control pot fi clasificate n urmtoarele categorii generale
[Sztojanov87]:

a. Semnale de control i sincronizare pentru transferuri de date cu memoria i
dispozitivele de I/O;
b. Semnale de control i sincronizare a cererilor de cedare a controlului magistralelor;
c. Semnale de control i sincronizare cu evenimente externe ce genereaz cereri de
ntrerupere;
d. Semnale indicatoare de stare a UCP;
e. Semnale utilitare, cum ar fi reset, clock, alimentare cu tensiune;
f. Semnale diverse, specifice tipurilor de microprocesoare i scopului pentru care au
fost proiectate. n categoria semnalelor diverse se ncadreaz de exemplu: intrri
testabile prin software, intrri pentru comanda activitii pas cu pas a UCP, intrri
pentru semnalizarea unor erori, intrri / ieiri pentru lucrul n sistem multi-procesor
etc.

3.6.3.a Semnale de control pentru transferul datelor cu memoria i dispozitivele de I/O

Rolul acestor semnale este de control i sincronizare al transferurilor pe magistrala de date.
Sensul de circulaie al informaiei pe magistrala de date este controlat de semnale care indic
operaie de citire, sau scriere. Sensul, pentru ambele operaii sunt privite din punctul de vedere al
UCP. n general semnalele de control sunt active pe nivel JOS, n aa fel nct nivelul SUS s
corespund strii inactive a semnalului. Situaia este avantajoas, pentru c durata semnalelor de
control activate este mult mai mic dect durata cnd ele nu sunt active, iar n pauza semnalului
se folosete avantajul marginii de zgomot mai mare pentru nivelul logic 1 (SUS n logic pozitiv).
Fundamente ale arhitecturii UCP 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):

RD (ReaD, citete), semnal ce indic c se efectueaz o operaie de citire a datelor de ctre
UCP. De obicei frontul posterior al semnalului de citire (aici frontul cresctor) este utilizat
de UCP pentru citirea propriu-zis a datelor depuse pe magistrala de date de ctre memorie
sau un dispozitiv de I/O.
WR (WRite, scrie), semnal ce indic c se efectueaz o operaie de scriere a datelor de ctre
UCP. De obicei frontul posterior al semnalului de scriere este utilizat de dispozitivul adresat
i selectat pentru ciclul de scriere, pentru a stoca datele ntr-un registru propriu.

La unele microprocesoare (de exemplu microprocesorul Motorola MC68000) exist un
singur semnal de ieire ( W R/ ), care ndeplinete ambele funcii, pentru nivel 1 fcndu-se citire,
iar pentru nivel 0 scriere.
Transferurile ntre UCP i un dispozitiv interlocutor lent (memorie sau port) se fac de obicei
asincron, pentru ca UCP s poat lucra la viteza maxim cu dispozitivele rapide i lent cu cele lente.
Pentru aceasta sunt necesare semnale pentru realizarea protocolului asincron de comunicaie (de tip
handshake). Setul minimal de semnale de sincronizare este constituit din urmtoarele:
un semnal generat de UCP ce indic dispozitivelor interlocutoare, c UCP a furnizat (pe
magistrala de adrese) o informaie valid de adres. La locaia cu aceast adres se va face
scriere sau citire la un moment imediat urmtor. Acest semnal, mpreun cu informaiile de
adres i de sens ( RD sau WR) al circulaiei pe magistrala de date, produc selecia/activarea
dispozitivului interlocutor. Vom nota semnalul de validare al adresei cu AS (Address Strobe
= validare adres)
un semnal recepionat de UCP, care s indice faptul c interlocutorul este gata pentru
efectuarea transferului. Vom nota acest semnal cu GATA. Acest semnal informeaz UCP c
dispozitivul a livrat cuvntul de date (n cazul unui ciclu de citire) sau c este n msur s
primeasc date (n cazul ciclului de scriere). Dac dispozitivul nu poate rspunde ntr-un
anumit interval de timp, corespunztor unui numr de perioade ale impulsului de ceas, el nu
poate activa GATA, iar UCP va introduce stri suplimentare de ateptare, pn cnd
transferul este posibil; semnalul GATA este deci folosit pentru sincronizarea celor doi
interlocutori. Recapitulnd: dac GATA este inactiv (= 0 logic), UCP va prelungi ciclul
main curent, "nghend" toate celelalte semnale de comand, prin adugarea de stri de
ateptare (WAIT) pn cnd recepioneaz GATA=1, dup care ciclul main de scriere (sau
citire) se ncheie.

Sincronizrile cu memoria i cu dispozitivele de intrare-ieire sunt asemntoare. La multe
dintre calculatoare ns, prin construcie, se cunoate viteza de lucru a memoriei principale, iar
lucrul cu memoria principal poate fi privit ca fiind sincron, nefiind necesar semnalul de tip GATA.
n aceast situaie transferul se desfoar strict n cadrul unui interval pre-specificat de timp (ca
numr de stri ale UCP). n toate celelalte cazuri transferurile sunt asincrone, UCP prelungindu-i
ciclul main curent cu stri de ateptare, pn cnd semnalul GATA devine activ sau pn cnd un
alt eveniment (excepie sau reset) ntrerupe acest ciclu main. Generarea sau nu a unui semnal de
"GATA" ine de modul de lucru asincron sau sincron. ntr-un mod de lucru sincron toate
evenimentele se desfoar n cadrul unui interval specificat de timp.
UCP eantioneaz intrarea GATA, de obicei ntr-una din primele stri ale ciclului main.
Exemple de semnale de control al transferurilor la diferite microprocesoare se indic n
tabelul 3.3. Pentru RD i WR nu s-au exemplificat denumirile semnalelor la procesoare reale,
Capitolul 3 72


- pag 72
pentru c n majoritate se pstreaz aceeai notaie pe care am folosit-o i noi n acest paragraf.

Tabelul 3.3.
Tip microprocesor
Echivalent AS
Echivalent GATA
I8080+ I8228
IOW , IOR, MEMR ,
MEMW
READY
Z80
MREQ, IOREQ, RFSH WAIT
I8086, I8088, I80x86
ALE, IO M / , R DT / , DEN
READY
MC680x0
AS , UDS , LDS 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 IO / M , care
indic transfer cu memoria pentru valoarea 1 logic i cu porturile de I/O pentru 0 logic. Semnalul
ALE
18
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 IO / M 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.

n figura 3.13 se prezint un exemplu de sincronizare cu semnal de tip GATA ntre un
microprocesor (UCP) i un dispozitiv lent de memorie, pentru un ciclu de citire.

14
Input Output Write
15
Input Output Read
16
Memory Write / Read
17
Memory Request
18
Address Latch Enable
19
Refresh
Fundamente ale arhitecturii UCP 73




























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)

Diagrama desfurrii n timp a semnalelor presupune c intrarea GATA este testat de
microprocesor ncepnd cu starea T2, pe fiecare front descresctor al impulsului de ceas. Din
punctul de vedere al simbolurilor grafice folosite menionm c pentru semnalele singulare
diagrama reprezint tranziiile ntre nivelurile logice 1 (SUS) i 0 (JOS). n cazul reprezentrii
magistralelor, care conin mai multe linii de semnal, cele dou linii paralele la magistralele de date
i adrese reprezint faptul c informaia pe magistral este stabil. Intersecia liniilor indic
schimbarea informaiei pe magistral, iar zonele haurate arat c informaia (stabil) respectiv
este ne-semnificativ pentru ciclul descris de diagram. Pe ultima linie a diagramei din figura 3.13
s-a reprezentat informaia la ieirile dispozitivului de memorie adresat. Aceste ieiri sunt cuplate la
magistrala de date, dar atunci cnd dispozitivul nu este selectat ieirile se gsesc n stare de nalt
impedan (HiZ) dac ieirile sunt de tip TSL. n urma seleciei i adresrii dispozitivului de
memorie, starea la ieiri se schimb doar dup trecerea timpului de acces la celulele de memorie.

3.6.3.b Semnale de control a cererilor de cedare a controlului magistralelor

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




UCP
Mag. adrese
Mag. date
RDsau WR
GATA
AS



Dispozitiv de
memorie
CLK
T1 T2 Tw T3 T4
Adres
AS
RD
GATA
Date
(Ieire memorie)
HiZ
De la
memorie
De la UCP
(de la
master)
Capitolul 3 74


- pag 74
active pe magistral (dispozitive master
20
care controleaz dispozitive slave
21
) 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 DMA
22
). 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 Request
23
).
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 Echivalent BR Echivalent BG
I8080, I8085, I8086 n mod
minim
HOLD HLDA
Z80
BUSRQ BUSAK
MC680x0
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

Aceste semnale au rolul sincronizrii evenimentelor externe cu UCP. Semnalele de control
i sincronizare pentru cereri de ntrerupere extern sunt extrem de importante pentru c ele permit
ca un dispozitiv periferic s lanseze un semnal de cerere de servicii ctre UCP (servicii de exemplu
care se refer la transferul de date), iar UCP s ntrerup temporar programul rulat la acel moment,
s sar la execuia unui program de servire a ntreruperii, iar apoi s revin la programul ntrerupt.
La recepia unei cereri de ntrerupere, dac UCP accept ntreruperea activitii curente, se va
informa dispozitivul ntreruptor asupra acestui lucru. Ca urmare dispozitivul care a lansat
ntreruperea va genera (doar pentru ntreruperile vectorizate) pe magistrala de date un cod de
identificare (vector de ntrerupere) care s permit dirijarea execuiei la subrutina de servire a
ntreruperii.
Exist dou tipuri de cereri de ntrerupere hardware:

20
master (engl.) = stpn
21
slave (engl.) = sclav
22
DMA = Direct Memory Access - Acces direct la memorie.
23
Bus Request / Grant = Cerere / Acordare de control a magistralelor.
Fundamente ale arhitecturii UCP 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 Echivalent INT Echivalent INTA
I8080 i I80x86 INTR (mascabil),
NMI (nemascabil)
INTA
Z80
INT (mascabil),
NMI (nemascabil)
IORQ+ 1 M
MC680x0 IPL2, IPL1, IPL0 FC2, FC1, FC0


3.6.3.d Semnale indicatoare de stare a UCP

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


- pag 76

3.6.3.e Semnale utilitare

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.













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%.
Microprocesor
X1
X2
C1
C2
cuar
Microprocesor
X1
X2
C
(a) (b)
Fundamente ale arhitecturii UCP 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.

3.7. REPREZENTAREA NUMERELOR N CALCULATOR

Modul n care se reprezint datele numerice ntr-un calculator are legtur direct cu
structura UCP, avnd influen asupra dimensiunii registrelor de uz general locale, al dimensiunii
magistralei interne i al complexitii unitii de execuie. n funcie de poziia virgulei,
reprezentrile binare folosite n calculator pot fi:
reprezentare n virgul fix;
reprezentare n virgul mobil.
Virgula (punctul zecimal sau binar, n notaia engleza) nu se reprezint fizic nicieri n
registrele calculatorului, dar poziia sa este cunoscut (stabilit) pentru fiecare dintre modurile de
reprezentare
Reprezentarea n virgul fix este folosit de toate calculatoarele numerice de uz general.
Majoritatea procesoarelor de uz general lucreaz cu numere ntregi n virgul fix, datorit
avantajelor n ceea ce privete structura hardware a circuitelor pentru operaii aritmetice i logice.
Reprezentarea n virgul fix cu numere subunitare are avantaje din punctul de vedere al operaiilor
de nmulire, pentru c aceast operaie nu va duce la depirea capacitii de reprezentare pentru
produs.
Reprezentarea n virgul mobil se face pentru numere reale. Nu toate calculatoarele conin
ns suportul hardware necesar pentru aritmetica n virgul mobil, dar acestea pot efectua
operaiile cu numere n virgul mobil prin emulare (interpretare) cu ajutorul unor programe de
emulare.


3.7.1. Reprezentarea cu virgul fix

Reprezentarea se numete cu virgul fix, pentru c poziia acesteia este fix fa de irul de
bii prin care se reprezint data numeric. Reprezentarea numerelor n virgul fix se face, n
general, sub form de numere ntregi cu semn sau fr semn. Exist de asemenea posibilitatea de a
reprezenta datele n virgul fix sub forma de numere subunitare. Daca procesorul calculatorului
lucreaz n virgul fix cu numere subunitare, la introducerea datelor, fiecrui numr i se ataeaz
un factor de scar, care s-l transforme ntr-un numr subunitar. Acest aliniament este fcut de
programul de ncrcare n memorie. n compilatoarele scrise pentru virgul fix, factorul de scar
este tratat de compilator, astfel nct utilizatorul limbajelor de nivel nalt nu trebuie s ia n
considerare acest aspect la efectuarea operaiilor.
Pentru numerele cu semn, ntotdeauna pe prima poziie binar din partea stnga se
reprezint semnul, folosindu-se convenia:
S = 0, semn pozitiv (N 0)
S = 1, semn negativ (N < 0) (3.10)
Pentru numere ntregi cu semn, reprezentate pe n bii, se va folosi notaia:


0 1 2 2 1
... b b b b b N
n n
= (3.11)

MSb
LSb
Semn
Capitolul 3 78


- pag 78




Bitul b
n-1
este bitul de semn, bitul b
n-2
este cel mai semnificativ bit (MSb, cu ponderea 2
n-2
), iar b
0

este bitul cel mai puin semnificativ (LSb). Se consider c virgula are poziia fix imediat n
dreapta LSb (b
0
).
Pentru numerele subunitare cu semn, reprezentate pe n bii, se va folosi notaia:


) 1 ( 3 2 1 0
...

=
n s
b b b b b N (3.12)





unde b
0
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
).

3.7.2. Coduri binare folosite pentru reprezentarea numerelor cu semn
Se folosesc trei tipuri de coduri binare:
cod direct (numit i cod mrime / modul i semn, notat pe scurt MS)
cod invers (numit i cod complement fa de 1, notat pe scurt C1)
cod complementar (numit i cod complement fa de 2, notat pe scurt C2)
Se va face o descriere sintetic a celor 3 moduri de codificare considernd c numerele sunt
reprezentate cu n bii. De asemenea specificm nc de la nceput c pentru numere pozitive toate
cele trei moduri de reprezentare sunt identice (conduc la aceleai numere n binar).

3.7.2.a Reprezentarea numerelor cu semn n cod direct (cod mrime i semn, MS)

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 numere subunitare
N = b
n-1
b
n-2
.... b
1
b
0

N
s
= b
0
b
-1
b
-2
b
-3
... b
-(n-1)


pentru N >0, b
n-1
=0 pentru N
s
>0, b
0
=0
pentru N <0, b
n-1
=1 pentru N
s
<0, b
0
=1

Domeniul de reprezentare:

numere ntregi numere subunitare
-(2
n-1
-1) N 2
n-1
-1

-(1-2
1-n
) N
s
(1-2
1-n
)

Calculul valorii zecimale pentru numrul reprezentat n binar n MS:

numere ntregi numere subunitare
MSb
LSb
Semn
(3.13)
(3.14)
Fundamente ale arhitecturii UCP 79

=
=

2
0
2 ) 1 (
1
10
n
i
b N
i
i
n
b

=
=

1
1
2 ) 1 (
0
10
n
i
b
s
N
i
i
b


Avantaje ale codului MS:
Codificarea n MS prezint avantaje din punctul de vedere al operaiilor de nmulire i mprire,
algoritmii de calcul i rutinele sau circuitele de implementare cablat rezultnd cu o structur
simpl. De asemenea codificarea n MS se face foarte simplu pentru numerele negative, doar prin
modificarea bitului de semn.

Dezavantaje ale codului MS:
Codul prezint dezavantaje din punctul de vedere al operaiilor de adunare i scdere. Asta n
primul rnd pentru c numerele pozitive i negative trebuie tratate diferit n operaii i ca urmare
rezult algoritmi de adunare i scdere mai compleci dect n alte moduri de codificare.
Un alt dezavantaj l reprezint faptul ca exist dou reprezentri pentru numrul zero:

000000...0 i 100000...0

Exemplu (pentru n=8):
Pentru n=8, domeniul de reprezentare este:
127 N pentru ntregi i
7
2 1


s
N pentru subunitare.

zecimal binar

N = +6

sau N = +6/128

0000 0110 (primul zero este bitul de semn)

N = -6

sau N = -6/128

1000 0110 (primul unu este bitul de semn)


Se observ c numerele binare 00000110, respectiv 10000110 pot fi interpretate i ca +6/128,
(pentru alte valori ale lui n valoarea este +6/2
(n-1)
)respectiv -6/128, dac reprezentarea se face cu
numere subunitare.
Calculul valorii zecimale pentru N = 1000 0110:
N = 1000 0110:
N|
10
= (-1)
1
(0*2
6
+ 0*2
5
+ 0*2
4
+ 0*2
3
+ 1*2
2
+ 1*2
1
+ 0*2
0
) = -6
sau
N|
10
= (-1)
1
(0*2
-1
+ 0*2
-2
+ 0*2
-3
+ 0*2
-4
+ 1*2
-5
+ 1*2
-6
+ 0*2
-7
) =
= - (1/32 + 1/64) = - 6/128


3.7.2.b Reprezentarea numerelor cu semn n cod invers (cod complement fa de 1, C1)

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

(3.15)
Capitolul 3 80


- pag 80
numere pozitive N = 0 b
n-2
.... b
1
b
0

Ns = 0 b
-1
b
-2
b
-3
... b
-(n-1)


numere negative N = 1 a
n-2
.... a
1
a
0

Ns = 0 a
-1
a
-2
a
-3
... a
-(n-1)


unde a
i
=1-b
i
, (i=0.n-2) unde a
i
=1-b
i
, (i=1.n-1)


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
= 2
n
- |N| - 1


(N
f
)
C1
= 2 - |N
S
| - 1/(2
(n-1)
)


Domeniul de reprezentare:

numere ntregi numere subunitare
-(2
n-1
-1) N 2
n-1
-1

-(1-2
1-n
) N
s
(1-2
1-n
)

Calculul valorii zecimale pentru numrul reprezentat n binar n C1:

numere ntregi numere subunitare

=
+ =

2
0
2 2 ) 1
1
(
1
10
n
i
a a N
i
i
n
n

=
+ =

1
1
2
1
0
2
1
2
0
10
n
i
a a
s
N
i
i n


(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
= 2
8
- |N| - 1 = 1111 1111 -
0000 0110
-------------
(3.16)
(3.17)
(3.18)
(3.19)
Fundamente ale arhitecturii UCP 81


1111 1001


Calculul valorii zecimale pentru (N)
C1
= 1111 1001:

N|
10
= (-1) * 2
7
+ 1 + (1*2
6
+ 1*2
5
+ 1*2
4
+ 1*2
3
+ 0*2
2
+ 0*2
1
+ 1*2
0
) = -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

a (N)
C2
= (N)
C1
+ 1 (N
s
)
C2
= (N
s
)
C1
+ 1/(2
(n-1)
)

sau prin nlocuirea expresiei
pentru C1:


b (N)
C2
= 2
n
- |N| (N
s
)
C2
== 2 - |N
s
|

c Folosind reprezentarea modulului numrului negativ de codificat, pornind
de la dreapta (de la LSb) ctre stnga se copiaz toi biii inclusiv primul
bit 1 ntlnit, iar apoi se complementeaz toi ceilali bii inclusiv bitul de
semn.


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 numere subunitare
-2
n-1
N 2
n-1
-1

-1 N
s
1-2
1-n


Calculul valorii zecimale pentru numrul reprezentat n binar n cod C2:

numere ntregi numere subunitare

=
+ =

2
0
2 2
1
1
10
n
i
b b N
i
i
n
n

=
+ =

1
1
2
0
10
n
i
b b
s
N
i
i

(3.20)
(3.21)
(3.22)
(3.23)
Capitolul 3 82


- pag 82

(relaii valabile i pentru numere pozitive)

Avantaje i dezavantaje ale reprezentrii n codul C2. Reprezentarea n cod complementar a
numerelor negative s-a generalizat la procesoarele actuale, datorit avantajelor urmtoare:
Scderea unui numr din alt numr este echivalent matematic cu adunarea complementului
de doi a scztorului la desczut. Se implementeaz doar operaia de adunare a numerelor
reprezentate n cod complementar (sumare algebric).
Codificarea n C2 printr-un circuit electronic este foarte uor de realizat (vezi un exemplu n
figura 3.15).
Acest cod are o singur reprezentare pentru zero (00...0), (avnd deci un cod n plus fa de
celelalte coduri, cu acelai numr de bii).
Un ntreg n reprezentarea complement fa de doi poate fi uor extins la un format mai mare
(un numr mai mare de bii) fr schimbarea valorii sale. Pentru aceasta este necesar doar ca
bitul de semn sa fie repetat n toate poziiile binare de ordin superior aprute. Aceast ;
operaie se numete extensie de semn. Exemplu pentru un ntreg pe 16 bii extins apoi la 32
de bii:

16b: Snnn nnnn nnnn nnnn (S: semn; n: 0 sau 1)
32b: SSSSSSSSSSSSSSSS Snnn nnnn nnnn nnnn

Principalul dezavantaj al codului complementar l constituie algoritmii pentru nmulire i mprire
mai compleci dect cei corespunztori codului MS.













Figura 3.15. Schem simplificat a unui circuit care transform un numr binar ntreg pozitiv (introdus la
intrrile ... x
3
x
2
x
1
x
0
) n codul complement fa de 2 pentru echivalentul negativ al numrului.

Exemplu de conversie n C2, (pentru n=8):

N|
10
= -6
a) cu C1: (-6)
C2
= (-6)
C1
+ 1 1111 1001 +
1
-------------
1111 1010
b)
(-6)
C2
= 2
8
- |6| 1 0000 0000 -
0000 0110
----------------
x
0
x
1
x
2
x
3

y
0
y
1
y
2
y
3

Fundamente ale arhitecturii UCP 83


1111 1010

c)






Calculul valorii zecimale pentru (-6)
C2
= 1111 1010:
N|
10
= (-1) * 2
7
+ (1*2
6
+ 1*2
5
+ 1*2
4
+ 1*2
3
+ 0*2
2
+ 1*2
1
+ 0*2
0
) = -6
sau
N|
10
= -1 + (1*2
-1
+ 1*2
-2
+ 1*2
-3
+ 1*2
-4
+ 0*2
-5
+ 1*2
-6
+ 0*2
-7
) =
= -1 + 1/2 + 1/4 + 1/8 + 1/16 + 1/64 = -6/128


3.8. REPREZENTAREA NUMERELOR N VIRGUL MOBIL

Pentru stocarea i prelucrarea numerelor reale n calculator se folosete reprezentarea n
virgul mobil. Denumirea provine de la faptul c virgula nu are o poziie fix fa de irul de bii
ce reprezint valoarea numrului. Poziia virgulei se poate modifica fie ca s permit efectuarea de
operaii aritmetice i logice cu numere reale, fie pentru reprezentarea standardizat, n virgul
mobil, a numerelor reale.
n calculatorul numeric, pentru fiecare numr real N trebuie reprezentate fiecare din
componentele urmtoarei relaii:
E
B M N = (3.24)
unde
M = mantisa, reprezentat n calculatorul numeric ca un numr binar subunitar
cu semn;
E = exponentul, reprezentat ca un numr ntreg cu semn;
B = baza, este 2 sau o putere a lui 2, nu este reprezentat n calculatorul numeric,
dar se ine cont de valoarea bazei atunci cnd se efectueaz operaii aritmetice.
La un anumit calculator numeric valoarea bazei este aceeai pentru toate
numerele reale reprezentate.

Reprezentarea numerelor n calculator se face prin cuvinte binare cu lungime egal cu
lungimea registrelor de stocare. Precizia de reprezentare a unui numr real este dat n primul rnd
de numrul de bii folosii pentru reprezentarea Mantisei. Domeniul maxim de reprezentare este
determinat de valoarea adoptat pentru Baz i de numrul de bii folosii pentru a reprezenta
Exponentul.
Spre deosebire de numerele ntregi, numerele reale se reprezint cu o anumit aproximaie
n calculator. Dac pentru reprezentarea numerelor reale n calculator se folosesc n bii, se vor putea
reprezenta maxim 2
n
numere, dintr-un anumit interval continuu R al numerelor reale. Ca urmare,
numerele reale sunt reprezentate cu o anumit eroare, determinat de numrul limitat de bii folosit
pentru reprezentare. Eroarea de reprezentare depinde de distana dintre dou numere succesive
reprezentabile cu cei n bii. Toate numerele reale cuprinse ntre cele dou valori vor trebui
aproximate prin una din cele dou valori. Dac baza folosit implicit pentru reprezentare nu este 2
ci 4 sau 16, dezavantajul este c numerele reprezentabile vor fi i mai rar distribuite pe intervalul
R dei exist avantajul creterii domeniului de reprezentare cu n bii.
pe reprezentarea lui +6 = 0000 0110
1111 1010
primul 1 copiat, ceilali complementai
Capitolul 3 84


- pag 84
Pentru reprezentarea mantisei numerelor n virgul mobil se folosete forma normalizat n
care, pentru reprezentarea n mrime i semn, prima poziie binar dup virgul este diferit de
zero. Normalizarea restrnge mrimea valorii absolute a mantisei binare la domeniul:
1
2
1
< M (3.25)
Normalizarea n binar este uor de fcut, prin deplasarea mantisei ctre dreapta sau stnga i
incrementarea respectiv decrementarea corespunztoare a exponentului.
De exemplu, numrul cu mantisa normalizat 0.11011000 * 2
10
poate fi scris:
0.11011000 * 2
10
= 0.011011000 * 2
11
=
0.0011011000 * 2
12


Dac, de exemplu, considerm B=2, exponentul E reprezentat cu semn pe 8 bii, iar mantisa
normalizat un numr cu semn reprezentat pe 24 de bii n cod mrime i semn (deci numrul stocat
n calculator va avea 8 + 24 = 32 bii), domeniul maxim de reprezentare va fi cuprins ntre 2
127
i
+ 2
127
.
n valoare absolut, cel mai mic numr reprezentabil n calculator este
N
minim_reprezentabil
= 0.100...0 * 2
-127

iar cel mai mare numr reprezentabil este
N
maxim_reprezentabil
= 0.111...1 * 2
+127

Reprezentnd grafic toate numerele pe o scar, la care n partea de sus se reprezint numerele mari,
iar jos cele mai mici, ca n figura 3.16. se pot face cteva observaii importante:

Mantisele se reprezint pe 24 bii, din care 23 sunt rezervai pentru mrime.
Toate mantisele reprezentate n cod direct n exemplul din figura 3.16 sunt normalizate
(primul bit dup virgul este 1). Dac n urma efecturii operaiilor aritmetice rezultatul este
n afara domeniului [-N
maxim_reprezentabil
, +N
maxim_reprezentabil
] se spune ca s-a produs o depire a
capacitii de reprezentare (pentru cei 32 de bii din exemplu). Depirea poate fi superioar
(mai mare dect numrul maxim reprezentabil) sau inferioar. Programul n care se produce
depirea se ntrerupe, iar evenimentul este tratat de o rutin (de servire a cazului de excepie
"depire"), care va transmite un mesaj ctre utilizator. Daca ns rezultatul se ncadreaz n
intervalul cu numere prea mici pentru a fi reprezentate cu mantise normalizate [-
N
minim_reprezentabil
, +-N
minim_reprezentabil
] numrul este aproximat, de obicei, cu zero.
Reprezentarea lui zero pune unele probleme, pentru c mantisa poate rezulta zero
(nenormalizat) dar exponentul su poate avea orice valoare pentru c 0 0 =
E
B pentru
oricare valoare a lui E. Din punctul de vedere a circuitelor care testeaz dac un numr este
egal cu zero, ar fi avantajos ca s avem aceeai reprezentare ca la ntregi (succesiune numai
de bii 0 n toate cmpurile: semn, exponent, mantis). Valoarea zero este considerat a fi
cea care corespunde la exponentul maxim negativ (-127 n exemplul de mai sus).
De asemenea, pune probleme de reprezentare faptul c este necesar s se reprezinte dou
semne pentru fiecare numr (semnul mantisei i semnul exponentului).
O cale de rezolvare a problemei reprezentrii numrului zero este folosirea exponentului
deplasat (sau caracteristic, notat n continuare cu C). Dac n exemplul prezentat mai sus
deplasarea se face conform relaiei:
127 + = E C (3.26)
caracteristica poate lua valori intre 0 i 254.
Fundamente ale arhitecturii UCP 85

























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.




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
Mantisa C S
31 30 23 22 0
Creterea valorii
numerice
+ N
maxim_ reprezentabil
+ 0.111 ... 1 2
+127

23 de bii 1
+ N
minim_ reprezentabil
=+ 0.100 ... 0 2
-127

22 de bii 0
Zero
N
minim_ reprezentabil
= 0.100 ... 0 2
-127

22 de bii 0
N
maxim_ reprezentabil
0.111 ... 1 2
+127

23 de bii 1
Capitolul 3 86


- pag 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.

























Figura 3.18. Formatele numerelor reale reprezentate n virgul mobil pentru coprocesorul Intel 8087,
conform standardului IEEE 754.


n standardul IEEE de reprezentare se indic i modul de interpretare al rezultatelor, prin
definirea unor situaii de excepie. Excepiile din standardul IEEE (caracteristic egal cu zero sau
Real scurt:
Reprezentare pe 32 bii
Precizie mantis: 24 bii
cu HB
Caracteristic C = E + 127
Real lung:
Reprezentare pe 64 bii
Precizie mantis: 53 bii
cu HB
Caracteristic
C = E + 1023
F C S
23 bii 8 bii 1 bit
31 30... 23 22 0 ...
F C S
52 bii 11 bii 1 bit
63 62 52 51 0 ... ...
M C S
64 bii 15 bii 1 bit
79 78 64 63 0 ... ...
Real temporar:
Reprezentare pe 64 bii
Precizie mantis: 64 bii
fr HB
Caracteristic
C = E + 16383
Fundamente ale arhitecturii UCP 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 Fracie Interpretare rezultat
C = 255 F 0, cu HB,
(mantis normalizat)
simbol de eroare NAN
(nu este numr)
C = 255 F = 0, cu HB,
(mantis normalizat)
depire N = (-1)
S
=
0 < C < 255 Mantis normalizat,
( M = 1.F )
Numr real,
) . 1 ( 2 ) 1 (
127
F N
C S
=


C = 0 F = 0, cu HB,
(mantis normalizat)
Numr = 0
C = 0 F 0,
(mantis ne-normalizat)
Numr prea mic pentru a
fi reprezentat


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


- pag 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, :

) . 1 ( 2 ) 1 (
127
F N
C S
= (3.27)

Pentru formatul real lung, pe 64 de bii, dac se respect condiia 0<C<2047, numrul poate fi
calculat cu relaia:
) . 1 ( 2 ) 1 (
1023
F N
C S
= (3.28)







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



4.1. INTRODUCERE N ARHITECTURA SETULUI DE INSTRUCIUNI


Arhitectura setului de instruciuni specific unui procesor cuprinde:

setul de instruciuni (instruciuni specifice la nivel main) recunoscute de procesor,
tipurile de date care pot fi manipulate cu aceste instruciuni i
contextul n care aceste instruciuni opereaz.

Arhitectura setului de instruciuni (ASI) este o component a mainii de calcul, vizibil
programatorului la nivel de limbaj de asamblare, component care realizeaz interfaa ntre
software i hardware (figura 4.1.).
















Figura 4.1. Arhitectura setului de instruciuni ca interfa ntre hardware i software
(adaptat dup [Patterson90])


Pentru a putea comanda componenta hardware a unui calculator trebuie cunoscute
instruciunile recunoscute de acesta la nivelul mainii de baz. Instruciunile implementate
hardware pe o anumit main formeaz setul de instruciuni, sau limbajul inclus n ASI. De aceea,
n figura 4.1. programele n limbaj de nivel nalt (C n figur) sunt compilate pentru a se genera un
program recunoscut de main, numit n figur program ASI. Acesta este programul n cod binar
recunoscut de unitatea de control (UC) i interpretat de ctre o main cu algoritm de tranziie a
strilor intern UC; algoritmul poate fi implementat ca microprogram sau poate fi cablat n
hardware. n mod similar programele scrise n limbaj de asamblare (ASM) trebuie translatate cu
ajutorul unui program translator numit asamblor n programe executabile, conform ASI specific
mainii.
Setul de instruciuni implementat pe un anumit microprocesor poate fi clasificat dup mai
multe criterii, dintre care menionm [Patterson90]:
Numrul de adrese de operanzi pe instruciune. Numrul de adrese pe instruciune
afecteaz n mod direct complexitatea i dimensiunile (n numr de bii) ale unei
instruciuni. Indiferent de tipul de format ales i de tipul operaiilor numrul maxim de
operanzi /adrese) este 3, iar numrul minim este 0.
Program n C compilat
n program ASI
Program n ASM Program n C
Program n ASM asamblat
n program ASI
Nivel ASI
Software
Hardware
Program ASI executat de
microprogram sau de hardware
Hardware
Arhitectura Setului de Instruciuni 91

Locul de stocare a operanzilor pentru instruciunile executate de CPU. Operanzii
operaiilor aritmetice i logice pot fi imediai, sau se pot gsi n registrele interne UCP, n
memoria principal, n spaiul de I/O, sau n memorie de tip stiv. Exist arhitecturi care
efectueaz operaii aritmetice i logice doar cu operanzi din registrele interne, iar cu
exteriorul permit doar operaii de ncrcare i stocare a operanzilor (arhitectur load /
store
1
). Alte tipuri permit operanzi doar n memoria stiv (stack architecture
2
). Locul de
stocare al operanzilor afecteaz nu numai formatul instruciunilor, dar i modurile de
adresare ce trebuiesc codificate.
Tipul operaiilor efectuate de setul de instruciuni. La implementarea unui set de
instruciuni se urmrete optimizarea operaiilor cele mai frecvent efectuate pe o anumit
main. Astfel c tipul instruciunilor depinde n special de aplicaiile pentru care este
destinat procesorul. De exemplu, un microprocesor destinat aplicaiilor de tip DSP
(prelucrare a semnalelor digitale) are instruciuni ce optimizeaz operaiile de: adunare,
nmulire, stocare temporar, shift
3
-are i manipulare de matrice.
Tipul datelor prelucrate de unitile aritmetice i logice. Diferitele maini pot lucra cu
numere n virgul fix (ntregi sau fracionare) i numere n virgul mobil (numere reale).

Setul de instruciuni al unui procesor poate avea dou caracteristici principale:
1. regularitate (ortogonalitate) - aceast caracteristic impune ca fiecare instruciune din
setul de instruciuni s poat opera cu orice tip de date, coninute n oricare registru sau
oricare locaie de memorie, i s poat fi adresate prin oricare mod de adresare.
2. completitudine - aceast cerin ar impune ca setul de instruciuni s cuprind tot setul de
operatori disponibili ntr-un limbaj. Dar cuprinderea ntregului set de operatori, operatori cu
frecvene foarte diferite de utilizare, ar duce la implementri i performane departe de cele
optime. n consecin se introduce o cenzur pentru operatorii cu frecven sczut de
apariie n programe, n avantajul operatorilor cu frecven ridicat. Uneori se introduce
regula (cam general dar practic): Execut rapid operaiile frecvente i corect pe cele
rare. n faza de proiectare a unui procesor, setul de instruciuni se croiete anticipnd
spectrul de aplicaii ale procesorului, astfel ca acestea s poat fi uor exprimate sau
programate. Aceasta este faza n care se pot determina operaiile ce vor fi folosite frecvent.


4.2. FORMATUL INSTRUCIUNILOR

Formatul instruciunilor se reprezint de obicei n form grafic sub forma unor
dreptunghiuri ce simbolizeaz cmpurile binare incluse n instruciuni. Din punctul de vedere al
lungimii instruciunilor pot exista dou tipuri de ASI:

arhitecturi la care lungimea instruciunilor este fix, pentru tot setul recunoscut
arhitecturi cu lungime variabil a instruciunilor recunoscute

La microprocesoarele cu lungime fix a instruciunilor (de exemplu arhitecturile RISC
4
, dar
i arhitecturi CISC cum ar fi cea a calculatorului Felix C256) unitatea de control, care interpreteaz
instruciunile i lanseaz comenzile pentru execuia acestora, este mai simpl, dar programele ocup
un spaiu mai mare n memorie. Formatul de lungime variabil a instruciunilor (n general

1
load / store = ncarc / stocheaz
2
stack architecture = arhitectur pe baz de stiv
3
shift = deplasare a informaiei dintr-un registru la stnga sau la dreapta cu un anumit numr de poziii binare.
4
RISC = Reduced Instruction Set Computer
Capitolul 4 92

microprocesoare cu arhitectura CISC
5
) implic o complexitate mai mare a unitii de control.
Lungimea variabil a instruciunilor (lungime mic pentru operaii simple i mare pentru cele
complexe) permite programe cu cod mai compact (ocup n general o zon mai mic de memorie) i
de asemenea permite extinderea uoar a setului de instruciuni, pentru o familie de procesoare cu
aceeai ASI, pentru c nu mai exist limitarea unui numr fix de octei.
Instruciunile se reprezint n memoria principal ca octei succesivi (unul sau mai muli
octei n funcie de tipul de procesor). Scopul fiecrei instruciuni recunoscute de procesor este s
specifice operaia ce trebuie executat de hardware, operanzii utilizai i locul unde se stocheaz
rezultatul operaiei. Formatul unei instruciuni include dou tipuri principale de informaii:

codul operaiei (Op-Code n figura 4.2.) pe care o comand instruciunea respectiv
cmpuri de adrese pentru specificarea modului de referire la operanzi i la locul unde se
stocheaz rezultatul. Vom numi aceste cmpuri specificatori de operanzi, pentru c ei indic
adresa sau modul de calcul al adresei efective a operanzilor (n figur s-au considerat trei
specificatori de adres de operanzi: OP1, OP2, OP3).





Figura 4.2. Exemplu al formatului general pentru o instruciune ASI


Primul cmp binar al instruciunii reprezint codul numeric identificator al instruciunii
(OpCode = codul operaiei efectuate de instruciune). Lungimea acestuia este n general diferit n
funcie de complexitatea operaiei i eventualele informaii suplimentare pe care le cuprinde; aceste
informaii pot fi de exemplu: modul de adresare al operanzilor surs, un indicator de condiie testat
pentru a lua o decizie la execuia instruciunii, un prefix al codului operaiei care modific modul de
lucru al acelei instruciuni. Prefixul poate avea efecte diverse, cum ar fi:

repetare de un numr de ori a instruciunii cu prefix,
indicaia c se lucreaz cu operanzi sau adrese extinse (dimensiune dubl fa de cea
normal)
identific o instruciune special destinat coprocesorului aritmetic.

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/O
6
), 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
CISC = Complex Instruction Set Computer
6
I/O = intrare / ieire
Op-Code OP1 OP2 OP3
Arhitectura Setului de Instruciuni 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.
















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.
Adres
de
memorie
A:
A+1:
A+2:
A+3:
01
5C
04
3F
3F045C01
Data stocat ncepnd
de la adresa "A" este:
Memoria
principal
Cel mai
semnificativ octet
Cel mai puin
semnificativ octet
Capitolul 4 94


















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).

Adres
(n Hex)
00
04
08
0C
10
14
18
Cuvnt de 4 octei aliniat
la adresa 08 hex.
4 octei
Adres
(n Hex)
00
04
08
0C
10
14
18
Cuvnt de 4 octei ne-aliniat.
Stocat la adresele 0A, 0B,
0C i 0D
4 octei
Arhitectura Setului de Instruciuni 95


Tabelul 4.1.
Numr
adrese
Format
instruciune
Comentariu
3 add z,x,y ; z x+y , unde x,y,z, sunt locaii de
;memorie, nume de registre, sau date imediate
2 add x,y ; x x+y sau Ac x+y , n funcie de procesor
; (Ac = registru acumulator)
1 add x ; Ac Ac+x

0 add ; adun primele dou articole din vrful stivei i
; stocheaz rezultatul n noul vrf al stivei

Conform legturii dintre organizarea UCP i numrul de adrese pe instruciune, vom
putea ncadra cele mai multe procesoare ntr-una din urmtoarele trei categorii:

1. organizare pe baz de registru acumulator (Ac) la care pentru majoritatea
operaiilor unul dintre operanzi se gsete implicit n acumulator. De asemenea
rezultatul operaiei se 'acumuleaz' n acest registru cu funcie special.
2. organizare pe baz de registre de utilizare generala (RG). La acest tip de
organizare operanzii sunt explicit localizai fie n registrele interne (fr restricii),
fie n registrele din locaiile memoriei principale.
3. organizare de tip stiv (ST) la care operanzii se gsesc implicit n vrful stivei i tot
aici se stocheaz rezultatul. Exist unele procesoare de tip stiv care folosesc dou
stive: una pentru operaii asupra datelor i alta pentru operaii asupra adreselor.

Tabelul 4.2. Exemple de instruciuni
Tip
arhitectur
Instruciuni Comentarii
Ac add x ;Ac Ac + x sau Ac Ac + @x
;adun la acumulator coninutul registrului x sau al
;memoriei de la adresa dat de x
RG

add r1,r2,r3
add r1,r2
mov r1,r2
add r1,x
; r1 r2 + r3
; r1 r1 + r2 sau r2 r1 + r2
; r1 r2 sau invers
; r1 r1 + @x
ST

push x

add
;trimite cuvntul de adres x n vrful stivei,
;VS @x
;aduce primele 2 articole din stiv, le adun i ;
stocheaz rezultatul n stiv


Fiecare dintre cele trei tipuri de arhitecturi au avantaje i dezavantaje. Astfel
arhitectura pe baz de acumulator conduce la instruciuni scurte, pentru c acumulatorul este
referit ca registru implicit la multe dintre instruciunile mainii. Conduce i la o densitate
relativ mare a codului (programelor) stocate n memorie, dar acumulatorul constituie un
puternic factor de limitare al vitezei de lucru al procesorului. Mainile pe baz de registre de
uz general prezint avantaje din punctul de vedere al uurinei generrii codului de ctre
programe compilatoare. Dac nu ar fi existat aceste registre, foarte multe din rezultatele
intermediare ar fi trebuit stocate n memoria principal ceea ce ar fi micorat viteza de
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:

) ( c b a x + = (4.1)

utiliznd exemple de instruciuni cu 0, 1, 2, i 3 adrese. Vom folosi simbolurile
(mnemonicele):

add, mul, - pentru operaiile aritmetice elementare de adunare i nmulire
load, store - transfer de la/la memorie spre/dinspre acumulator
push, pop - nscriere respectiv extragere din stiv.
r# - registre interne ale UCP, unde # este un indice

Presupunem c operanzii a, b i c din relaia (4.1) sunt stocai n memorie, n locaiile de
adrese a, b, c, iar rezultatul se va introduce la adresa x n memorie.

a) pentru arhitecturi pe baza de registre de uz general:
- instruciuni cu 3 adrese care pot efectua operaii aritmetice sau logice cu
operanzi din memorie (CISC):

add r1,b,c ;r1 @b + @c
mul x,r1,a ;@x r1 * @a

Se observ c acest format poate utiliza fiecare cmp de adres operand
pentru a specifica un operand dintr-un registru sau din memorie. Dei
programul este foarte scurt, el conine instruciuni cu format de lungime mare
i se desfoar relativ lent. Astfel la prima instruciune se fac dou accesri
la memorie pentru citirea operanzilor b i c. La fel pentru a doua instruciune
sunt necesare dou accesri succesive la memorie (operand i rezultat).

- instruciuni cu 3 adrese (RISC);

load r1,a ; r1 @a
load r2,b ; r2 @b
load r3,c ;
add r2,r2,r3 ; r2 (r2 + r3)
mul r1,r1,r2 ; r1 (r1 * r2)
store x,r1 ; @x r1

La acest tip de arhitecturi se folosesc doar instruciuni de load (ncarc) i
Arhitectura Setului de Instruciuni 97

store (stocheaz) cnd se comunic cu memoria, iar toate celelalte
instruciuni se refer la operanzi din registrele UCP (deci prelucrare foarte
rapid)


- instruciuni cu 2 adrese (CISC)

load r1,b ;r1 @b
add r1,c ;r1 r1 + @c
mul r1,a ;r1 r1 * @a
store x,r1 ;@x r1

b) pentru arhitecturi pe baza de acumulator (instruciuni cu o adresa, acumulatorul fiind
adresat implicit):

load b ; ac @b
add c ; ac ac + @c
store t ; @t ac
load a ; ac @a
mul t ; ac ac * @t
store x ; @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 a ;vs @a, fie adr adresa curent a vrfului stivei (vs)
; iar stiva crete spre adrese mici
push b ;vs @b, la adr-1
push c ;vs @c, la adr-2
add ;vs (b + c), stocat la adr-1 zero adrese
mul ;vs a*(b+c), stocat la adr zero adrese
pop x ;@x vs, vs pointeaz la adr+1

Pentru a evalua expresiile aritmetice ntr-un calculator stiv, e necesar s se
converteasc expresia n notaia polonez (invers). Ideea a pornit de la matematicianul
polonez Lukasievics J, care a notat o expresie de forma "a + b" ca "ab+".
Dup acelai principiu putem exemplifica notaia polonez i pentru alte ecuaii:

x = a* ( b + c ) = abc+*.
x = (a+b)*(c+d) = ab+cd+*
x = (a+b)*(c+d)*(e+f) = 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


4.4. SCURT PRIVIRE COMPARATIV NTRE ARHITECTURILE
RISC I CISC

Multe calculatoare au seturi de instruciuni ce includ mai mult de 100 - 200
instruciuni. Ele folosesc o varietate de tipuri de date i un mare numr de moduri de
adresare. Tendina aceasta de a mri numrul de instruciuni a fost influenat de mai muli
factori, dintre care amintim:
perfecionarea unor modele de procesoare existente anterior, pentru a pune la
dispoziia utilizatorilor (programelor utilizator) ct mai multe funcii cablate
adugarea de instruciuni care s faciliteze translatarea din limbajele de nivel nalt n
programe cod executabil (limbaj main)
tendina de a deplasa ct mai multe funcii de la implementarea programat
(software) ctre cea cablat (hardware), n scopul obinerii unor performane de
vitez ct mai mari.
Ideea simplificrii setului de instruciuni, n scopul mririi performanelor
procesorului, provine att din proiectul calculatorului CDC 6600, ct i din proiectele
realizate la universitile americane din Berkeley (RISC I, RISC II i SOAR) i Stanford
(proiectul MIPS). Proiectele RISC (Reduced Instruction Set Computer - Calculator cu set
redus de instruciuni) au urmrit ca instruciunile procesorului s fie de aceeai lungime,
instruciunile s se execute ntr-o singur perioad de ceas (cu ajutorul tehnicii de tip
conduct - pipeline), iar unitatea de control s fie implementat cablat, pentru a reduce
complexitatea chip-ului i pentru a crete viteza. La RISC se urmrete de asemenea ca
accesrile la memorie (consumatoare de timp) s se efectueze doar pentru operaiile de
ncrcare i stocare (arhitectura fiind numit n consecin: "load/store"), iar celelalte
operaii s se efectueze cu operanzi stocai n registrele interne ale UCP. Unele din
proiectele de arhitecturi RISC folosesc un set mare de ferestre de registre (numit i stack
cache - memorie stiv de registre) pentru a accelera operaiile de apel al subrutinelor. Cu
toate aceste specificaii, denumirea RISC nu conduce i la nite criterii stricte de proiectare,
ea fiind doar o descriere a cerinelor generale impuse procesorului. De aceea multe din
mainile anterioare (numite de atunci arhitecturi CISC - Complex Instruction Set Computer
- calculator cu set complex de instruciuni) au "mprumutat" aceste idei de proiectare
(pipeline, execuia unei instruciuni pe ciclu de ceas, ferestre de registre, etc.) dar ele nu pot
fi numite RISC-uri (MC68040, 80486, Pentium, H16, etc.). Concepia RISC pornete de la
faptul c un circuit mai simplu pentru procesor, poate lucra la frecvene de ceas mai mari,
iar setul mai simplu de instruciuni este mai potrivit pentru optimizri ale codului de ctre
un compilator.
Arhitectura numit CISC, se refer la un set complex de instruciuni; aceasta ns,
doar prin comparaie cu RISC, cci nu exist un set de caracteristici generale, asa cum s-au
definit la RISC. Ideea care s-a manifestat n dezvoltarea acestor maini, de a introduce
structuri hardware suplimentare pentru creterea vitezei, nu este greit ca principiu.
Proiectarea unui set de instruciuni pentru un procesor trebuie s in seama nu numai de
construcia limbajului main ci i de cerinele impuse de utilizarea limbajelor de
programare de nivel nalt. Translatarea se face cu un program compilator. Deci scopul final
ar fi pentru arhitectura CISC s permit folosirea unei singure instruciuni main pentru
fiecare instruciune din programul scris n limbaj de nivel nalt. Aceasta ar conduce la
simplificarea compilatorul, cci sarcina acestuia este mult uurat dac exist o instruciune
main care implementeaz direct o instruciune de limbaj nalt. Dar asta presupune
realizarea cte unei arhitecturi pentru fiecare tip de limbaj de programare. Dac nu este asa,
de cele mai multe ori, instruciunile complexe sunt rar utilizate de ctre compilatoare. Alt
Arhitectura Setului de Instruciuni 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 pipeline
7
; 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).


4.5. TIPURI DE INSTRUCIUNI


Prezentarea tipurilor de instruciuni se va face cu exemplificri din setul de instruciuni
specifice procesoarelor Intel 80x86. Pentru toate instruciunile ce se vor da ca exemplu, care
cuprind doi specificatori de operand, ntotdeauna primul specificator se refer la destinaie (D -
rezultat) i implicit la una din sursele de operand, iar al doilea la surs (S).

7
pipeline = conduct, band de montaj. n continuare vom folosi termenul de conduct.
Capitolul 4 100

4.5.1. Instruciuni aritmetice

Asigur prelucrarea unor operanzi aflai n memorie sau n registrele generale interne UCP,
avnd la baz operaii de o complexitate foarte diferit la diferitele microprocesoare. Un set tipic de
instruciuni aritmetice este rezumat n continuare:

Tip instruciuni aritmetice Exemple I8086
adunare ADD D,S
adunare cu considerarea transportului ADC D,S
scdere SUB D,S
scdere cu considerarea mprumutului SBB D,S
incrementare INC D
decrementare DEC D
nmulire (fr semn) MUL S *
nmulire (cu semn) IMUL S *
mprire (fr semn) DIV S *
mprire (cu semn) IDIV S *
realizare cod complementar (C2) NEG D
comparare CMP D,S
ajustare zecimal DAA (Dup adunare n NBCD)
DAS (Dup scdere n NBCD)
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.

n urma efecturii operaiilor aritmetice este influenat valoarea indicatorilor de condiii, n
funcie de rezultat. Instruciunile de comparaie (CMP la I8086) ar putea fi asociate instruciunilor
logice dac comparaia s-ar face prin instruciuni logice; comparaia este inclus ns la instruciuni
aritmetice pentru c se efectueaz prin scdere i testarea rezultatului (de fapt testarea indicatorilor
de condiii). La compararea prin scdere coninutul registrelor surs nu este afectat, iar operaia se
face fr memorarea rezultatului, doar prin setarea indicatorilor de condiii.
Tot n cadrul instruciunilor aritmetice pot fi incluse i operaii aici pot fi incluse instruciuni de
conversie a dimensiuni (de exemplu la I 8086 din 8 n 16 bii (CBW), din 16 n 32 (CWD) la
I80386: CWDE (1632) i CDQ (3264).

4.5.2. Instruciuni logice

Acestea efectueaz operaii logice cu operanzii specificai de instruciune. Dei, n principiu,
ar fi suficiente operaiile operatorilor complei NAND
8
i / sau NOR, setul de instruciuni al unui
microprocesor include ca instruciuni logice cel puin operaiile logice de tip I, SAU, NU, SAU-
Exclusiv. Aceste operaii se efectueaz bit cu bit ntre operanzi, cu excepia complementrii (NU)

8
NAND / NOR = I-NU / SAU-NU
Arhitectura Setului de Instruciuni 101

care are un singur operand pentru care se complementeaz fiecare bit.
n urma efecturii operaiilor logice este influenat valoarea indicatorilor de condiii, n
funcie de rezultat. Un set tipic de instruciuni logice este rezumat n continuare:

Tip instruciuni logice Exemple I8086
I logic 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.

4.5.3. Instruciuni pentru transferul informaiei

Aceste instruciuni se folosesc pentru transferul (copierea) informaiei ntre registre, ntre
registre i memorie, sau ntre registre i porturi de I/O. n general, sunt operaii de copiere a
informaiei din surs n destinaie. Aceste instruciuni nu afecteaz de obicei valorile indicatorilor
de condiii.
Pot fi clasificate in:
- Instruciuni de transfer de uz general
- Instruciuni de transfer cu stiva
- Instruciuni pentru transferul adreselor (pointeri)
- Instruciuni de transfer I/O.
Pentru microprocesoarele care au porturile de I/O mapate n spaiul de adrese de memorie
nu exist instruciuni specializate de transfer de I/O. De obicei, pentru transferul I/O exist multe
instruciuni de I/O specifice fiecrui microprocesor, care se refer la transferul indirect n registre
dedicate, transferul repetat de la o adres de port etc.

Exemplificare pentru instruciunile de transfer:

Tip instruciuni de transfer Exemple I8086
transfer de uz general

MOV D,S ;DS
XCHG D,S ;DS
transfer cu stiva PUSH S ; nscriere n stiv
POP D ; extragere din stiv
PUSHF ; scriere indicatori n stiv
POPF ; extragere indicatori din stiv
Capitolul 4 102


transferul adreselor LEA r16,adr ;(r16)adr
LDS r16,adr ;r16Low [DS:adr]
;r16High [DS:(adr+1)]
;DSLow [DS:(adr+2)]
;DSHigh [DS:(adr+3)]
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


4.5.4. Instruciuni pentru deplasarea i rotirea datelor

Instruciunile propriu-zise de deplasare pot fi asociate instruciunilor logice, n cazul n care
deplasarea se efectueaz n scopul izolrii unor bii dintr-un cuvnt (pentru a testa sau prelucra acei
bii), sau pot fi asociate instruciunilor aritmetice (nmulire / mprire cu puteri ale lui 2). n cazul
deplasrilor aritmetice se conserv bitul de semn al operandului deplasat.
Operaiile de deplasare pot fi:
deplasri nchise (rotaii stnga / dreapta)
deplasri deschise (stnga / dreapta)
La toate operaiile de deplasare, se influeneaz i valoarea indicatorului de transport
(Carry), care se ncarc cu ultima valoare de bit ieita din registrul folosit pentru deplasarea
operandului.
Deplasrile nchise (rotirile) sunt doar de tip logic. Rotaiile se pot efectua pe n bii (n fiind
dimensiunea registrelor ce conin datele) sau pe n+1 bii (rotaie prin bitul de Carry). Deplasrile
deschise pot fi de tip logic sau de tip aritmetic. Pentru toate exemplele care se dau mai jos (I8086),
al doilea operand poate fi 1 sau CL; dac al doilea operand este 1 se indic deplasare cu o poziie
binar, iar dac acest operand este CL, rezult o deplasare cu p poziii binare, p fiind valoarea
coninut n registrul CL.

Exemple (Intel x86):
deplasare aritmetica / logic la stnga

SAL D,1
SHL D,1

rotire la stnga


ROL D,1



rotire la stnga prin CF (rotire pe n+1 bii, dac D are n bii)
CF
0
D
CF
D
Arhitectura Setului de Instruciuni 103



RCL D,1





deplasare aritmetic la dreapta (se pstreaz valoarea bitului de semn)


SAR D,1




deplasare logic dreapta


SHR D,1



rotire dreapta


ROR D,1



rotire dreapta prin CF


RCR D,1



ncepnd cu microprocesorul I80386 au aprut instruciuni de deplasare suplimentare (de exemplu
SHLD, SHRD), la care se folosesc 3 operanzi, primul fiind destinaia, urmtorul sursa, iar ultimul
contorul care indic numrul de bii de deplasare.

4.5.5. Instruciuni de ramificare (pentru controlul secvenei de program)

Aceste instruciuni determin modificarea secvenei normale, liniare, de execuie a unui
program, n funcie de condiiile n care s-a terminat execuia unei instruciuni precedente. Se
asigur astfel ramificaiile n program i implementarea diferitelor structuri de control specificate de
un anumit algoritm.
Aceste instruciuni nu afecteaz starea indicatorilor de condiii, dar unele din instruciunile
de salt sunt influenate de valoarea coninuta n indicatori.
Instruciunile de ramificare (salt) pot fi:
D
CF
Semn
CF
D
D
0
CF
CF
D
CF
D
Capitolul 4 104

necondiionate. La execuia acestor instruciuni saltul se efectueaz ntotdeauna.
Exemple de salturi necondiionate sunt instruciunile de apel de procedur
(CALL op), salturi absolute (JMP op), revenire din procedur / return (RET),
instruciuni de apel a unor funcii sistem (INT #).
condiionate. Execuia acestor instruciuni produce salt doar dac este ndeplinit
o anumit condiie. Condiia se poate referi la un indicator de condiii sau la
coninutul unor registre. Tipice sunt aici salturile condiionale (Jcc - Jump if
condition = TRUE), apeluri condiionale de proceduri (CALL if condition =
TRUE) sau repet pn cnd condition = TRUE.

Exemplificri pentru I8086:
JMP op
Este operaia de salt necondiionat, prin care IP este nlocuit de offset-ul etichetei int n
toate salturile inter-segment; acelai lucru i pentru salturile indirecte n cadrul aceluiai
segment.
CALL op
Instruciunile de chemare a procedurilor lucreaz similar cu JMP (salt intersegment sau
extra-segment), cu excepia faptului c la execuia instruciunii CALL se salveaz automat
n stiv adresa de revenire din procedur.
RET
Instruciunile de tip RET produc revenirea dintr-o procedur, cu refacerea coninutului
contorului de program i eventuala incrementare suplimentar (RET n) a indicatorului de
stiva (registrul SP).
Jcc op
Instruciunile de salt condiional se refer la instruciuni ce se execut doar dac o anumit
condiie este ndeplinit. ndeplinirea acestei condiii se verific prin testarea indicatorilor
de condiii. Vom ncerca o prezentare sistematizat a salturilor condiionale pe baza
tabelului 4.3. Fiecare mnemonic se refer la iniialele cuvintelor urmtoare, ce indic
condiia n limba englez: Above (peste, mai mare), Below (sub, mai mic), Equal (egal), Not
(nu), Greater (mai mare), Less (mai mic), Carry (transport), Zero, Overflow (depire de
capacitate), Parity (PEven - paritate par, POdd - paritate impar), Sign (semn). Din tabel se
observ c se folosesc condiii diferite i litere diferite pentru a exprima relaia mai mare,
sau mai mic, pentru numerele cu semn, respectiv pentru cele fr semn.
(Exemplu de citire: JNBE = jump if not below nor equal, salt (J) daca nu (N) e mai mic (B)
sau egal (E)).
Tabelul 4.3. indic mnemonicele instruciunilor pentru testarea condiiei din prima coloan,
la scderea a dou numere A - B.

Tabelul 4.3. Explicativ la salturile condiionate pentru I8086
Condiia de salt pentru:
numere fr semn numere cu semn
A > B JA/JNBE (CF = 0 i ZF = 0) JG/JNLE (ZF = 0 i SF = OF)
A B JAE/JNB/JNC (CF = 0) JGE/JNL (SF = OF)
A = B JE/JZ (ZF = 1)
A B JBE/JNA (CF = 1 sau ZF = 1) JLE/JNG (dac SF != OF sau ZF = 1)
A < B JB/JNAE/JC (CF = 1) JL/JNGE (SF != OF)

Acolo unde n tabel apar doua tipuri de mnemonice separate prin semnul /, formele sunt
echivalente, oricare form conducnd la aceeai instruciune.
In afara de salturile descrise n tabel, mai exist instruciunile: JCXZ (salt dac CX=0),
Arhitectura Setului de Instruciuni 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).

4.5.6. Instruciuni pentru controlul procesorului

Sunt instruciuni care controleaz anumite funcii ale procesorului, ce acioneaz fie prin
intermediul unor indicatori de control (sau registre de control), fie prin introducerea unor stri sau
semnale necesare pentru sincronizarea cu evenimentele externe.

Exemple (I8086):
CMC ;complementarea valorii indicatorului CF
CLC ;poziionarea pe 0 a indicatorului CF
STC ;poziionarea pe 0 a indicatorului CF
NOP ;Nici o operaie, dar consum 3 perioade de ceas.
CLD ;poziionarea pe 0 a indicatorului DF
STD ;poziionarea pe 1 a indicatorului DF
CLI ;poziionarea pe 0 a indicatorului IF, dezactivare ntreruperi mascabile
STI ;poziionarea pe 1 a indicatorului IF
HLT ;Oprire microprocesor pn la RESET, NMI, sau INT (dac sunt activate)
WAIT ;ateptare pn cnd vine semnalul exterior test=0
ESC ;operaie destinat coprocesorului
LOCK ;prefix care activeaz semnalul extern /lock, astfel c microprocesorul anun
;c nu va rspunde la o cerere de cedare a controlului magistralelor.

4.5.7. Instruciuni pentru lucrul cu iruri

n afar de tipurile de baz amintite mai sus, exist i posibilitatea efecturii unor operaii de
transfer, sau operaii aritmetice i logice cu iruri de date (cu informaii aflate n zone continue de
memorie). Operaiile pe iruri pot fi efectuate individual, pentru fiecare cuvnt din ir, sau automat -
cu repetare, numrul de repetri al instruciunii fiind dictat de coninutul unui registru contor.
Operaiile tipic efectuate sunt:
transferul unui ir din zon sursa n zon destinaie
comparare ntre dou iruri
cutarea unei valori ntr-un ir
ncrcarea acumulatorului cu elementele unui ir.
citirea unui ir de la un port de intrare
scrierea unui ir la un port de ieire

Exemple (I8086):
MOVSB(W) ;transfer pe 8 (16) bii [DS:SI][ES:DI]
;SISI+1; DIDI+1 (decrementare pentru DF=1)
CMPSB(W) ;comparare pe 8(16) bii [DS:SI] cu [ES:DI]
;SISI+1; DIDI+1 (decrementare pentru DF=1)
SCASB(W) ;comparare pe 8(16) bii intre AL(AX) i [ES:DI]
;DIDI+1 (decrementare pentru DF=1)
LODSB(W) ;se ncarc AL(AX) de la [DS:SI]
;SISI+1 (decrementare pentru DF=1)
STOSB(W) ;se stocheaz AL(AX) la [ES:DI]
;DIDI+1 (decrementare pentru DF=1)
Capitolul 4 106

REP ;prefix de repetare. Contorul este CX

4.6. MODURI DE ADRESARE

Pe msura evoluiei arhitecturii calculatoarelor, s-a dezvoltat i o mare varietate de moduri
de adresare a instruciunilor i datelor, scopurile principale fiind:
optimizarea spaiului de memorie ocupat de instruciuni;
faciliti sporite privind prelucrarea unor structuri de date de tip vector (matrice):
faciliti privind implementarea n programe a unor structuri de control complexe.

Noiunea de mod de adresare se refer la modul n care n formatul instruciunii se specific
adresa unui operand de prelucrat, adresa de stocare a rezultatului operaiei, sau adresa urmtoarei
instruciuni. Prin decodificarea instruciunii procesorul va recunoate modurile de adresare folosite
(pentru operanzi i rezultat) i va putea calcula locul n care se gsesc operanzii cerui de execuia
instruciunii.
Operanzii pot fi imediai, sau se pot gsi n registre interne UCP, n memorie, sau n registre
port de I/O. n cazul unui program executabil, valoarea operanzilor este calculat n momentul
compilrii / asamblrii programului surs pentru operanzii imediai, n momentul ncrcrii n
memoria principal pentru adresarea direct la memorie i respectiv, n momentul execuiei pentru
operanzii adresai n registre sau adresai indirect.
n general instruciunile care specific numai operanzi n registre sunt compacte i se
execut rapid, pentru c registrele sunt incluse n UCP i nu mai sunt necesare transferuri pe
magistrala extern. Registrele pot conine operanzi surs i/sau destinaie).
Operanzii imediai sunt date constante de 8, 16, 32, sau 64 bii coninute n instruciune. La
microprocesoarele care au memorie tampon intern pentru instruciuni i date, (de exemplu coada
de instruciuni a lui 8086, sau memorie cache intern) operanzii imediai pot fi adresai la fel de
rapid ca i cei din registre, la momentul execuiei instruciunii, ne-fiind necesare operaii
suplimentare pentru extragerea lor. Limitrile operanzilor imediai se datoreaz faptului c ei au
doar valori constante i pot servi numai ca operanzi surs.
Pentru fiecare mod de adresare descris n continuare, automatul de adresare al UCP
calculeaz o adres efectiv (AE) a operandului. Obinerea AE se face n funcie de modul de
adresare selectat prin cuvntul de cod al instruciunii. AE este adresa care va fi folosit de
instruciune pentru a gsi operandul. La microprocesoarele cu memoria segmentat, AE rezult ca
un ntreg fr semn ce reprezint deplasamentul (adresa relativa a operandului) fata de nceputul
segmentului n care se afl.
n descrierea modurilor de adresare se vor folosi notaiile:
r - registru (eventual r8, r16 etc pentru a indica dimensiunea), litera referindu-se la
coninutul acestui registru.
d - deplasament (adres relativ). Este o valoare care participa la calculul AE, fiind tratat de
obicei ca un numr cu semn n cod complement fa de doi. Adunarea deplasamentului poate
genera o adresa mai mic sau mai mare dect adresa de baz (pentru reprezentarea lui d cu 8
bii n C2, variaia fa de adresa de baz se face n intervalul -128 ... +127. Restul
componentelor care intr n calculul AE sunt tratate ca numere fr semn.
x - adres de memorie; se refer la coninutul locaiei de memorie de adres x.
@x - adresa de la adresa x (adresa coninut n locaia de memorie cu adresa x; la adresa x
se gsete nu o simpl dat, ci un pointer ctre alt adres). De asemenea prin @r se indic
c operandul este coninutul locaiei de memorie cu adresa coninuta n registrul r. Adesea
ns, atunci cnd poate fi vorba fie de locaii de memorie fie de registre interne n acelai
format de instruciune, se va folosi doar litera x.

Arhitectura Setului de Instruciuni 107

Nu se va presupune un anumit tip de microprocesor; deci cuvintele pentru codul operaiei,
registrele implicate, valorile numerice numite deplasri i operanzi, pot avea 8, 16 sau mai muli
bii, n funcie de tipul instruciunii i de tipul microprocesorului. n documentaiile de firm apar de
obicei mult mai multe moduri de adresare dect folosim n clasificarea de mai jos, pentru c se fac
particularizri ale fiecrui mod de adresare. Motivele pot fi i comerciale, dar toate modurile de
adresare pot fi ncadrate n clasificarea de mai jos.
Pentru a simplifica explicaia, se va presupune n continuare c memoria este organizat pe
octei, c se folosete convenia de memorare Little Endian i c este adresat liniar (i nu
segmentat ca la procesoarele I80x86).
Dac ne referim la segmentarea memoriei, la microprocesorul I8086, memoria este
segmentat n segmente logice de cte 64 KB. Pentru I8086 pot exista 4 segmente active simultan n
memorie, segmente a cror adres de baz se gsete n registrele segment CS, DS, SS, ES. Prin
modurile de adresare specifice lui I8086 se calculeaz o adres efectiv de 16 bii (care este un
deplasament n cadrul segmentului curent).
Adresa fizic (AF) se obine din adresa efectiva (AE) la care se adaug adresa de segment (AS)
nmulit cu 16, ca n ecuaia:

AE AS AF + =
4
2 (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. adresarea imediat
2. adresarea direct
3. adresarea indirect
4. adresarea relativ
5. adresarea indexat


4.6.1. Adresare imediat

Corpul (formatul) instruciunii nglobeaz i operandul care apare imediat dup codul
operaiei, asa cum se indic n reprezentarea grafic a modului de adresare din figura 4.5.
Operandul este format dintr-unul sau mai muli octei succesivi. Modul imediat de adresare
este folosit numai pentru adresarea datelor constante ale programului. La microprocesoarele de 8
bii sunt necesare 2 sau mai multe citiri din memorie (cod + data). La microprocesoarele de la 16
bii n sus, cu tampon local (de tip FIFO sau cache) de date i instruciuni, aceste instruciuni sunt
executate rapid, pentru c operandul se afla n tamponul microprocesorului.
Exemple (I8086):

and al,0FFh ; adresare imediat la data 0FF
mov ax,3A40h ;adresare imediat la data 3A40hex
;n memorie se scrie b8 40 3a , unde b8 este codul operaiei iar data
; multi-octet se stocheaz n convenia little endian
mov al,5 ; n hexa, n memorie= b0 05
mov ax,5 ; n hexa, n memorie = b8 05 00
Capitolul 4 108


















Figura 4.5. Explicativ la modul de adresare imediat

4.6.2. Adresare direct

n instruciune apare un cmp ce specific o adres de date (fix - nu mai poate fi modificat
n timpul rulrii). Adresa apare dup codul operaiei instruciunii, ca i la adresarea imediat, dar de
data aceasta ea nu reprezint un operand - dat imediat, ci adresa unde se gsete operandul.
Aceast adres poate fi identificatorul (nume) al unui fanion de condiii, adresa unui registru intern
UCP (operandul este coninut de registru), sau o adresa din memoria principala (adresa la care se
gsete operandul). Din punctul de vedere al locului specificat de adres exist variantele acestui
mod de adresare, numite:
adresare direct la registru (implicit),
adresare direct la memorie (absolut sau extins),
adresare direct la fanion/indicator (pentru testarea acestuia); este cazul adresrilor
directe ale instruciunilor, atunci cnd se face un salt condiionat sau o chemare de
procedur condiionat.
n cazul adresrii directe la registru, (AE = r), operandul este coninut ntr-un registru.
Informaia pentru AE este de multe ori inclus n codul operaiei, prin codul ce indic adresa
registrului intern UCP implicat n instruciune. Avantajele acestui mod de adresare se refer n
primul rnd la codificarea uoar a adresei (numrul de registre interne nu este foarte mare) i
execuia rapid, pentru c nu este necesar un acces suplimentar la memoria principal, exterioar
UCP. Atunci cnd adresa registrelor este inclus implicit n codul operaiei, acea instruciune
lucreaz doar cu acele registre, iar adresarea este numit adresare implicit. n cazul arhitecturilor
RISC, adresele registrelor interne apar ntotdeauna explicit n formatul binar al instruciunilor.
Pentru unele microprocesoare, termenul "implicit" are o semnificaie mai aparte: informaia
se afl implicit (sau rezultatul se va transfera implicit) ntr-un registru dedicat numit acumulator
(deci nu mai exista bii de adresare pentru acel registru).
Adresarea direct la memorie mai este numit adresare absolut, sau adresare extins; iar
adresa efectiv se poate scrie ca fiind AE = x. Instruciunile cu acest mod de adresare conin chiar
adresa efectiv a operandului. AE apare n corpul instruciunii, dup codul operaiei. Adresarea
direct la memorie se folosete mai ales la instruciunile de transfer ntre registrele interne i
memorie, precum i la instruciunile de salt absolut.
cod operaie data imediat
Formatul instruciunii
cod operaie
data (low)
[data (high)]
stocare n memoria principal
adres
a:
a+1:
a+2:
a+3:
Arhitectura Setului de Instruciuni 109
























Figura 4.6. Explicativ la modul de adresare direct la memorie


Numrul de octei din cmpul operand depinde de tipul microprocesorului. De exemplu la
microprocesoarele de 8 bii, adresa este de obicei pe 16 bii (spaiu maxim de adresare de 64 KB).
La cele de 16 bii, cu adresa segmentat, cum sunt procesoarele Intel, exist dou situaii de referire
la o adres de memorie:
adres n interiorul aceluiai segment (AE = adres pe 16 bii)
adres n afara segmentului curent, care necesit AE pe 32 de bii.
La microprocesoarele care au spaii de adresare separate pentru memorie i pentru
dispozitivele de I/O exist o variant a modului de adresare direct, numit adresare direct la port.
De obicei n aceste cazuri adresa portului are dimensiunea de 8 bii, deci pot fi adresate maximum
256 porturi

Exemplu pentru I8086:
out adr_p8,al ;Se transfer coninutul registrului de 8 bii numit al la adresa de
;port adr_p8
in ax,adr_p8 ;Se citesc 16 bii de la portul de adres adr_p8 i se transfer n registrul
;de 16 bii numit ax


4.6.3. Adresare indirect

La acest mod de adresare n cmpul operand al instruciunii se specific un registru sau o
adres de memorie principal din care se va citi adresa operandului. Exist astfel adresare indirect
prin registru (AE = @r) i adresare indirect prin memorie (AE = @x ).

De exemplu, se poate scrie:
cod operaie
adres low
adres high]
stocare n memoria principal
adres
a:
a+1:
a+2:
a+3:
cod operaie
adres
Formatul instruciunii
AE
Capitolul 4 110

mov ax,@bx ;adresa de memorie se gsete n registrul bx. Se transfer n
;registrul ax informaia din memorie de la adresa dat de
;coninutul registrului bx
mov ax,@there ;locaia de memorie de adresa there conine adresa datelor.
;Se transfer n registrul ax informaia din memorie de la adresa
;dat de coninutul locaiei cu adresa simbolic there

La adresarea indirect prin registru, adresa operandului este coninut n registrul
specificat de codul instruciunii. Acest mod de adresare permite o flexibilitate sporit n localizarea
informaiilor n memorie. n formatul instruciunii se adreseaz un registru intern UCP, (sau o
pereche de registre), n care se afl AE a operandului. Este un mod util de adresare atunci cnd
adresa efectiv a operandului este variabil. Adresa registrului de adresare se poate specifica
explicit (la procesoarele cu un mare numr de registre generale, unde oricare registru poate fi folosit
la adresare indirect) sau implicit, (adresa binar a registrului nu apare explicit n vectorul binar al
instruciunii) n cazul n care la acest mod de adresare se poate folosi doar un registru (dublu).


















Figura 4.7. Explicativ la modul de adresare indirect la memorie


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 IP
L
i @(bx+1) IP
H
, 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
cod operaie
adres registru
(intern sau
extern UCP)
Formatul instruciunii
adres operand
registru de
adresare
operand
Memorie
principal (RAM)
Arhitectura Setului de Instruciuni 111

a porturilor i de aceea registrul apare implicit n codul operaiei. De exemplu codurile (n
hexazecimal) ale instruciunilor pentru I8086 sunt:
in ax,dx ;cod instruciune = ED hex. Aduce (input) n registrul intern ax
;data de la portul specificat prin adresa din registrul dx
out dx,al ; cod instruciune = EE hex. Transmite (output) din registrul intern al
;data de la portul specificat prin adresa din registrul dx
out dx,ax ; cod instruciune = EF hex. Transmite (output) din registrul intern ax
;data de la portul specificat prin adresa din registrul dx
Din ultimele dou exemple se observ c exist un singur bit care specific transferul pe 8
bii (n registrul al) sau pe 16 bii (n registrul ax).

Adresarea indirect prin memorie, AE = @x, este dezavantajoas din punctul de vedere al
vitezei, pentru c, pentru a gsi operandul sunt necesare dou citiri succesive ale memoriei. Acest
mod de adresare este folosit de multe microprocesoare n cazul servirii cererilor de ntrerupere,
adresarea indirect fcndu-se prin intrrile tabelului vectorilor de ntrerupere.
Unele calculatoare permit incrementarea sau decrementarea automat a registrului folosit
pentru adresare, fie nainte fie dup utilizare. Rezult astfel variante de adresare pentru adresarea
indirect prin registru:
a) indirect prin registru cu auto-post-incrementare: se face acces la o locaie de memorie a
crei adres este coninut ntr-un registru, iar dup fiecare acces de acest fel registrul este
incrementat automat cu un numr egal cu dimensiunea datei.
De exemplu, dac registrele r1 i r2 sunt de 16 bii, iar memoria este adresabil pe octet, se
poate scrie:
mov r1,@r2+ ;registrul r2 conine adresa de memorie unde se gsesc datele,
;s zicem adresa 61h. Dup execuia instruciunii (copiere
;din memorie n registrul r1, coninutul lui r2 va fi 63h pentru
;c s-au citit doi octei, de la adresele 61h i 62h
b) indirect prin registru cu auto-post-decrementare: se face acces la o locaie de memorie a
crei adres este coninut ntr-un registru, iar dup fiecare acces de acest fel registrul este
decrementat automat cu un numr egal cu dimensiunea datei.
De exemplu:
mov r1,@r2 ;registrul r2 conine adresa de memorie unde se gsesc datele,
;s zicem adresa 61h. Dup execuia instruciunii (copiere
;din memorie n registrul r1, coninutul lui r2 va fi 5Fh (61
hex
2)
;pentru c s-au citit doi octei, de la adresele 61h i 62h
b) indirect prin registru cu auto-pre-incrementare: se face acces la o locaie de memorie a
crei adres este coninut ntr-un registru i al crui coninut a fost incrementat automat
nainte de utilizare, cu un numr egal cu dimensiunea datei.
De exemplu:
mov r1,+@r2 ;registrul r2 conine adresa de memorie unde se gsesc datele,
;s zicem adresa 61h. Citirea datelor i copierea n r1 ncepe
;de la adresa 63h.
b) indirect prin registru cu auto-pre-decrementare: se face acces la o locaie de memorie a
crei adres este coninut ntr-un registru i al crui coninut a fost decrementat automat
nainte de utilizare, cu un numr egal cu dimensiunea datei.
De exemplu:
mov r1,@r2 ;registrul r2 conine adresa de memorie unde se gsesc datele,
;s zicem adresa 61h. Citirea datelor i copierea n r1 ncepe
;de la adresa 5Fh.

Capitolul 4 112

n acest grup de adresri indirecte prin registru, cu actualizarea automat a registrului de
adresare este inclus i tehnica de adresare a memoriei stiv. La memoria stiv data este coninut
n locaia de memorie din vrful curent al stivei, locaie a crei adres este totdeauna coninut n
registrul indicator de stiv (SP).
Adresarea stivei se face indirect prin registrul SP, cu incrementarea sau decrementarea
automat a coninutului lui SP, n funcie de operaia efectuat cu stiva. Pentru introducerea
informaiei n stiva (push - adugarea unui element n stiv se consider conform conveniei Intel
- adugare ctre adrese mici) se decrementeaz mai nti SP (operaie de pre-decrementare), iar apoi
informaia se stocheaz n memorie n locaia indicat de adresa efectiva coninut n SP. Pentru
operaia de extragere din stiv (pop) se extrage din stiv coninutul locaiei adresate de SP i apoi
se incrementeaz SP (post-incrementare).

Operaia de scriere n stiv ("push sursa") poate fi scris
mov @SP,sursa
care presupune succesiunea de operaii:
SP SP - N ; N indic numrul de octei nscrii
;n stiv n cadrul operaiei curente.
@SP sursa ;sursa este coninutul unui registru
;sau locaie de memorie

Operaia de extragere din stiv ("pop dest") ntr-un registru destinaie poate fi scris
mov dest,@SP+
care presupune succesiunea de operaii:
dest @SP
SP SP + N

4.6.4. Adresare relativ

La acest mod de adresare n corpul instruciunii se gsete un operand (un deplasament,
notat cu d) care este adunat la adresa de start a unei seciuni de memorie, adres coninut ntr-un
registru desemnat explicit sau implicit n instruciune.
Putem deosebi urmtoarele variante de adresare relativ:
a) adresare relativ bazat (numit i indirect prin registru baz, cu deplasare);
AE = @(r + d)
De exemplu:
mov ax,[bx+8] ;daca n bx se gaseste adresa 07h citirea operandului ce se va copia n
ax se face de la adresa 7+8 = 15 = 0fh. Pentru c registrul este pe 16 bii iar memoria este
adresat pe octet, se citesc locaiile 0fh i 10h
Adresa efectiv (AE) este suma dintre coninutul; registrului baz i deplasarea.
Modul de adresare este folosit pentru adresarea unor structuri de tip tablou. Prin registru de
baz se nelege un registru utilizat pentru calculul de adres efectiv. Registrul de baz
pstreaz adresa de nceput a unei zone de memorie, unde sunt ncrcate programe aflate n
execuie sau blocuri de date.
Este un mod de adresare util atunci cnd se urmrete accesul la un operand aflat
ntr-o tabel ce poate ocupa diferite locuri n memorie. Pentru calculul AE la I8086, se
adun coninutul registrului bp sau bx la un deplasament furnizat n cadrul instruciunii.
Pentru calculul adresei fizice se folosete registrul ds sau ss, dup cum calculul adresei
efective folosete registrul bx respectiv bp.
Adresa_fizic = ds * 16 + bx + d sau
Adresa_fizic = ss * 16 + bp + d
Arhitectura Setului de Instruciuni 113


b) adresare relativa la contorul de program (PC)
n mod obinuit la execuia de secvene succesive de instruciuni din memorie avem
de-a face cu o adresare indirect prin registrul PC cu auto-post-incrementare. Exemplul
urmtor, poate deci fi trecut ca exemplu i la adresarea indirect: AE = @PC+
Adesea acest mod de adresare relativ este numit adresare secvenial. n cazul unor
ramificaii ns, la coninutul PC se adun deplasamentul cu semn din cmpul operand.
De exemplu:
IT: mov dx,there ; instruciune cu lungime de 3 octei
mov ax,1732h ; lungime de 3 octei
mov bx,cx ; lungime de 2 octei
jmp *-9 ; lungime de 2 octei. La primul octet se decodific salt relativ
;se face salt la instruciunea cu eticheta IT.


4.6.5. Adresare indexat

Adresarea indexat este asemntoare ca principiu, cu adresarea relativ bazat, dar spre
deosebire de aceasta ea este folosit doar n adresarea datelor. Prin acest mod de adresare, adresa
datelor din memoria principal este modificat cu ajutorul coninutului unui registru index.
Adresarea indexat se utilizeaz pentru a referi elementele unui vector, poziia unui element din
vector fiind determinat printr-un indice, iar indicele se poate modifica prin modificarea valorii
coninute n registrul index.
Numrul de registre index dintr-un procesor indic numrul de tablouri poteniale care se
pot adresa n memorie, iar mrimea deplasamentului determin dimensiunea maxim a tabloului.
Numrul registrelor index este un criteriu de performan pentru microprocesoare.
Indexarea se combin de obicei cu alte moduri de adresare putnd exista variantele: adresare
indexat direct la memorie, adresare pre-indexat indirect la registru, adresare post-indexat
indirect la registru, adresare pre-indexat indirect la memorie, adresare post-indexat indirect la
memorie, adresare indexat relativ la adresa de baz (ultima fiind adesea numit i adresare bazat
i indexat). De observat c modurile combinate dintre indexare i adresrile indirecte pot specifica
c indexarea se va realiza nainte sau dup ce indirectarea este efectuat. Astfel, similar cu cele
expuse la adresarea indirect prin registre:
AE = @(ri + d), sau
AE = @(ri + x), sau
AE = @(ri + r)

De exemplu, la microprocesorul I8086 se pot utiliza adresri indexate de genul:
a) Adresare indexat-direct la memorie
mov ax,adr1[si] ;fie adresa lui adr1 = 29h. Adresa datelor este egal cu adr1+ si,
;iar coninutul registrului index si se consider a fi 2. Ca urmare
;copierea n registrul ax se face de la adresele 2Bh i 2Ch
; pentru c (29+02=2B hex)
b) Adresare indexat indirect prin registru baz (adresare bazat i indexat)
mov ax,[bp][si] ;dac coninuturile bazei i indexului sunt bp=34h, si=04h,
;datele se citesc ncepnd cu adresa 38h



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. FUNCIILE PRINCIPALE ALE UNITII DE CONTROL A UCP

Structura calculatorului, cu componentele de baz descrise de von Neumann, rmne, n
general, valabil i astzi. Partea cea mai important a calculatorului este Unitatea Central de
Procesare (UCP), sau procesorul, n a crei structur am deosebit n capitolul 1 unitile de
prelucrare a datelor i de control, astfel c ntr-un calculator, procesorul conine totul cu excepia
memoriei i a sub-sistemului de intrare - ieire. Funcional, putem spune c UCP este format dintr-
o parte de calcul (unitate de prelucrare a datelor, sau cale de date) i o parte de control (cale de
control). Calea de date este un ansamblu de uniti funcionale capabile s regseasc datele i s le
prelucreze. Ea cuprinde: unitatea / unitile aritmetice i logice, registrele de uz general i cile de
comunicare (magistrale interne UCP) dintre acestea. Rolul unitii de control a unui procesor ce
recunoate un set de instruciuni, este s aduc instruciunile codificate binar din memoria
principal (extern procesorului) i s transmit semnale de control ctre unitatea de prelucrare
(calea de date), i de asemenea ctre memorie i sub-sistemul de I/O, n scopul executrii
instruciunilor. Semnalele de control selecteaz funciile ce trebuiesc executate n calea de date la
momente discrete de timp i conduc datele de la / la unitile funcionale potrivite. Momentele de
timp individuale sunt definite de ctre impulsurile ce provin de la circuitul de ceas al UCP.
Conform semnalelor emise, unitatea de control (UC) face, periodic, o reconfigurare din punct de
vedere logic a unitii de prelucrare, astfel nct aceasta s execute un set impus de (micro)operaii.
Pentru execuia corect a unui program UC are doua funcii principale: secvenierea instruciunilor
i interpretarea acestora.
(a) Secvenierea instruciunilor se refer la maniera n care controlul procesorului este
transferat de la o instruciune la alta, prin ordinea de generare a adreselor ctre memoria principal
a calculatorului. Instruciunile sunt selectate pentru execuie ntr-o anumit ordine, dictat de UC
prin interpretarea informaiei codificate n cadrul instruciunilor i pe baza unor semnale
recepionate de UC de la calea de date sau din exteriorul procesorului. Semnalele din exteriorul
procesorului sunt asincrone cu programul executat.
n principiu, fiecare instruciune ar putea conine adresa urmtoarei instruciuni ce trebuie
adus din memorie. Cele mai multe instruciuni dintr-un program au un succesor unic; astfel c
dac o instruciune
i
I este stocat n memorie ntr-o locaie de adres A, iar I are ca unic succesor
instruciunea
1 + i
I , atunci este natural s se stocheze
1 + i
I n locaia de adres A+1 ce urmeaz
imediat dup A. Adresa instruciunii
i
I este coninut ntr-un registru de adresare a instruciunilor,
iar adresa instruciunii
1 + i
I poate fi obinut pentru cazul de mai sus prin incrementare. Din aceast
cauz vom numi registrul de adresare al instruciunilor contor de program, notat pe scurt PC.
Contorul de program este un indicator al adresei instruciunii curente. Adresa instruciunii
1 + i
I se
calculeaz prin operaia:

PC PC + c (5.1)

unde c reprezint numrul de cuvinte de memorie pe care se ntinde instruciunea
i
I .
n programe exist de asemenea instruciuni de ramificare, sau se pot produce situaii
independente de program, care impun UC s fac trecerea ctre instruciuni aflate la adrese ne-
consecutive. UC trebuie s controleze modul n care se fac aceste salturi, care pot fi necondiionate,
condiionate (prin testarea unor indicatori de condiii), sau pot fi salturi pentru transferul controlului
ctre un alt program sau subprogram (proceduri, ntreruperi, excepii). n cazul unei ramificri,
registrul de adresare PC se ncarc direct cu adresa la care se face saltul. Dup aceasta funcionarea
PC se face conform relaiei (5.1) pn la urmtoarea instruciune de ramificare.
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.
















Figura 5.1. Semnale de intrare i ieire al unitii de control la interfaa cu calea de date i
cu alte sub-sisteme


Cele 4 grupuri de semnale de control indicate n figura 5.1. au urmtoarele funcii:
1. C
out
- sunt semnale ce controleaz direct funcionarea cii de date. Generarea acestor
semnale reprezint principal sarcin a UC.
2. C
in
- sunt semnale ce permit cii de date s influeneze funcionarea unitii de control n
sensul modificrii secvenei de comenzi C
out
generat. De exemplu, semnalele C
in
pot
indica prezena unor condiii neobinuite n unitatea de prelucrare a datelor, cum ar fi
depirea capacitii de reprezentare ca urmare a unei operaii aritmetice.
3. C
sout
- aceste semnale sunt transmise la alte uniti de control, (ale altor procesoare de uz
general sau specific) i pot indica condiii de stare, i semnale de sincronizare, cum ar fi
"busy / ocupat", cerere de cedare, sau acceptare a cedrii controlului magistralelor
sistemului, sau semnale de informare c o operaie cerut anterior s-a terminat.
4. C
sin
- Semnale primite de la alte uniti de control, de exemplu de la un controller
supervizor. De obicei includ semnale de start i stop i informaii de sincronizare, funciile
fiind similare cu cele ale C
sout
. Grupurile de semnale C
sin
i C
sout
sunt n primul rnd
folosite pentru a sincroniza unitatea de control cu operaiile altor uniti de control.

Organizarea intern aleas pentru UC i aspectele specifice de implementare folosite la
proiectarea unitii, influeneaz n mod direct viteza cu care lucreaz UC, costurile de proiectare i
construcie i suprafaa ocupat pe circuitul integrat de ctre aceasta unitate. Acest ultim aspect
indic faptul c la microprocesoare, metodele de proiectare ale UC influeneaz ntreaga arhitectur
a UCP prin constrngerile impuse datorit suprafeei limitate a chip-ului de siliciu.
Unitate
de
Control
C
sout
C
sin

Cale
de date
Intrare
Date
Ieire
Date
C
out

C
in

Capitolul 5 118

Orice proiect de unitate de control pornete de la descrierea setului de instruciuni
recunoscute i de la descrierea proiectului cii de date.
Exist dou metode de proiectare i implementare a UC: cablat i microprogramat.
1. Unitatea de control cablat este un automat secvenial proiectat i construit pentru generarea
unui set specific i ntr-o secven fix de semnale de control. Odat ce UC a fost construit,
algoritmul de control nu mai poate fi modificat dect prin reproiectarea ntregii structuri. La
controlul cablat, scopurile principale urmrite la proiectarea automatului se refer la
minimizarea numrului de componente utilizate i maximizarea vitezei de operare.
2. La unitatea de control microprogramat semnalele de control sunt incluse n cuvinte binare
succesive (microinstruciuni) stocate ntr-o memorie de mare vitez, inclusa n UC, numit
memorie de control. Implementarea algoritmului de control se face prin programarea
coninutului memoriei de control. Fiecrei instruciuni recunoscute de procesor i corespunde o
secven de microoperaii generate prin citirea unei secvene de microinstruciuni din memoria
de control (secven de microinstruciuni numit microprogram). Microprogramele coninute n
memoria de control formeaz un interpretor al setului de instruciuni recunoscut de procesor.

Tehnica cablat are cteva avantaje:
dimensiuni mici ale UC
vitez mare de operare
Tehnica microprogramat are i ea cteva avantaje:
un set de instruciuni recunoscut poate fi uor schimbat prin schimbarea microprogramelor i
nu prin reproiectarea ntregii UC
permite o metoda sistematica de proiectare a UC
dac este nevoie, permite modificarea dinamic (n timpul rulrii programelor) a setului de
instruciuni recunoscut de UC prin utilizarea unei memorii de control cu scriere-citire

5.2. CONTROL CABLAT

Unitatea de control este un automat secvenial proiectat special pentru a recunoate un
anumit set de instruciuni, respectiv pentru a genera set corespunztor (pre-fixat) de semnale de
control. Cu ct setul de instruciuni este mai complex, cu att proiectarea i optimizarea proiectului
este mai dificil. De aceea acest tip de control este folosit pentru procesoare care recunosc un set
regulat i relativ redus de instruciuni (de obicei instruciuni cu format de lungime fix).
Unitatea de control trebuie s lanseze semnalele de comand pentru aducerea instruciunilor
din memoria principal, s decodifice codul fiecrei instruciuni i ca urmare s genereze toate
semnalele de control ctre calea de date pentru execuia complet a instruciunii. Cu ct unitatea de
control a procesorului recunoate un set mai mare i mai eterogen (lungimi diferite, cmpuri diferite
n funcie de modurile de adresare etc.) de instruciuni, cu att complexitatea unitii de control
crete.
Ca schem de principiu, descris n figura 5.2., unitatea de control cablat este un automat
ce cuprinde un registru de memorare a strii curente, registrul de instruciuni, care memoreaz
codul operaiei i logic de control (de obicei combinaional). n schema simplificat din figur nu
s-a inut cont de faptul c unitatea de control cuprinde i registre de adresare a memoriei principale
i nu s-au desenat semnalele de control i sincronizare pentru registrele interne ale unitii de
control. Registrul de instruciuni pstreaz codul operaiei instruciunii curente pe toat durata
execuiei instruciunii. Execuia poate fi descris prin mai multe stri ale automatului, stare
urmtoare fiind generat de logica de control conform algoritmului cablat i conform reaciilor de la
calea de date. Starea urmtoare se ncarc n registrul de stare sincron cu impulsul de ceas.
Complexitatea logicii de control este proporional cu numrul de intrri (bii pentru cod
instruciune, reacie cale de date i cod al strii curente) i de numrul maxim de semnale de control
de ieire.
Unitatea de Control 119



















Figura 5.2. Unitate de control cablat, cu o structur simplificat i relaia cu calea de date
i memoria principal.

Pentru o structur cablat, n [Patterson96] se consider c numrul de linii de intrare este
21 iar numrul de ieiri 40 i se calculeaz dimensiunea logicii de control, dac ar fi implementat
cu ajutorul unui circuit ROM, deci fr minimizare. Dimensiunea rezult 2
21
40 bii = 2M 5 8
bii, adic 10 MB de ROM. Rezultatul indic obligativitatea minimizrii logicii de control, din
cauza dimensiunii exagerate a unitii de control, dei n exemplu s-a considerat un numr relativ
mic de intrri i ieiri.
Metodele de proiectare ale unitilor de control cablate sunt metodele folosite pentru
implementarea cablat a oricrui automat secvenial. Metodele moderne de proiectare asistat de
calculator includ limbajele de descriere hardware, care permit automatizarea diferitelor faze ale
proiectri [Toacse96].
Pentru nelegerea metodelor de proiectare a acestor uniti de control de dimensiuni relativ
mici vom descrie pe scurt dou metode.

5.2.1. Metoda tabelului de tranziie a strilor

Este o metod standard de descriere i proiectare a automatelor secveniale i poate
ncorpora tehnici sistematice de minimizare a porilor i bistabililor. Tabelul de tranziie a strilor
cuprinde toate strile automatului de control i corespondena cu strile urmtoare i cu semnalele
de control generate, n funcie de combinaia semnalelor de intrare n automat. n figura 5.3. se
prezint un exemplu general de tabel, n care s-au notat cu C
in
variabilele de intrare ale UC. Liniile
tabelului corespund setului de stri interne {S
i
} ale mainii. O stare intern este determinat de
informaia stocat n unitate n momente discrete de timp (perioade de ceas / clock). Informaia ce
corespunde liniei strii S
i
i coloanei
j
I (combinaia
j
I a semnalelor de intrare C
in
n UC) are
forma
ij ij
C S , , unde
ij
S reprezint starea urmtoare a unitii de control, iar
ij
C reprezint setul de
semnale de ieire corespunztor (C
out
), semnale activate prin aplicarea setului
j
I la intrrile
unitii de control cnd aceasta este n starea S
i
.
Logic de
control
Registru stare

Registru de
instruciuni

Unitatea de control
Cale de date
Magistrale
ctre
memoria
principal
Capitolul 5 120


Combinaii de intrare C
in

Stri
interne
I
1
I
2
... I
m

S
1
S
11
,C
11
S
12
,C
12
... S
1m
,C
1m

S
2
S
21
,C
21
S
22
,C
22
... S
2m
,C
2m

... ... ... ... ...

S
n
S
n1
,C
n1
S
n2
,C
n2
... S
nm
,C
nm


Figura 5.3. Exemplu general de tranziie al strilor. Pentru fiecare stare S
i
a automatului la aplicarea unui
set de intrri
j
I (pe coloan) se indic combinaia (
ij ij
C S , ) 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.














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 T
i
se poate vedea n figura 5.5b.


5.2.2. Metoda sincronizrii prin numrtoare de secvene

Aceasta metod utilizeaz circuite de generare a unor impulsuri succesive (faze) de
sincronizare, circuite realizate cu numrtoare i circuite de decodificare. Fiecrei faze i
corespunde un set de semnale de control, numrul de faze fiind egal cu numrul maxim de stri ale
UC. Vom numi aceste circuite secventiatoare. Un secveniator modulo n poate conine de exemplu
un numrtor modulo n a crui ieire este conectat la un decodificator 1:n sincronizat cu
numrtorul. Semnalele de control de la ieirea UC vor fi activate pe baza acestor semnale de
sincronizare (decalate n timp) cu ajutorul unei logici combinaionale (figura 5.4.).
Secveniator
cu contor
modulo n
CLC
Cin
T1
T2
Tn
Clock
Cout
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 2
m
. 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 C
in
.




















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)

Implementarea logicii combinaionale a automatelor UC se poate face n jurul unor celule de
circuit tip PLA sau cu circuite proiectate complet pentru o anumit structura UC. n mainile reale,
circuitele UC nu pot fi implementate cu un singur PLA, pentru c dimensiunea acestuia rezult
foarte mare. De aceea un tabel mare este mprit n mai multe PLA-uri ale cror ieiri sunt
multiplexate pentru a alege controlul corect. De asemenea, numrul de stri n diagrama cu stri
finite poate avea influen mare asupra dimensiunii PLA. Ideea este s se dea numere similare
pentru stri ce realizeaz operaii similare. Diferena ntre modelul biilor pentru astfel de stri se
face de exemplu numai printr-un singur bit. Exist programe CAD care ajut rezolvarea acestei
probleme de atribuire a valorilor strilor.
Decodificator
1:n
T
1
T
2

T
n

Numrtor
modulo n
CLK
Reset Latch
RS
S
R
Q
Q
Start
End
Clock
Reset
Validare
Capitolul 5 122











Figura 5.5b. Diagrama semnalelor de faz T
i
generate de secveniatorul modulo n din figura 5.5a.

5.3. CONTROLUL MICROPROGRAMAT

Acest mod de construcie a Unitii de Control a fost enunat n 1951 de ctre Maurice
Wilkes [Hayes88]. Soluia sa a fost s transforme UC ntr-un calculator n miniatur, ce are dou
tabele n memoria de control. Primul dintre tabele specific modul de control a cii de date, iar al
doilea determin ordinea de generare (secvenierea) semnalelor de control pentru operaiile
elementare. Soluia a fost numita de Wilkes "microprogramare" i de aici alte denumiri derivate:
microinstruciune, microcod, microprogram, etc.
Microinstruciunile specific toate semnalele de control pentru calea de date plus
posibilitatea de a decide condiional care microinstruciune va fi urmtoarea executat (figura 5.6).
Aa cum sugereaz i numele "microprogramare", o dat ce calea de date i memoria pentru
microinstruciuni, sunt proiectate (i construite), controlul devine n special o problem de
programare care const n scrierea unui interpretor pentru setul de instruciuni. Microprogramarea
permite astfel schimbarea unui set de instruciuni prin schimbarea coninutului memoriei de control
(n care se stocheaz "tabelelor" amintite de Wilkes), fr ca, de cele mai multe ori, s fie necesar
i schimbarea structurii hardware. Structura microprogramului este asemntoare cu diagrama de
stri, n care pentru fiecare stare din diagram corespunde o microinstruciune.
Fiecare bit dintr-o microinstruciune reprezint o comand elementar care fie merge direct
la o resurs comandat (registru, sau CLC), fie este prelucrat mpreun cu alte informaii (pentru
decodificare i sincronizare) pentru ca apoi s se comande resursa fizic.
Fiecare cod de instruciune citit i decodificat, va trebui s produc saltul la o adresa din
memoria de control unde se gsete microprogramul asociat execuiei acelei instruciuni. O
posibilitate de efectuare a acestui salt, este chiar folosirea informaiei din op-code (codul operaiei)
ca index ntr-un tabel cu adrese de start de microprograme. O alt posibilitate, care crete eficiena
utilizrii memoriei de control, este convertirea codului instruciunii curente ntr-un alt cod care se
constituie n index de adres.
La realizarea unei UC sub forma microprogramat, principalul scop este reducerea
costurilor generale de proiectare i construcie a UC, de reducere a dimensiunilor microprogramelor
i a dimensiunii microinstruciunilor. n mod normal, instruciunile care cer cel mai mare timp
pentru execuie sunt optimizate ca vitez, iar celelalte instruciuni sunt optimizate ca spaiu ocupat
n memoria de control.
Avantajele microprogramrii, identificate de Wilkes n 1953, rmn valabile i astzi:
microprogramarea permite schimbarea uoar a algoritmului de control. Aceast calitate este
util n faza de dezvoltare cnd simpla schimbare a unui 0 n 1 n memoria de control, salveaz
uneori reproiectarea componentelor hardware.
prin emularea altui set de instruciuni, n microcod, se simplific compatibilitatea software.
reduce costurile n cazul adugrii unei instruciuni mai complexe la o microarhitectura
standard.
T
1

T
2

T
3

T
n

Unitatea de Control 123

flexibilitate - construcia hardware poate ncepe nainte ca setul de instruciuni i microcodul s
fie complet scris, pentru c specificarea controlului este doar o problema de software.






















Figura 5.6. O unitate de control microprogramat simplificat. Deosebirile fa de figura 5.2, cu UC
cablat, se refer n primul rnd la modul n care se calculeaz intrrile n logica de control (microadresa
pentru microinstruciune). n plus logica de control este implementat cu ajutorul unei memorii de control ,
de obicei de tip ROM, care specific semnalele de control i semnalele de secveniere.

Dezavantajul microcodului este viteza redus de lucru, pentru c microprogramarea este
dependent de tehnologia de realizare a memoriilor.
Din punct de vedere istoric conceptul microprogramrii (1953) a fost cu un pas naintea
tehnologiei timpului i a rmas aproximativ 10 ani doar o posibilitate virtual de implementare.
Wilkes a construit totui unitatea de control a calculatorului numit EDSAC 2 utiliznd controlul
microprogramat, n 1958, cu o memorie de control ROM construit din miezuri magnetice. De abia
n 1964 firma IBM a folosit microprogramarea la familia IBM 360. S-a realizat chiar emularea lui
unei maini anterioare IBM 7090 cu ajutorul noii maini IBM 360, care a demonstrat c maina
hardware diferit poate rula aceleai programe uneori chiar mai rapid dect pe maina original.
Pentru operaia de emulare un calculator microprogramabil C1 poate fi utilizat pentru a executa
programe scrise n limbajul main L2 al unui alt calculator, C2, prin plasarea unui emulator pentru
L2 n memoria de control a lui C1. C1 este deci capabil s emuleze pe C2. Maina pe care se face
emularea este denumita main gazd (host-machine), iar maina care este simulat, main int
(target machine). Prin emulare se poate face astfel o testare pe maina gazd a unui procesor nainte
ca acesta s fie realizat fizic.
Cele mai multe din calculatoarele incluse astzi n categoria CISC folosesc implementarea
microprogramat a algoritmului de control al UC.
Principiul structurii de control microprogramate poate fi descris prin schema bloc din figura
5.7. Aa cum s-a descris n primul paragraf al acestui capitol unitatea de procesare a datelor este
comandat pentru a executa funcii asupra unei structuri de date i ca urmare pot fi generate
semnale ce caracterizeaz operaia efectuata (indicatori de condiii). Comanda funciilor i
interpretarea efectului produs se face aici cu un automat construit ca o structur de control
Contor de instruciuni
Microsecveniator
(logic de selecie
adres)
Registru de instruciuni
Memorie de
control
Unitatea de control
Cale de date
Magistrale
ctre
memoria
principal
1
+
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.
















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.

Logica de selecie a adresei (microadresei) memoriei de control (sau de microprograme),
calculeaz adresa urmtoarei microinstruciuni pe baza informaiei din registrul de instruciuni (n
care se stocheaz codul operaiei instruciunii), pe baza unor informaii externe ce provin de la calea
de date, sau pe baza informaiei de secveniere (de reacie) coninut n corpul microinstruciunii
curente.
Fiecare locaie adresabil a memoriei de control este privit ca o microinstruciune. Atunci
cnd locaia este adresat ea va activa un anumit set de linii de control i linii de adres de
secveniere. Un exemplu de microinstruciune, cu exemplificarea unor cmpuri specifice se prezint
n figura 5.8.



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
Logic de
selecie
microadres
Intrri de la
calea de date
Registrul de
instruciuni
(codul operaiei)
secveniere
microadres
Comenzi
(Cout)
Memorie de
microprograme
Tabel (informaie)
de secveiere
Tabel (informaie)
de control
Destinaie Operaie ALU Adr. sursa 1 Adr. sursa 2 Divers Cond Adresa urmtoare
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.

5.3.1. Metode de optimizare a UC microprogramate

n scopul creterii vitezei de lucru a UC microprogramate i de reducere a dimensiunilor
memoriei de control principalele metode folosite sunt:
a. reducerea limii microinstruciunilor
b. utilizarea structurilor de tip pipeline la nivelul microprogramului
c. utilizarea mai multor niveluri ierarhice de memorii de control

a) Reducerea limii microinstruciunilor

Adesea, microinstruciunile sunt clasificate n microinstruciuni orizontale i verticale, n
funcie de numrul de resurse hardware ale mainii controlate simultan de o microinstruciune.
Microinstruciunile orizontale controleaz foarte multe resurse hardware care funcioneaz
n paralel. O singur microinstruciune orizontal ar putea s controleze funcionarea simultan i
independent a uneia sau mai multor uniti ALU, accesul la memoria principal, generarea
condiionat a adresei urmtoare, accesul la diverse registre de lucru, bistabili de stare etc. O
asemenea microinstruciune are ns un numr mare de bii (tipic peste 64 de bii).
Microinstruciunile verticale controleaz simultan un numr mic de resurse hardware i
comand operaii simple, de tipul ncrcare, adunare, memorare, salt etc. Acest tip de
microinstruciune se aseamn n principiu cu instruciunile n limbaj main, care conin un cod al
operaiei i unul sau mai muli operanzi. De aceea microprogramarea vertical mai este numit
microprogramare software, iar prin comparaie microprogramarea cu instruciuni orizontale este
numit microprogramare hardware.
Aceeai main poate fi controlat cu microprograme lungi i lente, scrise cu
microinstruciuni verticale, sau cu microprograme scurte i rapide, scrise cu microinstruciuni
orizontale.














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.
Cmp A
(3 bii)
Cmp B
(2 bii)
... ... ...
Decodificator
1:8
...
Decodificator
1:4
A0 A1 A7 B0 B1 B2 B3
Microinstruciune
vertical
8 resurse comandate de
cmpul codat A
4 resurse comandate
de cmpul codat B
Capitolul 5 126


Lungimea unei microinstruciuni depinde de gradul de codificare al informaiei coninute.
La o microinstruciune fr codificare, fiecare bit controleaz o singur resurs sau micro-operaie.
La o microinstruciune cu codificare (de exemplu n figura 5.9), cmpuri binare controleaz resurse
mutual exclusive. Prin codificare, un cmp al microinstruciunii va putea activa n acelai timp
numai un singur semnal de control. De aceea dou semnale de control sunt compatibile pentru
codificare i pot fi incluse n acelai cmp de control numai dac sunt mutual exclusive (nu este
necesar s fie activate simultan de o microinstruciune). Pot exista ns mai mult dect dou
semnale compatibile pentru fiecare cmp ce folosete codarea controlului.
Concluzionnd putem spune c microinstruciunile orizontale au caracteristicile: format lung,
capacitate de a exprima un grad mare de paralelism (multe comenzi simultane), codare redus a
informaiei de control. Microinstruciunile verticale au ca principale caracteristici; format scurt,
capacitate mic de control al microoperaiilor paralele, codare puternic a informaiei de control.

b) Utilizarea structurilor pipeline, pentru operaii n paralel
Dei execuia microinstruciunii se desfaoar conform unei secvene ce cuprinde fazele de
citire, decodificare i execuie, detaliile de implementare pot fi diferite de la o soluie de
implementare la alta. Gradul de suprapunere al operaiilor de execuie pentru microinstruciunea
curent respectiv de acces (gsire i citire) a microinstruciunii urmtoare este dependent de
structura hardware a UC.
Dac metoda folosit pentru execuia microprogramelor este serial, citirea
microinstruciunii urmtoare nu ncepe pn cnd nu se termin execuia microinstruciunii curente.
Durata unui ciclu de microinstruciune (CMI) va fi suma dintre timpul de acces, TA, la memoria de
control i timpul de execuie, TE, al microoperaiilor ce controleaz resursele hardware ale
calculatorului:
CMI = TA + TE (5.2)

n acest fel, dac se consider valori medii pentru TA i TE se poate calcula durata medie de
execuie a unui microprogram cu M microinstruciuni ca M*(TA+TE).
n relaia de mai sus timpul de acces (TA) se refer la timopul necesar din momentul lansrii micro-
adresei pn cnd microinstruciunea poate fi citit la ieirea memoriei de control. Timpul de
execuie (TE) este timpul minim ct semnalele de control trebuie s rmn active pentru ca
operaia de control s se desfoare corect.
Avantajul modului serial de lucru al UC (figura 5.10a i b) este dat de simplitatea hardware
a unitii i ca urmare de costul redus. n plus UC microprogramat serial nu trebuie s controleze
simultan execuia i citirea i nu pune probleme n cazul apariiei microinstruciunilor de salt
condiionat.
Prin adugarea unui etaj suplimentar n UC (etaj constituit dintr-un registru de
microinstruciuni) citirea microinstruciunii urmtoare este realizat n paralel cu execuia
microinstruciunii curente. Aceast structur de tip pipeline (band de operaii, sau conduct de
operaii) are avantajul unei viteze de lucru mai mari, pentru c execuia microinstruciunii curente
ncepe imediat dup terminarea execuiei celei precedente. n aceast implementare valoarea CMI
va fi dat de maximul dintre timpul de acces la memoria de control i timpul de execuie: CMI =
max(TA,TE). Durata minim a unui microprogram de M microinstruciuni este n acest caz
TA+M*TE. Ca dezavantaj, n afara de circuitele suplimentare, reprezentate n principal de registrul
pentru memorarea microinstruciunii curente (registrul pipeline), la UC microprogramat din figura
5.10 c i d se pune i problema salturilor condiionate. n acest caz este nevoie de un mecanism de
anticipare a adresei urmtoarei microinstruciuni. Dac anticiparea este corect, n majoritatea
cazurilor, nu se va pierde din vitez. n cazul unei anticipri greite se va pierde ns cel puin un
ciclu pentru citirea corect a microinstruciunii ce urmeaz.
Unitatea de Control 127

































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.

c) Organizarea pe mai multe niveluri a memoriei de control

Memoria de control poate fi organizat pe unul sau pe dou niveluri. Memoria structurat pe
dou niveluri folosete noiunile de microinstruciune i microprogram pentru nivelul superior i
nanoinstruciune, respectiv nanoprogram pentru nivelul inferior. Aa cum o instruciune este
executat prin rularea unui microprogram (la un singur nivel de memorie de control), fiecare
microinstruciune este executat prin rularea unui nanoprogram asociat. Tehnica nanoprogramrii
este echivalent conceptual cu microprogramarea, iar structurarea memoriei de control pe dou
niveluri (vezi figura 5.11) ofer o flexibilitate mai mare n proiectarea microinstruciunilor de la
nivelul superior.
n calculatoarele microprogramate convenionale (de exemplu seria Intel 80x86), fiecare
instruciune adus din memoria principal (MP) este interpretat de un microprogram stocat ntr-o
singura memorie de control. n unele maini ns, microinstruciunile nu emit direct semnalele ce
controleaz resursele hardware. Semnalele de ieire sunt folosite pentru a accesa, printr-un
Instruciuni
Microsecveniator
Memorie de
control
(microprograme)
secveniere
control
Timp
Numr
microinstruciune
I(n)
TA TE
TA TE
TA TE
I(n+1)
I(n+2)
Instruciuni
Microsecveniator
Memorie de
control
(microprograme)
secveniere
control
Registru
microinstruciuni
Timp
Numr
microinstruciune
I(n)
TA TE
TA TE
TA TE
I(n+1)
I(n+2)
(a)
(c)
(b) (d)
Capitolul 5 128

nanosecveniator o memorie suplimentar de control numit memorie de nanocontrol.
Nanoinstruciunile coninute n aceast din urm memorie controleaz direct resursele hardware.

























Figura 5.11. Organizarea memoriei de control pe dou niveluri. Notaii folosite: S / nS =
microsecveniator / nanosecveniator; RI/nRI = micro / nano registru de instruciuni, MC / nMC =
memorie de microprogram / nanoprogram.

Memoria ne microcontrol (MC) conine microprograme cu microinstruciuni verticale,
interpretate de nanoinstruciuni orizontale ce se gsesc n memoria de nanocontrol (nMC). Mai
multe microinstruciuni (ce fac parte din microprograme diferite) pot fi interpretate de acelai
nanoprogram. Rezult astfel o dimensiune mai mic, pe ansamblu, a memoriei de control. Un alt
avantaj este flexibilitatea mai mare a operaiei de proiectare a arhitecturii, ce rezult din slbirea
legturilor dintre instruciuni i hardware, prin dou niveluri intermediare de control, n loc de unul.
Dezavantajul principal al nanoprogramrii este reducerea vitezei datorit accesului suplimentar la
memoria nMC i a structurii ceva mai complexe a organizrii unitii de control.
Posibilitatea optimizrii mrimii totale a memoriei de control prin nanoprogramare a fost
folosit la seria de microprocesoare Motorola 680x0. De exemplu MC 68000 conine o memorie de
microprogram de 640 x 10 bii respectiv o memorie de nanocontrol de 280 x 70 bii, adic n total
circa 26 kbii. O proiectare microprogramat clasic ar necesita peste 45 kbii.
Ordine
S
MC
RI
nS
nMC
nRI
Secveniere
Secveniere
Comenzi
resurse hard
interne UCP
Unitatea de Control 129

5.4. PARALELISM N EXECUIA INSTRUCIUNILOR
PRIN TEHNICI PIPELINE
1


Tehnica pipeline este o tehnic de introducere a paralelismului n execuia instruciunilor.
Aceasta se face prin mprirea ciclului de execuie al unei instruciuni n mai multe faze de
prelucrare, iar execuia paralel a mai multor instruciuni indic c fiecare dintre aceste instruciuni
se afl n alt faz de prelucrare. Tehnica de tip pipeline poate fi aplicat att pentru execuia
instruciunilor ct i pentru circuitele aritmetice de prelucrare. Aici ne vom referi doar la execuia
paralel a instruciunilor prin tehnica pipeline.
Vom folosi n continuare termenul de conduct, care este sugestiv i de asemenea scurt,
pentru a exprima cuvntul din limba englez pipeline (vezi i nota din josul paginii). O conduct
este similar unei linii de asamblare / montaj din industrie. Fiecare pas din conduct completeaz o
parte din operaiile necesare n execuia instruciunii. La fel ca ntr-o linie de asamblare pentru
autovehicule, munca care trebuie fcut ntr-o instruciune este spart n pri mai mici, fiecare din
aceste pri necesitnd o fraciune din timpul necesar pentru a termina complet execuia
instruciunii. Fiecare din aceti pai este numit un etaj al conductei sau segment al conductei.
Etajele sunt conectate unul dup cellalt pentru a realiza o conduct (band) de instruciuni ce intr
la un capt i ies prelucrate la cellalt capt. Pentru c toate segmentele conductei sunt legate ntre
ele, toate segmentele trebuie s fie gata pentru a avansa (pentru a furniza informaia ctre urmtorul
etaj) n acelai timp.
Timpul necesar pentru deplasarea unei instruciuni cu un pas n interiorul conductei
constituie un ciclu main al conductei. Lungimea acestui ciclu este determinat de timpul cerut
pentru prelucrarea n cel mai lent segment din conduct, pentru c toate segmentele avanseaz n
acelai moment. Un ciclu main al conductei este egal cu unul sau mai multe cicluri de ceas, dar
obiectivul oricrei maini ce implementeaz aceast tehnic este s se ajung la o medie de o
instruciune executat pe ciclu de ceas. Tehnica de tip pipeline conduce la o reducere a timpului de
execuie mediu pentru o instruciune.
Cea mai simpl cale de a nelege principiul conductei este s imaginm fiecare etaj ca fiind
format dintr-un registru urmat de un circuit combinaional de prelucrare. (vezi figura 5.12 cu
reprezentarea bloc a unei conducte cu 4 etaje / faze).















Figura 5.12. Structur de tip conduct (pipeline) cu patru etaje.

Registrele stocheaz datele de intrare pentru combinaionale pe durata necesar ca sub-operaia
corespunztoare segmentului s fie terminat i rezultatele s apar corect la ieirea circuitului

1
Pipeline = band de execuie/ conduct de execuie / linie de asamblare


R1


CLC4


R2


CLC1


R3


CLC2


R4


CLC3
Intrare
Clock
Ieire
etaj 1 etaj 4 Registru de
memorare
Circuit de prelucrare
(Circuit Logic
Combinaional
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 IF (Instruction Fetch) - aducere instruciune din memoria principal
Etaj 2 ID (Instruction Decode) - decodificare instruciune
Etaj 3 OF (Operand Fetch) - aducere operanzi
Etaj 4 EX (Execution) - execuie operaie.

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.









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.

Dac se consider o conduct cu k etaje i n instruciuni de executat, vom ncerca s deducem
creterea n vitez pentru structura de tip pipeline. Dac timpul de ciclu al conductei este notat cu
CLK
T va fi nevoie de un timp egal cu
CLK
T k ca s umplem conducta (sau altfel spus ca prima
instruciune s treac prin toate etajele) i de timpul suplimentar de execuie a celorlalte n-1
instruciuni, adic
CLK
T n ) 1 ( . Timpul total pentru execuia celor n instruciuni ntr-o conduct
cu k etaje va fi:

CLK P
T n k T + = ) 1 ( (5.3)

Considerm de asemenea cazul unei uniti de execuie a instruciunilor fr folosirea
tehnicii pipeline. Fie un timp notat
mediu
T

necesar pentru execuia fiecrei instruciuni.
Pentru un program cu n instruciuni, fr pipeline (suprapunere) timpul mediu total de execuie va fi
egal cu:
mediu
T n T = (5.4)

Creterea n vitez datorit folosirii conductei poate fi calculat ca raport ntre cele dou valori de
timp:
CLK
mediu
T n k
T n
S
+

=
) 1 (
(5.5)

Pe msur ce numrul instruciunilor crete este valabil relaia 1 >> k n , iar creterea n vitez
Etaj:
1 2 3 4 5 6 7 8 9
IF I1 I2 I3 I4 I5 I6
ID I1 I2 I3 I4 I5 I6
OF I1 I2 I3 I4 I5 I6
EX I1 I2 I3 I4 I5 I6
Impulsuri
de ceas
Unitatea de Control 131

tinde ctre o valoare maxim egal cu:

CLK
mediu
T
T
S = (5.6)
Dac presupunem c timpul mediu de execuie al unei instruciuni (
mediu
T ) este acelai cu timpul
mediu de execuie al unei instruciuni n unitatea construit ca pipeline (adic
CLK
T k ), 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
mediu
T i
CLK
T k 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.


5.5. NTRERUPERI I EXCEPII

n timpul rulrii programelor pot aprea unele evenimente neobinuite (de excepie). Aceste
evenimente pot conduce la suspendarea temporar a programului aflat curent n execuie; n acest
interval de ntrerupere a rulrii programului se va executa, de obicei, o rutin de tratare a
evenimentelor ce au ntrerupt programul. Toate aceste evenimente produse de condiii neobinuite /
neateptate pentru programul curent n execuie sunt numite la modul general "ntreruperi" pentru
c ele produc ntreruperea programului si devierea / saltul ctre o rutin special de tratare a
evenimentului "ntreruptor". Putem clasifica aceste evenimente "ntreruptoare" n:

1. cereri de ntrerupere: evenimente generate din exteriorul UCP, asincrone cu programul
rulat, care cer tratare. Aceste cereri de ntrerupere pot proveni:
1.a de la echipamente periferice care cer servicii de la UCP (cerere de transfer de date,
sau informri cu privire la starea perifericului), sau
1.b de la circuite specializate pentru supravegherea funcionrii normale a componentelor
hardware (eroare de paritate la citirea memoriei, eroare de paritate pe magistral,
Capitolul 5 132

cderea iminent a tensiunii de alimentare etc.);
Evenimentele ce produc acest tip de ntrerupere a programelor sunt numite i ntreruperi
hardware.

2. excepii: evenimente neobinuite sincrone cu programul (produse la rularea
programului), care cer tratare. De obicei indic situaii de excepie cum ar fi:

2.a ntlnirea unor instruciuni de control ilegale n programul utilizator,
2.b ncercarea de violentare a sistemului de protecie a informaiilor din memorie,
2.c condiii aritmetice speciale (depiri, mprire la zero),
2.d accesul la segmente (sau pagini virtuale) de memorie nerezidente n memoria
principal.
Excepiile produc devieri, ("traps") sau ntreruperi software.

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).



















Figura 5.14. Reprezentare a modului de recunoatere pentru cererile de ntreruperi
mascabile i nemascabile

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.
Intrare ntrerupere
nemascabil (NMI)
Intrare ntrerupere
mascabil (INTR)
S

CLOCK
Q

Validare
INTR
Invalidare
INTR
Comand
ntrerupere
(deviere)
Microprocesor
SAU
SI
Indicator pentru
mascarea
ntreruperilor
Capitolul 5 134

Dac mecanismul hardware de recunoatere a unei ntreruperi nu este complicat, n cazul
excepiilor produse de rularea instruciunilor lucrurile sunt un pic mai complexe. Cauzele
excepiilor sunt diverse i ele se manifest n diferite moduri. De exemplu, cauzele aritmetice, cum
ar fi depirea domeniului de reprezentare de rezultatul unei adunri, pot fi tratate i rezolvate
relativ uor. Dar dac cuvntul binar adus ca i cod al instruciunii nu reprezint nici un cod
recunoscut de procesor evenimentul va produce sigur abandonarea programului. Codul
nerecunoscut este tratat ca "instruciune ilegal" i el poate aprea fie din cauza erorilor umane fie
datorit erorilor hardware ale mainii. Tratarea acestei excepii trebuie fcut nu numai pentru a
informa utilizatorul despre evenimentul produs, dar i pentru a nchide execuia acelui program.
Cea mai defavorabil soluie este bineneles blocarea calculatorului. Pentru cazul depirilor, unele
calculatoatoare au instruciuni speciale de test pentru overflow (ex. BOV Branch if OVerflow). Este
ns complet neconvenabil ca fiecare instruciune aritmetic s fie urmat de un test. n cazul
instruciunilor ilegale nu este posibil s se testeze condiia, pentru c trebuiesc luate imediat msuri.
Calculatoarele timpurii, care nu aveau un sub-sistem de ntreruperi, s-ar fi oprit n cazul unor
asemenea condiii, dar asta n-ar fi fcut dect s mping problema mai jos cu un nivel, ctre
operatorul de serviciu, care trebuia s rezolve problema. La mainile actuale, de mare vitez, este
de dorit s se acioneze imediat pentru a se elimina timpul pierdut de calculator. Se presupune c de
obicei condiia ce a produs eroarea i deci ntreruperea este neleas, tratat i apoi se va continua
cu sarcina ntrerupt dac este posibil. Dac eroarea este fatal sarcina curent este abandonat i se
va trece la execuia unei alte sarcini de lucru. Descriem n continuare cteva din condiiile care pot
deveni surse de deviere a programului rulat.
Condiii aritmetice. Aceste excepii sunt date de condiii aritmetice neobinuite cum sunt
depirile (overflow i underflow), ncercare de mprire la zero etc. Dei utilizatorul poate testa
aceste condiii cu instruciuni de test, este preferabil s existe o monitorizare continu, hardware -
prin circuite specializate, a acestor condiii. Acest procedeu este mai eficient din punctul de vedere
al timpului de execuie pentru c nu trebuie executate instruciuni suplimentare dect n cazul cnd
se produc condiiile testate. De multe ori se permite utilizatorului (uneori n faza de compilare) s
specifice ce trebuie fcut, separat, pentru fiecare din tipurile de evenimente provenite din condiii
aritmetice. Dac nu se indic nici o specificaie, aciunea implicit este de obicei abandonarea
sarcinii (abort).
Instructiuni ilegale. O deviere datoarat unei instruciuni ilegale (instruciune de control
nepermis utilizatorului, sau cod ne-recunoscut) este de obicei fatal, adic termin execuia
programului utilizator pentru c se presupune c exist o eroare n program, sau o eroare sever de
hardware. La abandonare utilizatorul este informat despre eroare i despre starea programului
utilizator (coninutul registrelor i a memoriei).
Protecie. Cele mai multe sisteme de calcul au n memorie la un moment dat mai mult dect
un program pentru ca exist mai mult dect un proces ce se execut. (de exemplu mai multe
programe lansate n execuie pe un calculator uni-procesor utilizat prin partajarea timpului
2
). De
aceea cele mai multe sisteme prevd un anumit sistem de protecie. Protecia memoriei se refer la
capabilitatea calculatorului de a marca acele zone de memorie care sunt disponibile unui program
particular i s detecteze referinele interzise la acele zone. O zon de memorie nedisponibil pentru
programul aflat n rulare este numit regiune protejat a memoriei. O ncercare a programului
utilizator de a scrie ntr-o regiune de memorie protejat este n mod clar o eroare de programare
(intenionat sau nu) i produce o deviere (trap). n mod normal acest eveniment de excepie este
fatal, la fel ca i devierile pentru instruciuni ilegale.
Erori ale mainii. n mod ideal, calculatorul nu face niciodat erori, dar n practic, pot fi
acceptate dou feluri de erori hardware. O eroare catastrofal se produce cnd eroarea de hardware
este att de serioas nct oprete funcionarea unui subsistem major. Asemenea erori sunt evidente

2
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 interrupt
3
) 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
return from interrupt = ntoarcere din rutina de tratare a ntreruperii
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 2
3
i 2
2
iar n acelai timp ceilali 14 bii ai PC sunt
poziionai la zero.






























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.

0000 0000 0000 VI00
Contor de program (16 bii)
Memoria principal
Adresa (hex):
0000
0004
0008
000C

RTI-2
Salt la adresa
RTI-0
Salt la adresa
RTI-1
Salt la adresa
RTI-2
Salt la adresa
RTI-3
VI=00
VI=01
VI=10
VI=11
Rutina de
tratare
ntrerupere cu
VI=10
Tabela
vectorilor
de
ntrerupere
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).























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).
I
Z 80
VI 8
8
(LSB)
Dispozitiv
I/O
INT
M1+
IORQ
(MSB)
Adres pointer
n tabel
ARTI
ARTI:
Rutina
de
Tratare
MP
Capitolul 5 138

Ca urmare a acestei acceptri, dispozitivul ntreruptor va pune pe magistrala
de date o informaie de identificare de 8 bii pe care o vom numi vector de
ntrerupere (VI). Vectorul de ntrerupere formeaz octetul mai puin
semnificativ al unei adrese pointer de 16 bii. Octetul mai semnificativ al
adresei pointer se citete dintr-un registru special utilizat pentru ntreruperi
(I), intern microprocesorului. Adresa pointer este adresa din memoria
principal (din tabelul vectorilor de ntrerupere) unde se gsete adresa de
salt ctre rutina de tratare a ntreruperii. Pot exista maximum 255 de intrri
n tabela vectorilor de ntrerupere.

Exemplul 2 pentru ntreruperi vectorizate

La procesorul I8086 (i seria I80x86 n mod real) toate adresele rutinelor de tratare a
ntreruperilor se pstreaza ntr-o tabel a vectorilor de ntrerupere (TVI) care n
modul ne-protejat de lucru se gsete ncepnd cu adresa 0 din memoria principal.
La procesoarele Intel memoria este segmentat, aa nct adresa de 20 de bii se
formeaz din dou componente: adresa de baz a segmentului de cod (coninut
ntr-un registru segment numit CS) i adresa n cadrul segmentului (coninut pentru
programe n registrul IP). Fiecare dispozitiv ntreruptor sau eveniment de excepie,
va furniza un vector de ntrerupere pe 8 bii (Intel numete "tip" acest vector) cu
ajutorul cruia se calculeaz adresa pointer (P) de intrare n tabela TVI. n tabel se
pstreaz adresele rutinelor de tratare n felul urmtor: ncepnd cu adresa cea mai
mic dintr-un grup de 4 octei se gsesc valorile ce se vor nscrie n registrele de 16
bii IP (mai nti octetul LSB i apoi MSB) i respectiv CS (LSB, iar la adresa cea mai
mare MSB).
Relaiile de calcul de adresare n TVI, respectiv transferurile ce se efectueaz sunt:

P = 4 * (VI) - pointer care va conine adresa de intrare n TVI
IP TVI(P+1,P)
CS TVI(P+3,P+2)
n acest fel ntreruperea 0 ncepe de la adresa 0, ntreruperea 1 de la adresa 4, iar
ntreruperea 255 ncepnd de la adresa 1020 (n zecimal).

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


5.6. ROLUL MEMORIEI STIV

Memoria stiv (stack memory) este o memorie special ce lucreaz pe principiul LIFO
(Last In First Out = ultimul intrat - primul ieit). Aa cum s-a vzut anterior, subsistemul de
ntreruperi, este responsabil pentru salvarea i restaurarea automat din stiv a informaiilor
vectorului de stare pentru programul ntrerupt.
Memoria stiv este utilizat ca memorie de stocare temporar nu numai de sistemul de
ntreruperi, ci i de ctre tehnicile de apelare a procedurilor (subrutinelor), sau poate fi folosit de
programe pentru stocarea temporar-i regsirea rapid a datelor. De obicei prin stiv se transmit i
alte informaii, cum ar fi transmiterea parametrilor ctre proceduri.
O prim metod de implementare a memoriei stiv (avantajoas din punctul de vedere al
vitezei, dar problematic din punctul de vedere al capacitii de memorare), const n folosirea unor
registre interne ale UCP, (registre cu posibilitatea de deplasare stnga / dreapta a informaiei). Acest
tip de memorie stiv este numit stiva construit hardware. A doua metod utilizat la
majoritatea microprocesoarelor este implementarea memoriei stiv n cadrul memoriei principale,
ntr-o zon a crei dimensiune poate fi satisfctore pentru orice aplicaie (stiva software).
Numele de stiv sugereaz modul de funcionare al acestei zone de memorare. Astfel
fiecare cuvnt nou introdus n stiv se aeaz peste anterioarele cuvinte, iar atunci cnd se dorete
extragerea articolelor din stiv se ncepe de la vrful stivei (ultimul articol introdus).
Stiva hardware, reprezentat schematic n figura 5.17, este implementat de obicei cu
ajutorul unui set de registre de deplasare (R1 - RN), interne UCP. Vrful stivei (VS) se va gsi
ntotdeauna n celulele registrelor de pe primul rang binar (c1i, unde i = 1, N), celule cuplate la
intrrile seriale (I1 - IN). Pentru scriere n stiv (PUSH), se face deplasare sus-jos a coninutului
registrelor (informaia din vrful stivei trece pe urmtoarea poziie binar din registre (c2i), iar n
vrful stivei apare ultimul articol nscris. La extragere din stiv (POP) informaia din vrful stivei
este citit la ieirile Y1-YN i se face deplasare n sens "jos-sus" a informaiei, pentru fiecare din
registrele din figur. Capacitatea de memorare a stivei este limitat la un numr de cuvinte egal cu
numrul de celule inclus n fiecare registru component (M n figura 5.17). Numrul de registre
folosite determin dimensiunea n bii a fiecrui cuvnt. De obicei stiva hardware are o adncime
maxim de 4 cuvinte, iar la microprocesoarele unde este implementat ofer o vitez mare de
salvare / restaurare a informaiilor stocate la apelul procedurilor, sau la saltul ctre rutine de tratare
a ntreruperilor.
Ultimul rnd de celule ce pot stoca informaie n stiv formeaz Baza Stivei (BS). Dac n
stiva hardware se introduc mai multe cuvinte dect capacitatea acesteia informaia cea mai veche
introdus n stiv se pierde.
Cele mai multe dintre microprocesoarele ce au implementat mecanismul pentru stiv
hardware pot administra i o stiv software.
n cazul implementrii stivei n memoria principal, informaia nu mai este deplasat sus sau
jos, iar gestiunea informaiilor din stiv este realizat cu ajutorul unui registru ce memoreaz
ntotdeauna informaia de adresare a vrfului stivei. Acest registru este numit registru Indicator de
Stiv (SP - Stack Pointer). Stiva construit software, n memoria principal, nu are dimensiuni fixe,
acestea putnd fi stabilite de programator. Chiar dac dimensiunea mare este un avantaj, faptul c
scrierea sau citirea din stiv nseamn acces la memoria principal, extern UCP, conduce la o
vitez de lucru mai mic dect la stiva hardware.

La nscrierea unui articol n stiv se spune c stiva crete. Creterea stivei nseamn i
reactualizarea coninutului registrului SP care va conine ntotdeauna adresa vrfului stivei, deci a
ultimului cuvnt introdus n stiv, sau adresa primului articol ce a rmas n vrful stivei dup o
extragere din stiv.
Capitolul 5 140



















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
c11
c21
c21
c41
cM1
Y1
c12
c22
c32
c42
cM2
Y2
c1N
c2N
c3N
c4N
cMN
YN
P
U
S
H
P
O
P

IN
I2
I1
VS
RN R2 R1
BS
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).





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
PP P1 P2

IN b: PUSH R1
IN PUSH R2
PUSH R3 <t2> c: IN
<t1> IN IN
IN

IN .
<t0> . .
CALL b CALL c
a: IN <t3> d: IN IN
<t4> RET
.
.
POP R3
POP R2
POP R1
RET

END
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.


















5. 18b. Coninutul stivei i indicarea adresei vrfului stivei pentru exemplul din figura 5.18a.


5.7. UTILIZAREA FERESTRELOR DE REGISTRE

Dac n paragrafele anterioare s-a considerat accepiunea clasic a salvrii i restaurrii
informaiei la o schimbare de context, pentru procesoarele RISC au aprut noi metode de salvare a
vectorului de stare al unui program ntrerupt i de asemenea metode noi pentru transferul
parametrilor ctre proceduri. Ideea de baz este s se nlture accesul repetat la o memorie stiv
extern pentru salvarea / restaurarea informaiilor.
Schimbarea de context presupus de un apel de procedur duce la o mare risip de timp,
pentru c presupune salvri sau restaurri din memoria stiv construit n memoria principal. La
fiecare apelare de procedur variabilele locale programului apelant trebuie salvate din registre n
memorie pentru ca registrele s poat fi utilizate la programul apelat. n plus, la apelarea
procedurilor trebuie transferai i parametrii ctre procedur. La revenire trebuie restaurate
variabilele programului printe (ncrcate din nou n registre) iar rezultatele trebuie trecute ctre
programul printe. Din aceast cauz soluia este s se introduc un set mare de registre interne
procesorului, n care s se poat pstra informaia necesar schimbrii contextului, inclusiv pentru
transmiterea de parametrii i returnarea de valori din proceduri. Mai mult, o banc de registre local
permite adresarea cu un numr mai mic de bii, dect n cazul stivei externe, pentru c dimensiunea
acestei bnci este n general mic. Astfel strategia este s se pstreze informaia ct mai mult n
registre locale i s se minimizeze operaiile de transfer registre - memorie.
Exist dou abordri pentru rezolvarea acestei probleme. Prima este o abordare software i
se bazeaz pe un compilator care maximizeaz utilizarea registrelor n operaiile necesare de
transfer. Compilatorul va ncerca s aloce registre pentru acele variabile care sunt utilizate n cea
mai mare perioad a timpului de execuie. Aceast abordare cere utilizarea unor algoritmi sofisticai
de analiz a programului. Abordarea hardware se refer pur i simplu la implementarea mai multor
registre interne astfel ca s se poat menine ct mai multe variabile n memoria local. Abordarea
hardware a fost propus pentru prima oar pentru procesorul RISC1 proiectat i implementat n anii
70 ai secolului trecut la University of California at Berkeley.
La acest procesor s-a utilizat un set mare de registre interne UCP. Setul conine 138 de
Memorie adres
aL
aH

R3
R2
R1
dL
dH
x-7:
x-6:
x-5:
x-4:
x-3:
x-2:
x-1:
x:
VS iniial
SP
SP SP
SP
SP
t
4
t
3
t
2
t
1
t
0

timp
Unitatea de Control 143

registre de 32 de bii ce au fost aranjate n 8 ferestre a cte 22 de registre cu suprapunere parial a
cte 6 registre vecine. Se folosesc de asemenea 10 registre globale, pentru toate procedurile active.
Fiecare fereastr a fost mprit astfel nct 6 registre pot fi utilizate pentru transmiterea
parametrilor la apelarea procedurilor. Pentru selecia grupului de 6 registre se modific doar un
registru pointer. Pentru efectuarea unei apelri (call) sau reveniri (return) se modific doar
registrul pointer. Numrul mare de registre este necesar pentru a minimiza numrul de transferuri
cu exteriorul procesorului. Prin aceast tehnic a ferestrelor de registre, cu suprapunere parial
apelarea procedurilor poate fi efectuat foarte rapid. Viteza este avantajoas n special la aplicaii n
timp real unde este necesar un rspuns foarte rapid.
Totui exist i dezavantaje, pentru c dac apelul procedurilor cere mai mult de ase
variabile unul dintre registre trebuie s adreseze un vector stocat n memoria extern. Aceste date
trebuie ncrcate nainte de orice prelucrare iar tehnica ferestrelor de registre pierde mult din
performana propus. Dac se utilizeaz toate ferestrele suprapuse sistemul poate rezolva situaia
prin urmrirea utilizrii ferestrelor i salvarea n memoria extern fie a unei ferestre fie a ntregului
set de registre. Acest eveniment poate face ca avantajul ferestrelor de registre locale s fie anulat,
mai ales dac la schimbarea de context trebuie salvate toate cele 138 de registre, pentru c crete
timpul de rspuns.
Principiul ferestrelor de registre presupune c fiecare fereastr are acelai numr de registre,
pentru fiecare procedur apelant alocndu-se o fereastr. Un apel de procedur va face doar o
comutare a setului de registre utilizat de procesor n loc de a salva registrele n memorie. Ferestrele
procedurilor adiacente se suprapun pentru a permite transferarea parametrilor. Conceptul este
explicat n figura 5.19.



















Figura 5.19. Explicativ la suprapunerea ferestrelor de registre


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
Registre
de intrare

Registre
locale
Registre
de ieire
Apel procedur
Registre
de intrare

Registre
locale
Registre
de ieire
nivel i nivel i+1
Revenire
Capitolul 5 144

pe nivelul inferior. Aceast suprapunere permite transmiterea parametrilor fr un transfer
suplimentar de date ntre programele apelant i apelat.
Pentru a permite orict de multe apelri de proceduri numrul de ferestre ar trebui s fie
nelimitat. Aceast situaie este rezolvat prin organizarea ferestrelor ca un tampon circular, ultima
fereastr fiind suprapus cu prima, ferestrele de registre pstrnd doar cele mai recente proceduri
apelate. Cele apelate anterior i care nu au loc n registrele locale sunt salvate n memoria principal
i apoi retaurate de acolo. Pentru exemplificare vom presupune un set de patru ferestre de registre
organizate ca un tampon circular n figura 5.20. n exemplu s-a presupus c procedura P1 (ca
printe) a apelat P2 (ca fiu), astfel c registrul pointer al ferestrei curente (PFC) a ajuns la fereastra
2, care este fereastra procedurii active la momentul actual. Se pot face n continuare apelri de
genul P2 apeleaz (ca printe) P3 (fiu) i P3 apeleaz P4, cu actualizarea registrului PFC. Adresa
registrelor n corpul instruciunilor procesorului cu ferestre de registre constituie deplasament fa
de acest pointer (PFC), astfel c numrul de bii alocai adresrii registrelor este determinat doar de
dimensiunea fiecrei ferestre.
























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.
Intrare
P1
Local
P1
Intrare
P2
Local
P2
Intrare
P3
Local
P3
Local
P4
Intrare
P4
Fereastra 1
Fereastra 3
F
e
r
e
a
s
t
r
a

2

F
e
r
e
a
s
t
r
a

4

Pointer fereastr
salvat
Pointer fereastr
curent
Apel
procedur
Revenire
Unitatea de Control 145

Un bun exemplu al acestei abordri este procesorul SPARC. Procesorul SPARC
4
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.





4
SPARC = Scalable Processor ARChitecture


CAPITOLUL 6


SISTEMUL DE MEMORIE



Coninut:

6.1. Organizarea ierarhic a sistemului de memorie
6.2. Caracteristici principale ale dispozitivelor de memorie
6.3. Structura si organizarea memoriilor statice cu acces aleator (SRAM)
6.4. Structura i funcionarea memoriilor dinamice cu acces aleator
(DRAM)
6.4.1. Structura i modul de lucru al unei DRAM convenional
6.4.2. Moduri de lucru de mare vitez ale DRAM
6.4.3. Moduri de remprosptare
6.4.4. Exemple de circuite DRAM cu interfa asincron
6.4.5. Circuite DRAM sincrone (SDRAM)
6.5. Memoria cache
6.6. Tehnici de adresare i alocare a memoriei
6.7. Tehnici de translatare a adreselor
6.7.1. Maparea adreselor folosind pagini
6.7.2. Mapare prin segmentare
6.7.3. Mapare segmentat-paginat
6.7.4. Memoria virtual
6.7.5. Noiuni privind protecia memoriei

Obiective educaionale:

a. Clasificarea tipurilor de memorie folosite n calculator i identificarea
principalelor caracteristici
b. Analiza modurilor specifice de funcionare ale dispozitivelor de memorie statice
i dinamice
c. Demonstrarea principalelor metode de alocare a spaiului de memorie, pentru
asigurarea conceptelor memoriei virtuale i a proteciei informaiei

Capitolul 6 148



6.1. ORGANIZAREA IERARHIC A SISTEMULUI DE MEMORIE

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


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





















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


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

Memorie
cache
(tampon)





UCP



Memorie
principal





Memorie
auxiliar
(extern)
Registre de
memorie
intern
UCP







IO
Acces direct Acces indirect
S
c, v
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 cache
1
).
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 (DMA
2
) 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
cache mis
2
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








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


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


6.2. CARACTERISTICI PRINCIPALE
ALE DISPOZITIVELOR DE MEMORIE

Dei exist o mare varietate de dispozitive de memorie, toate acestea au la baz un numr
relativ mic de fenomene fizice i folosesc un numr relativ mic de principii de organizare. n
continuare se vor descrie cteva caracteristici principale, comune att pentru dispozitivele de
memorie ce compun memoria principal ct i pentru cele din componena memoriei auxiliare.

Capacitatea de stocare a memoriei (S) reprezint numrul total de bii ce pot fi stocai ntr-
un dispozitiv sau circuit de memorie. Exprimarea parametrului S se face destul de rar n bii,
folosindu-se multiplii de octei (vom nota bit cu b iar Byte (octet) cu B):
1 octet (Byte) are 8 bii
Memory
Level 1
CPU
Memory
Level i
Memory
Level i+1
Block
A
Block
B
Capitolul 6 152


2
10
bii = 1 kilo-bit (kb)
2
10
Bytes = 1 kilo-Byte (kB)
2
10
kB = 2
20
B = 1024 kB = 1 MB
2
10
MB = 1024 Mb = 1 GB
1024 GB = 1 TB
Pentru capacitatea de stocare exprimarea n multiplii de bii sau de octei nu ine seama de modul de
organizare intern i adresare a cuvintelor dispozitivului de memorie.

Timpul de acces la dispozitivul de memorie exprim un timp mediu necesar pentru a scrie
sau a citi o cantitate fix de informaie din / n memorie (un cuvnt de memorie). Se calculeaz din
momentul cnd dispozitivul de memorie primete o cerere de citire (scriere) pn n momentul cnd
informaia este disponibil la terminalele de ieire (sau este nscris n locaia de memorie adresat).
Acest timp depinde de caracteristicile fizice ale mediului de stocare i de tipul (modul) de acces
folosit. Timpul de acces pentru memoriile semiconductoare moderne se exprim n nanosecunde.
Dintre tehnologiile semiconductoare de realizare, cele mai rapide sunt memoriile bipolare, dar pe de
alta parte ele au un grad mai mic de integrare dect cele unipolare (CMOS sau celule dinamice) i
consum putere mai mare de la sursa de alimentare.
Inversul timpului de acces (t
A
) este numit vitez de acces (b
A
) la dispozitivul de memorie:

A
A
t
b
1
= (6.1)
Timpul mediu de acces este o caracteristic a dispozitivului de memorie indiferent de viteza
cu care lucreaz procesorul.

Modul de acces (sau tipul de acces) spune modul n care se acceseaz informaia dintr-un
anumit dispozitiv de memorie. Modul de acces depinde n primul rnd de tehnologia de realizare a
dispozitivului de memorie i de principiul constructiv adoptat. Accesul la celulele individuale de
stocare se poate face fie ntr-o anumit ordine (acces poziional, sau serial), fie aleator (acces
aleator). Accesul aleator este independent de poziia informaiei n cadrul dispozitivului de
memorare. La memoriile cu acces serial (band magnetic, CD-ROM) scrierea sau citirea locaiilor
de stocare se face n intervale diferite de timp, timpul de acces depinznd de poziia n care se
gsete informaia pe suportul fizic. Accesarea unei anumite locaii presupune micarea mecanic a
unui cap de citire / scriere i / sau a suportului de stocare.
Memoriile cu acces aleator sunt memoriile semiconductoare, la care accesarea oricrei
locaii de memorie (de la oricare adresa) se face n acelai interval de timp. Scrierea sau citirea
informaiei se face direct la locaia adresat fr parcurgerea unei secvene de adrese.

Timp de ciclu i vitez de transfer a datelor. La memoriile cu citire distructiv (prin
operaia de citire informaia stocat se pierde i trebuie refcut) i la memoriile dinamice, nu este
posibil s se nceap un nou ciclu de acces la memorie pn cnd nu s-a efectuat o restaurare a
informaiei sau o remprosptare a acesteia. Ca urmare, intervalul minim de timp ce se scurge ntre
iniierea a dou accesri pentru transferul succesiv la / de la acelai dispozitiv de memorie, este mai
mare dect timpul de acces; vom numi acest interval, timp de ciclu ( t
M
) al dispozitivului de
memorie. Inversul acestui interval de timp exprim cantitatea maxim de informaie ce poate fi
transferat la sau de la memorie n fiecare secund:

M
M
t
b
1
= [cuvinte/sec] (6.2)
unde b
M
este numit vitez de transfer a datelor, sau lrgime de band ("bandwidth"). Un factor
care limiteaz viteza de transfer a datelor este limea magistralei de date pentru lucrul cu memoria,
notat w. Valoarea lui w, indic numrul de bii ce pot fi transferai n paralel pe magistrala de date /
Sistemul de memorie 153


instruciuni. Aceast valoare, numit uneori cuvnt calculator, este specific fiecrui procesor i
este, n general, un multiplu de octet. Ca urmare viteza de transfer poate fi exprimat i ca:
b
w
t
M
M
= [bii/sec] (6.3)
Atunci cnd t
M
este diferit de t
A
se folosesc amindou mrimile caracteristice pentru a
msura viteza memoriei. Din punctul de vedere al cuplrii memoriei la UCP timpul de acces (t
A
)
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 t
M
> t
A
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.













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 tehnico-
economic 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.
Timp de
transfer
Timp de
cutare
Timp de acces

Timp de
ateptare
Timp de ciclu al memoriei
Timp
t
4
t
3
t
2

t
1

Capitolul 6 154



S
P
p
tot
= [W/bit] (6.4)

Geometria sau modul de organizare al memoriei este exprimat sub forma M N, unde M
reprezint numrul de cuvinte posibil de memorat, iar N dimensiunea cuvntului, n bii.
Caracteristica numit geometrie este folosit doar pentru dispozitive de memorie din memoria
principal. Este o caracteristic important din punctul de vedere al accesrii informaiei din
memoria principal, pentru c indic cantitatea minim de informaie adresabil. Dac memoria
este organizat pe octet, atunci N = 8 i fiecrui octet i se aloc o adres specific, chiar dac
magistrala de date este de 32 sau de 64 de bii.

Alterabilitate. Este caracteristica care se refer la posibilitatea modificrii, de ctre procesor
(on-line) a informaiei nscrise ntr-un dispozitiv de memorie. La circuitele semiconductoare ROM,
metoda utilizat pentru scrierea informaiei n memorie este ireversibila; nu mai poate fi modificat
n timpul funcionrii memoriei. La PROM-urile semiconductoare schimbarea, (PROM i EPROM)
schimbarea coninutului se poate face off-line prin programarea memoriilor cu ajutorul unui circuit
programator. Toate aceste circuite sunt incluse n categoria celor ne-alterabile. Dispozitivele de
memorie alterabile sunt cele la care coninutul poate fi modificat de ctre UCP n timpul rulrii
programelor. Ca exemple putem specifica dispozitivele RAM statice i dinamice, discul magnetic,
banda magnetic etc.
Permanenta stocrii. Procesul fizic folosit pentru stocarea informaiei este uneori instabil,
astfel c informaia s-ar pierde dup un timp dac nu se iau msuri de restaurare. Exist trei
evenimente care pot duce la pierderea informaiei stocate:
citire distructiv
stocare dinamic
volatilitatea
Citirea distructiv se refer la faptul c dac o celul de memorie este citit, informaia din
celul este alterat i ea trebuie restaurat imediat dup citire. Citirea distructiv se datoreaz n
primul rnd fenomenului fizic folosit pentru stocarea informaiei i apoi structurii hardware a
celulei. Exemple de celule la care citirea este distructiva: celule dinamice cu un singur tranzistor
unipolar de acces i celule pe baz de ferit. Citirea trebuie urmat obligatoriu de operaia de
scriere, pentru restaurarea informaiei. Operaia este efectuat de ctre circuite specifice
dispozitivului de memorie i nu intr de obicei n sarcina UCP.
Stocarea dinamic a informaiei se refer la stocarea n celule ce folosesc capacitoare MOS.
Aceste capacitoare se descarc n timp, i dac informaia coninut nu este remprosptat dinamic
(condensatoarele re-ncrcate), la intervale pre-stabilite informaia se pierde.
Memoriile volatile sunt cele care pierd informaia la pierderea tensiunii de alimentare.
ncadrm aici toate memoriile RAM semiconductoare, indiferent c sunt dinamice sau statice. Ca
exemple de memorii nevolatile: ROM, PROM, EPROM, EEPROM, disc, band etc.

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

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


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



















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


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

linii pentru coloane) i implicit mprirea decodificatorului n dou blocuri: decodificator de linii
Locaii de stocare
Amplificatoare de
intrare-ieire
Circuite de control
i temporizare


DCD
OE R / W CS
Magistral
N
a
adrese
Comenzi interne
w
w
Magistral
date
Capitolul 6 156


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

















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


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


Matrice de
memorie


DCD
adrese
X

DCD
adrese
Y
N
x

N
y

a
x

a
y

A
d
r
e
s


Sistemul de memorie 157
























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
























Figura 6.7. Exemplu de memorie RAM static cu dimensiunea de 8k 8 i selecie bidimensional a matricei
de memorie.
8
8K celule
3
8K celule
2
8K celule
1
8K celule


DCD
X


DCD
Y
128
128
7
6
64
64
A
D
R
E
S


La magistrala
de date

MDX
0

MDX
0

MDX
0



Matrice de Memorie
256 256 celule
32 32 32
d
0
d
1
d
7
Amplificatoare de
citire/scriere
8



DCD
X
256 8
5
A
D
R
E
S


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.
















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


















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


t
CR

ADR
t
AC

t
AA

HiZ
HiZ
CS
W R/
Ieiri
date
DATE VALIDE
ADRES
Magistral
date
t
CW
ADR
t
AW

CS
W R/
t
W

t
DW t
DS

t
DH

Sistemul de memorie 159


n cele dou figuri s-au notat intervalele de timp importante, cu urmtoarea semnificaie:
t
CR
= durata ciclului de citire (se impune ca timp minim pentru funcionarea corect a
memoriei)
t
AA
= timp de acces de la activarea adreselor (se garanteaz ca o valoare maxim ce se poate
obine)
t
AC
= timp de acces de la activarea semnalului CS (se garanteaz ca o valoare maxim ce
se poate obine)
t
HD
= timp de meninere a datelor (valoare minim impus)
t
CW
= durata ciclului de scriere (se impune ca timp minim pentru funcionarea corect a
memoriei)
t
W
= durata semnalului de comand de scriere (write - este valoare minim n catalog)
t
DS
= timp de prestabilire date (valoare minim impus)
t
DH
= timp de meninere a datelor (valoare minim impus)
t
DW
= ntrzierea validrii datelor la intrare
t
AW
= 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 MOS
3
.
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 DRAM
4
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
MOS = Metal Oxid Semiconductor, tehnologie de realizare a dispozitivelor semiconductoare unipolare
4
DRAM = Dynamic Random Access Memory
Capitolul 6 160



6.4.1. Structura i modul de lucru al unei DRAM convenional

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

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
























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

Structura format din decodificatorul (DCD) de coloane i porile de transfer de I/O
Circuit control refresh
(contor, timer, arbitru)

Registru
adres
linie

Registru
adres
coloan


DCD
linii

Matrice de Memorie

2 2
2 * 2
a a

Amplificatoare senzor
i pori transfer I/O
DCD Coloane
RAS
CAS
2
a

2
a

2
a



Buffer
I/O
D
out

D
in


Circuit de Control
CAS RAS WE OE
RAS CAS
Alte comenzi
interne
Ready
Sistemul de memorie 161


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

Circuitele de control ale memoriei principale construite cu DRAM au trei sarcini principale:

separarea adreselor de la UCP n adrese de linii i adrese de coloan;
activarea corect a semnalelor RAS , CAS , WE
transmisia i recepia datelor citite sau scrise
generarea semnalelor de control pentru remprosptare (la unele memorii trebuie generate
din exterior i adresele de remprosptare)

Noile concepte ale DRAM moderne cum sunt modul de lucru prin ntreesere i modul
pagin, creeaz sarcini suplimentare pentru circuitul care controleaz DRAM. De aceea controllerul
extern de memorie reprezint o parte extrem de important a calculatorului. n ceea ce privete
semnalele furnizate DRAM (figura 6.10), adresele de linii i coloane trebuie s fie stabile nainte
(timp de pre-stabilire
5
) i dup apariia frontului descresctor al RAS respectiv CAS (timp de
meninere
6
).
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
setup time = timp de prestabilire
6
hold time = timp de meninere
Capitolul 6 162


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
















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


6.4.2. Moduri de lucru de mare vitez ale DRAM


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

Mod Pagin

Principiul de lucru n modul pagin consider c pagina corespunde unei adrese de linie i
toate adresele de coloan, cu aceeai adres de linie se gsesc n aceeai pagin. n mod pagin
controllerul de memorie schimb n mod repetat doar adresa de coloan. De aceea o pagin este
echivalent unei linii din matricea de celule de memorie.
L C L C L C
Date Date Date
RAS
ADR
Ieire
DATE
CAS
HiZ HiZ HiZ
t
RC

t
CAC

t
RAC

Sistemul de memorie 163















Figura 6.11. Cicluri de acces la DRAM n mod pagin

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


Mod coloan static ("static column mode")

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


L C
Date
RAS
ADR
Ieire DATE
CAS
HiZ
C C C
Date Date Date
Capitolul 6 164















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


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

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















Figura 6.13. Cicluri de acces la DRAM n mod nibble

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

Modul rafal - burst (sau mod serial)

Poate fi privit ca o extindere (o versiune extins) a modului nibble. i aici, biii de pe o linie
adresat sunt furnizai sincronizat cu CAS . Diferena fa de modul nibble este c numrul de
L C
Date
RAS
ADR
Ieire DATE
CAS
C C C C C
Date Date Date Date Date
L C
Date
RAS
ADR
Ieire DATE
CAS
HiZ
Date Date Date
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.












Figura 6.14. Cicluri de acces la DRAM n mod burst

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

6.4.3. Moduri de remprosptare

Nu exist capacitor perfect, nici chiar n chip-ul DRAM. Descrcarea se face n timp, prin
tranzistorul de acces sau prin dielectricul condensatorului. n funcie de tipul constructiv
dispozitivele DRAM obinuite trebuie s fie remprosptate la fiecare 4-16 ms. Formele de
remprosptare folosite sunt:

1. remprosptare numai cu RAS ("ras only refresh")
2. remprosptare cu CAS naintea lui RAS ("CAS-before-RAS refresh")
3. remprosptare ascuns ("hidden refresh")

Remprosptare numai cu RAS











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

L C
Date
RAS
ADR
Ieire DATE
CAS
HiZ
Date Date Date Date
Refresh
RAS
ADR
CAS
1
Refresh
Ciclu remprosptare Ciclu remprosptare
Capitolul 6 166


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










Figura 6.16. Remprosptare prin activarea CAS naintea lui RAS

Remprosptare ascuns

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

















Figura 6.17. Remprosptare ascuns n cadrul unui ciclu de citire


6.4.4. Exemple de circuite DRAM cu interfa asincron

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























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
ADR L C
Date valide
RAS
Ieire DATE
CAS
HiZ
Ciclu remprosptare
Ciclu de citire (READ)
Logic remprosptare
(timer, arbiter)

Registru
adrese
linie

Registru
adrese
coloane


DCD
linie


Matrice celule de
memorie

Amplificatoare senzor i
pori de transfer I/O
DCD coloane

Tampoane date I/O
D
out
D
in

Address
D
Q
Capitolul 6 168



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

6.4.5. Circuite DRAM sincrone (SDRAM)

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

DRAM SDRAM
Nu au intrare de ceas (sistem) lucreaz cu frecvena ceasului de sistem
Control RAS pe nivel control RAS prin impuls (tranziie)
operare cu o singur banc de
memorie
dou bnci de memorie pe chip cu
ntreeserea adreselor
un transfer pentru fiecare adres de
coloan (sau impuls de selecie
coloan) furnizat
transfer rafal (burst) cu 1, 2, 4, 8, sau
256 transferuri pentru o singur adres de
coloan furnizat
ntrzierea la citire (read latency) este
neprogramabil
ntrzierea la citire este programabil

Sistemul de memorie 169



6.5. MEMORIA CACHE

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


programelor. Conform proprietii referinelor localizate dac un ntreg bloc de instruciuni este
copiat din memoria principal n cache, exist o mare probabilitate ca un timp toate accesrile s se
fac la cache.
Atunci cnd UCP lanseaz o adres pentru a face acces la memoria principal se
examineaz mai nti coninutul memoriei cache. Daca cuvntul este gsit, este citit din cache, iar
dac nu este gsit, se acceseaz memoria principal pentru citirea cuvntului. Deoarece accesul la
cache se efectueaz foarte rapid, de obicei ntr-o perioad de tact, procesorul va controla direct
aceste operaii, n timp ce accesul la memoria principal, mai lent, se va efectua sub controlul
unitii de comand a memoriei cache. Transferul ntre memoria principal i cache nu se face ns
la nivel de cuvnt ci la nivel de bloc de cuvinte, bloc care cuprinde i cuvntul adresat de UCP i
negsit n cache. Dac un cuvnt cutat se gsete n cache se spune ca s-a produs un acces reuit la
cache (sau pe scurt o reuit, "cache hit" n limba englez). Dac cuvntul cutat nu este n cache s-
a 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).
t ns
acm
=
+
=
9 10 100
10
19
Un algoritm special de anticipare aduce n memoria cache secvenele de program care urmeaz
logic unei instruciuni deja executate. Procesorul execut programele fr s simt practic c
memoria de lucru este mai lent. Factorul de succes al memoriei cache este legat de dimensiunea sa
i de eficiena algoritmului de nlocuire a informaiei din cache.
Din punctul de vedere al structurii i organizrii memoriei cache exist trei tehnici
principale (tehnici de mapare):
1. mapare asociativ
2. mapare direct
3. mapare asociativ pe seturi.

Mapare Asociativ

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

























Figura 6.19. Structur de memorie cache asociativ

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

Mapare direct

Memoriile asociative sunt scumpe i de aceea s-au cutat metode de organizare cu ajutorul
unor memorii RAM statice. Exemplificarea acestei mapri este prezentat n figura 6.20. Adresa de
a bii (n exemplul din figur a = 32) este logic mprit n dou cmpuri, numite index (cel mai
puin semnificativ, care din punct de vedere logic poate fi privit ca fiind format din alte dou
cmpuri: bloc i cuvnt) i respectiv etichet. Indexul are un numr k de bii, numr determinat de
dimensiunea memoriei cache (2
k
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 2
a-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 2
k
) factorul de reuit scade mult.
Dar atunci cnd se produce o ratare nu se aduce un singur cuvnt ci un ntreg bloc de
Registru adrese Registru date
de la UCP
adrese date
Registru adrese Registru date
la RAM
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).





























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

Maparea asociativa pe seturi:
nltura dezavantajul care face ca la maparea direct dou cuvinte cu acelai index (dar
etichet diferit) nu pot s fie simultan n cache. Ca structur, maparea asociativ pe dou seturi ar
putea considera dou structuri asemntoare cu cea de la maparea direct, pentru fiecare adres de
bloc putndu-se stoca n stiv dou blocuri cu etichete diferite (figura 6.21).
Alt deosebire fa de maparea direct este c atunci cnd se lanseaz o adres, compararea
cmpului etichet al adresei cu etichetele blocurilor stocate n cache se face prin metode
combinaionale (deci prin asociere cu coninutul cmpurilor de etichet), de unde i denumirea de
mapare asociativ. De obicei partea de etichet i comparare combinaional se pstreaz n
circuitul controller de cache.
Se pot organiza memorii cache asociative cu dou sau mai multe seturi. Ca urmare pentru
fiecare adres de bloc se pot stoca dou sau mai multe blocuri, cu etichete diferite.
etichet cuvnt adres din a bii
Index (k bii)
a-k bii
bloc
b bii c bii
00000 H
etichet
cuvnt
1 0 3 2 D 4 E F
c=4 bii
00001 H
00002 H
FFFFF H
00003 H
b=20 bii
1D
Sistemul de memorie 173











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

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

6.6. Tehnici de adresare i alocare a memoriei

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

Pentru MMU se impun urmtoarele cerine de baz:
1. s realizeze translatarea adreselor i s susin alocarea dinamic a memoriei
nainte ca un program s fie executat, este necesar ca acestuia s i se aloce un spaiu n memoria
principal (spaiu de adrese n memoria fizic existent n calculator). Dac aceast atribuire de
spaiu (adrese) se face doar la ncrcarea programului n memoria principal, procedeul este
numit alocare static i prezint dezavantajul c adresele de ncrcare sunt fixe. Alocarea

adres
bloc
cuvinte etichet cuvinte
... ...
etichet
00000
00001
00010
00011
Capitolul 6 174


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
















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

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













Figura 6.23. Principiul tehnicilor de translatare a adreselor

De la microprocesor se recepioneaz adresa logic L. Dac elementul adresat nu se gsete n
memoria principal, atunci registrul (de adres) L va conine adresa din memoria extern
unde se gsete elementul respectiv i el va fi adus de rutine ale sistemului de operare n
adrese fizice
MP MA
MMU
Cache
UCP
adrese logice
control
date
(acces
direct)
(acces
indirect)
(acces
direct)
Tabel de
translatare
Adresa logic
de la UCP
Adresa
fizic
Cuvnt
adresat
Memoria
principal
M
M L
Sistemul de memorie 175


memoria principal, la o adres fizic a crei valoare M se nscrie n registrul de adres L din
tabela de translatare. Daca elementul adresat este n memoria principal rezult c adresa
fizic este M. Acest mecanism este totui ineficient, cci tabela de translatare are
dimensiunile egale cu ale memoriei principale. Pentru micorarea dimensiunii tabelelor se
folosete divizarea spaiului logic n segmente / pagini, iar referirile se fac doar la nivelul de
adres logic de bloc. Trebuie menionat c dac sunt lansate dou procese n execuie,
fiecare cu spaiul su de adrese logice, exist dou tabele de translatare spre memoria
principal. Sistemul de operare va reactualiza coninutul tabelei de translatare ori de cte ori
va avea loc o relocare (schimbare de poziie n spaiul adreselor fizice) a programelor n
memorie.
2. s susin mecanismele de implementare ale memoriei virtuale
Mecanismul memoriei virtuale permite programelor s fie executate chiar dac numai o
parte din instruciunile lor se ncarc n memoria principal, iar restul se gsesc n memoria
auxiliar de tip disc magnetic. Adresele logice sunt numite adrese virtuale, n cazul
implementrii memoriei virtuale, pentru c nu exist fizic n memoria principal ci ele se
gsesc n memoria auxiliar.
3. s poat furniza protecie i securitate pentru memorie
Cerina se refer la protecia informaiei, la alocarea de drepturi de acces la zone din
memoria principal i la zone din spaiul adreselor logice, (protecie la citire, scriere,
tergere, copiere, execuie). Se protejeaz memoria disponibil alocat programelor de
sistem i programelor utilizator, asigurndu-se securitatea informaiei (acces limitat la
informaii), prin controlul accesului la resursele sistemului.
Aa cum s-a pomenit i mai sus exist dou strategii folosite pentru implementarea MMU:
a) MMU se afl pe chip-ul procesorului; se aplic la microprocesoarele cu spaiul segmentat al
adreselor logice. De exemplu: Intel x86, Pentium, Zilog Z800, Z8000)
b) MMU este construit separat de UCP, variant aleas la microprocesoarele cu spaiu liniar
(organizare liniar a) al adreselor logice. De exemplu: MC 680x0, Z8001).

n cazul n care organizarea logic a memoriei este liniar, adresele ncep n mod obinuit de
la 0 i avanseaz liniar. Memoria poate fi apoi structurat prin software, la nivelul translaiei de
adrese. n cazul n care organizarea memoriei este segmentat, programele nu sunt scrise ca
secvene liniare de instruciuni i date, ci ca segmente separate de cod, date, sau stiv. Spaiul
adreselor logice este spart n mai multe spaii cu adresare liniar, fiecare cu lungime diferit,
definit de compilator sau de programator. O adres logic efectiv este calculat ca o combinaie
ntre numrul segmentului (care indic adresa de baz a unui bloc de memorie) i un deplasament
(offset) n cadrul segmentului.
n general schemele de adresare liniar sunt mai potrivite pentru manipularea structurilor
mari de date, n timp ce segmentarea faciliteaz programarea, permind programatorului s
structureze programele n module segment. n plus adresarea segmentat simplific protecia i
relocarea obiectelor n memorie. Segmentarea faciliteaz gestiunea memoriei n sistemele de calcul
multiuser, multitasking.


6.7. TEHNICI DE TRANSLATARE A ADRESELOR

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


amintit mai sus se folosesc 3 scheme de translatare:

(1) translatare prin paginare
(2) translatare prin segmentare
(3) translatare segmentat-paginat

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


6.7.1. Maparea adreselor folosind pagini

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

7
time-sharing = partajarea timpului UCP
Sistemul de memorie 177































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
pagin
8
) ctre sistemul de operare (SO) pentru a aduce pagina cerut din memoria auxiliar n
memoria principal, nainte de reluarea programului care a accesat adresa din pagina respectiv.
O astfel de organizare n memoria principal a tabelului de translatare este ns ineficient,
cci tabelul are multe locaii goale. Dac presupunem un calculator cu spaiul de adrese de 4 GB

8
page fault = eroare de pagin
Adres
tabel
Tabel
pagini
de
memorie
Registru bloc
de memorie
Memoria principal
BLOCK 0
BLOCK 1
BLOCK 2
BLOCK 3
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
0000
0
Adresa virtual
Numr
pagin
Numr linie
Adresa fizic
(real) de memorie
principal
1 0 0 0 0 0 0 0 0 0 0 0 0 1
00
01
10
11
Bit
prezen
0001
0
0010 11
1
0011 00
1
0100
0
0101 01
1
0110
0
0111
0
1000 10
1
1001
0
1010
0
1011
0
1100
0
1101
0
1110
0
1111
0
10
0
Capitolul 6 178


(2
32
), cu pagini de memorie de 32 KB (2
15
), iar spaiul memoriei fizice este 32 MB (2
25
) 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 (2
17
= 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.



















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


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

6.7.2. Mapare prin segmentare

La acest tip de mapare spaiul adreselor logice este mprit n segmente, care spre deosebire
de pagini, nu au o dimensiune fix. Segmentele sunt spaii de adrese continue (liniare), care includ
programe sau poriuni din programe cu atribute comune. Mecanismul de translatare este prezentat
n schema de principiu din figura 6.26.
Spre deosebire de operaia de paginare, la segmentare nu se mai face concatenarea
(alturarea) adresei de deplasament (din adresa logic) la adresa fizic. Aici adresa de deplasament
este adunat cu adresa fizic a segmentului (adresa sa de baz) citit din tabelul de translatare al
1111
0 0
0010 11
0011 00
0101
01
1000 10
1000
Numr linie
Numr pagin
Adres logic
Registru argument
Registru masc
Numr pagin Numr bloc
Sistemul de memorie 179


segmentelor, specific unui anumit proces.


















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


6.7.3. Mapare segmentat-paginat

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




















Figura 6.27. Principiul operaiei de translatare segmentat-paginat

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












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.
Registru Argument
Blocuri Pagini
Segmente
TLB
Adres logic
Tabel de mapare a
segmentelor
Tabel de mapare a
paginilor
Nr.segment Nr. pagin Offset
bloc
Bloc Offset
Adres fizic
Sistemul de memorie 181



6.7.4. Memoria virtual

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












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

Se va considera, pentru exemplificare, organizarea unei memorii virtuale cu capacitatea de
64 MB (2
26
), structurat pe cuvinte de 32 de bii: 16 Mega-cuvinte x 32 de bii/cuvnt (2
24
x 32).
ntr-un cuvnt - instruciune de 32 de bii, 24 de bii sunt alocai pentru adresarea memoriei virtuale.
Primii 12 bii, mai semnificativi, vor specifica numrul paginii, iar ultimii 12 bii, mai puin
semnificativi, vor constitui adresa n pagin. n figura 6.30. se prezint organizarea logic a
memoriei virtuale n 2
12
pagini, fiecare pagin avnd capacitatea de 2
12
cuvinte de cte 32 de bii.
adres
logic
MP
(RAM)
UCP
MA
(disc
magnetic)
MMU
Comenzi transfer pagini virtuale
adres
fizic
Capitolul 6 182




















Figura 6.30. Organizarea logic i fizic a memoriei virtuale. Cu P
i
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 2
6
= 64 pagini, avnd fiecare o capacitate de 2
12
= 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 (2
18
x 32 bii);
Pagina 0
Pagina 1
Pagina 2
12
-1
Organizare logic
S1
Nr.pagini
Id.pagin
Pagin MV
Id.pagin
Pagin MV

Id.pagin
Id.segment P1
P2
P3
P1
S2
Organizare fizic a
MV n MA
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.














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
RI
PC

6
12
12
12
12
BLOC TA CU
AM
adresa
fizic
Tabel de translatare
adrese virtuale
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.




















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

6.7.5. Noiuni privind protecia memoriei

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


Baz Adres Limit
La unele sisteme adresa este considerat ca un numr fr semn, care se adun ntotdeauna la o
adres de baz, astfel c testul de adres limit se reduce la:
(Baz + Adres) Limit
Dac proceselor utilizator li s-ar permite s modifice registrele de adrese de baz i limit,
atunci acest mecanism de protecie nu ar putea funciona. Modificarea respectivelor registre este
permis doar sistemului de operare, pentru asigurarea proteciei ntre procese.
Pentru asigurarea proteciei sistemul de operare (SO) are trei responsabiliti principale:
1. S furnizeze cel puin dou moduri de execuie indicnd c procesul aflat n rulare este un
proces utilizator, sau un proces al sistemului de operare. La diferite SO ultimul tip de proces
este numit n diferite feluri: proces kernel (nucleu), proces supervizor, sau proces executiv.
2. S prevad o poriune a strii CPU pe care procesul utilizator o poate doar citi, dar nu o poate
scrie. Aceasta include registrele baz / limit, indicatori (bii) pentru moduri utilizator /
supervizor i indicatori pentru validare / invalidare evenimente de tip excepie.
3. S prevad un mecanism prin care UCP poate trece din mod utilizator (user) n mod
supervizor i viceversa. Primul sens de trecere este specific apelurilor sistem (system calls
apeluri de servicii oferite de SO), implementate ca instruciuni speciale care transfer
temporar controlul la o locaie precis din spaiul de cod al supervizorului. Registrul contor
de program corespunztor locului unde se face un apel sistem este salvat, iar UCP trece n
mod supervizor. Revenirea la modul utilizator este similar cu cea produs la o revenire din
procedur.

Adresele de baz i limit constituie minimul unui sistem de protecie. Mecanismul memoriei
virtuale ofer alternative mai complexe i mai sigure dect modelul simplu prin baz i limit. Aa
cum s-a vzut, adresele virtuale sunt translatate n adrese fizice pe baza unor tabele de translatare.
Acest mod de mapare, prin tabele, ofer posibilitatea introducerii de informaii pentru controlul
erorilor de program (intenionate sau nu) care ncearc s treac peste mecanismele de protecie.
Cea mai simpl cale este introducerea unor indicatori de permisie pentru fiecare pagin sau
segment. De exemplu pot exista indicatori care s permit doar citire, doar execuie, sau care s
interzic accesul unui proces utilizator la anumite pagini / segmente. Fiecare proces poate face
adresare doar ctre paginile proprii de memorie, procesul utilizator neavnd dreptul s modifice
tabelele sale de pagin / segment.
Protecia poate fi extins chiar pe mai mult dect dou niveluri (nu doar utilizator i
supervizor), privite ca i inele concentrice de protecie, n centru gsindu-se nivelul de protecie cel
mai nalt. n aceast ierarhie de niveluri de protecie un program poate accesa doar date de pe
nivelul su de protecie i de pe nivelurile inferioare n ierarhie. Poate face ns operaii de apelare
(call) a serviciilor sistemului de operare, servicii oferite de rutine ce se afl pe niveluri superioare
de protecie. Adesea se face comparaia, n oarecare msur nefericit, cu clasificri de tip militar
ale sistemelor: top secret, secret, confidenial i neclasificat. Programele utilizator (civilii n
exemplul militar) au doar dreptul de acces la nivelul de protecie cel mai de jos: ne-clasificat. La
sistemele de protecie de tip inele concentrice, deosebirea fa de exemplul anterior, este c se pot
face apelri la rutine situate pe niveluri superioare de protecie, dac exist chei de acces ctre
acele niveluri. Poate exista dreptul de apelare a unor servicii ale sistemului de operare, prin
mecanismul de comutare a proceselor.
Aa cum am pomenit i mai sus, informaia de protecie este setat n registre speciale ataate
fiecrei intrri n tabelele de translatare, registre setate doar de rutine de control al sistemului de
operare. Drepturile de acces pot fi de tipul:
a. Atribuirea de privilegii complete de citire i scriere. Aceste drepturi se atribuie programului
atunci cnd execut propriile instruciuni.
b. Read-only (protecie la scriere). Protecia la scriere este util la operaiile de partajare a unor
Capitolul 6 186


rutine de sistem (utilitare, biblioteci, etc.).
c. Execute only (program protection). Protejeaz programul la copiere. Restricioneaz referirea la
segment doar n timpul fazei de fetch a instruciunii i nu i n timpul fazei de execuie. Asta
permite utilizatorului s execute instruciunile segmentului de program, dar nu permite citirea
instruciunilor ca date cu scopul de a copia coninutul lor.

Sistemul de protecie a memoriei, n sensul celor spuse mai sus, se construiete pentru:
(a) memorie (detecteaz orice eroare de adresare nainte ca aceasta s creeze erori accidentale
sau voite);
(b) programe (previne ca programele utilizator (de aplicaii) s fac modificri ilegale n
rutinele SO);
(c) utilizatori (programele utilizatorilor ntre ele);
(d) securitate informaie (acces limitat la informaiile unde utilizatorul nu are drept de acces).




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



7.1. CIRCUITE DE INTERFA

Subsistemul de intrare-ieire (I/O) al unui calculator asigur calea de comunicaie a
informaiilor ntre calculator i mediul extern (logica extern care nu lucreaz direct cu UCP). Un
sistem de calcul de uz general, nu are utilitate practic dac nu poate recepiona i transmite
informaii cu exteriorul, ntr-o form accesibil utilizatorului uman. Prin intermediul acestui
subsistem, utilizatorul introduce programele i datele dorite n memoria calculatorului, pentru
prelucrare, i tot cu ajutorul su rezultatele se nregistreaz, sau se afieaz n exterior.
Legtura ntre UCP i dispozitivele de I/O (dispozitivele periferice) se face prin intermediul
unor circuite de interfa de I/O care asigur, din punct de vedere hardware, schimbul corect de
date. Aceste circuite de interfa se cupleaz la magistralele calculatorului i ele sunt adresabile la
nivel de registru-port de intrare-ieire. Prin port nelegem aici un loc (n general un registru), cu
adres specific, adres care constituie o "poart" prin care calculatorul realizeaz schimb de
informaie cu exteriorul; fie culege informaia, iar portul este port de intrare (PI), fie transmite
informaia la un port de ieire (PO). Registrele port pot fi adresate n spaiul de adrese al memoriei
(vorbim atunci de mapare-organizare a porturilor n spaiul de memorie) sau pot fi adresate n
spaiu separat de cel de memorie (mapare n spaiul de I/O). Fiecare port de intrare sau ieire are o
adres specific.
Ca urmare adresele porturilor de intrare-ieire pot fi tratate n dou moduri:
1. ca porturi cu adrese distincte fa de adresele de memorie (semnalele de control i selecie
fiind specifice pentru memorie, respectiv pentru spaiul de intrare-ieire) - mapare n
spaiu separat de I/O;
2. adresele porturilor sunt nglobate n spaiul de adrese al memoriei principale. Aceast
organizare a adreselor (numita i "mapare a adreselor de I/O n spaiul de memorie") face
ca porturile s fie selectate prin aceleai semnale de adres i control ca i memoria. n
lucrul cu porturile de I/O se vor utiliza instruciunile de transfer specifice memoriei.

Este important de observat c, exceptnd procesorul i memoria principal, toate circuitele
conectate la magistrala de date a sistemului, deci care partajeaz aceast resurs a sistemului, sunt
privite de procesorul central (UCP) ca porturi de I/O, chiar dac funciile acestora nu se limiteaz
strict la operaii de intrare / ieire. Este o manier unitar de lucru a UCP cu orice circuit de
interfa, circuit care poate include mai multe porturi de intrare / ieire , indiferent de funciile
specifice ale acestuia (figura 7.1). Aceasta face ca din punctul de vedere al UCP s se lucreze cu
porturile adresabile ntr-un mod asemntor cu cel folosit la adresarea locaiilor de memorie.
Unele circuite de interfa sunt incluse n circuitele specializate de control (controllere)
ale perifericelor. De exemplu, controllerul unitii de disc, controleaz operaiile fizice efectuate de
discul magnetic. Pentru ca s se poat face cuplarea la calculator controlerul trebuie s respecte
nite specificaii standardizate de interfaare. Standardul IDE ("Integrated Drive Electronics") a
realizat transferarea circuitelor de control ctre mecanismul discului hard, circuitele cuplate direct
la magistralele calculatorului avnd o structur simpl. Pentru cazul specific al discului hard,
standardul de interfa stabilete nu numai modul de lucru cu partea electronic de control, ci i
modul n care se face codificarea datelor pe suportul magnetic. Funcia principal a circuitelor
interfa de I/O este de a rezolva diferenele funcionale, electrice i informaionale dintre
calculator i periferic. Circuitele controler au n plus i sarcina specific de control a unui anumit
periferic. Principalele diferene ntre UCP i periferie, care impun folosirea circuitelor de interfa,
constau n urmtoarele:
a. perifericele sunt dispozitive a cror funcionare se bazeaz pe diferite tehnologii
(electromecanice, electromagnetice, electronice). De aceea trebuie s existe dispozitive de
conversie a valorilor semnalului, pentru o adaptare din punct de vedere electric cu
Sistemul de intrare - ieire 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.














Figura 7.1. Conectarea la magistrala de I/O a dispozitivelor de intrare - ieire.


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 USB
1
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
USB = Universal Serial Bus


Procesor
magistral I/O
Date
Adrese
Control
Interfa
Tastatur i
duispozitiv
de afiare
Interfa

Imprimant
Interfa

Disc
magnetic
Interfa

Band
magnetic
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
PC
2
, 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. semnale de control
2. semnale de stare
3. date de ieire
4. 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.

2
PC = Personal Computer
Sistemul de intrare - ieire 191



7.2. ORGANIZAREA IERARHIC A MAGISTRALELOR


n calculatoarele moderne transferul dintre UCP i memorie, respectiv dispozitivele de I/O
se face prin magistrale organizate ierarhic, n funcie de viteza dispozitivelor cuplate la fiecare
magistral.
Exist mai multe variante de organizare, n funcie de tipul calculatorului (de uz general sau
pentru aplicaii specifice) i diferenele de vitez ntre dispozitive. Dac la o magistral se
conecteaz mai multe dispozitive performana sistemului poate scdea. Cu ct sunt mai multe
dispozitive conectate la magistral cu att crete lungimea acesteia i deci ntrzierea la propagarea
semnalelor. n plus magistrala unic poate deveni o resurs hardware extrem de solicitat dac este
multiplexat n timp de multe dispozitive, cu viteze de funcionare mult diferite.
De aceea marea majoritate a calculatoarelor utilizeaz mai multe magistrale, organizate ca o
ierarhie de magistrale cu viteze de operare diferite. O structur clasic de magistrale multiple
organizate pe niveluri este prezentat n figura 7.2 [Stallings00]. Exist o magistral local care
conecteaz procesorul cu memoria cache i la care se pot conecta i cteva dispozitive de I/O
(locale) de mare vitez. Controllerul de memorie cache interfaeaz aceast memorie cu procesorul
i de asemenea cu magistrala sistem la care este conectat memoria principal. Avantajul acestui
mod de organizare este c transferul direct ntre dispozitivele de I/O i memorie nu interfereaz cu
activitatea procesorului care lucreaz direct cu memoria cache. Dispozitivele de I/O sunt conectate
la al treilea nivel ierarhic numit magistral de extensie. Acest ultim mod de aranjare permite
conectarea la magistrala de extensie a unui mare numr i o mare diversitate de dispozitive de I/O i
n acelai timp izoleaz traficul procesor - memorie fa de traficul de I/O.






















Figure 7.2. Exemplu de organizare ierarhic a magistralelor calculatorului

n figura 7.2 se exemplific cteva dispozitive de I/O ce pot fi cuplate la magistrala de
extensie. Conexiunile de tip reea includ reele locale (LAN - local area network), sau conexiuni la

Procesor
Memorie
cache i
controller

Controller I/O
local

SCSI Reea

Interfa cu
magistrala de
extensie

Port paralel

Port serial
Magistral local
Magistral sistem
Magistral de extensie

Memoria
principal
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.






















Figura 7.3. Exemplu de organizare ierarhic a magistralelor la care se introduce magistrala de mare vitez
de la mezanin


Din punctul de vedere al modului de transfer a informaiilor pe magistrale, acestea pot fi
sincrone, sau asincrone. Magistralele sincrone sunt comandate de un semnal de ceas local. Toate
transferurile pe aceste magistrale, numite cicluri de magistral, respect un protocol fix ce impune
un anumit numr de impulsuri de ceas. Datorit sincronizrii controlul transferurilor este extrem de
simplu. Blocurile de interfa (bridge) ntre magistralele sincrone ce funcioneaz la diferite
frecvene de ceas trebuie s realizeze adaptarea de vitez n aa fel nct transferurile ntre
magistrale s se fac corect i ct mai rapid. La magistralele asincrone transferurile nu mai trebuie
Magistral
local
Procesor
Cache i
Bridge

Memorie
principal

SCSI
Controller
video
Procesor
grafic

LAN

Interfa
Paralel

Serial
Magistral sistem
Magistral de mare vitez
Magistral de extensie
Conectori extensii
diverse
Sistemul de intrare - ieire 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.

7.3. TRANSFERURI ASINCRONE DE DATE


Transferurile asincrone de date ntre dou uniti independente cer s se transmit semnale
de control ntre unitile ce comunic, pentru a se indica momentul la care datele sunt disponibile.
Transferul asincron poate fi controlat n dou moduri:
1. cu un semnal de control, printr-un impuls de strobe (marcare) furnizat de unul din
corespondeni pentru a indica celuilalt momentul la care datele vor fi transferate.
2. cu dou semnale de control, la care datele ce trebuie transferate sunt nsoite de un semnal de
control care indic prezena datelor pe magistral. Unitatea ce recepioneaz datele rspunde cu
un alt semnal de control pentru a confirma recepia datelor. Se stabilete astfel o legtur de
date cu confirmare ("handshaking").
Cele dou metode de control a transferului asincron pot fi utilizate nu numai la transferurile
de I/O, ele fiind folosite n unele sisteme de calcul i la transferurile asincrone procesor-memorie,
procesor - port, port - echipament periferic. n continuare vom nota cele dou uniti care comunic
ca "surs" i "destinaie" a datelor fr a specifica care sunt cei doi interlocutori.


7.3.1. Transmisie asincron cu un singur semnal de control

Aceasta metod de transfer asincron a datelor folosete o singur linie de control pentru a
indica fiecare transfer. Semnalul de marcare (notat "Strobe" n figura 7.4) poate fi activat fie de
unitatea surs (figura 7.4.a) fie de cea destinaie (figura 7.4.b). La transferul iniiat de surs, Strobe
indic prezena datelor pe magistrala comun i de asemenea poate servi ca semnal ce controleaz
memorarea datelor de ctre destinaie. Vitezele de lucru ale sursei S i destinaiei D trebuie
cunoscute reciproc, la proiectarea i construcia sistemului. n funcie de cel mai lent dintre
interlocutori, se dimensioneaz intervalele de timp t1, t2 i t3, astfel nct s se efectueze un transfer
corect. Dac destinaia este un port de ieire, acesta trebuie sa aib capacitatea de memorare a
datelor. Pentru transferul iniiat de surs sursa plaseaz nti datele pe magistrala comun i dup
stabilizarea valorilor pentru date, sursa activeaz linia de strobe. Datele i semnalul de strobe
trebuie s rmn active cel puin un timp notat t2, suficient destinaiei pentru a citi corect datele.
Adesea destinaia folosete ultimul front al semnalului de strobe pentru a copia coninutul datelor
ntr-un registru intern. n cazul transferului iniiat de destinaie, dac sursa datelor este un port de
intrare, n principiu, nu este obligatorie funcia de memorare local. Ieirile portului ctre
magistrala local de date pot fi realizate prin operatori TSL (trei stri logice), activai de semnalul
de strobe. Pentru transfer iniiat de destinaie, semnalul de marcare are funcia unei cereri de
transfer de date. n multe din aceste tipuri de transferuri n calculator, impulsurile de strobe sunt
controlate tot de impulsurile de ceas ale UCP (tranzitiile strobe sunt sincronizate cu tranziii ale
semnalului de ceas). Astfel c strobe ar putea fi semnalul de validare al adresei pe magistral, sau
Capitolul 7 194


de validare date, semnal de citire-scriere etc.
Inconvenientele acestui tip de transfer constau n lipsa total a oricrei confirmri privind
acceptarea i / sau corectitudinea datelor recepionate, respectiv transmise. Acest mod de transfer se
poate utiliza doar ntre unitile la care vitezele de lucru sunt cunoscute reciproc. Transferul de
acest tip este specific pentru iniializarea unor dispozitive programabile de I/O, la care datele
transmise se nscriu n registre de control ale dispozitivelor respective.


















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.


7.3.2. Transmisie asincron cu dou semnale de control

Unul dintre semnalele de control realizeaz iniierea transferului de date, iar cel de-al doilea
confirm recepia acestora. Procedeul este numit transfer asincron al datelor cu confirmare
("handshaking"). Se realizeaz astfel un protocol de transmisie la nivel electric, ntre surs i
destinaie. i aici, transferul poate fi iniiat de surs (cu strobe - marcare date de transmis), sau de
ctre destinaie (prin strobe - cerere de date). n ambele cazuri interlocutorul va rspunde cu un
semnal care indic c datele au fost acceptate, respectiv c datele au fost furnizate (Ready).
Secvena evenimentelor pentru transferul iniiat de sursa datelor este urmtoarea (figura
7.5):
sursa plaseaz datele pe magistrala de date comun
sursa valideaz datele prin semnalul de marcare (Strobe)
destinaia confirm c este gata (Ready) pentru transfer
sursa dezactiveaz semnalul Strobe, care de obicei produce i memorarea datelor la
destinaie iar dup un timp dezactiveaz i datele de pe magistral
destinaia dezactiveaz semnalul Ready


Se observ c sursa menine semnalul de strobe activ pn cnd destinaia este n msur s
rspund cu semnalul de ready. Duratele semnalelor active se pot prelungi pn cnd cel mai lent
dintre corespondeni poate efectua corect transferul de date.

Destinai Surs
Dat
Strob
date
t3
t2 t1
Dat
Strob
Destinai
Surs
Dat
Strob
Date
t3
t2 t1
Dat
Strob
(a) (b)
Sistemul de intrare - ieire 195



















Figura 7.5. Diagrama bloc i evoluia semnalelor n timp pentru transfer de tip handshaking
iniiat de sursa datelor.

n cazul cnd iniierea transferului se face de ctre destinaie formele de und
corespunztoare controlului transferului sunt prezentate n figura 7.6.

















Figura 7.6. Diagrama bloc i evoluia semnalelor n timp pentru transfer de tip handshaking iniiat
de destinaia datelor.

Secvena evenimentelor pentru transferul iniiat de destinaie este urmtoarea:
destinaia lanseaz semnalul Strobe, cu semnificaia cerere de date
sursa rspunde prin punerea datelor pe magistrala comun i apoi prin activarea
semnalului de confirmare (Ready)
destinaia citete datele i confirm acest lucru prin dezactivarea semnalului de strobe
sursa consider transferul ncheiat i dezactiveaz semnalul de ready.

7.4. MODALITI DE TRANSFER DE INTRARE-IEIRE
Destinai Surs
Magistral
Read
Strob
Date
Magistral
Strob
Read
Destinai Surs
Magistral de
Strob
Read
Date
Magistral de
Strobe (cerere de
Ready (validare
date)
Capitolul 7 196



Din punctul de vedere al circuitelor care controleaz transferul i de asemenea al
dispozitivului care iniiaz un transfer de I/O, modalitile de transfer se pot clasifica n:
1. transfer prin program - transfer iniiat i controlat n totalitate de programul rulat de UCP;
2. transfer prin ntreruperi - transferul este controlat de UCP ca rspuns la o cerere de
ntrerupere extern, care iniiaz transferul;
3. transfer prin acces direct la memorie (DMA - "Direct Memory Acces") - transferul este
controlat de un circuit controler DMA (care preia controlul magistralelor sistemului), iar
iniierea transferului este fcut fie de o cerere de transfer de la un periferic, fie la iniiativa
programului rulat de UCP.

7.4.1. Transferul de I/O prin program

La acest tip de transfer, toate transferurile se iniiaz i se controleaz prin program.
Transferul poate fi direct, caz n care procesorul citete un port de intrare (PI) sau scrie un port de
ieire (PO), fr nici o verificare prealabil a strii perifericului corespunztor portului. Acest mod
de transfer se folosete pentru sistemele simple de control numeric, dedicate unor aplicaii fixe, n
faza de proiectare i testare a transferului (program plus hardware), sau n cazul rulrii unor rutine
de iniializare a circuitelor programabile de interfa.
Al doilea mod de transfer prin program este transferul prin interogare. Intrarea n
conversaie cu un periferic se face sub controlul programului, de obicei ntr-o bucl de interogare
(polling - scrutare a strii circuitelor periferice implicate n transfer). UCP interogheaz
dispozitivele periferice, dup o anumit strategie stabilit prin program, dac doresc sau nu schimb
de date sau mesaje, sau dac sunt active (gata pentru a primi informaii). Pentru a determina dac o
operaie de I/O este cerut, sau dac poate avea loc, se pot folosi bistabile de condiie (fanioane)
locale, setate conform condiiilor portului. Aceste fanioane se implementeaz fizic fie ca bistabile
singulare, fie sunt incluse n registre de stare ale porturilor. De exemplu un program poate controla
transferul de date de la un circuit de conversie analog-numeric. Procesorul declaneaz conversia,
iar apoi testeaz periodic o ieire (un bit) de stare al convertorului. Cnd bitul indic terminarea
conversiei, se ncheie rularea buclei de ateptare, prelundu-se datele convertite.
Datorit simplitii ei, tehnica de comunicare prin interogare programat este recomandat
n sistemele n care timpul pierdut n rutina de interogare nu este critic pentru aplicaia respectiv.
Atunci cnd programul are de controlat mai multe periferice, pe baza unei liste a porturilor asociate
perifericelor, procesorul testeaz pe rnd starea perifericelor i le servete din punctul de vedere al
transferului, dac starea citit permite acest lucru. n acest fel perifericele sunt deservite n mod
secvenial i implicit apar ntrzieri la servirea acestora, mai ales dac numrul de periferice
controlate este mare. Dac unele dintre periferice se consider mai importante dect altele, adresa
acestora se poate introduce de mai multe ori n lista de testare din bucla de interogare. Dezavantajul
principal al modului de transfer programat este constituit de timpul pierdut de UCP pentru testarea
strii perifericelor, chiar dac acestea nu cer servicii la momentele de timp respective. Acest mod de
transfer prezint ns avantaje din punctul de vedere al costurilor (minim de echipament fizic
suplimentar pentru transfer). Alt avantaj este c se cunoate exact momentul de timp cnd se
testeaz sau cnd se face transfer de date cu un periferic; de aceea se spune c acest tip de transfer
este sincron cu programul.
Ca exemplu al transferului prin program vom presupune mai nti un transfer ntre memorie
i un port de ieire, indicnd, mai nti printr-o list secvena de comenzi folosite:
START
iniializare POINTER adres de memorie;
iniializare CONTOR al lungimii transferului;
CITIRE_MEM: UCP citete date din memorie
Sistemul de intrare - ieire 197


TEST_STARE: citire stare port
dac e gata de transfer sari la TRANSF
dac nu, incrementeaz CONTOR_RATRI
dac CONTOR_RATRI = W salt la EROARE
altfel, salt la TEST_STARE
TRANSF: UCP scrie data la port, i actualizeaz CONTOR i POINTER
dac mai sunt date de transmis, salt la CITIRE_MEM
altfel salt la FINAL
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

7.4.2. Transferul I/O prin ntreruperi

Aa cum s-a artat n capitolul 5 evenimentele externe procesorului, deci independente de
programul rulat, pot produce cereri de ntrerupere. Dac acestea sunt acceptate, se produce
ntreruperea (suspendarea temporar a) programului rulat i saltul la o rutin specific de tratare a
cererii de ntrerupere. Dup execuia rutinei de tratare se revine la execuia programului ntrerupt.
Subsistemul de ntreruperi al calculatorului nu este destinat special doar pentru operaii de transfer
de I/O, dar aici ne vom referi doar la acest aspect. Din punctul de vedere al transferurilor de I/O,
avantajele sistemului de ntreruperi sunt urmtoarele [Sztojanov87]:
permite sincronizarea procesorului cu evenimente externe;
elibereaz procesorul de sarcina testrii periodice a perifericelor, sarcin consumatoare de
timp. Ca urmare transferul prin ntreruperi prezint o vitez de rspuns mai mare dect
transferul prin program;
posibilitatea de tratare ierarhizat a cererilor de ntrerupere simultane sau succesive;

Cererile de ntrerupere pot fi recunoscute doar la sfritul ciclului instruciune curent. n
general, pentru efectuarea transferurilor de I/O se folosesc cererile de ntrerupere mascabile.
Rspunsul UCP la acceptarea unei cereri de ntrerupere mascabil, consta n urmtoarele
operaii succesive:
1. Salvarea strii programului ntrerupt. n aceast faz se salveaz automat n stiv cel puin
adresa de revenire la programul ntrerupt. Alte informaii privind starea programului se pot
salva prin instruciuni introduse la nceputul rutinei de tratare, iar nainte de revenirea la
programul ntrerupt trebuie introduse instruciuni pentru restaurarea acestor informaii.
2. Confirmarea acceptrii i identificarea ntreruptorului. Confirmarea acceptrii ntreruperii
se face prin transmiterea de UCP a unui semnal de acceptare, n urma cruia perifericul
trimite, de obicei, un vector de ntrerupere pentru identificare. Exist i sisteme de
identificare care nu folosesc vector de ntrerupere.
3. Calcularea adresei de nceput a rutinei de tratare a ntreruperii. Pe baza informaiei de
identificare se calculeaz unde se va face saltul pentru ca cererea de ntrerupere, pentru
transferul de date, s fie servit.
4. La terminarea rutinei de tratare, se execut o instruciune special, care comanda refacerea
coninutului contorului de program i deci revenirea la programul ntrerupt.

Generarea vectorului de ntrerupere se face fie direct de ctre dispozitivul ntreruptor (de fapt de
ctre circuitul de interfa cu un anumit periferic), fie centralizat, pentru toate ntreruperile
mascabile, de ctre un dispozitiv special numit controller de ntreruperi.

Arbitrarea ntreruperilor multiple.

n cazul ntreruperilor multiple, simultane sau succesive, subsistemul de ntreruperi trebuie
s realizeze un arbitraj al acestora pentru a stabili care dintre cererile de ntrerupere multiple va fi
servit la un moment dat. Sistemul de arbitrare aloc prioriti cererilor de ntrerupere, servind
ntotdeauna cererile cu prioritatea cea mai mare. Se permite de asemenea ca o rutin de tratare s
poat fi la rndul ei ntrerupt de o cerere cu prioritate mai mare. De obicei, pentru un procesor de
uz general, prioritile intrinseci sunt atribuite n urmtoarea ordine: ntreruperile interne
(excepiile) cu prioritatea cea mai mare, apoi urmeaz ntreruperile externe (hardware) nemascabile
i n final cele mascabile. Arbitrarea ntreruperilor multiple se poate realiza prin mai multe metode:
Sistemul de intrare - ieire 199



Arbitrare controlat de UCP prin software
prin hardware

controlat de circuit controler de ntreruperi
controlat prin hardware, n lan de prioriti

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
fix
Nume intrare
ntrerupere
Adres de salt
1 TRAP 24h
2 RST 5.5 2Ch
3 RST 6.5 34h
4 RST 7.5 3Ch
5 RST 7.5 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


microcalculatoarele moderne. Controlerul de ntreruperi programabil (PIC
3
) este un circuit
specializat care preia, n principiu, toate sarcinile pe care le avea UCP la arbitrarea prin software:
accept cereri de ntrerupere de la mai multe surse, determin dac exist cel puin o cerere de
ntrerupere cu prioritate superioar celei a programului curent, iar n caz afirmativ, genereaz ctre
UCP o cerere de ntrerupere. La primirea confirmrii acceptrii cererii de ntrerupere, circuitul PIC
genereaz pe magistrala de date vectorul de ntrerupere asociat celei mai prioritare cereri existente.
UCP ntrerupe programul n curs i servete cererea prin mecanismul descris anterior. Circuitul
controler, este numit i "programabil", pentru c poate funciona n mai multe moduri de lucru
programabile prin nscrierea de ctre UCP a codurilor corespunztoare modurilor de lucru n
registrele de control ale PIC. De obicei programarea modului de lucru se face printr-o secven de
iniializare, executat de UCP, la pornirea calculatorului. Modul de lucru poate ns s fie modificat
ulterior, tot prin program. Circuitul PIC estre vzut de UCP ca un circuit de interfa ce cuprinde
mai multe porturi de I/O. Modul de alocare a prioritilor poate fi:
1. fix
2. rotitor. Acest mod implementeaz politeea n servirea cererilor de ntrerupere. Iniial
prioritile sunt ordonate n ordine descresctoare, dar dup servire, fiecare nivel de
prioritate devine automat cel mai puin prioritar.
3. cu mascare. n acest caz prioritile pot fi modificate dinamic, masca invalidnd temporar
anumite niveluri de prioritate.

Arbitrarea realizat prin PIC asigur un timp mic de rspuns pentru ntreruperile hardware i
o flexibilitate mare n alocarea sau modificarea prioritilor. n plus, multe dintre circuitele de tip
PIC pot fi cascadate, ceea ce permite extinderea uoar a sistemului ntr-un calculator.

Metoda de arbitrare descentralizat prin lan de prioriti a ntreruperilor presupune existena n
fiecare dispozitiv ntreruptor a unei logici capabile s asigure protocolul electric de tratare a
ntreruperilor. Dispozitivele ntreruptoare se conecteaz ntr-un "lan de prioriti" (daisy chain), ca
n figura 7.7.














Figura 7.7. Exemplu de arbitrare a cererilor multiple de ntrerupere prin lan de prioriti

n figur fiecare dispozitiv D
i
, 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
Programmable Interrupt Controller
Magistral de date
IE IEI
D
1
INT
IE IEI
D
2
INT
IE IEI
D
3
INT
IE IEI
D
N
INT
UC
IE
UC
INT
+V
Sistemul de intrare - ieire 201



A B C A B C = + + + (7.1)

Lanul de dispozitive conduce la prioriti fixe, ce in de poziia dispozitivului n lan.
Prioritatea cea mai mare este alocat celui mai apropiat dispozitiv fa de UCP (D
1
), iar prioritate
minim o are ultimul dispozitiv din lan.

UCP genereaz semnalul de validare a ntreruperilor externe (IE
UCP
) care se propag prin lan,
trecnd prin celulele succesive ale lanului. Pentru fiecare dispozitiv, starea intrrii de validare IEI
(Interrupt Enable Input) este copiat la ieirea IEO (Interrupt Enable Output) a fiecrui dispozitiv,
dac dispozitivul respectiv nu cere ntrerupere ctre UCP. Dac un dispozitiv a cerut ntrerupere,
care a fost recunoscut i se face tratarea acesteia, pe tot timpul servirii ntre intrarea IEI i ieirea
IEO ale dispozitivului servit nu mai exist egalitate. Pe toat aceast perioad dispozitivul aduce
IEO la zero pentru a nu permite dispozitivelor cu prioritate mai mic s-i ntrerup rutina de tratare.
n momentul n care un dispozitiv D
i
cere ntrerupere, pot exista dou situaii:
dac IEI
i
=0, atunci un dispozitiv mai prioritar dect D
i
a cerut ntrerupere i servirea sa de
ctre rutina corespunztoare nu s-a ncheiat. Ca urmare dispozitivul D
i
va atepta pn
cnd IEI
i
trece n stare activ "1".
dac IEI
i
=1, atunci D
i
poate genera cererea de ntrerupere ctre INT (aducnd aceast linie
la zero logic); aceasta pentru c D
i
este dispozitivul cel mai prioritar care cere ntrerupere
la momentul respectiv de timp. Ca urmare, dup lansarea cererii de ntrerupere, IEO
i

devine zero, invalidnd cererile de ntrerupere de la dispozitivele cu prioritate mai mic
din lan.
Din cele de mai sus rezult c dac a aprut o cerere de ntrerupere ctre UCP, n lan, un
singur dispozitiv are IEI

= 1 i IEO = 0, i anume cea servit. Pentru toate celelalte dispozitive
ieirea IEO are valoare logic identic cu intrarea IEI. Dac UCP accept cererea de ntrerupere,
dispozitivul ntreruptor depune pe magistrala de date a sistemului vectorul de ntrerupere, pentru a
fi identificat i servit corespunztor.

7.4.3. Transferul prin acces direct la memorie

Transferul, prin intermediul UCP, a blocurilor mari de date ntre memoria principal i
periferice, se face relativ lent, pentru c de fiecare dat informaia trece i prin registre ale UCP. n
plus pentru o cantitate mare de date transferate ntre memorie i periferic UCP va consuma foarte
mult timp.
Transferul prin acces direct la memorie (DMA - Direct Memory Acces) este executat direct
ntre memoria principal i dispozitivul periferic, fr ca datele s mai treac prin UCP, sub
comanda unui circuit controler DMA, care controleaz temporar magistralele sistemului.
n figura 7.8. se presupune c iniierea transferului se face de ctre periferic (prin intermediul
interfeei) care efectueaz o cerere de transfer prin acces DMA spre circuitul controler de DMA
(DMAC). Acesta solicit de la UCP controlul magistralelor prin semnalul de cerere de control a
magistralelor, BR, (Bus Request). Cu o mic ntrziere (la sfritul ciclului main curent) UCP
cedeaz controlul magistralelor, i trece ieirile ctre acestea n HiZ (stare de nalt impedan) i
informeaz despre aceasta prin semnalul acordare a controlului magistralelor, BG, (Bus Grant).
Circuitul controler DMAC furnizeaz adresele pe magistrala de adrese, preia controlul semnalelor
de scriere (WR) i citire (RD) i trimite ctre periferic semnalul de acceptare a transferului prin
DMA. Cnd dispozitivul I/O primete acest semnal de acceptare, el pune un cuvnt pe magistrala
de date (pentru scriere n memoria principal) sau citete un cuvnt de pe magistrala de date (pentru
citire din memoria principal).
Capitolul 7 202

























Figura 7.8. Exemplu de transfer DMA (DMAC = Controller DMA)


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;
INT
BR
BG
DMA
Interfa i dispozitiv
cerere
R W
UC
Memoria
R W
acceptare
date
adres
Sistemul de intrare - ieire 203


Circuite tampon pentru conectarea la magistralele calculatorului;
Logic de arbitrare a prioritilor canalelor;
Logic specific fiecrui canal DMA, care cuprinde cel puin urmtoarele componente:
un registru numrtor de adrese care genereaz adresa curent (din memoria
principal) de transfer;
un numrtor de cuvinte de transferat, care se decrementeaz la fiecare ciclu DMA
efectuat (valoarea iniial a acestui contor este egal cu numrul de cuvinte ce se
dorete a fi transferat. Atunci cnd coninutul a ajuns la zero, ciclul de transfer s-a
sfrit);
un registru de stare a canalului, care poate fi citit de UCP i care indic: sensul
transferului prin canal, canal activat / dezactivat, prioritatea alocat etc.

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

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