Sunteți pe pagina 1din 37

ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu

1




1. INTRODUCERE

OBIECTIVE

Principalele obiective ale acestui capitol introductiv sunt urmtoarele:

caracterizarea noiunii de informaie, reprezentarea i prelucrarea acesteia n
sistemele tehnice;
obinerea prin rafinri succesive a unui model structural al unui Calculator
Numeric;
prezentarea unui model funcional al unui Calculator Numeric, ca o ierarhie de
maini virtuale;
analiza din punct de vedere istoric, a evoluiei echipamentelor de prelucrare
numeric a datelor;
prezentarea funciilor primitive i unitilor funcionale ale Calculatorului
Numeric, posibiliti de realizare a acestora.


ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
2

CUPRINS:






1.1 INTRODUCERE 1
1.2 CALCULATOR NUMERIC. SISTEM DE PRELUCRARE A INFORMAIILOR 3
1.3 MODELUL STRUCTURAL AL UNUI CALCULATOR NUMERIC 5
1.3.1 CN cu sistem de I/E cu transfer programat 9
1.3.2 CN cu sistem de I/E cu transfer prin DMA 9
1.3.3 CN cu sistem de I/E cu transfer prin canal de I/E 10
1.4 MODELUL FUNCIONAL AL UNUI CN 11
1.5 UNITI FUNCIONALE ALE UNUI CALCULATOR NUMERIC 15
1.5.1 Memoria 16
1.5.2 Unitatea central de prelucrare 19
1.5.3 Unitatea de comand 23
1.5.4 Setul de instruciuni 25
1.5.5 Subsistemul de intrare ieire 27
1.5.6 Limbaje de programare 27
1.6 ELEMENTE DE ARHITECTUR I STRUCTUR A UNUI CN 31
1.6.1 Concepte de baz 31
1.6.2 Moduri de adresare 33


ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
3

1.1 Calculator Numeric - Sistem de prelucrare a informaiilor

Vom considera informaia o noiune primar, profund, similar noiunii de materie.
Informaia poate fi regsit n ntregul ciclu material, ncepnd cu lumea cuantic i
microscopic i continund n lumea vie i sistemele tehnice. n legtur cu informaia, vom
considera urmtoarele probleme :
- structurarea i reprezentarea;
- stocarea pe diferite suporturi de informaie;
- prelucrarea;
- transmiterea.
n sistemele tehnice, informaia este reprezentat n principal sub form analogic i
sub forma discret (numeric). n mod corespunztor s-au dezvoltat sisteme tehnice de
prelucrare a informaiilor printre care calculatoarele analogice i calculatoarele numerice au
un rol important. Dei calculatoarele analogice universale prezentau o serie de avantaje
privind viteza de lucru, lucrul n timp real, supleea soluiilor unor probleme prin analogii,
calculatoarele numerice au cunoscut o dezvoltare mult mai rapid n ultimii ani nlocuind
aproape n totalitate pe cele analogice. Datorit inovaiilor tehnologice i dezvoltrii
circuitelor integrate pe scar larg i foarte larg s-a eliminat treptat handicapul privind viteza
de lucru, n schimb precizia de reprezentare i prelucrare poate fi fcut orict de mare,
stabilitatea i robusteea calculatoarelor numerice sunt net inferioare, iar posibilitile de
structurare, reprezentare, i stocare a informaiilor sunt nelimitate. Desigur c informaiile sub
form analogic pot fi n continuare prelucrate dup ce au fost n prealabil convertite n form
numeric, rezultatele fiind supuse unei conversii inverse.
Calculatoarele numerice se caracterizeaz prin faptul c asigur reprezentarea,
stocarea, prelucrarea i transmiterea informaiilor sub forma discret, numeric. Astfel,
mrimi electrice continue, cum ar fi tensiunea sau curentul electric pot fi memorate prin
distingerea diferitelor valori ale acestor mrimi. Cu ct trebuie s se disting mai multe
valori, cu att separarea dintre dou valori adiacente va fi mai mic i deci memoria va fi mai
puin sigur n funcionare. Sistemul binar trebuie s disting doar dou valori, deci constituie
metoda cea mai sigur de codificare numeric a informaiilor. Unitatea de informaie
elementar este n acest caz cifra binar denumit "BIT". Un bit poate conine un "0" sau un
"1". Exist unele calculatoare despre care se spune c folosesc sistemul zecimal, nu binar. De
fapt se utilizeaz sistemul BCD - Binar Codificat Zecimal care const n reprezentarea
cifrelor zecimale ntre 0 - 9 prin patru cifre binare, adic patru bii. Utiliznd 16 bii, pentru
reprezentarea numrului 1992 vom obtine:
- zecimal : 0001 1001 1001 0010 i
- binar : 0111 1100 1000.
ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
4
Sistemul zecimal se utilizeaz doar la calculatoare cu aplicaii strict economice,
financiare.
Se observ c 16 bii pot reprezenta n zecimal numere cuprinse ntre 0 - 9999, deci 10000 de
combinaii, pe cnd n binar se pot reprezenta 65536 combinaii diferite. Se poate spune deci
c sistemul binar este mai eficient. Dar s analizm ce s-ar ntmpla dac cineva ar inventa un
dispozitiv electronic, foarte sigur n funcionare, capabil s memoreze cifrele de la 0 - 9 prin
mprirea domeniului de la 0 - 10V, n 10 intervale, de exemplu. Patru asemenea dispozitive
ar putea memora 10000 de combinaii, adic valori ntre 0 - 9999. Utiliznd sistemul binar,
aceleai 4 elemente ar putea memora 16 combinaii. Este evident c n acest caz sistemul
zecimal ar fi mult mai eficient.
O alt problem apare datorit faptului c informaia prezint dou aspecte: sintactic i
semantic. Prin aspectul su sintactic, informaia poate fi neleas sub aspectul ideilor
ncapsulate, mesajele pe care le transmite, etc.
Calculatoarele numerice n acceptiunea clasic, sunt considerate principalele unelte
pentru prelucrarea automat a informaiilor, ele fiind capabile s trateze informaiile numai
sub aspect sintactic. Fr s cunoasc aspectul semantic al informaiilor pe care le
prelucreaz, calculatoarele nu pot s ia decizii proprii, ele fiind condamnate s fac doar ceea
ce a fost specificat n prealabil, precis i fr echivoc printr-o descriere care poart numele de
algoritm. Prin algoritm se asigur i respectarea unui principiu de baz n prelucrarea
automat a informaiilor, concordana aspectului sintactic cu cel semantic. Dificultile care
apar n acest sens i-au determinat pe utilizatorii lui s afirme c, de multe ori, calculatoarele
creaz mai multe probleme dect rezolv. Ideea c un calculator nu poate face dect ceea ce i
se spune, este deja depit. La ora actual se fac eforturi din ce n ce mai mari pentru a
reprezenta i prelucra cu ajutorul calculatoarelor informaii cu aspect semantic. Realizarea
acestui deziderat n condiii de eficien acceptabile permite utilizarea calculatorului ntr-o
manier cu totul nou. El este capabil s reprezinte i s prelucreze cunotine, s nvee din
experiena anterioar, s mbunteasc sau s dezvolte noi metode de rezolvare a unor
probleme.
Oricum, multe probleme care implic prelucrarea unui volum mare de date, eventual
cu limitri stricte de timp, pot s fie rezolvate numai cu ajutorul calculatorului. n mod
"clasic", aplicaiile calculatorului pot s fie grupate n aplicaii cu caracter tiinific care
necesit precizie i vitez mare de efectuare a calculelor matematice si aplicaii cu caracter de
gestiune care necesit pstrarea si regsirea rapid a informaiilor. Pe de alt parte, aplicaii
de tipul: prevederea timpului probabil sau proiectarea unui avion necesit att numeroase
calcule stiinifice, ct i manipularea unui volum foarte mare de informaii. s considerm de
exemplu cteva tipuri de aplicaii specifice calculatoarelor:

Calcule tiintifice: n experimentele stiinifice i de laborator calculatoarele pot
s fie utilizate pentru culegerea, validarea i prelucrarea datelor preluate de la
ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
5
diferii senzori sau aparate. Domenii tipice: telemetrie, radiolocaie, spectrografie,
etc.
Proiectare asistat: Calculatorul este deosebit de util n multe domenii de
proiectare ca de exemplu: proiectarea mtilor pentru VLSI, proiectarea
circuitelor imprimate, proiectarea fuzelajelor i aripilor de avion, a caroseriilor de
automobil, etc.
Conducerea proceselor: Calculatorul este o unealt foarte util n fabricarea i
controlul automat al produselor, de exemplu: comanda mainilor unelte, controlul
proceselor de difuzie i ncapsulare ntr-o fabric de circuite integrate,
conducerea roboilor din celulele flexibile de fabricaie, etc.
Simulare: Datorit utilizrii calculatoarelor a aprut ntre cercetarea
fundamental i cea aplicativ un nou nivel de cercetare, prin simulare. Acest tip
de abordare este foarte util pentru situaiile n care n condiii reale experimentele
pot s fie prea costisitoare, periculoase sau chiar imposibil de realizat. s
considerm de exemplu cazul n care se dorete studiul efectului erupiei unui
vulcan. Evident, vulcanul nu poate s fie convins s erup, dar se poate realiza o
simulare n care s se in seama de ct mai muli factori care caracterizeaz
fenomenul natural.
Instruire asistat: Calculatorul poate s constituie un instrument foarte util n
creterea eficienei procesului de predare - nvare - verificare, pentru stimularea
gndirii creative, logice.


1.2 Modelul structural al unui Calculator Numeric

Att funcional, ct i prin construcie calculatorul este un sistem logic. O caracteristic
esenial a unui astfel de sistem este posibilitatea de a descrie funcionarea acestuia
independent de detaliile de realizare fizic concrete. Astfel, indiferent de domeniul de
aplicaii, calculatorul poate s fie privit ntr-o prim aproximaie ca o cutie neagr avnd o
comportare determinist, predictibil, primind la intrare date pe care le prelucreaz si
genernd la ieire rezultate.
Sistemul din Fig. 1.1 poate s fie interpretat ca realiznd o aplicaie (transformare) din
domeniul de intrare n domeniul de ieire, comportarea sa fiind materializat n relaiile dintre
intrri, ieiri i timp.
Prin rafinri succesive ale acestui model foarte general se pot obine modele funcionale
sau constructive cu diferite grade de detaliere. Sistemul are un set de terminale de intrare "I"
i un set de terminale de ieire "E".

ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
6
I E
CN

Fig. 1.1 Modelul general al unui calculator numeric

Fiecare terminal poate s fie considerat n una din cele dou stri: activ sau inactiv, respectiv
ca avnd valoarea 1 sau 0. O combinaie de uniti i zerouri formeaz un vector binar. Cutia
neagr poate fi instruit ce s fac artnd care este vectorul de ieire pentru un vector de
intrare fixat. Dup ce se repet acest experiment pentru mai muli vectori I/E (perechi de
vectori de intrare - ieire) ar fi de dorit ca automat cutia neagr s arate vectorul corect la
ieire cnd se fixeaz un vector dat la intrare. Ideal ar fi ca dac exist o regul clar de
coresponden ntre vectorii de intrare i cei de ieire, C.N. s extrag aceast regul i s-o
pstreze n conexiunile interne astfel nct s genereze vectorul de ieire corect pentru un
vector pe care nu l-a mai avut la intrare nainte. n acest model C.N. apare ca un sistem
definit prin mulimea perechilor de intrri-ieiri care se afl permanent ntr-o anumit stare,
definit ca un marcaj (sau conexiuni) ataat unei submulimi de perechi de intrri-ieiri care
satisfac anumite condiii de consisten. Aceast submultime va fi considerat un subsistem.
n general nu este practic s se enumere toate perechile de I/E care definesc un astfel
de sistem preferndu-se caracterizarea acestuia printr-o relaie de intrare-ieire, adic
printr-un algoritm sau o ecuaie care se poate utiliza pentru generarea tuturor perechilor de
I/E care-i aparin.
Pe de alt parte, un astfel de sistem nu implic ntotdeauna un vector unic de ieire
precum un vector de intrare. Dimpotriv, unui vector de intrare i va corespunde un numr de
vectori de ieire posibili, fiecare coninnd un rspuns posibil al vectorului de intrare dat.
Aceast neunicitate a rspunsului la o intrare dat reflect dependena ieirii att de intrare
ct i de starea initial (sau starea precedent). Aceast neunicitate a dependenei ieirii de
intrare arat c un astfel de sistem este mai degrab o relaie dect o funcie sau un operator.
Relund modelul din Fig. 1.1, se poate constata c relaia dintre vectorii de intrare i
ieire este prea complicat pentru a fi ncapsulat ntr-un sistem cu conexiuni directe ntre
intrri i ieiri. Astfel este necesar introducerea unor nivele intermediare n cutia neagr
formate din uniti funcionale capabile s extrag diferite caracteristici ale vectorilor de
intrare, care eventual, s genereze ieirea corect. O prim observaie trebuie fcut n
legtur cu mulimile de intrri i ieiri. Acestea nu sunt ntotdeauna sub form de vectori
formai din 1 i 0 i nu au structura adecvat unui anumit tip de prelucrare. Este astfel
necesar prevederea unui subsistem de intrare care asigur preluarea datelor din mediul
extern i aducerea lor la o form standard de intrare n vederea prelucrrii. Dup prelucrare,
datele trebuie transmise spre mediul extern n forma cerut, ceea ce implic necesitatea unui
ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
7
subsistem de ieire. Se obine, n acest mod, un model structural al unui C.N., prezentat n
Fig. 1.2.
Subsistem
de
prelucrare
E I
Subsistem
de iesire
Subsistem
de intrare
fluxul datelor
fluxul informatiilor de control care asigur interactiunea
corect a celor trei subsisteme

Fig. 1.2 Modelul structural al unui C.N.

Subsistemul de intrare trebuie s asigure att conversia n semnale electrice a datelor
reprezentate pe diferite suporturi n mediul extern ct i transformarea acestor semnale n
vectori binari cu structura cerut de subsistemul de prelucrare. n mod similar subsistemul de
ieire trebuie s asigure operaii similare, n ordine intern, pentru rezultatele trimise spre
mediul extern.
Subsistemul de prelucrare trebuie s asigure reprezentarea intern, stocarea i
prelucrarea datelor i schimbul de informaii cu subsistemul de I/E. Se obine astfel structura
unui C.N. cum este reprezentat n Fig. 1.3.

UCP
Memorie
E I
Interfata
iesire
EP
intrare
EP
iesire
Interfata
intrare
fluxul datelor
fluxul informatiilor de control care asigur interactiunea
corect a celor trei subsisteme
CN
UC

Fig. 1.3 Structura unui C.N.
Subsistemul de prelucrare, mpreun cu interfaa de I/E formeaz calculatorul propriuzis.
Subsistemul de prelucrare constituie nucleul central al C.N., motiv pentru care, va fi denumit
UNITATEA CENTRALA (UC). UC este format dintr-un subsistem de memorie intern i o
Unitate Central de Prelucrare. Din considerente de eficien i cost, memoria este organizat
n general, pe dou nivele. O memorie de capacitate mic i vitez mare, asociat direct UCP
ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
8
sau chiar fcnd parte din aceasta, format din registre rapide i o memorie mai lent, de
capacitate mare. UCP are att rolul de a asigura funciile pentru prelucrri aritmetice i logice
de baz ct i coordonarea transferului informaiilor ntre elementele componente. Se obine
astfel n Fig. 1.4, schema bloc a unui sistem de calcul care include CN propriu-zis,
echipamentele periferice de I/E i sistemul de programe care asigur o utilizare eficient a
ntregului sistem.

fluxul datelor
fluxul informatiilor de control care asigur interactiunea
corect a celor trei subsisteme
CN
UC
UCP
UAL
UCD
REG
Memorie
E I
Interfata
iesire
EP
intrare
EP
iesire
Interfata
intrare

UC + INTEF. de INTRARE i de IESIRE = C.N.

CN + EP + SOFTWARE = SISTEM DE CALCUL

Fig. 1.4 Schema bloc a unui SISTEM DE CALCUL

Conexiunile efective ntre diferite elemente funcionale ale UCP, ntre UCP i
memorie, ntre UC i interfeele de I/E se pot face n diferite moduri, obinndu-se n mod
corespunztor diferite structuri de C.N.
Astfel dac se consider fluxul informaiilor ntre UC i interfeele de I/E se obin trei
tipuri de transferuri de I/E :
- Subsistem de I/E cu transfer programat;
- Subsistem de I/E cu transfer prin acces direct la memorie;
- Subsistem de I/E cu transfer prin canal de I/E.

ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
9

1.2.1 CN cu sistem de I/E cu transfer programat

Schema bloc este artat n Fig. 1.5

MEM
UCP Subsistem
iesire
Subsistem
intrare
I I

Fig. 1.5. CN cu transfer programat
n aceast schem de organizare datele de I/E circul direct prin registrele UCP sub
controlul UC din UCP. Transferul se efectueaz cuvnt cu cuvnt i pentru fiecare cuvnt
transferat UCP execut o secven de instruciuni, numit program de I/E. Soluia este n
general simplu de implementat i ca resurse hardware i ca efort de programare dar se
preteaz numai la echipamente cu volum de date i rat de transfer sczute.


1.2.2 CN cu sistem de I/E cu transfer prin DMA

n cazul unor echipamente periferice cu viteza de transfer ridicat, discuri i benzi
magnetice de exemplu, programul care se execut pentru fiecare cuvnt transferat poate s fie
prea lung, ceea ce ar duce la pierderea unor cuvinte. Pe de alt parte, volumul de date fiind
ridicat, UCP ar fi ocupat mult numai cu transferul datelor de I/E. n astfel de situaii se
utilizeaz transferul prin acces direct la memorie. Fluxul informaiilor n acest caz este artat
n Fig. 1.6.
ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
10

E I
UCP
DMA
SE MEM SI


Fig. 1.6 CN cu transfer prin DMA

Dup iniierea unui transfer, UCP poate continua cu alte activiti. Transferul ntregului
bloc se execut sub controlul modului DMA. La sfritul transferului sau la apariia unor
evenimente, de exemplu erori de transfer, se cere din nou intervenia UCP.


1.2.3 CN cu sistem de I/E cu transfer prin canal de I/E

Un grad i mai mare de independen dintre UCP i subsistemul de I/E se obine prin
prevederea unui procesor specializat, numit canal de I/E, capabil s execute transferul prin
acces direct la memorie, a unei nlnuiri de blocuri i s rezolve unele situaii de eroare
aprute n cadrul transferului, fr intervenia UCP. Schema bloc este artat n Fig. 1.7.
E I
MEM
UCP
Canal de
I/E
Subsistem
iesire
Subsistem
intrare

Fig. 1.7 CN cu transfer prin canal de I/E

ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
11
Procesorul de canal execut programe de canal pregtite n memorie de ctre UCP.
Programele de canal specific toi parametrii transferului i pot exista mai multe programe de
canal nlnuite. Productivitatea sistemului este mult mai mare n acest caz.

1.3 Modelul funcional al unui CN

n paragraful precedent s-a introdus modelul structural al unui CN prin rafinarea
succesiv a unui model foarte general de sistem dinamic specificat ca o relaie ntre mulimea
intrrilor i ieirilor. n final s-a artat c sistemul de calcul este format din resursele fizice
care alctuiesc partea hardware i un sistem de programe de baz i aplicaii care alctuiesc
partea de software a sistemului de calcul. Exist i un nivel intermediar ntre hardware i
software, denumit firmware, care exist din software incorporat n hardware n momentul
fabricaiei calculatorului. Programele care controleaz direct resursele hardware, care nu se
schimb atta timp ct structura hardware nu se schimb i programele care trebuie s fie
prezente n calculator imediat dup alimentarea cu energie a calculatorului, constituie partea
de firmware.
Executiv, Sistem de operare, Biblioteci de programe de baza
BDOS, IBMDOS
Linbaje de programare
PASCAL,, FORTRAN, C, MODULA2
PASCAL, C, FORTRAN,...
Supervizor(CLI), Interfata cu utilizatorul
Command.com, nc, Windows, XTG
Aplicatii, Biblioteci de programe
WS, WORD, dBASE, AUTOCAD
Nucleu sistem de operare (masina de baza)
BIOS
Masina fizica (hardware)
Unitati functionale + structuri de interconectare
Unitati functionale
UAL, MEM, INTERFETE
Dispozitive si
circuite
electronice

Fig.1.8. Modelul funcional al unui CN

ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
12
De fapt partea de hardware i cea de software sunt echivalente. Orice operaie
efectuat prin software poate fi implementat direct n hardware i orice instruciune efectuat
prin hardware, poate fi simulat prin software. Decizia de a implementa anumite funcii n
hardware i altele n software este luat avnd n vedere anumii factori cum ar fi: costul,
viteza de prelucrare, raportul performane pe cost, sigurana n funcionare i frecvena unor
modificri posibile. La primele calculatoare aceast decizie era simplu de luat. n hardware
erau implementate cteva funcii foarte simple de tipul: adun dou numere ntregi, salt la o
alt instruciune. Toate celelalte operaii erau realizate explicit prin software, aceasta din
cauza constrngerilor tehnologice existente. Pe msura evoluiei tehnologiei are loc o tendin
invers.
Proiectanii de hardware au selectat din ce n ce mai multe funcii ce se executau suficient de
frecvent motivnd implementarea lor n hardware pentru a fi executate mult mai repede.
Astfel la ora actual exist circuite specializate care efectueaz calcule cu numere reale cu
precizie foarte mare, procesoare grafice care printr-o simpl comand execut o transformare
a unei figuri complexe etc. Orict de complexe ar fi funciile realizate n hardware, utilizatorul
va dori s promoveze operaii i mai complexe prin software. Astfel din punctul de vedere al
utilizatorului sistemul de calcul este privit ca o ierarhie de uniuni virtuale fiecare oferindu-i
faciliti diferite de programare. Modelul funcional prezentat n Fig.1.8 reflect att
organizarea sistemului de calcul ct i funcionarea acestuia privind fluxul informaiilor
plecnd de la programul utilizatorului pn la obinerea informaiilor dorite.
n literatura de specialitate exist modele similare cu acesta, altele sunt destul de
diferite. n acest model s-a urmrit pe de o parte aspectul funcional, nivelele ierarhice sunt
astfel alese nct s reflecte ct mai bine fluxul datelor i aciunilor n sistemele moderne de
calcul iar pe de alt parte aspectul didactic, fiecare nivel ierarhic este obiectul unor cercuri
clar delimitate, intercalate prin coninut i planificare n timp.

NIVELUL 1. - Dispozitivele i circuitele electronice reflect att gradul de integrare
tehnologic ct clasa de performane n care se ncadreaz calculatorul. Astfel, un calculator
bazat pe circuite ECL (circuite logice cu cuplaj prin emitor) va avea o vitez de prelucrare
ridicat, destinat unor aplicaii complexe, cu multe calcule. Un calculator bazat pe
microprocesoare 80386 i 80387 i memorii de 1-2 bii pe pastil va fi un calculator
performant realizat ntr-o tehnologie avansat.

NIVELUL 2. - Unitile funcionale reflect ntr-o bun msur modularitatea sistemului,
poziionarea i implementarea funciilor primitive n uniti funcionale avnd n vedere criterii
funcionale, constructive, i aspecte privind testabilitatea. La acest nivel nc nu este posibil
programarea calculatorului. Este posibil ns microprogramarea. Diferite uniti funcionale
conin programe implementate sub form de firmware. Astfel unitatea central de prelucrare
poate conine programe firmware pentru controlul componentelor din care este alctuit,
ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
13
programe pentru meninerea configuraiei de baz, pentru cazul de timp real al calculatorului,
programe de depanare, etc. Un canal de I/E pentru disc include programe de testare a
subsistemului de discuri magnetice, programele de I/E de nivel sczut, programarea
circuitelor integrate pe scar larg care intr n componena sa.

NIVELUL 3. - Maina fizic reprezint, mpreun cu echipamentele de I/E, partea de
hardware propriu-zis a calculatorului. Acest nivel reflect structura i organizarea intern a
calculatorului, modul de interconectare i interaciunile dintre unitile funcionale, fluxul
datelor de I/E. De asemenea acest nivel reflect i arhitectura calculatorului aa cum este el
vzut de un programator la nivelul funciilor primitive .

NIVELUL 4. - Maina de baz reprezint calculatorul propriu-zis. Nucleul sistemului de
operare trebuie vzut mai mult ca firmware dect ca software i este format dintr-o colecie
de programe orientate pe maina fizic i care ofer programatorului de sistem o main de
baz mai evoluat, uniform i stabil n timp, primind modelul de acces la funciile primitive.
Astfel modificrile din nivelele 1, 2 i 3, vor fi preluate de acest nivel fr a fi simite de
nivelele ierarhice superioare. Acest nivel asigur n principal funciile de I/E de baz (BIOS la
PC) i funcii de acces direct la resursele fizice pentru testarea i punerea la punct a
programelor.

NIVELUL 5. - Executivul sistemului de operare reprezint o colecie de programe de baz
care asigur pe de o parte o main ct mai eficient i comod de utilizat pentru programator
i o utilizare ct mai eficient a resurselor hardware i software, pe de alt parte. Principalele
funcii ale unui sistem de operare sunt:
controlul ncrcrii i execuiei programelor, care asigur ncrcarea n memoria
intern a programelor preluate din memoria extern, lansarea n execuie i
supravegherea execuiei acestora;
operaii de I/E mai evoluate, bazate pe funciile oferite de maina de baz;
gestiunea fiierelor, care asigur crearea ntreinerea i utilizarea fiierelor de
date pe suporturile externe (magnetice, optice, etc);
gestiunea memoriei care asigur utilizarea i protecia memoriei interne n
condiiile n care mai multe procese pot fi active la un moment dat n memorie;
faciliti de dezvoltare a programelor privind programarea modular,
deformarea;
crearea, ntreinerea i utilizarea bibliotecilor de programe de baz i aplicaii.



ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
14
NIVELUL 6. Limbaje de programare. La acest nivel am situat limbajele de programare
indiferent c sunt de nivel ridicat sau sczut deoarece prin intermediul acestora programatorul
are la dispoziie un mod esenial de comunicare cu calculatorul. Fiecare limbaj are un
vocabular de aproximativ 100 de cuvinte i simboluri i este bazat pe o gramatic strict
definit, fr excepii. Propoziiile dintr-un limbaj pot fi uor traduse n propoziii dintr-un alt
limbaj. Operaia de conversie a unui program dintr-un limbaj n altul se numete translatare.
Programul original se numete program surs i este scris n limbajul surs. Att limbajul
surs ct limbajul destinaie, n care este translatat programul, definesc nivelele mainii
virtuale ntr-o schem similar celei din Fig.1.8 dar mai detaliat. Dac ar exista un procesor
care s interpreteze direct limbajul surs nu ar mai fi nevoie de translatare. n prezent exist
peste 100 de limbaje de programare clasificate dup diferite criterii. Astfel sunt:

Limbaje orientate main sau limbaje de nivel sczut, care necesit din partea
programatorului o cunoatere bun a arhitecturii calculatorului. Limbajul ofer
faciliti de acces direct la aceste resurse, permind dezvoltarea unor programe
foarte eficiente din punct de vedere al utilizrii resurselor pe seama unui efort mai
mare din partea programatorului. Limbajele orientate main pot la rndul lor s
fie clasificate n:
limbaje main sau limbaje obiect care implic specificarea direct n
binar, octet, sau hexazecimal a instruciunilor ce se vor executa direct
de ctre maina fizic. Programarea n limbaj main este rareori
utilizat eventual pentru cteva instruciuni, n procesul de depanare a
programelor;
limbaje de asamblare care pot fi privite ca o reprezentare simbolic
pentru limbajele main. Instruciunile din programul surs n limbaj
de asamblare, au corespondent direct n limbaj main. Utilizarea
unor nume simbolice pentru instruciuni i posibilitatea definirii unor
adrese simbolice uureaz mult programarea fa de programarea n
limbaj main. Translatarea programelor din limbaj de asamblare n
limbaj main se face de ctre asamblor.
limbaje orientate pe probleme sau limbaje de nivel nalt n care utilizatorul i
scrie programele ntr-o manier mai apropiat de modul de comunicare uzual.
Detaliile interne ale arhitecturii i structurii mainii de baz sunt mult mai puin
vizibile dect n corpul limbajelor de asamblare. Limbajele de nivel nalt sunt mai
eficiente pentru programator dar, n general mai ineficiente pentru main.
Programele scrise n limbajele de nivel nalt n general sunt compilate, translatate
de ctre compilatoare, direct n limbaje obiect pentru a fi excutate de ctre maina
de baz. La rndul lor limbajele de nivel nalt pot fi clasificate dup diferite
criterii, astfel:
ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
15
limbaje orientate pe calcule tiintifice: C, C++, JAVA, FORTRAN,
APL, BASIC, .;
limbaje pentru calcule economice: COBOL, SNOBOL.

Un alt model de clasificare ar fi dup modul n care programatorul verific aciunile ce trebuie
efectuate n cursul executrii programului. Astfel sunt:
limbaje imperative, n care programatorul verific, pas cu pas, ce trebuie fcut
pentru rezolvarea problemei respective: FORTRAN, PASCAL, C, MODULA,
etc;
limbaje declarative n care programatorul face doar o descriere, ntr-o form
dat a soluiei la problem, de exemplu: LISP, PROLOG, SMALLTALK.
Efectuarea unor studii statistice a evideniat faptul c, uzual, un procent de 1% dintr-un
program este responsabil de 50% din timpul de execuie al progamului, iar un procent de
10% din program este responsabil de 90% din timpul de execuie. Aceasta sugereaz ideea
utilizrii unor soluii mixte de dezvoltare a programelor. Mai nti programul este scris total
n limbaj de nivel nalt, apoi este evaluat i msurat i anumite poriuni rescrise n limbaj de
asamblare. Unele compilatoare chiar translateaz programul surs n limbaj de asamblare
pentru a fi optimizat i apoi translatat n cod main.

NIVELUL 7 - nivelul aplicaiilor reprezint nivelul cel mai important pentru utilizator.
Bibliotecile de programe de la acest nivel reflect modul n care poate s utilizeze direct
calculatorul n diferite aplicaii i uurina cu care pot fi create noi programe de aplicaii n
domenii conexe sau total noi.

NIVELUL 8 - nivelul interpretorului limbajului de comand reprezint interfaa i modul de
interaciune dintre utilizatori i sistemul de calcul. Selectarea unei aciuni poate fi greoaie,
introducnd o serie de texte de la consola operatorului sau din contr, foarte eficient prin
simpla indicare a unei opiuni afiate pe ecranul consolei. Se observ din aceast analiz a
modelului din Fig. 1.8 c un programator de un anumit nivel nu necesit o cunoatere
detaliat a nivelelor inferioare doar dac pentru creterea eficienei se dorete elaborarea
direct a unor funcii sau controlul direct al unor resurse de pe nivele inferioare.


1.4 Uniti funcionale ale unui Calculator Numeric

n paragrafele anterioare s-au considerat un model structural i unul funcional al unui
calculator numeric din punctul de vedere al unui utilizator. Aa cum am mai afirmat, din punct
de vedere logic partea de hardware i cea de software ale unui calculator numeric sunt
ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
16
echivalente, n sensul c orice funcie implementat n software poate s fie implementat n
hardware i orice instruciune hardware poate s fie simulat prin software. De exemplu, dac
pentru structurile cele mai simple de calculatoare, singura instruciune aritmetic disponibil
era instruciunea de adunare pentru numere ntregi fr semn, celelate operaii aritmetice
realizndu-se prin programare pe baza operaiei de adunare, n prezent coprocesoarele
aritmetice sunt capabile s realizeze chiar i calculul unor funcii transcendentale. Din punct
de vedere metodologic este ns de preferat s analizm structura hardware separat de
sistemul de programe de baz i aplicaii.
n continuare vor fi trecute n revist unitile funcionale de baz ale unui calculator numeric.

1.4.1 Memoria

Pentru realizarea funciei de memorare se utilizeaz o mare varietate de dispozitive i
echipamente mergnd de la dispozitive rapide, de mic capacitate i cu un cost ridicat, pn la
echipamente lente, de mare capacitate i cu un cost sczut. Un calculator poate utiliza o
ierarhie de astfel de dispozitive, avnd rapoarte foarte diferite ntre performane.
n general se pot identifica ntr-un sistem de calcul trei tipuri de memorii:
Memorii tampon foarte rapide formate din registrele interne ale UCP i eventual
din memorii "cache" de asemenea coninute n UCP utilizate pentru a memora
instruciunile sau datele care urmeaz s fie utilizate imediat. Memorarea
informaiilor n acest tip de memorii se realizeaz n avans. Aceste memorii sunt
de mic capacitate (8 - 16 000 octei) dar au un timp de acces foarte mic (zeci de
ns).
Memoria principal a calculatorului este n legtur direct cu UCP i este o
memorie cu acces rapid avnd n general o capacitate de ordinul 64K octei - zeci
de M octei.
Memoria auxiliar (extern) este realizat pe baza unor echipamente periferice de
tip disc sau band magnetic, cu capacitate mare de memorare (360K octei - sute
M octei). Se consider c memoria auxiliar face parte din subsistemul de intrare
/ ieire.

n continuare prin termenul de memorie ne vom referi la memoria principal.
Memoria conine att instruciuni ct i date i este format, la nivelul cel mai de jos,
din elemente cu dou stri stabile, deci elemente care pot s memoreze un bit de informaie.
Organizarea biilor n memoria principal se face sub forma unor vectori formai din uniti
elementare de memorie fiecare coninnd un numr fix de bii. Operaiile care se execut n
legatur cu memoria sunt operaii de citire i scriere. La execuia unei astfel de operaii UCP
ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
17
are acces la coninutul unei locaii de memorie (cea mai mic unitate de memorie la care se
poate face acces). Orice memorie are urmtoarele caracteristici principale:

Fiecare locaie de memorie are acelai numr de bii;
Fiecare locaie de memorie are asociat un numr care reprezint adresa prin
care locaia respectiv poate s fie referit n mod unic;
Spaiul de adrese este omogen i toate locaiile de memorie sunt echivalente
din punctul de vedere al accesului.

Rezult deci c o locaie de memorie este caracterizat de dou elemente: adresa care
reprezinta poziia relativ n cadrul memoriei (informaie fix) i coninutul, care este dat de
valoarea numeric memorat n locaia respectiv la un moment dat.
Coninutul unei locaii de memorie reprezint un cuvnt de memorie, numrul de bii
din cuvnt reprezentnd lungimea cuvntului.
Pentru fiecare calculator lungimea cuvntului este stabilit corespunztor tipului de
aplicaii n care calculatorul din care face parte prin proiectare urmeaz s fie utilizat. De
exemplu primul microprocesor 4004 care a fost proiectat pentru a realiza prelucrri n BCD
(codul de reprezentare a numerelor Binar Codificat Zecimal) a fost proiectat pentru a lucra cu
memorii avnd lungimea cuvntului de 4 bii. Succesorul su, 8008 care a fost proiectat
pentru a lucra cu caractere reprezentate conform standardului ASCII (cod de 8 bii) a fost
proiectat pentru a lucra cu memorii avnd lungimea cuvntului de 8 bii. Deoarece n prezent
majoritatea calculatoarelor au lungimea cuvntului un multiplu de 8, se obisnuiete
specificarea acestei lungimi n numr de octei (un octet = 8 bii).
Capacitatea memoriei unui calculator este dat de numrul de octei sau de cuvinte din
care este format aceasta. De obicei aceast capacitate se exprim n K octei ( 1K = 1024)
sau n M octei ( 1M = 1024 K) i mai nou n gigaoctei ( 1G = 1024 M). Capacitatea maxim
a memoriei adresate la un moment dat de ctre un calculator este dat de numrul maxim de
adrese distincte care pot s fie generate de unitatea central de prelucrare. De exemplu dac
un calculator poate s genereze adrese utiliznd 16 bii atunci el va putea s adreseze 2
16

adrese distincte. Structura bloc a unui subsistem de memorie este prezentat n Fig. 1.9.
ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
18
Unitate
de
control
MA
date
date
__
S/C
__
SM
D
E
C
Adrese
Matrice de
memorie
MD

Fig. 1.9 Structura bloc a unui subsistem de memorie


(ciclu de citire)
SM
adrese
a. diagrama de timp pentru citire
date disponibile
date
t
AC
t
CC

(ciclu de scriere)
SM
adrese
date
b. diagrama de timp pentru scriere
t
CS
_
S/C

ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
19
Fig. 1.10. Diagrame de timp

Registrele de adrese (AM) i de date (DM) pot s fie coninute n subsistemul de
memorie sau fac parte din alte subsisteme care fac acces la memorie.
Registrul AM conine adresa de memorie implicat n accesul la memorie. Registrul
DM conine datele care trebuie s fie nscrise n memorie, respectiv datele care se citesc din
memorie.
Semnalul SM este un semnal de selecie a subsistemului de memorie (ntr-un calculator
pot s existe mai multe astfel de subsisteme, eventual fiecare avnd spaiul propriu de adrese)
iar S/C este un semnal care comand tipul operaiei (de scriere sau de citire).
Descrierea funcionrii subsistemului de memorie este prezentat n diagramele de
timp din Fig. 1.10.
n figur, cu t
ac
s-a notat timpul de acces citire ca fiind durata dintre momentul activrii
adreselor i momentul n care datele sunt disponibile. Cu t
cc
s-a notat durata ciclului de citire
ca fiind intervalul de timp dintre momentul n care adresele sunt activate pentru citire i
momentul de timp la care se poate face o nou activare a adreselor. Cu t
cs
s-a notat durata
ciclului de scriere ca fiind intervalul de timp dintre momentul n care adresele sunt activate
pentru scriere i momentul de timp la care se poate face o nou activare a adreselor.

Se observ c succesiunea de evenimente corespunztoare efecturii unei operaii de citire
sau de scriere este: stabilirea adresei implicate, generarea semnalului de selecie, stabilirea
semnalului S/C, localizarea adresei n memorie, realizarea transferului de date dup care
urmeaz un interval de timp corespunztor refacerii strii circuitelor integrate de memorie
pentru a fi capabile s execute un nou acces. Se observ c ciclul memoriei (intervalul de timp
dintre dou accese la memorie) este format din dou intervale de timp: timpul de acces efectiv
i timpul de refacere.


1.4.2 Unitatea central de prelucrare

UCP reprezint nucleul calculatorului. Realizeaz execuia instruciunilor aduse din
memorie asupra unor date aduse din memorie sau obinute de la subsistemul de intrare.
Prelucrrile efectuate pot s fie de tip aritmetic sau logic, rezultatele obinute pot s fie
transmise la memorie sau subsistemului de ieire.
UCP conine registre care formeaz o memorie foarte rapid. Aceste registre pot s
conin date sau componente ale adreselor de memorie. Exist calculatoare pentru care unele
registre au funcii dedicate, adic anumite operaii se pot executa numai asupra valorilor
coninute n anumite registre, n timp ce la alte calculatoare orice registru poate s fie utilizat
ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
20
pentru orice fel de operaie. De asemenea UCP conine un registru, denumit de obicei,
registru stare program care memoreaz informaii referitoare la starea UCP, la rezultatul
execuiei ultimei instruciuni aritmetice sau logice, condiii de eroare, condiii care descriu
modul n care urmeaz s se execute urmtoarele instruciuni, etc.
Execuia operaiilor aritmetice i logice se realizeaz n cadrul Unitaii Aritmetice i
Logice (UAL). Elementul da baz al unei UAL este un sumator paralel. Viteza de operare a
UAL este practic dat de performanele acestuia. n afar de sumator, UAL conine i
circuitele combinaionale care permit selecia operaiei aritmetice sau logice executate de
ctre UAL.
n cazul cel mai general o operaie aritmetic sau logic are doi operanzi i produce un
rezultat. Schema bloc a unei UAL este prezentat n Fig. 1.11.
rezultat
operand 2
Selectie operatie
UAL
operand 1

Fig. 1.11 Schema bloc a unei UAL

Din punctul de vedere al interconectrii UAL cu celelalte subansamble, de fapt din
punctul de vedere al mecanismului de obinere a operanzilor i al furnizrii rezultatului exist
mai multe soluii posibile :

1. Utilizarea unei magistrale unice. Schema bloc de interconectare este prezentat n Fig.
1.12
ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
21
magistrala date
T 2
Selectie operatie
UAL
T 1

Fig. 1.12 Interconectarea UAL cu o singur magistral

n acest caz operanzii sunt preluai de ctre UAL din dou registre temporare T1 i T2. Se
observ c ncrcarea datelor n registrele T1 i T2 i transmiterea rezultatului se face prin
intermediul unei magistrale locale a UCP. Sursele pentru operanzi i destinaia pentru rezultat
pot s fie reprezentate de orice registru sau locaie de memorie. nainte de efectuarea operaiei
valorile operanzilor trebuie s fie ncrcate n registrele temporare T1 i T2. Se observ c
aceast ncrcare nu se poate realiza dect secvenial.
Dac sursele celor doi operanzi sunt reprezentate de locaii de memorie iar rezultatul
trebuie s se depun de asemenea n memorie, avnd n vedere c accesul la memorie nu se
poate face dect pentru citirea / scrierea unei singure date la un moment dat, timpul necesar
pentru efectuarea operaiei aritmetice sau logice este dat practic de timpul necesar pentru cele
3 accese la memorie. Dac operanzii sunt disponibili n registrele UCP atunci din cauza
transferului secvenial al operanzilor n registrele temporare, execuia instruciunii va dura mai
mult dect n cazul n care exist o legatur direct ntre registrele care conin operanzii i
UAL.
2. Utilizarea unui registru acumulator. Schema bloc de interconectare este prezentat
n Fig. 1.13. n acest caz unul dintre opereranzi este preluat ntodeauna dintr-un registru
special numit registru acumulator. De asemenea rezultatul operaiei este memorat n registrul
acumulator nlocuind vechiul coninut. Se observ c n acest caz numai sursa unuia dintre
operanzi poate s fie constituit de ctre un registru din UCP sau de ctre o locaie de
memorie. Deoarece al doilea operand este preluat dintr-un registru UCP sau din registrul de
date al memoriei, structura nu mai necesit utilizarea unui registru temporar. Viteza execuiei
instruciunilor aritmetice i logice este mai mare n acest caz deoarece la timpul necesar
pentru execuia efectiv a operaiei nu se mai adaug dect timpul necesar pentru pregtirea
unui singur operand.
ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
22
Acumulator
Selectie operatie
UAL
Magistrala UCP

Fig. 1.13. Interconectarea UAL cu registru acumulator

De fapt aceast structur se poate generaliza i se pot considera structuri care utilizeaz mai
multe registre ca registre acumulator.
3. Interconectare UAL cu trei magistrale. Schema bloc de interconectare este prezentat
n Fig. 1.14.
Selectie operatie UAL
M1
M3
M2

Fig. 1.14 Interconectarea UAL cu 3 magistrale


n acest caz fiecare operand i rezultatul circul pe alt magistral de date. Operanzii
sunt preluai direct de pe cele dou magistrale de date. Rezultatul este transmis pe cea de a 3-
a magistral. Ca i n prima soluie att sursele operanzilor ct i destinaia rezultatului
operaiei pot s fie registre ale UCP sau locaii de memorie. Deoarece obinerea operanzilor
se poate face independent pentru fiecare n parte, n cazul n care nu amndoi operanzii provin
din memorie, se observ c cei doi operanzi se pot obine n paralel. Deci pentru astfel de
ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
23
situaii durata execuiei instruciunilor poate s fie mai mic. n cazul n care amndoi
operanzii sunt preluai din memorie durata aducerii operanzilor este similar cu aceea obinut
pentru prima structur. O variant a acestei soluii se obine dac se consider c ntodeauna
rezultatul va nlocui unul dintre operanzi. n acest caz rezult o structur cu dou magistrale.

1.4.3 Unitatea de comand

Execuia unui program rezult prin realizarea unei secvene de aduceri i execuii de
instruciuni din memorie. Adresa de memorie a urmtoarei instruciuni care urmeaz s se
execute este memorat ntr-un registru special din UCP, registru numit contor program (CP).
Cnd se iniiaz execuia unui program, n CP se ncarc adresa primei instruciuni. n
continuare se va executa un ciclu de operaii care poate s fie descris de organigrama din Fig.
1.15.
ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
24
Nu Da
instructiune
cu operanzi?
recunoastere tip instructiune
se executa instructiunea
se aduce cuvntul aflat n
memorie la adresa coninut
n CP se actualizeaz CP
pregateste operanzi calculeaza adrese si aduce
operand actual in CP
Nu Da
operanzi
in memorie?
se executa instructiunea
memoreaza rezultat
Nu Da
instr cu rez in
memorie?

Fig 1.15 Fazele execuiei unei instruciuni

Se observ c n timpul ciclului de aducere i execuie a instruciunii CP este actualizat
astfel nct ori de cte ori se ncepe ciclul unei noi instruciuni coninutul acestui registru s
reprezinte adresa primului cuvnt din instruciune. Evident instruciunile de control al
ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
25
execuiei programului pot s aib ca efect actualizarea coninutului registrului CP conform
adresei la care se face saltul.
Se observ c din punctul de vedere al interpretrii realizate prin execuia programului
de ctre calculator, un program const din date i instruciuni, identificarea instruciunilor se
poate face numai dac se cunoate o adres de instruciune ncepnd de la care se poate face
o identificare semnificativ a instruciunilor.
Unitatea de comand (UCd) are rolul de a decodifica i interpreta instruciunile
genernd semnale de comand care asigur fluxul de date corespunztor execuiei
instruciunii respective. Rezult deci, c structura UCd este realizat pe baza unitilor
funcionale pe care aceasta trebuie s le comande i pe baza setului de instruciuni pe care
UCP trebuie s-l execute.

n general o unitate de comand este un automat complex. Exist dou soluii de
implementare a UCd i anume sub form de uniti de comand convenionale i uniti de
comand microprogramate. Unitile de comand convenionale sunt realizate de obicei sub
forma unei reele de automate codificate sau complet decodificate.

1.4.4 Setul de instruciuni

Orice calculator este controlat de un program, care este format dintr-o secven de
instruciuni. Fiecare instruciune specific o operaie care urmeaz s fie executat de ctre
UCP. n general instruciunile unui calculator pot s fie clasificate n cteva clase de baz :

1. Instruciuni pentru transferul datelor. Sursa i respectiv destinaia unui astfel de
transfer pot s fie constituite de o locaie de memorie, un registru, sau elemente ale
subsistemului de intrare/iesire.
2. Instruciuni aritmetice. Aceste instruciuni execut operaii aritmetice asupra unor
date. n acest caz sursa operanzilor i destinaia rezultatului pot s fie memoria sau registrele
din UCP. Complexitatea operaiilor care formeaz setul instruciunilor aritmetice difer mult
pentru diferite calculatoare. Astfel, cel mai simplu set posibil de instruciuni aritmetice ar
putea s conin numai o instruciune de incrementare a coninutului unui registru sau a
coninutului unui cuvnt din memorie. Pe baza unei astfel de operaii se poate construi o
aritmetic utiliznd numere fr semn. n realitate chiar i cele mai elementare calculatoare
"tiu" s execute operaia de adunare ntre dou numere (eventual fr semn). La captul
cellalt al scalei complexitii operaiilor aritmetice se gsesc calculatoarele n al cror set se
gsesc cele patru operaii aritmetice care se pot efectua asupra numerelor cu sau fr semn
reprezentate n virgul fix (numere ntregi) sau n virgul mobil (numere reale).
ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
26
3. Instruciuni logice i de deplasare. Aceste instruciuni execut operaii logice (de tip
SI, SAU, NU, SAU EXCLUSIV) asupra unor date. Ca i la instruciunile aritmetice sursa
operanzilor i destinaia rezultatului pot s fie memoria sau registrele din UCP. Toate
calculatoarele care conin n setul lor de instruciuni, instruciuni logice conin cel puin
instruciuniile SI, SAU i NU cu toate c dup cum se tie disponibilitatea unei operaii
SI-NU sau SAU-NU ar fi suficient pentru realizarea oricrei prelucrri de tip logic.
4. Instruciuni de comparaie. Aceste instruciuni pot s fie considerate drept
instruciuni aritmetice (ca efect al execuiei unei astfel de instruciuni starea UCP este
actualizat conform diferenei dintre cei doi operanzi referii n instruciune i acesta este
singurul efect al execuiei instruciunii), sau ca instruciuni logice (avnd n vedere
semnificaia operaiei de comparaie).
5. Instruciuni pentru controlul execuiei programelor. Aceste instruciuni permit
schimbarea dinamic a secvenei n care se execut instruciunile din program producnd un
salt necondiionat sau condiionat la o adres din program specificat n instruciune.
Instruciunile sunt memorate n memorie mpreun cu datele asupra crora opereaz. UCP
aduce o instruciune, determin ce prelucrri trebuie s se efectueze i le execut. Fiecare
calculator are forma sa proprie de reprezentare a instruciunilor, dar orice instruciune conine
dou informaii:
codul operaiei - care specific operaia care urmeaz s se execute: adunare,
comparaie, salt, etc;
unul sau mai muli specificatori de operanzi care descriu modul n care se obin
operanzii instruciunii i eventual unde se memoreaz rezultatul acesteia.
n memorie o instruciune poate s ocupe unul sau mai multe cuvinte. Exist calculatoare la
care numrul de cuvinte utilizat pentru reprezentarea instruciunilor este fix, n timp ce la alte
calculatoare numrul de cuvinte utilizat pentru reprezentarea unei instruciuni depinde de tipul
acesteia. De exemplu o instruciune a unui calculator ipotetic care trebuie s adune coninutul
cuvntului de memorie aflat la adresa 100 cu cel care se gsete la adresa 200, memornd
rezultatul la adresa 250 ar putea s fie descris n memorie cu ajutorul a 4 octei dispui la
adrese consecutive, dup cum se arat n Fig.1.16.

ADD
100
200
250

Fig. 1.16 Structura unei instruciuni n memorie

ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
27
n memorie codul operaiei i adresele operanzilor ca de altfel i datele "arat la fel" i
numai modul n care UCP interpreteaz un numr l face pe acesta s reprezinte codul unei
operaii, adresa unui operand sau o dat.

1.4.5 Subsistemul de intrare ieire

Rolul subsistemului de intrare / ieire este de a conecta echipamentele periferice la
calculator. Prin intermediul acestor echipamente periferice se realizeaz de fapt schimbul de
informaii cu lumea extern care poate s fie reprezentat de operatori umani, alte procesoare,
memorii externe, etc.
Cele mai obinuite echipamente periferice de intrare / ieire sunt: terminalele de
introducere / afiare date, unitile pentru discuri magnetice, unitile pentru benzi magnetice,
plotere, imprimante, etc.
Se observ c aceste echipamente sunt caracterizate de forme foarte diferite de
reprezentare a informaiei i de viteze diferite de transfer a informaiei. De asemenea
echipamentele periferice de tip disc sau band magnetic pot s transfere la un moment dat
blocuri mari de date, n timp ce echipamentele de tip terminal pot s transfere la un moment
dat un singur caracter. Corespunztor n subsistemele de intrare / ieire sunt coninute
interfee pentru cuplarea echipamentelor periferice. Rolul acestor interfee este de a realiza
conversia de format i de vitez ntre UCP i echipamentele periferice.

1.4.6 Limbaje de programare

Un calculator poate s fie utilizat pentru a rezolva orice problem pentru care se poate
defini precis o rezolvare. Prin definire se nelege n acest caz posibilitatea descompunerii
problemei (i deci a rezolvrii) n subprobleme a cror rezolvare presupune execuia unor
comenzi specifice calculatorului. Cu alte cuvinte calculatorul poate s fie utilizat pentru orice
problem pentru care rezolvarea poate s fie descris sub forma unui algoritm n termenii
operaiilor specifice calculatorului.
S considerm de exemplu problema realizrii unui dicionar romn - englez. Problema
este foarte simplu de rezolvat, pentru c ceea ce se cere este de fapt cutarea unei perechi de
cuvinte ntr-o list de echivalene. Dificultile reale legate de rezolvarea acestei probleme
sunt cele referitoare la construirea dicionarului (formarea bazei de date) i cele referitoare la
regsirea rapid a cuvntului cutat pentru cazul n care dicionarul considerat este mare. Pe
de alt parte, problema traducerii din limba romn n limba englez, bineneles cu pstrarea
semnificaiei textului este o problem foarte dificil datorit nelesului ascuns al unor
combinaii de cuvinte n funcie de context. Din acest motiv algoritmizarea acestei probleme
ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
28
este nc un subiect de cercetare. De altfel, acesta este i motivul pentru care att n fazele de
specificare a rezolvrii unor probleme cu ajutorul calculatorului, ct i pentru specificarea
algoritmilor chiar i pentru cazuri n care interlocutorul este omul, se prefer utilizarea, n
locul limbajului natural, a unor limbaje artificiale pentru care nelesul fiecrei construcii este
precis (vezi pseudocodul, organigramele, i alte forme de specificare a algoritmilor). Desigur,
ideea creerii unor limbaje artificiale nu este nou, n sensul c apariia ei nu este legat de
apariia calculatoarelor. Limbajul matematic, formulele chimice nu reprezint altceva dect
limbaje artificiale create n scopul comunicrii n condiiile anulrii oricror posibiliti de
apariie a unor formulri ambigue. Apariia calculatoarelor a dus ns la apariia unei clase
speciale de limbaje artificiale i anume limbajele de programare. Un limbaj de programare
este un limbaj artificial utilizat pentru comunicarea cu calculatorul.
Un limbaj de programare ca de altfel orice limbaj este definit prin: vocabular, sintax i
semantic. Vocabularul unui limbaj este format din semnele i cuvintele din care se pot forma
propoziii. Sintaxa unui limbaj este format din totalitatea regulilor de bun formare a
propoziiilor, iar semantica unui limbaj este dat de totalitatea regulilor prin care se asociaz
semnificaii propoziilor.
n general un calculator este o main care "tie" s execute un set de operaii simple
numite instruciuni. Un program nu este altceva dect o secven de instruciuni, efectul
execuiei acestei secvene de instruciuni fiind o anumit prelucrare de informaie.
Instruciuniile "elementare" pe care un calculator poate s le "neleag" i deci s le execute
sunt n general instruciuni foarte simple ca de exemplu: adun dou numere, compar un
numr cu altul, mut o informaie dintr-o parte a memoriei calculatorului n alta, etc. Setul
instruciunilor elementare pe care calculatorul l "nelege" direct mpreun cu regulile de
scriere a unor secvene de astfel de instruciuni formeaz un limbaj de programare. Acest
limbaj este denumit de obicei limbaj main, fiind specific mainii respective.
Exist peste o sut de limbaje de programare iar procesul de creare a noi limbaje de
programare continu. n diferite perioade ale istoriei calculatoarelor diferite limbaje de
programare au fost considerate ca fiind "cele mai bune". Astfel, dac la nceput disputa avea
loc ntre partizanii FORTRAN-ului (1954) i cei ai COBOL-ului (1959), n prezent disputa
are loc ntre partizanii aceluiai FORTRAN (dar mult modernizat devenit FORTRAN 77), i
cei ai limbajelor PASCAL (1971), MODULA (1979), C (1975), ADA (1979), FORTH
(1974) PROLOG (1970), LISP (1960). De fapt dac facem abstracie de criteriul: " cel mai
bun limbaj este cel pe care l tiu", criteriul conform cruia tipul problemei determin tipul
limbajului n care se descrie rezolvarea problemei, pare cel mai corect. Din punctul de vedere
al rspndirii, pn la apariia calculatoarelor personale se pare c cele mai multe programe
existente n lume erau scrise n COBOL. O dat cu alte mutaii aduse de apariia
calculatoarelor personale s-a produs o mutaie i n domeniul utilizrii limbajelor de
programare. Astfel, dac se iau n considerare toate programele scrise n lume, indiferent de
ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
29
dimensiunea i performanele lor, probabil c cele mai multe programe au fost scrise n
limbajul BASIC.
O cerin fundamental a oricrui limbaj de programare este asigurarea unei
comunicaii eficiente i comode ntre om i calculator. Problema este ns c ceea ce este
comod pentru calculator este foarte nepotrivit pentru utilizator i invers. Pe de alt parte, dac
la nceput elementul cel mai "pretenios" dintre cei doi parteneri era calculatorul i utilizatorul
a trebuit s se adapteze, folosind limbaje de programare foarte apropiate de nivelul operaiilor
pe care le poate executa calculatorul, pe msur ce progresele tehnologice au permis, au
nceput s se dezvolte limbaje de programare concepute n ideea avantajrii utilizatorului. De
fapt orice calculator "tie" s execute un set de operaii, s le zicem elementare. Dac
descrierea algoritmului de rezolvare a problemei se face chiar n termenii acestor operaii
elementare folosind coduri numerice, se spune c se face programarea n cod masin. Desigur
programarea unui calculator la acest nivel este foarte dificil i oamenii au scpat relativ
repede de acest nivel. Se consider de fapt c exist dou nivele de limbaje de programare:
limbaje de programare de nivel sczut i limbaje de programare de nivel nalt. Limbajele de
programare de nivel sczut se numesc i limbaje de asamblare. Fiecare tip de calculator are
propriul Su limbaj de asamblare. O operaie n limbaj de asamblare corespunde unei operaii
n limbaj masin, deosebirea fiind c la nivelul limbajului de asamblare specificarea
operaiilor se face utiliznd nume simbolice (ADD, MOV, JMP, JNZ, etc) n timp ce la
nivelul limbajului main specificarea operaiilor se face utiliznd coduri numerice.
Suplimentar fa de limbajul main un limbaj de asamblare dispune i de alte faciliti
specifice (pseudoinstruciuni, macroinstruciuni, etc). n cazul limbajelor de nivel superior o
operaie corespunde de obicei cu o secven de operaii n limbaj main, cu alte cuvinte
puterea (complexitatea) operaiilor puse la dispoziia programatorilor este mult mai mare.
Avnd n vedere observaia c numrul de linii de program scrise i verificate pe calculator
ntr-un interval de timp dat de ctre un programator nu depinde de limbajul de programare
utilizat, este evident c cu ct puterea operaiilor puse la dispoziie de ctre limbajul de
programare este mai mare, complexitatea problemelor rezolvate cu acelai efort de ctre un
acelai programator este mai mare. Un alt avantaj al limbajelor de programare de nivel nalt
este c n majoritatea cazurilor programele scrise n astfel de limbaje sunt independente de
particularitile calculatoarelor pe care sunt utilizate.
La rndul lor limbajele de programare de nivel nalt pot s fie clasificate dup diferite
criterii. De exemplu, clasificarea "clasic" n limbaje orientate pentru calcule stiinifice:
FORTRAN, BASIC, APL, etc; limbaje orientate pentru probleme ne numerice: COBOL,
LISP, SNOBOL, etc. Limbajele mai noi: C, PASCAL, MODULA, ADA pot s fie utilizate
cu bune rezultate pentru ambele tipuri de probleme. Un alt tip de clasificare ine cont de
modul n care se specific calculatorului ce are de fcut, i anume exist limbaje imperative i
limbaje declarative. Un limbaj imperativ este un limbaj n care programatorul trebuie s
descrie pas cu pas prelucrrile care trebuie s fie efectuate pentru a rezolva o problem.
ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
30
Exemple de limbaje de programare imperative: FORTRAN, PASCAL, COBOL, BASIC,
ADA, C, etc.
Aa cum s-a mai artat fiecare limbaj de programare a fost inventat pentru a facilita
realizarea unui anumit tip de aplicaii i nu exist i probabil c nu poate s existe un limbaj de
programare bun pentru orice tip de aplicaii.
Se pune problema ns, cum se realizeaz implementarea unui limbaj de programare pe
un calculator. Exist dou ci de abordare posibile i amndou au fost considerate
importante la un moment dat. Prima cale este de a realiza calculatoare care s "tie" limbaje
ct mai evoluate i n istorie au existat numeroase astfel de ncercri mai mult sau mai puin
ncununate de succes (ca de exemplu calculatorul Burroughs 7400 programabil direct n
ALGOL, microprocesorul iAPX 432 programabil n ADA sau mai nou mainile LISP,
MODULA, PROLOG, etc).
A doua cale presupune utilizarea chiar a calculatorului care tie numai limbajul main
(l vom numi LM) pentru a permite programatorului s se exprime ntr-un limbaj de nivel nalt
(pe care l vom numi LI). Avnd n vedere c i LI este destinat efecturii unor prelucrri de
date nseamn c fiecare instruciune din acesta poate s fie exprimat cu ajutorul unei
secvene finite de instruciuni din LM. n acest caz procesul de trecere de la o instruciune din
LI la instruciuni din LM poate s fie automatizat, cu alte cuvinte se poate scrie un program
care s realizeze traducerea instruciunilor din LI n instruciuni din LM. Evident acest
program va fi scris (cel puin prima dat) utiliznd instruciuni din LM. Un astfel de program
se numete translator. Exist dou tipuri de translatoare: compilatoare i interpretoare. Dac
translatorul traduce ntreg programul scris n LI n instruciuni LM, obinnd un program scris
n LM care va putea fi utilizat ca atare ori de cte ori este nevoie, spunem c translatorul este
de tip compilator. Dac translatorul realizeaz recunoaterea unei instruciuni din LI, execut
secvena de instruciuni LM corespunztoare i apoi trece la urmtoarea instruciune din LI,
spunem c translatorul este de tip interpretor. Amndou tipurile de translator permit unui
programator n limbajul LI s ignore faptul c calculatorul pentru care scrie programul n LI
nu "nelege" direct acest limbaj. Este ca i cum la dispoziia acestui programator se gsete
un alt calculator, un calculator virtual avnd o arhitectur diferit de a celui real.
Pentru ca operaia de traducere s fie simpl este bine ca raportul ntre complexitatea
instruciunilor disponibile n LI i n LM s nu fie foarte mare. Corespunztor, limbajul LI
poate s fie nc prea simplu pentru descrierea unor aplicaii semnificative. n acest caz se
poate considera un nou limbaj LI' avnd instruciunile mai aproape de situaia ideal i se
poate utiliza limbajul LI pentru a construi calculatorul virtual care "tie" limbajul LI', asa cum
rezult din Fig. 1.17.
Desigur trei nu este n acest caz un numr fatidic, deci ierarhia de calculatoare i deci
de limbaje poate s aib mai multe nivele. Semnificativ este relaia dintre un limbaj i un
calculator virtual, i anume orice limbaj definete arhitectura unui calculator virtual care "tie"
ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
31
s execute programe scrise n acest limbaj. n acelasi timp orice calculator definete un limbaj
de programare.
Calculatorul virtual
LI
C3
Calculatorul virtual
LI
C2
Calculatorul real
LM
C1
programele scrise in limbaj masina se
executa direct pe C1
Programele scrise pe LI se executa
pe C1 prin compilare sau interpretare
Programele scrise in LI se executa
pe C3 prin compilare sau interpretare

Fig 1.17 Structura ierarhic de limbaje





1.5 Elemente de arhitectur i structur a unui CN
1.5.1 Concepte de baz

Un sistem de prelucrare numeric a datelor este format dintr-o colecie de module
(uniti funcionale) interconectate ntre ele. Caracteristicile constructive ale acestor uniti,
modul de interconectare a acestora, cile de comunicaie a datelor formeaz structura
sistemului de prelucrare numeric a datelor.
Fiecare modul la rndul lui poate s fie privit ca fiind format dintr-o Unitate de
Comand mai mult sau mai puin complex i resursele care asigur suportul prelucrrilor
controlate de unitatea de comand, reunite sub numele de Unitate de Execuie. Resursele
accesibile programatorului i modalitile de control a acestora prin interpretri concrete la
nivelul setului de instruciuni formeaz arhitectura sistemului de prelucrare numeric a
datelor.

Un repertoriu de instruciuni este specificat prin :

formatul instruciunilor;
semantica instruciunilor.

ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
32
Prin formatul instruciunilor se specific numrul de cuvinte de memorie utilizat
pentru memorarea fiecrui tip de instruciune i semnificaia cmpurilor care formeaz
instruciunea. n general o instruciune este compus din dou componente :
codul operaiei indic operaia efectuat de ctre instruciune;
cmpul de adrese (prezena acestui cmp depinde de tipul operaiei) specific
modul de obinere a operanzilor i eventual de memorare a rezultatului operaiei.

n proiectarea unui set de instruciuni trebuie s se considere o serie de factori ca de
exemplu:

- alegerea lungimii instruciunii influenteaz performanele UCP. Dac viteza de transfer
a memoriei este de t cuvinte pe secund i numrul mediu de cuvinte utilizate pentru o
instruciune este r, atunci memoria poate s asigure un flux de maximum t/r instruciuni pe
secund. Se observ deci c cu ct instruciunile sunt mai scurte cu att numrul de
instruciuni executate n unitatea de timp poate s fie mai mare deoarece faza de aducere a
unei instruciuni dureaz de regul mai mult dect timpul de execuie al unei instruciuni;

- alegerea lungimii cmpului cod operaie din instruciuni determin numrul de
instruciuni diferite ce pot fi codificate n cadrul acestui cmp;

- lungimea cuvintelor de memorie i deci a instruciunilor este de obicei un multiplu al
numrului de bii necesari pentru reprezentarea caracterelor pentru a permite utilizarea
eficient a memoriei pentru memorarea irurilor de caractere;

- alegerea lungimii cmpului utilizat pentru specificarea adresei unui operand determin
capacitatea memoriei ce poate fi adresat. Evident unitatea de adresare a memoriei (cuvntul)
poate avea la rndul ei diferite lungimi. Dac de exemplu unitatea de adresare a memoriei
este un cuvnt de 32 de bii atunci capacitatea memoriei adresabile va fi de patru ori mai mare
dect n cazul n care unitatea de adresare a memoriei este un cuvnt de 8 bii, pentru aceasi
lungime a adresei.

S considerm un format de instruciune compus din codul operaiei i o adres. S
presupunem c primul cmp ocup k bii iar al doilea n bii. Rezult deci c este posibil
codificarea a 2
k
operaii diferite iar spaiul de memorie adresabil este de 2
n
adrese diferite.
Dac acelai numr n + k de bii se mparte n k-1 pentru cmpul codului i n+1 pentru adres
se pot codifica de dou ori mai puine instruciuni dar n schimb se va putea adresa o memorie
cu o capacitate dubl. Se observ deci c n alegerea dimensiunii cmpurilor trebuie acceptat
un compromis ntre posibilitatea de a codifica ct mai multe tipuri de instruciuni i
posibilitatea de a adresa un spaiu de memorie ct mai mare.
ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
33
S considerm o UCP avnd instruciuni de 16 bii pentru care adresele se pot
specifica pe 4 bii. O soluie de proiectare const din realizarea unor instruciuni avnd codul
operaiei de 4 bii i trei cmpuri de adres pentru doi operanzi i un rezultat. n acest caz
rezult c sunt posibile numai 16 tipuri de instruciuni. O soluie care permite codificarea unui
numr mai mare de instruciuni const din utilizarea mai multor formate de instruciuni cu
aceai lungime, aa cum se vede n tabelul urmtor.


Se observ c n acest mod cu 16 bii se pot specifica 76 de instruciuni diferite.
O alt soluie const din utilizarea unui format de instruciuni care s admit
instruciuni de lungimi diferite. n acest caz se obine o utilizare mai bun a memoriei n
sensul c o instruciune pentru care trebuie s se specifice mai puine informaii poate s
ocupe un spaiu de memorie mai mic. n acest caz ns structura Unitii de Comand este
mai complex.


1.5.2 Moduri de adresare
Cod operaie rezultat operand1 operand2 observatt
0000 xxxx xxxx xxxx 15 instruciuni
0001 xxxx xxxx xxxx cu 3 adrese
...........
1110 xxxx xxxx xxxx
Cod operaie operand1 operand2 observatt
1111 0000 xxxx xxxx 14 instruciuni
1111 0001 xxxx xxxx cu 2 adrese
...........
1111 1101 xxxx xxxx
Cod operaie operand observatt
1111 1110 0000 xxxx 31 instruciuni
1111 1110 0001 xxxx cu o adresa
.....
1111 1111 1110 xxxx
Cod operaie observaii
1111 1111 1111 0000 16 instruciuni
1111 1111 1111 0001
....
1111 1111 1111 1111
ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
34

Instruciunile pot s fie clasificate n funcie de numrul de adrese pe care l specific.
Numrul de adrese dintr-o instruciune depinde de semantica instruciunii. Astfel pentru o
instruciune care realizeaz de exemplu operaia de adunare se pot specifica :
adresele operanzilor i a rezultatului, rezultnd o instruciune cu trei adrese;
adresele a doi operanzi dac rezultatul nlocuiete unul dintre operanzi, rezultnd o
instruciune cu dou adrese;
adresa unui operand dac cellalt operand i rezultatul sunt memorate n mod
implicit ntr-un registru de tip acumulator, rezultnd o instruciune cu o adres;
nici o adres dac adunarea se face ntre doi operanzi situai n vrful stivei,
rezultatul fiind plasat n vrful stivei, rezultnd astfel o instruciune cu zero adrese.

Considernd c registrele reprezint i ele un spaiu adresabil se poate considera c o
instruciune care adun coninutul a dou registre memornd rezultatul n unul dintre acestea
este o instruciune cu dou adrese ca i instruciunile care realizeaz aceleai operaii asupra
unor locaii de memorie.
Pentru instruciunile de salt adresa la care se face saltul reprezint operandul
instruciunii. Rezult corespunztor c o instruciune de salt este o instruciune cu o adres.
Ceea ce se memoreaz ntr-o instruciune pentru un operand sau pentru un rezultat este
de fapt informaia necesar pentru determinarea valorii operandului, respectiv adresa
rezultatului. Mecanismul prin care pornind de la informaia coninut n instruciune se ajunge
la valoarea operandului respectiv la adresa rezultatului poart numele de mod de adresare.
Numrul mare de moduri de adresare disponibile n calculatoarele moderne a rezultat din
necesitatea de a asigura o implementare ct mai simpl i eficient a unor structuri de date
complexe.
n cele ce urmeaz utilizm urmtoarele notaii:

r - registru accesibil programatorilor;
(r) - coninutul registrului r;
M[x] - coninutul locaiei de memorie aflat la adresa x;
d - valoarea unui deplasament coninut n instruciune;

Prezentm n continuare cele mai uzuale moduri de adresare caracteristice
calculatoarelor moderne.

1. Adresare la registre
n acest caz operandul este coninut ntr-un registru specificat n instruciune.
Obinerea valorii operandului nu necesit accese la memorie.

ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
35
2. Adresare prin registre
Pentru acest mod de adresare instruciunea conine specificarea unui registru r al crui
coninut reprezint adresa operandului. Rezult deci c valoarea operandului este M[(r)]

3. Adresare prin registre cu incrementare sau decrementare
Funcionarea acestui mod de adresare este similar cu a modului anterior din punctul
de vedere al mecanismului de obinere a valorii operandului. n mod suplimentar, coninutul
registrului utilizat este actualizat prin incrementare sau decrementare nainte sau dup
obinerea valorii operandului. Valoarea cu care se face incrementarea sau decrementarea este
egal cu lungimea ocupat n memorie de operand. Deci valoarea operandului este M[(r) +
N] sau M[(r) - N] iar coninutul registrului r devine (r) + N sau (r) - N unde N este lungimea
operandului.
n cazul n care acest tip de adresare se utilizeaz n legtura cu registrul CP se obine
modul de adresare imediat pentru care valoarea operandului este coninut n instruciune.
Evident actualizarea registrului utilizat (CP) se face dup obinerea valorii operandului.
n cazul n care registrul utilizat este registrul SP acest mod de adresare realizeaz
implementarea unei memorii de tip stiv pentru care accesul este permis prin intermediul
registrului SP numai la ultima informaie memorat. Pentru adresarea n stiv exist de obicei
dou tipuri de adresare: adresare pentru memorare (PUSH). pentru care actualizarea
coninutului registrului SP se face nainte de accesul la memorie i adresare pentru extragere
din stiv (POP) pentru care actualizarea coninutului registrului SP se face dup accesul la
memorie.
n general pentru un repertoriu de instruciuni se prevede un mod de adresare cu
decrementarea registrului nainte de referirea operandului (predecrementare) i un mod de
adresare cu incrementarea registrului dup referirea operandului (postincrementare). n acest
mod se poate realiza implementarea unei stive care crete de la adrese mari spre adrese mici.
Dac se alege cealalt pereche posibil: incrementare nainte de referirea operandului i
decrementare dup referirea operandului se poate implementa o stiv care crete de la adrese
mici spre adrese mari.

4. Adresare prin registre indirect cu incrementare sau decrementare
Acest mod de adresare se obine adugnd un nivel de indirectare la modul de adresare
anterior. n cazul n care operaia de actualizare a coninutului registrului r implicat n acest
mod de adresare se face nainte de obinerea operandului atunci valoarea operandului este M
[ M [ (r) + N] ] sau M [ M [ (r) - N] ] iar coninutul registrului r devine (r) + N sau (r) - N
unde N este lungimea operandului. n cazul n care operaia de actualizare a coninutului
registrului r implicat n acest mod de adresare se face dup obinerea operandului atunci
valoarea operandului este M [ M [ (r) ] ] cu acelai tip de actualizare al coninutului
registrului r. n cazul n care registrul utilizat este CP i incrementarea se face dup obinerea
ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
36
operandului se obine modul de adresare direct. Pentru acest tip de adresare, adresa
operandului este coninut n instruciune. Dac se mai adaug un nivel de indirectare, adic
adresa coninut n instruciune este adresa la care se gsete n memorie adresa operandului
atunci se obine modul de adresare indirect.

5. Adresare bazat
Se numete registru de baz un registru al crui coninut este utilizat pentru un calcul
de adres. Dac r este un registru de baz atunci valoarea operandului este M[(r)+d]. Se
observ c adresarea prin registru este o adresare bazat pentru care valoarea
deplasamentului este zero. Deoarece valoarea deplasamentului este coninut n instruciune,
obinerea sa poate presupune o citire din memorie. n general adresarea bazat este utilizat
pentru extinderea spaiului adresabil. S considerm de exemplu un format de instruciune
pentru care se utilizeaz k bii pentru un cmp de adres. n acest caz spaiul adresabil are
capacitatea de 2
k
. Dac se utilizeaz ns un registru de baz format din m bii, se observ c
spaiul de 2
k
bii poate s fie dispus oriunde ntr-un spaiu de memorie cu capacitatea de 2
m

+ 2
k
. De regul m > k. De exemplu dac k = 10 i m = 16 se obine accesul la zone de
memorie de 1K n cadrul unei memorii cu o capacitate de 64K.
n situaia n care numrul de bii afectai pentru d este suficient pentru a permite
accesul la ntreaga memorie se obine modul de adresare indexat n acest caz registrul r se
numete registru index. Modurile de adresare bazat sau indexat pot s fie utilizate pentru
implementarea accesului la un vector de date aflate n memorie la adrese succesive.
Actualizarea registrului de baz (index) necesar pentru trecerea de la un element al
vectorului la altul presupune adunarea (scderea) la coninutul curent al registrului a lungimii
unui element al vectorului. Se observ c din cele dou componente care particip la calculul
adresei operandului una este fix i anume valoarea d coninut n instruciune. Evident
aceast valoare poate s fie interpretat ca adresa de nceput a vectorului sau ca indice n
vector.
Dac registrul CP este utilizat ca registru de baz se obine modul de adresare
autorelativ. Acest tip de adresare se utilizeaz n general numai pentru instruciunile de salt.
Ceea ce se specific n instruciune este distana ntre adresa instruciunii curente i a
operandului referit de ctre instruciune. n acest ultim caz deplasarea trebuie s fie un numr
ntreg cu semn pentru a permite referiri nainte i napoi.

6. Adresare bazat i indexat
n cazul acestui tip de adresare se utilizeaz pentru calculul adresei coninutul a dou
registre r1 i r2. Valoarea operandului este n acest caz M [ (r1) + (r2) ]. Acest tip de adresare
este util pentru implementarea accesului la elementele unui vector; pentru care r1 conine
adresa de nceput a vectorului iar r2 conine valoarea indexului n acest vector pentru
elementul referit, nmulit cu lungimea unui element. Se observ c n acest caz cei doi
ARHITECTURA CALCULATOARELOR Nicolae Tapus, Trandafir Moisa, Cristian Morarescu
37
termeni care particip la calculul adresei pot s fie modificai, cu alte cuvinte att adresa de
nceput ct i indicele elementului referit pot s varieze spre deosebire de cazul adresrii
indexate.

Pe baza modurilor de adresare considerate anterior se pot construi i alte moduri de
adresare prin adugarea unor noi nivele de indirectare i prin adugarea unor operaii de
actualizare a coninutului registrelor coninute n instruciune nainte sau dup efectuarea
referirii la operand.

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