Sunteți pe pagina 1din 41

5

1 Introducere






Arhitectura calculatoarelor trateaz comportarea funcional a unui
calculator aa cum este vzut acesta de ctre programator. Acest punct de
vedere include aspecte ca mrimea i tipul datelor (de exemplu folosirea a
16 bii pentru a reprezenta un ntreg) i tipul operaiilor pe care le suport
sistemul (ca adiie, substracie, call subrutin).
Organizarea calculatorului trateaz relaia structural, care nu este
vizibil pentru programator, ntre elementele sistemului (de ex. interfeele
cu dispozitivele periferice, tipul i tehnologia folosit pentru memorii etc.)
Aceast lucrare i propune s trateze att arhitectura ct i organizarea
calculatoarelor, prin termenul de arhitectur fcndu-se referire la
ambele, arhitectur i organizare.
Exist conceptul de nivele n arhitectura calculatorului. Ideea de baz
este aceea c exist mai multe nivele de pe care un calculator poate fi privit,
de la nivelul cel mai nalt, de la care utilizatorul ruleaz programe, pn la
nivelul cel mai de jos, constnd din tranzistoare, rezistene i fire.
nainte de a discuta aceste nivele, vom trece n revist un scurt istoric al
sistemelor de calcul pentru a avea o perspectiv a evoluiei n timp a
acestora.


1.1 Scurt istoric

Unele dispozitive mecanice pentru controlul operaiilor complexe au
existat nc din anii 1500, cnd cilindrii rotitori cu cam erau folosii pentru
cutii muzicale, aa cum le cunoatem astzi.
Blaise Pascal (16231662) a construit o main de calcul funcional pe
cnd avea doar 19 ani (1642) pentru a-l ajuta pe tatl su, colector de taxe
al guvernului francez. Maina era n ntregime mecanic i putea s fac
numai adunri i scderi i exist i n ziua de astzi.
6
Treizeci de ani dup apariia calculatorului Pascaline, Gottfried
Wilhelm von Leibnitz (16461716) a construit o alt main mecanic
capabil s fac nmuliri i mpriri. De fapt, Leibnitz a reuit s
construiasc echivalentul unui calculator de buzunar cu patru operaii, cu
trei secole n urm.
Charles Babbage (17921871), profesor de matematic la Universitatea
din Cambridge, inventatorul vitezometrului, a proiectat i a construit
maina de calcul a diferenelor (the difference engine). De fapt, el nu a
construit niciodat o variant practic a mainii pe care o proiectase.
Babbage a trit n Anglia n perioada n care tabelele matematice erau
utilizate n navigaie i activiti tiinifice. Maina a fost proiectat s fac
doar adunri i scderi. Tabelele erau calculate manual i conineau erori.
Scopul a fost de a crea o main care s poat calcula tabele folosind un
singur algoritm, i anume, metoda diferenelor finite folosind polinoame.
Aceast main avea i un dispozitiv de ieire numit tan pentru a nscrie
rezultatul fiind, astfel, un precursor al mediilor periferice unic
inscripionabile de mai trziu (cartele perforate sau CD-ROM-uri). Succesul
acestei maini l-a determinat s se dedice unei alte maini-analytical
engine-care a fost construit i cu sprijinul guvernului. Aceasta poseda un
dispozitiv pentru branching (luarea deciziilor) i mijloace pentru
programare. Maina analitic avea 4 componente: magazia (memoria),
moara (unitatea de calcul), seciunea de intrare (cititorul de cartele
perforate) i seciunea de ieire (ieirea perforat i imprimat). Maina
citea instruciunile de pe band perforat i le executa. De exemplu, puteau
fi extrase dou numere din magazie, s fie aduse n moar i prelucrate
(adunate de exemplu) i s trimit rezultatul din nou n magazie. Putea
efectua salt condiionat n funcie de felul numrului-pozitiv sau negativ.
Prin perforarea a diferite programe, maina putea efectua diverse calcule
(lim, , etc). Deoarece maina era programabil (magazia avea 1000
cuvinte a cte 50 de cifre zecimale) avea nevoie de software. Pentru a
produce acest software Babbage a angajat o tnr, Ada Augusta Lovelace,
fiica poetului Lord Byron, aceasta devenind primul programator de
calculatoare din lume. Limbajul Ada a fost numit astfel n onoarea ei.
Marele dezavantaj al acestei maini era acela c nu a putut fi pus la
punct n ntregime datorit toleranelor mecanice imposibil de realizat cu
tehnologia secolului XIX, dar foarte multe calculatoare moderne au o
structur foarte asemntoare cu maina analitic.
La sfritul anilor 30, un student german, Konrad Zusse, a construit
o serie de maini de calcul automat folosind relee electromagnetice. Zusse
nu a cunoscut mainile lui Babbage i realizrile sale au fost distruse n
timpul bombardamentelor aliailor asupra Berlinului n 1944, deci munca
lui nu a influenat mainile ce au urmat.
7
n aceai perioad au mai existat i alte proiecte ale unor maini de
calcul cu relee.
- John Atanasoff de la State College of Iowa,
- George Stiblitz de la Bell Laboratories,
- Howard Aiken de la Harvard Mark I 1944. Cnd acesta din
urm a finalizat Mark II calculatoarele cu relee erau deja depite.


1.1.1 Prima generaie tuburile electronice

n timpul celui de al doilea rzboi mondial, submarinele germane (U
boot-urile) dispuneau de un sistem de comunicaie radio cu un cod criptat
numit ENIGMA. Serviciile secrete britanice au obinut o main ENIGMA
de la polonezi la nceputul rzboiului. Procesul de codare a mesajelor
criptate (codificate) era anevoios deoarece necesit un volum enorm de
calcule i, pentru a putea fi utilizate, acestea trebuiau efectuate la scurt
timp de la interceptarea mesajului. Problema a fost n final rezolvat cu
ajutorul matematicianului Alan Turing (19121954). Pentru a soluiona
problema decodificrii, guvernul britanic a construit la Bletchway Park
primul calculator numeric electronic din lume. Alan Turing a contribuit la
proiectarea acestei maini, care a devenit operaional n 1943 i a fost
numit COLOSSEUM.
ntre timp, n Statele Unite, John Mauchley i-a dat seama c armata
este interesat de sisteme de calcul. The Armya Ballistics Research
Laboratory (BRL) era agenia rspunztoare de realizarea tabelelor de
reglare a tirului pentru armele noi. Fr aceste tabele, armele noi i
artileria n general erau nefolositosre. Exista deci necesitatea de a obine
astfel de tabele rapid i cu o precizie ridicat. Mauchly, profesor de inginerie
electric la Universitatea din Pennsylvania, a fcut o propunere de grant
prin care a cerut fonduri pentru construirea unui calculator capabil s
calculeze tabele pentru traiectoriile balistice. n 1943 aceast cerere a fost
acceptat i John Mauchly, mpreun cu asistentul su J. Presper Eckert au
nceput s construiasc un calculator pe care l-au numit ENIAC (Electronic
Numerical Integrator and Computer). Acesta cntrea 30t, coninea 18.000
de tuburi electronice i consuma 140Kw. ENIAC putea efectua 5000 de
adunri pe secund i era programat prin 6000 de comutatoare multi
poziionale. Maina a fost terminat n 1946. ENIAC era mai mult o main
zecimal dect binar. Numerele erau reprezentate n form zecimal i
operaiile erau executate n sistemul zecimal. Memoria era constituit din
20 de acumulatori, fiecare fiind capabil s rein numere zecimale de 10
digii. Fiecare digit era reprezentat de 10 tuburi electronice. Terminat n
1946, deci prea trziu pentru a mai putea fi folosit n rzboi, ENIAC a
funcionat la BRL pn n 1955.
8
Eckert i Mauchley, care erau la Moore School at the University of
Pennsylvania, au nceput s lucreze la un alt calculator pe care l-au numit
EDVAC (Electronic Discrete Variable Automatic Computer). Proiectul a fost
compromis datorit faptului c acetia au prsit universitatea i i-au
creat propria companie n Philadelphia.
ntre timp, unul dintre cei cu care lucraser mpreun la ENIAC, John
von Neumann (1903-1957), la Institute for Advanced Studies at Princeton, a
trecut la construirea versiunii propii a EDVACului. John von Neumann i
colegii si au nceput n 1946 proiectarea unui nou calculator cu program
stocat, referit drept calculatorul IAS. EDVAC i IAS au fost primele
computere cu program stocat. Primul model funcional de calculator cu
program stocat a fost EDSAC, construit de Maurice Walkes la Cambridge
University 1947 i operaional n 1949. Calculatorul IAS, nc neterminat n
1952, a constituit un prototip pentru calculatoarele ce au urmat.

Modelul von Neumann

Calculatoarele convenionale digitale au o form comun care i este
atribuit lui von Neumann, dar istoria real este c o ntreag echip a fost
responsabil pentru elaborarea acestui model. De formaie matematician,
acesta a neles c un program poate fi reprezentat n form digital n
memoria calculatorului, mpreun cu datele asociate. Aritmetica binar
paralel putea deci nlocui cu succes aritmetica zecimal stngace folosit
de ENIAC, cu fiecare rang reprezentat de zece tuburi electronice (1 activ i 9
inactive).

Output
Unit
Automat
logic
(ALU)
Imput
Unit
Memory
Unit
Control
Unit


Fig. 1.1. Modelul von Neumann al calculatorului numeric


Modelul von Neumann const din cinci componente ca n figura 1.1.
9
Input Unit i Output Unit formeaz grupul dispozitivelor de intrare
ieire ce asigur instruciuni i date sistemului, care anterior au fost stocate
n Memorii Unit.
Instruciunile i datele sunt procesate de ALU, sub controlul unitii
Control Unit. Aceasta determin execuia instruciunilor una dup alta, aa
cum au fost ele memorate, att timp ct aceast secven nu este ntrerupt
de o instruciune de salt.
ALU i CU formeaz unitatea central (CPU).
Memoria calculatorului IAS era format din 1000 de locaii de stocare,
numite cuvinte, fiecare avnd 40 de digii binari (bii). Att datele ct i
instruciunile erau stocate aici. Deci numerele erau reprezentate n form
binar, iar fiecare instruciune era tot un cod binar. Fiecare numr era
reprezentat pe 39 de bii i un bit de semn. Un cuvnt putea conine, de
asemenea, dou instruciuni de 20 de bii, fiecare format din: un cod al
operaiei de 8 bii (opcode) specificnd operaia i 12 bii de adres ai unui
cuvnt din memorie.
Unitatea de control aduce instruciunile din memorie i acestea sunt
executate pe rnd. Pentru a putea realiza acest lucru, o structur mai
detaliat a mainii IAS relev faptul c att unitatea de control ct i ALU
posed locaii de stocare, numite registre, definite dup cum urmeaz:
- Memory buffer register (MBR) conine un cuvnt ce va fi stocat n
memorie sau e folosit pentru a recepiona un cuvnt din memorie,
- Memory address register (MAR) specific adresa n memorie a
cuvntului ce va fi scris/citit n MAR,
- Instruction register (IR) conine codul pe 8 bii al instruciunii ce se
execut,
- Instruction buffer register (IBR) folosit pentru a reine temporar a
doua instruciune dintr-un cuvnt de memorie,
- Program counter (PC) conine adresa urmtoarei perechi de
instruciuni ce va fi adus din memorie,
- Accumulator (AC) i multiplier quotient (MQ) folosit pentru a reine
temporar operanzii i rezultatul din ALU. De exemplu, rezultatul
multiplicrii a dou numere de 40 de bii este un numr de 80 de bii;
cei mai semnificativi 40 de bii sunt reinui n AC, iar cei mai puin
semnificativi n MQ.
Programul stocat sau memorat este cel mai important aspect al mainii
von Neumann. Un program este stocat n memoria calculatorului mpreun
cu datele. Dei n prezent cunoatem acest fapt ca un dat, anterior
dezvoltrii calculatoarelor cu program stocat, programele erau memorate pe
cartele, benzi perforate sau benzi magnetice. n calculatoarele cu program
memorat, programul poate fi manipulat ca i datele. Acest fapt a dat natere
compilatoarelor i sistemelor de operare i a fcut posibil marea
versabilitate pe care o au calculatoarele actuale.
10


1.1.2. A doua generaie tranzistoarele (1955 1965)

Tranzistorul a fost inventat la Bel Laboratories n 1947 de John
Bardeen, Walter Brattain i William Shockley. Tranzistorul este mai mic,
mai ieftin i disip mai puin cldur dect un tub electronic.
Primul calculator cu tranzistoare a fost construit n laboratorul Lincoln
al M.I.T. i a fost numit TX0 (Transistored experimental computer 0).
Urmtorul model a fost TX-2. Unul din inginerii care a lucrat la TX-2,
Keneth Olsen, a format n 1957 o companie numit Digital Equipment
Corporation (DEC). Primul calculator al acestei companii, PDP1, a aprut
n 1961, avea 4K cuvinte de 18 bii i ciclul main de 5 microsecunde.
Viteza acestuia era jumtate de cea a lui IBM 7090, modelul tranzistorizat
al lui IBM-709, dar costa 120.000$ fa de 1.000.000$, preul unui IBM-
7090. Astfel a aprut industria minicalculatoarelor.
Peste civa ani a aprut PDP -8, o main pe 12 bii, ce costa doar
16.000$.
IBM a construit modele 7090 menionate anterior i apoi 7094. Maina
7094 avea o memorie de 32K cuvinte pe 36 de bii i o durat a instruciunii
de 30-1,4 s. O variant redus a acesteia a constituit-o modelul 1401.
Arhitectura acestor maini pune n eviden un numr mare de periferice,
specific celei de-a doua generaii de calculatoare. Exist mai multe deosebiri
fa de calculatorul IAS, dar care n esen nu reprezint nimic. Cea mai
important deosebire o constituie canalele de date. Data channel este un
modul independent I/O cu propriul procesor i propriul set de instruciuni.
ntr-un sistem cu astfel de dispozitive, CPU nu execut instruciuni
detaliate de I/O. Astfel de instruciuni sunt stocate ntr-o memorie
principal pentru a fi executate de un procesor dedicat n cadrul structurii
canalului de date. CPU iniializeaz un transfer I/O trimind un semnal de
control ctre canalul de date, acesta urmnd s execute secvena de
instruciuni din memorie. Astfel se elibereaz CPU de un timp de procesare
considerabil. Alt noutate o constituie multiplexorul care este punctul
terminal al canalelor de date i legtura cu CPU i memoria. Multiplexorul
mparte timpul de acces la memorie ntre CPU i canalele de date,
permindu-le acestora s lucreze independent.
n acelai an n care IBM a introdus IBM System/360, DEC a scos pe
pia un calculator care nu poate s nu fie menionat ntr-un istoric al
calculatoarelor-PDP-8, numit la vremea respectiv minicalculator.
Calculatoarele din aceast familie (PDP-8 1965, PDP-8/5 1966, PDP-8/1
1968, PDP-8/L 1968, PDP-8/E 1971, PDP-8/M 1972, PDP-8/A 1975)
s-au vndut n urntorii 12 ani n peste 50.000 de exemplare i a adus DEC
pe poziia a doua n rndul productorilor de calculatoare
11
PDP -8 avea o invenie major: o singur magistral, omnibus-ul, ca n
figura 1.2.


CPU
(ALU,registri
control unit)
Algoritmi
Input and
Output (I/0)
System
bus


Fig. 1.2. Data Bus, Adres Bus, Control Bus


Figura 1.2 prezint modelul bazat pe bus al unui calculator. Acest model
partiioneaz un sistem calculator n 3 subuniti: CPU, memorie i
dispozitive I/O. Acest model este de fapt o rafinare a modelului von
Neumann , n care ALU i CU sunt combinate ntr-o singur unitate CPU.
Deasemenea unitile I/O sunt combinate ntr-o singura unitate I/O.
Mai important este modelul bus-ului sistemului, o cale comun
partajat, alctuit din data bus (poart informaia ce trebuie transmis),
address bus (identific unde este trimis informaia) i control bus (descrie
cum este transmis informaia i n ce manier). Mai exist de asemenea un
power bus care nu este figurat, dar a crui prezen este subneleas.
Busul de date permite transferul datelor ntre componentele sistemului.
Unele CPU au bus-uri separate ctre i dinspre CPU, caz n care avem data-
in bus i data-out bus, cel mai adesea exist un singur bus ntre entiti ce
comunic ntre ele, fiecare entitate trebuie s aib identitate distinct
(adres distinct). n unele computere toate adresele se presupun a fi adrese
de memorie, chiar dac sunt de fapt pri ale memoriei, sau device-urile I/0,
n timp ce alte computere device-urile I/0 au adrese separate de I/0.
O adres de memorie sau o locaie de memorie identific o locaie unde
data este stocat.
Revenind la istoricul calculatoarelor, n anii 60 IBM a lansat maina
7094, o for n calculul tiinific, dar i o main de dimensiuni reduse i
cost sczut 1401.
n 1964, o nou companie Control Data Corp. (CDC) a lansat maina
6600, care era aproape de 10 ori mai rapid dect 7904. Interiorul UCP era
o main masiv paralel. 6600 avea n interior o serie de mici uniti
procesoare. UCP putea s fie astfel n ntregime dedicat calculului, n timp
ce managementul lucrrilor de I/O era lsat pe seama acestor uniti
procesoare. Maina 6600 implementa paralelismul de timp control-flow
12
paralelism i se poate spune c a fost cu o decad naintea timpului su.
Multe din ideile cheie ce stau la baza calculatoarelor moderne i au sursa
direct n CDC 6600.


1.1.3. A treia generaie circuitele integrate (1965
1980)

Circuitul integrat de siliciu a fost inventat de Robert Noyce n 1958.
Circuitele integrate de la nceputul acestei generaii conineau cam 10000
de tranzistoare integrate pe chip.
Elementele de baz ale unui calculator digital, aa cum le tim, permit
stocarea, transferul, procesarea datelor i funcii de control. Pentru asta
doar dou tipuri fundamentale de componente sunt necesare: pori logice i
celule de memorie. Prin interconectarea unui numr mare de astfel de
dispozitive se poate obine un calculator. Se poate face legtura ntre aceste
dispozitive i cele patru funcii de baz astfel: stocarea datelor - asigurat
de celule de memorie, procesarea datelor - asigurat de pori logice,
transferul datelor - calea dintre componentele folosite pentru a transfera
datele din memorie n memorie sau din memorie n pori i apoi n memorie,
control - calea dintre componente conine semnale de control. Iniial numai
cteva pori sau celule de memorie puteau fi obinute pe o plachet de
siliciu. Evoluia tehnologic a acestor circuite a fost descris de faimoasa
lege a lui Moore. George Moore, cofondator al Intel n 1965, a observat c
numrul de tranzistori integrai pe un chip se dubleaz n fiecare an i a
prezis c acest trend va continua. Spre surprinderea multora, inclusiv a lui
Moore, acest ritm de integrare a continuat n deceniile urmtoare. Ritmul a
cunoscut a scdere n anii '70, dar a continuat apoi cu dublarea numrului
de tranzistori integrai la fiecare 12 luni.
Consecinele legii lui Moore sunt profunde:
- costul circuitelor integrate a rmas relativ constant pe durata
creterii n densitate a acestora. Aceasta nseamn c preul
componentelor logice i a memoriei au sczut cu o rat dramatic;
- cu creterea integrrii circuitelor, cile electrice devin mai scurte i
mai subiri, ceea ce permite creterea vitezei de operare;
- calculatorul devine din ce n ce mai mic, deci convenabil de plasat
ntr-o varietate de medii;
- se reduce puterea necesar i costul echipamentelor de rcire;
- circuitul integrat are o fiabilitate mult mai mare dect acelai circuit
realizat cu elemente discrete.
Dou maini au marcat nceputul acestei noi generaii: IBM System/360
i DEC PDP-8.
13
n 1964, pentru nlocuirea mainilor 7094 i 1401, IBM a luat o decizie
radical. A introdus o singur linie de produse System/360, bazat pe circuite
integrate, care a fost conceput att pentru calcule tiinifice ct i pentru
calcul comercial. Astfel, au fost create 5 modele 30, 40, 50, 65 i 75. Acestea
difereau prin performan i cost. 1401 putea fi nlocuit cu 360 Model 30 iar
7094 cu 360 Model 65. Ciclul unei instruciuni varia ntre 1 microsecund
(model 30) i 0,2 microsecunde (model 75), iar memoria principal era ntre
64k (model 30) i 512k (model 75). Aceste maini au deinut timp de peste o
decad o cot de pia de 70%. O alt inovaie major a mainii 360 a fost
multiprogramarea (multiprogramming), care implic existena mai multor
programe n memorie n acelai timp, astfel nct, atunci cnd unul ateapt
pentru terminarea unei operaii de I/0, un altul poate face calcule.
Maina 360 a fost de asemenea, prima care putea emula (simula) alte
calculatoare. Modelele 30 puteau emula 1401 sau 7049 astfel nct
programele binare fcute pentru acestea puteau rula pe 360 fr a fi
modificate. Emularea era uor de fcut deoarece toate modelele iniiale erau
microprogramate. O alt caracteristic a mainii 360 a fost un spaiu imens
de adrese la acea vreme (2
24
octei = 16 megaoctei).
De asemenea, un pas nainte l-a constituit a treia generaie introdus de
DEC, PDP -11, succesorul pe 16 bii al lui PDP-8.. Att 360 ct i PDP-11
aveau registre orientate pe cuvnt i o memorie orientat pe octei.


1.1.4. Ultimele generaii integrarea
pe scar foarte larg (1980 -?)

Dup a treia generaie, nu exist un acord general cu privire la definirea
generaiilor de calculatoare. Creterea gradului de integrare sugereaz c ar
fi 4 sau 5 generaii de calculatoare. Cu introducerea integrrii pe scar
larg (Large Scale Integration- LSI, peste 1000 de componente pe chip), s-a
ajuns ulterior n anii `80 la integrarea pe scar foarte larg (Very Large
Scale Integration VLSI, peste 100.000 de componente pe chip) fapt ce a
permis s se compacteze, n final, milioane de tranzistoare pe un chip. De
asemenea memoria calculatoarelor a fost influenat decisiv de apariia
VLSI. Primul chip integrat de memorie semiconductore a fost produs n
1970 de Fairchild Semiconductors. Acesta putea stoca 256 de bii i costul
era mai mare dect al memoriilor de ferit de aceeai capacitate. n 1974
costul memoriilor integrate a sczut sub al celor cu miez de ferit. Din 1970,
memoriile semiconductore au trecut prin mai mult de zece generaii: 1K, 4K,
16K, 64K, 256K, 1M, 4M, 16M, 64M, 256M, 1G.
Creterea gradului de integrare a dus i la apariia microprocesoarelor
i a calculatoarelor personale. n 1971 Intel a produs procesorul Intel 4004.
14
Acesta era primul chip ce coninea toate elemente unui CPU pe o singur
pastil de siliciu. 4004 putea s adune dou numere pe 4 bii sau s le
nmuleasc prin adunri repetate. Evoluia microprocesoarelor se poate
vedea prin numrul de bii pe care opereaz procesorul. Nu exist o unitate
de msur clar pentru aceasta, dar poate cea mai bun msur este
mrimea bus-ului de date. Alt msur ar putea fi mrimea acumulatorului
sau a registrelor generale. Uneori acestea coincid, dar nu ntotdeauna. n
1972 a fost lansat primul procesor pe 8 bii, Intel 8008, iar n 1974 Intel
8080. Intel 8080 a fost primul micropocesor proiectat pentru a fi CPU ntr-
un microcalculator de uz general. La nceputul anilor 80 au aprut
microprocesoarele pe 16 bii, unul dintre acestea fiind Intel 8086. n 1981
Bell Laboratories i Hewlett-Packard au produs primul microprocesor pe 32
de bii, iar Intel a produs primul su microprocesor pe 32 de bii, Intel
80386, n 1985.
Primele microcalculatoare erau vndute sub forma de kituri. Fiecare kit
coninea o plac de baz, cteva cipuri, incluznd i un Intel8080 sau Z80, o
surs i, eventual o unitate de disc de 8 inch. A aprut apoi sistemul de
operare CP/M care a devenit destul de rspndit pe I8080.
Un alt calculator personal timpuriu a fost Apple i apoi Apple II,
proiectate de Steve Jobs i Steve Wozniak.
Dup ctva timp IBM s-a hotrt s intre pe piaa calculatoarelor
personale cnd a constatat c aceasta reprezint efectiv o pia. n loc s
proiecteze maina de la zero, folosind componente IBM, a nsrcinat pe un
director executiv cu acest proiect. Acesta a dezvoltat proiectul departe de
sediul IBM, n Boca Raton, Florida, i a ales Intel 8080 ca UCP al
calculatorului i a construit calculatorul personal IBM. Acesta a fost lansat
n 1981 i a devenit cel mai vndut calculator din lume.
IBM a fcut ceva necaracteristic. n loc s menin secretul proiectului
noii maini sau s o protejeze cu patente, aa cum fcea n mod obinuit, a
publicat planurile complete, inclusive diagramele circuitelor ntr-o carte pe
care a vndut-o cu 49$ pentru a permite altor companii s produc plci
direct ncorporabile IBM PC i, deci, pentru a crete flexibilitatea n
popularitatea calculatorului personal. Urmarea a fost c multe companii au
nceput s produc clone ale PC-ului, de multe ori la preuri mult mai mici
dect IBM. S-a creat astfel o ntreag industrie.
Dei alte companii produceau PC-uri cu CPU-ri ce nu erau bazate pe
microprocesoare Intel, de exemplu Commodore, Atari, Amiga, Apple,
puterea IBM PC-lui a fcut ca acestea s fie scoase de pe pia. Numai o
mic parte au supraveuit acoperind segmente de pia cum ar fi staiile de
lucru sau supercalculatoarele.
Versiunea iniial a IBM PC era dotat cu sistemul de operare MS-DOS
produs de Microsoft Corporation. Deoarece Intel producea cipuri din ce n ce
mai puternice IBM i Microsoft au dezvoltat un succesor al MS-DOS, numit
15
OS/2 ce avea o interfa grafic similar cu cea de la Apple MacIntosh. ntre
timp Microsoft a dezvoltat propriul su system de operare, Windows, ce
lucra peste MS-DOS, util n cazul n care OS/2 nu s-ar fi impus. Pe scurt
OS/2 nu s-a impus i Microsoft a continuat dezvoltarea sistemului Windows,
devenit astzi un standard.
De la mijlocul anilor 80 a nceput s se impun o structur numit RISC
(Reduced Instruction Set Computer) care s nlocuiasc arhitecturile CISC
complicate cu unele mai simple i mai rapide. Astfel de maini puteau s
execute mai multe instruciuni n acelai timp. Conceptele RISC, CISC i
superscalar vor fi introduse n alt subcapitol.


1.2. Organizarea structurat a calculatoarelor

1.2.1 Limbaje, niveluri i maini virtuale

Calculatoarele utilizeaz un set de instruciuni main. Acestea
formeaz mpreun un limbaj pe care l vom numi L0. Programele scrise de
utilizator sunt ntr-un limbaj L1, mult mai accesibil dect limbajul mainii.
O metod posibil de executare a unui program scris n L1 este aceea de
a nlocui fiecare instruciune din acest limbaj cu o secven echivalent de
instruciuni L0.
Programul rezultat este format numai din instruciuni scrise numai n
limbajul L0. O astfel de tehnic se numete traducere (translation).
Cea de-a doua tehnic const n a scrie un program n L0 care preia
programe din L1 ca date de intrare i le execut examinnd fiecare
instruciune pe rnd i executnd secvena echivalent de instruciuni din
L0. O astfel de tehnic se numete interpretare (interpretation), iar
programul care o realizeaz se numete interpretor.
Traducerea i interpretarea sunt similare.
n loc de a gndi n termeni de traducere i interpretare de multe ori este
mai simplu s ne imaginm existena unui calculator virtual sau main
virtual (virtual machine) al crui limbaj main este L1. S numim aceast
main virtual M1 i s numim maina virtual corespunztoare lui L0 cu
M0. Dac o astfel de main ar putea fi construit la un pre rezonabil nu
am mai putea avea nevoie de L0 sau de o main care s execute programe
n L0. Programatorii ar putea scrie programele n L1 i le-ar putea executa
direct. Dar maina virtual ce suport limbajul L1 este prea scump sau
prea complicat pentru a putea fi realizat fizic. Totui oamenii au
posibilitatea s scrie programe pentru aceasta. Aceste programe vor fi
interpretate sau traduse de un program scris n L1 care poate fi executat pe
16
calculatorul existent. Pe scurt, pot fi scrise programe pentru maini virtuale
ca i cum acestea ar exista n realitate.
Pentru ca traducerea i interpretarea s fie practic limbajele L1 i L0
nu trebuie s fie prea diferite. Acesta nseamn c L1, dei mai bun ca L0,
va fi nepotrivit pentru multe aplicaii. Abordarea evident este de a inventa
un alt set de instruciuni mai prietenos cu utilizatorul i mai puin orientat
main ca L1. Acest al treilea set formeaz un nou limbaj pe care l numim
L2 (cu maina virtual corespunztoare M2). Programatorii pot scrie
programe n L2, ca i cum o main virtual cu limbajul L2 ar exista n
realitate. Astfel de programe pot fi traduse n L1 sau, alternativ, executate
cu un interpretor scris n L1.
Inventarea unei serii ntregi de limbaje, fiecare mai convenabil dect
predecesoarele, poate continua pn la crearea unui limbaj potrivit. Fiecare
limbaj folosete predecesorul su ca baz, deci, folosind aceast tehnic
putem vedea calculatorul ca o serie de straturi (layers) sau nivele unul
deasupra celuilalt ca n figura 1.3.


Nivelul n
Maina virtual M
n
cu limbaj main L
n
Programele n L
n
s fie
interpretoare ce ruleaz pe M
d
fie traduse n limbajul L
m-1
Maina virtual M
3
cu limbaj main L
3
Nivelul 3
Maina virtual M
2
cu limbaj main L
2
Nivelul 2
Maina virtual M
1
cu limbaj main L
1
Nivelul 1
Program n L
1
pot fi interpretate de
un interpretor ce ruleaz pe M
0
fie
traduse n L
0
Nivelul 0
Calculatorul real M
0
cu limbaj L
0
Programele n L
0
pot fi direct
executate n circuitele electronice


Figura 1.3.


Un calculator cu n niveluri poate fi vzut ca n maini virtuale diferite,
fiecare cu un limbaj main diferit. Numai programele scrise n L0 pot fi
direct executate de circuitele electronice, fr a necesita o traducere sau
interpretare.
Un programator ce a scris un program pentru maina virtual de nivel n
nu trebuie s se preocupe de interpretrile i translatrile de dedesubt. Cei
17
mai muli utilizatori ce folosesc o main de nivel n sunt interesai de
ultimul nivel, deci de limbajul L
n
care seamn cel mai puin cu limbajul
main de pe nivelul de baz. Cei care sunt interesai s neleag cum
funcioneaz de fapt un calculator trebuie s studieze toate nivelurile. Cei
interesai de proiectarea unui calculator sau a unui nou nivel trebuie de
asemenea, s fie familiarizai i cu alte niveluri dect cele de sus.


1.2.2. Maini multinivel contemporane

Cele mai multe calculatoare moderne sunt formate din dou sau mai
multe niveluri. Exist pn la 6 niveluri ca n Figura 1.4. Nivelul 0
corespunde structurii hardware a mainii. Circuitele execut programele n
limbaj main de pe nivelul 1. Trebuie menionat existena unui nivel
suplimentar, aflat sub nivelul 0. Acest nivel, care nu apare n figur, ine de
domeniul ingineriei electrice i se numete nivelul echipamentelor (device
level).


Hardware
Nive lul 5
Nive lul limbaju lui
orientat pe aplicaie
Traducere (co mpilare )

Nive lul limbaju lui de
as amblare
Nive lul 4
Nive lul ma in i
nivelul s is temu lui de
operare
Nive lul 3
Nive lul a rhitectur
s etului de
ins truciuni
Nivelul 2 ( ISA)
Interpretare paria l
(s is tem de operare)
Nive lul 1
Nive lul
microca lculatoarelor
Traducerea (as amb lor)

Interpretarea ( microprogra m)
s au executare direct
Nive lul logic d igital
Nive lul 0


Figura 1.4.


La nivelul cel mai de jos avem nivelul logic digital, format din pori. Dei
sunt alctuite din tranzistoare, porile pot fi modelate cu acuratee ca
18
circuite digitale. Fiecare poart are una sau mai multe intrri digitale (0
sau 1 logic) i calculeaz, n funcie de acestea o valoare de ieire pe baza
unei funcii simple cum ar fi I, SAU, NU. Cteva pori combinate pot forma
o memorie de un bit, ce poate stoca 0 sau 1.
Memoriile de un bit pot fi combinate n grupuri de 16, 32 sau 64 (de ex.)
pentru a forma registre. Fiecare registru conine un numr binar pn la o
anumit valoare.
Urmeaz nivelul microarhitecturii. La acest nivel avem n mod obinuit o
colecie de 8 pn la 32 de registre care formeaz o memorie local i un
circuit UAL ce poate executa operaii aritmetice simple. Registrele sunt
conectate la UAL pentru a forma o cale de date (data path) prin care se
transmit datele. Operaiile principale ale cii de date constau n selecia a 1
sau 2 regitri asupra crora acioneaz UAL, de exemplu le adun i
rezultatul este stocat apoi n unul din regitri.
Pe unele maini operaiile cii de date sunt controlate de un program
numit microprogram. Pe alte maini calea de date este controlat direct prin
hardware.
Pe mainile cu control software al cii de date, microprogramul este un
interpretor al instruciunilor de pe nivelul 2. Acesta extrage, examineaz i
execut instruciunile secvenial folosind pentru aceasta calea de date. De
exemplu pentru ADD se va extrage intruciunea, se vor localiza i aduce n
registru operanzii, UAL calculeaz suma i n final rezultatul va fi depus
ntr-un registru. Pe o main cu control hardware al cii de date se vor
executa paii similari dar fr ajutorul unui program memorat explicit
pentru controlul interpretrii instruciunilor de pe nivelul 2.
Nivelul 2 este nivelul arhitecturii setului de instruciuni (sau nivelul ISA
Instruction Set Arhitecture). Fiecare productor de calculatoare public
un manual ce cuprinde i acest set de instruciuni. Aceste manuale trateaz
nivelul ISA, dar i nivelele de dedesupt.
Urmtorul nivel este de obicei un nivel hibrid. Cele mai multe din
instruciuni sunt de obicei, de asemenea, intruciuni de nivelul ISA. n plus
exist un set de instruciuni noi, o organizare diferit a memoriei,
posibilitatea de executare concurent a dou sau mai multe programe i
diverse alte caracteristici. Exist mai multe posibiliti de proiectare a
nivelului 3 dect n cazul nivelurilor 1 i 2.
Noile faciliti adugate pe nivelul 3 sunt realizate de un interpretor
care se execut de pe nivelul 2, interpretor numit sistem de operare din
motive istorice. Instruciunile de pe nivelul 3 ce sunt identice cu cele de pe
nivelul 2 sunt executate direct de microprogram (sau controlate hardware)
i nu de sistemul de operare. Astfel spus, unele instruciuni de pe nivelul 3
sunt interpretate de sistemul de operare, iar alte instruciuni de pe nivelul 3
sunt interpretate direct de microprogram. Aceasta este semnificaia
19
termenului hibrid folosit anterior. Vom numi acest nivel , nivelul main
al sistemului de operare.
Primele trei niveluri ne sunt proiectate a fi utilizate de programatorul
obinuit. Ele sunt concepute, n principal, pentru execuia interpretoarelor
i translatoarelor necesare susinerii nivelurilor superioare. Aceste
interpretoare i translatoare sunt scrise de programatorii de sistem, puini
la numr, care sunt specializai n proiectarea i implementarea de noi
maini virtuale. Nivelul 4 i cele superioare sunt destinate programatorilor
de aplicaii.
O alt modificare ce apare pe nivelul 4 este metoda prin care sunt
susinute nivelurile superioare. Nivelurile 2 i 3 sunt ntodeauna
interpretate . Nivelurile 4 i 5 i altele superioare sunt, de obicei, susinute
de translatoare, dei nu ntotdeauna.
O alt diferen ntre nivelele 1,2,3 i 4,5 este natura limbajului oferit.
Limbajele main ale nivelurilor 1,2,3 sunt numerice. ncepnd cu nivelul 4
limbajele conin cuvinte sau abrevieri pe nelesul oamenilor.
Nivelul 4, nivelul limbajului de ansamblare, este de fapt o form
simbolic pentru unul din limbajele inferioare. Acest limbaj ofer
utilizatorilor o metod de a scrie programe pentru nivelurile 1, 2, 3 ntr-o
form care nu este chiar aa de dificil ca cea a limbajelor virtuale.
Programul care efectueaz traducerea de pe acest nivel se numete
asamblor (assembler).
Nivelul 5 conine de obicei limbaje proiectate pentru a fi utilizate pentru
programatori de aplicaii. Aceste limbaje sunt frecvent numite limbaje de
nivel nalt. Exist sute de astfel de limbaje. Dintre cele mai cunoscute se
numr C, C++, BASIC, JAVA, LISP, PROLOG, PASCAL. Programele
scrise n aceste limbaje sunt traduse pentru nivelurile 3, 4 de translatoare
cunoscute sub numele de compilatoare, dei acestea pot fi uneori
interpretate. De exemplu., programele scrise n Java sunt deseori
interpretate. n unele cazuri nivelul 5 reprezint un interpretor pentru un
domeniu aplicativ, particular, de exemplu calcul simbolic.
n esen calculatoarele sunt proiectate ca o serie de niveluri, fiecare
nivel fiind construit pe baza precedecesorului su. Fiecare nivel reprezint o
abstractizare distinct cu obiecte i operaii diferite. Mulimea de tipuri de
date, operaii i caracteristici ale fiecrui nivel se numete arhitectur.
Arhitectura se refer la aspecte care sunt vizibile pentru utilizatorul unui
nivel. Diferite caracteristici vzute de programator, de exemplu memoria
existent, sunt pri ale arhitecturii. Aspectele complementare, de exemplu
tehnologia de realizare a cipurilor de memorie nu fac parte din arhitectur
(ci din organizare). n practica comun arhitectura calculatoarelor i
organizarea calculatoarelor nseamn acelai lucru.


20
1.2.3. Evoluia mainilor multinivel

Circuitele electronice mpreun cu memoria i dispozitivele I/0 formeaz
partea hardware a calculatorului. Hardware e format din obiecte tangibile.
Partea software const din algoritmi i reprezentarea acestora n calculator.
Programele pot fi memorate pe discuri de mas, discuri flexibile, CD-rom i
alte suporturi, dar esena software este setul de instruciuni ce formeaz
programul i nu mediile fizice pe care acestea sunt memorate.
n cazul primelor calculatoare exist o diferen clar ntre hardware i
software. n timp aceast diferen s-a estompat considerabil datorit
elaborrii eliminrii sau compactrii unor niveluri o dat cu evoluia
calculatoarelor.
Orice operaie executat prin software poate fi foarte bine construit
direct n hardware, de preferin, dup ce este destul de bine neleas. i
reversul este adevrat: orice instruciune executat hardware poate fi
simulat prin soft. Decizia de a realiza anumite funcii hardware i altele
software depinde de factori cum sunt: costul, viteza ,sigurana n funionare
i evoluia viitoare.

Microprogramarea.
Primele calculatoare digitale din anii 40 aveau doar dou niveluri:
nivelul ISA n care se fcea toat programarea i nivelul logic digital.
n 1951 Maurice Wilkes de la Cambridge University a avut ideea
proiectrii unui calculator cu trei niveluri. Acesta trebuia s aib un
interpretor cablat nemodificabil (microprogramul) ale crui funcii trebuiau
s execute programul de pe nivelul ISA prin interpretare. Deoarece n acest
caz hard-ul trebuia s execute numai microprograme, cu un set limitat de
instruciuni, era nevoie de mai puine circuite electronice. Multe maini de
acest tip s-au construit n ani 60 i 70( de exemplu PDP11 al DEC). n anii
`70 ideea ca nivelul ISA s fie interpretat de un microprogram a devenit
dominant.

Apariia sistemului de operare
Acestea au aprut n anii `60 pe sistemele batch processing. Ideea a fost
s existe un program numit sistem de operare rezindent n calculator.
Acesta a fost gndit n scopul uurrii sarcinii operatorilor i pentru a
micora timpii mori. n anii urmtori aceste programe s-au dezvoltat pn
cnd au nceput s semene cu un nou nivel. Cteva din instruciunile
acestui nou nivel erau identice cu instruciunile de pe nivelul ISA, dar
altele, n special instruciunile de I/0, erau complet diferite. Aceste noi
instruciuni erau numite macro-uri ale sistemului de operare sau apeluri de
supervisor. Termenul uzual n present este apel de sistem (system call).

21
Migrarea ctre microcod i eliminarea microprogramrii
O dat cu microprogramarea, proiectanii i-au dat seama c pot aduga
noi instruciuni numai prin extinderea microprogramului. Deci, pot aduga
hardware (noi instruciuni main) prin programare. Acest fapt a condus
la cretere consistent a setului main, aprnd pe aceleai calculatoare
seturi de instruciuni din ce n ce mai mari, mai puternice.
De exemplu unele maini aveau o instruciune INC (adun unu la un
numr). Pentru c mainile aveau i o instruciune ADD general, existent
acestei instruciuni (ADD+1) nu era necesar. Totui instruciunea INC s-a
impus, fiind de obicei mai rapid dect ADD.
Multe din instruciunile adugate includeau adesea
-instruciuni pentru nmulire/mprire ntregi;
- instruciuni pentru aritmetic n virgul mobil;
- instruciuni pentru apelul i revenirea din procedeuri;
- instruciuni pentru creterea vitezei ciclurilor;
- instruciuni pentru tratarea irurilor de caractere.
Apoi au nceput s caute alte instruciuni pe care s le introduc n
microprograme:
- instruciuni pentru calcul matricial;
- caracteristici ce permit programelor s fie mutate n memorie dup ce
au nceput s ruleze;
- sistem de ntreruperi ce activeaz calculul de ndat ce operaia I/0 a
fost terminat;
- posibilitatea de a suspenda un program i de a ncepe altul.
Microprogramele au devenit din ce n ce mai mari prin anii `70 i aveau
tendina s devin din ce n ce mai lente pe msur ce au acumulat mai
multe faciliti. ntre timp se putea crete viteza proceselor prin eliminarea
microprogramrii, reducerii drastic a setului de instruciuni i executarea
setului rmas direct pe main (controlul hardware al cii de date).
Toate acestea demonstreaz c grania dintre hardware i software este
fluid, arbitrar i n continu schimbare. Multe dintre delimitrile ntre
nivelurile prezentate anterior sunt fluide i reflect situaia din prezent.
Dar din punct de vedere al programatorului nu este important cum este de
fapt implementat o instruciune. Programnd n ISA, instruciunea de
nmulire poate fi utilizat ca i cum ar fi o instruciune hardware, fr a ne
preocupa cum este executat. Ce este hardware pentru o persoana poate fi
software pentru alta. Vom reveni la aceast discuie.


1.3. Procesoare (UCP)

n figura 1.1 este prezentat organizarea unui calculator simplu,
organizat n jurul unei magistrale.
22



UAL
Unitate
Control
...
Registri
Memoria
principala
Disp
I/0
Memorie
extern
magistrala
sistemului

Figura 1.1.


Componentele sunt conectate printr-o magistral; aceasta este format
dintr-o mulime de fire paralele pe care sunt transmise adrese, date i
semnale de control. Magistralele se pot afla n exteriorul UCP conectnd o
memorie i dispozitivele I/0, dar i n interiorul UCP.
UCP este alctuit din mai multe pri distincte: unitatea de control
rspunde de extragerea instruciunilor din memoria principal i
executarea lor, iar UAL execut operaiile necesare ndeplinirii
instruciunilor.
UCP mai conine i o memorie redus ca dimensiune, foarte rapid,
plasat pentru depozitarea rezultatelor temporare i a anumitor informaii
de control. Aceasta e format dintr-un numr de regitri. De obicei toate
registrele au aceai dimensiune. Registrele pot fi citite i scrise cu mare
vitez deoarece se afl n interiorul UCP. Cel mai important registru este
PC (program counter) care indic instruciunea urmtoare ce va fi extras
pentru execuie. Important este i registrul IP registru de instruciuni
(instruction register), n care se pstreaz instruciunea n curs de execuie.
Mai exist i alte registre, de uz general i altele pentru scopuri bine
determinate.


1.3.1. Organizarea UCP

Organizarea intern a unei pri dintr-o UCP von Neumann tipic este
dat mai n detaliu n Fig. 1.2.

23


A + B
A
B
A B
U A L
A + B


Fig. 1.2. Calea de date a unei maini von Neumann tipice


Figura reprezint aa numita cale de date i include registre (ntre 1 i
32), UAL i mai multe magistrale de legtur. Registrele trimit date ctre
cele 2 registre de intrare n UAL, notate A i B. Acestea au rolul de a pstra
datele de intrare ale UAL n timp ce acesta calculeaz. UAL execut asupra
datelor operaii simple (adunri, scderi, funcii logice) al cror rezultat este
depus ulterior tot n registre prin intermediul registrului de ieire. Ulterior
registrul poate fi scris (adic depozitat) n memorie. n exemplul ilustrat
este prezentat operaia de adunare.
Majoritatea instruciunilor fac parte din categoria registrumemorie sau
registruregistru. Instruciunile registru-memorie permit cuvintelor din
memorie s fie ncrcate n registre, unde pot fi folosite, de exemplu, ca date
de intrare pentru UAL, Altele sunt folosite pentru depozitarea n memorie.
Cuvintele sunt uniti de date transferate ntre memorie i registru.
Un cuvnt are lungimea variabil, n funcie de calculatorul de care
discutm. Subiectul se va detalia n capitolul privind memoria i
organizarea memoriei.
O astfel de instruciune extrage doi operatori din registru, i aduce n
registrele de intrare ale UAL, execut o operaie asupra lor, i depune
rezultatul din nou n registru. Se numete ciclu al cii de date (data path
cycle) procesul prin care cei doi operatori sunt trecui prin UAL i rezultatul
este depozitat. Aceasta este o dat extrem de important pentru cele mai
multe UCP. Ea definete n mare msur ce poate face maina. Cu ct
ciclul cii de date e mai rapid, cu att maina funcioneaz mai repede.
24


1.3.2. Execuia unei instruciuni

UCP execut instruciunea printr-o scriere de pai, care sunt urmtorii:
1. Transfer instruciunea urmtoare din memoria IR;
2. Schimb contorul astfel nct s indice urmtoarea instruciune;
3. Determin tipul instruciunii extrase;
4. Dac instruciunea are nevoie de un cuvnt de memorie determin
unde se gsete acesta;
5. Extrage cuvntul n unul din registrele UCP;
6. Execut instruciunea;
7. Reia de la pasul 1 pentru a ncepe execuia instruciunilor
urmtoare.
Deseori aceast secven de pai este denumit ciclu extrage decodific
execut (fetchdecodeexecute).
n [9] este dat aceast secven ca o procedur Java cu numele
interpret.
nsui faptul c este posibil s se scrie un program care s imite
funcionarea UCP demonstreaz c un program nu trebuie executat de o
UCP hardware adic de o cutie plin cu componente electronice. n loc de
aceasta, un program poate fi executat de un alt program care s-i extrag,
examineze i execute instruciunile. Un program care extrage, examineaz
i execut instruciunile altui program se numete interpretor aa cum s-a
menionat deja.
La sfritul anilor 80, IBM a recunoscut avantajele multiple ale
dezvoltrii unei singure familii de maini care s execute aceleai
instruciuni. IBM a introdus termenul de arhitectur pentru a descrie
aceast compatibilitate. O nou familie de calculatoare are deci aceeai
arhitectur, dar multe implementri diferite, capabile s execute acelai
program, diferenele ntre ele fiind doar la capitolele vitez i pre.
Este posibil s se construiasc un calculator ieftin care s poat executa
toate instruciunile complexe ale calculatoarelor scumpe. Cheia problemei
const n interpretare. Aceast tehnic a fost sugerat de Wilkes (1951).
Dup specificarea limbajului main pentru un nou calculator, proiectantul
poate decide dac s construiasc un nou procesor hardware care s execute
direct noile instruciuni ale noului limbaj sau dac s scrie un interpretor
care s interpreteze instruciunile noului limbaj sau s opteze pentru o
soluie hibrid. Prima familie de calculatoare compatibile au fost mainile
de tipul IBM/360. O implementare hardware direct a fost folosit doar
pentru modelele cele mai scumpe.
Calculatoarele simple cu instruciuni interpretate mai aveau i alte
avantaje:
25
1. Posibilitatea de a corecta pe loc instruciunile incorect
implementate, sau chiar de a rezolva deficiene de proiectare ale hardware-
ului de baz.
2. Posibiliatatea de a aduga noi instruciuni la un cost minim.
3. Proiectarea structurat, ce permite dezvoltarea , testarea i
documentarea eficient.
Datorit cererii crescute de calculatoare n anii `70 i creterea rapid a
capacitilor de calcul, a fost favorizat proiectarea calculatoarelor ce
folosesc interpretoare. Posibilitatea de a ajusta hardware-ul i interpretorul
a devenit un mod de proiectare foarte eficient pentru procesoare ieftine.
Acest curent a ajuns la apogeu cu calculatorul VAX al DEC, care
dispunea de cteva sute de instruciuni i peste 200 de moduri diferite de
specificare a operanzilor pentru fiecare instruciune. Aceast abordare a dus
la includerea a multor instruciuni cu utilitate marginal, ce erau greu de
executat direct. Pe parcursul proiectrii mainilor VAX DEC, cei de la DEC
au aflat c 20% din instruciuni utilizeaz 60% din microcod, dar erau
folosite numai 0,2% din timp (Patterson i Heennessy, 1985).
Cu toate c microprocesoarele au nceput pe 8 bii i cu seturi de
instruciuni simple, spre sfritul anilor `70 chiar i microprocesoarele
ajunseser s fie proiectate pe baza interpretoarelor. Avantajul sistemelor
bazate pe interpretor consta n aceea c se puteau folosi procesoare simple,
interpretorul fiind ns complex i voluminos, necesitnd un spaiu mare de
memorie. Proiectarea unui software complex nlocuia astfel un hardware
complex. Punctul critic al acestei abordri const n aceea c accentul nu
cdea pe performana sistemului obinut, interpretarea unor instruciuni
complexe putnd scdea viteza sistemului. Succesul microprocesoarelor
Motorola 68000, care avea un set mare de instruciuni interpretate i eecul
concomitent al microprocesoarelor Z8000, care avea tot un set mare de
instruciuni, dar fr un interpretor, a demonstrat avantajele
interpretorului n lansarea rapid a unui nou microprocesoar.
Un alt factor favorizant al dezvoltrii interpretrii n acea epoc a fost
existena memoriilor rapide numai pentru citire, numite memorii de control.
(control stores), memorii n care erau depozitate interpretoarele. S
presupunem c o instruciune interpretat tipic la un procesor necesit 10
instruciuni, numite microinstruciuni, fiecare durnd 100s, i 2 adresri
la memorie, fiecare durnd 500 s. Rezult timpul total 2000 s, de dou ori
mai mult dect cel mai bun timp posibil obinut prin execuia direct a
instruciunilor. Dac nu ar fi fost disponibile memoriile de control ci numai
memoriile obinuite instruciunea ar fi durat i mai mult i un timp de
execuie mai mare nu ar fi fost acceptat.



26
1.3.3. RISC i CISC

La sfritul anilor `70 interpretoarele erau utilizate uzual pentru
proiectarea unui nou procesor i s-au fcut experimente cu instruciuni
foarte complexe. Proiectanii au ncercat s acopere interstiiul semantic
(semantic gap) dintre posibilitile mainilor i limbajele de programare de
nivel nalt. Timp de muli ani trendul n arhitectura i organizarea
calculatoarelor a fost acela de a crete complexitatea procesorului: mai
multe instruciuni, mai multe moduri de adresare, mai multe registre
specializate.
Au existat ns i exceptii. n 1981 John Cocke la de IBM a creat
modelul experimental 801, ncercnd s incorporeze o parte din ideile lui
Seymour Cray ntr-un minicalculator de nalt performan. n acelai an
un grup de la Berkeley, condus de David Patterson i Carlo Sequin a
proiectat un cip VLSI pentru un UCP fr interpretor rezultnd procesorul
RISC 1. Ei au introdus termenul RISC pentru acest concept (Reduced
Instruction Set Computer). Puin mai trziu, n 1981, la Stanford, John
Henessy a proiectat i fabricat un cip ntructva diferit, pe care l-a numit
MIPS. Aceste cipuri au evoluat n produse comerciale, procesoarele SPARC
i respectiv MIPS. Totui 801 era un model experimental conceput pentru a
ilustra unele concepte. Succesul proiectului 801 a determinat IBM s
dezvolte un produs comercial RISC workstation, PC RT. Introdus n 1986,
acesta nu a fost un succes comercial. n 1990 IBM a produs un al treilea
sistem, innd cont de leciile oferite de 801 i PC RT. IBM RISC
System/6000 era o main RISC superscalar i la puin timp dup apariie
a nceput s fie referit ca arhitectura POWER. Apoi IBM a fcut o alian
cu Motorola i Apple, care utiliza microprocesoarele Motorola n
calculatoarele Macintosh. Rezultatul a fost o serie de maini ce
implementeaz arhitectura PowerPC, o arhitectur RISC superscalar.
Procesoarele PowerPC sunt utilizate n mainile Apple Macintosh i n
numeroase aplicaii embedded.
Procesoarele RISC erau la apariia lor mult diferite fa de cele
existente n acel moment. Deoarece nu trebuiau s pstreze vreo
compatibilitate cu produsele anterioare, proiectanii au ales seturi de
instruciuni care s maximizeze performana sistemului. Dac la nceput
accentul cdea pe instruciuni care s se execute rapid, n curnd s-a
constatat c proiectarea unor instruciuni care s poat fi lansate (issued -
pornite) rapid era mai relevant. Ct timp dura n total o instruciune conta
mai puin dect numrul de instruciuni ce puteau fi lansate ntr-o secund.
Filozofia general RISC este de a transfera complexitatea ctre software
dac astfel rezult o mbuntire global a performanei.
Procesoarele la care ne referim erau caracterizate de un set mic de
instruciuni (aproape 50) fa de 200300 la DEC VAX sau marile
27
calculatoare IBM. De aici acronimul RISC, n contrast cu CISC ce nseamn
Complex Instuction Set Computer. Suporterii RISC susineau c modul cel
mai bun de a proiecta un calculator este s ai un set de instruciuni simple
care s se execute ntr-un singur ciclu al cii de date (Fig. 1.2). Argumentul
era viteza de execuie: chiar dac maina RISC va face n 4 -5 instruciuni
ceea ce va face o main CISC ntr-o instruciune, dac instruciunile RISC
sunt de 10 ori mai rapide, arhitectura RISC va fi n ctig. n acel moment
i viteza memoriilor principale crescuse, ajungnd din urm viteza
memoriilor de control n care erau stocate interpretoarele, fapt ce a favorizat
i el puternic mainile RISC. Obiectivul principal era acela de a obine
viteza maxim de operare prin utilizarea unor procesoare relativ simple.
Analiznd retrospectiv problema, urmtorii factori au condus la apariia
conceptului RISC:
- efectul incluziunii instruciunilor complexe,
- utilizarea cea mai bun a tranzistoarelor n implementri VLSI,
- excesul de microcod,
- utilizarea compilatoarelor.
Referitor la prima chestiune, era cunoscut faptul c unele instruciuni
sunt mai frecvent folosite dect altele. Soluia CISC era de a scurta ct mai
mult durata instruciunilor folosite frecvent. Soluia RISC este de a nu avea
deloc instruciuni folosite mai puin frecvent.
Cu privire la cea de a doua remarc, Katevenis (1985) a artat n teza sa
de doctorat c suportul hardware pentru instruciuni complexe nu este cea
mai bun cale de utilizare a tranzistoarelor n circuite VLSI.Exist un
optim ntre mrime/complexitate i vitez. Creterea complexitii VLSI
duce la o scdere a vitezei componentelor datorit capacitilor ce apar i a
ntrzierii semnalelor. Odat cu creterea densitii circuitelor trebuie luat
o decizie asupra celui mai bun mod de a utiliza aria circutului.
Cu privire la microcod, acesta era scris n memorii de control de vitez
mai mare dect a memoriei principale. Odat cu creterea vitezei memoriei
principale, dac aceasta ajunge s fie de vitez apropiat cu cea a memoriei
de control, apare un considerabil overhead la unitatea de control
microprogramat, n special la mainile cu instruciuni simple.
n ce privete compilatoarele, exista tendina de a proiecta compilatoare
optimizate cu mai puine instruciuni. La calculatoarele CISC, cu
instruciuni complexe, era dificil pentru compilator s decid automat cnd
o instruciune rar folosit, complex, trebuie utilizat sau nu. O seciune
cheie a dezvoltrii procesoarelor RISC este asigurarea unui compilator
optimizat care s preia o parte din complexitatea hardware i s utilizeze n
cel mai bun mod regitrii.
S-ar putea crede c, date fiind performanele oferite de arhitectura
RISC, mainile RISC (cum ar fi DEC Alpha) vor detrona mainile CISC
28
(cum ar fi Intel Pentium) de pe pia. Timpul a artat c acest fapt nu s-a
produs din mai multe motive:
- n primul rnd din cauza compatibilitii cu modele anterioare i a
banilor investii n software pentru gama Intel.
- n al doilea rnd, Intel a reuit s incorporeze aceleai idei ntr-o
arhitectur CISC. ncepnd cu 486, UCP-urile Intel conin un nucleu RISC
ce execut instruciunile mai simple (i n general mai des ntlnite) ntr-un
singur ciclu al cii de date, interpretnd instruciunile mai complicate n
modul caracteristic CISC. Rezultatul net este c instruciunile uzuale sunt
rapide i instruciunile exotice mai lente. Chiar dac aceast abordare nu e
la fel de rapid ca cea RISC pur, ea permite obinerea unei performane
globale competitive.


1.4. Principii de proiectare
pentru calculatoarele moderne

La 20 de ani de la apariia mainilor RISC, anumite principii au fost
acceptate ca fiind un mod bun de proiectare n condiiile tehnologiei
hardware actuale.
Dac intervine o schimbare brusc a tehnologiei (de exemplu printr-un
nou proces de fabricaie ciclul de memorie devine de 10 ori mai rapid dect
ciclul UCP) aceste principii vor trebui revizuite. Exist un set de principii de
proiectare (numite principiile proiectrii RISC) pe care arhitecii UCP
ncearc s le urmeze, dar datorit constrngerilor externe, cum ar fi
cerina compatibilitii cu arhitecturi existente, aceste principii sunt
obiective ce sunt ncercate a fi atinse:
a) Toate construciile executate de ctre hardware (adic nu sunt
interpretate prin microinstruciuni). Dac nu e posibil, pe calculatoarele
CISC, instruciunile mai complicate pot fi sparte n pri separate, ce pot
fi apoi executate ca o secven de microinstruciuni.
b) Maximizeaz rata de lansare n execuie a instruciunilor. Dac
pot fi lansate simultan mai multe instruciuni simultan crete
corespunztor viteza, de unde rezult i importana paralelismului
(controlflow parallelism). Instruciunile nu sunt lansate ntotdeauna n
ordinea din program. Dac o instruciune scrie ntr-un registru, iar
urmtoarea citete acel registru, este nevoie de atenie pentru a ne
asigura c instruciunea a doua citete registrul dup ce el a fost nscris
corect de prima. Sunt necesare unele artificii, dar exist potenial pentru
creterea performanei prin executarea simultan a mai multor
instruciuni.
29
c) Instruciunile trebuie s fie uor de decodificat necesitatea unui
format fix al instruciunilor, cu un numr mic de cmpuri i cu
dimensiune prestabilit.
d) Numai instruciunile LOAD i STORE trebuie s acceseze
memoria. Accesul la memorie poate dura mult, iar ntrzierile sunt
imprevizibile, deci ar fi bine s se poat suprapune execuia acestor
instruciuni cu a altora, ce lucreaz cu registrele.
e) Posed registre suficiente (cel puin 32).
Din cele spuse, rezult c este util implementarea paralelismului la
nivelul UCP. Exist n principal 2 tipuri de paralelism:
- control-flow paralelism (executarea simultan a mai multor
instruciuni)
- data paralelism (executarea aceleai instruciuni cu date mprite pe
procesoare).


1.5. Paralelism la nivelul instruciunii

n acest caz paralelismul este exploatat n cadrul instruciunilor
individuale, pentru a face maina s lanseze n execuie mai multe
instruciuni/secund.

Pipeline (banda de ansamblare sau conduct) .
Concepul a existat din `60 la maini IBM prin citirea n avans a unei
instruciuni din memorie i pstrarea ei ntr-un set de regitri numit
prefetch buffer. Citirea n avans mparte instruciunile n dou pri:
extragerea i executarea propriu-zis. Conceptul pipeline extinde strategia.
Instruciunea e mprit n mai multe pri, de fiecare parte ocupndu-se o
component hardware, toate aceste componente hardware putnd s
funcioneze n paralel. Fig. 1.3 ilustreaz o band de asamblare cu 5 uniti
numite i stages (segmente, etape).


S1 S2 S3 S4 S5
Unitate de
decodificare a
instruciunilor
Unitate de
extragere a
instruciunilor
Unitate de
extragere a
operanzilor
Unitate de
scriere a
rezultatelor
Unitate de
execuie a
instruciunilor
(a)


30
S1
C C C C C C

S2
C C C C C C

S3
C C C C C C

S4
C C C C C

S5
C C C C C

1 2 3 4 5 6 7 8 9 timp
(b)
Fig. 1.3. O band de asamblare de 5 segmente (a)
Starea fiecrui segment n funcie de timp (b)


Segmentul 1 extrage instruciunea din memorie i o plaseaz ntr-un
registru tampon. Segmentul 2 o decodific, determinndu-i tipul i
operanzii. Segmentul 3 localizeaz i extrage operanzii, fie din registre, fie
din memorie. Segmentul 4 execut instruciunea, de obicei rulnd operanzii
prin calea de date, iar segmentul 5 scrie rezultatul n registre.
n figura 1.3 b vedem cum opereaz o band de asamblare n funcie de
timp. n ciclul 1, reg S1 lucreaz cu instruciunea 1 i o extrage din
memorie. n ciclul 2, S2 decodific instruciunea 1. Tot n ciclul 2, S1
extrage instruciunea 2. n ciclul 3, S3 extrage operanzii pentru
instruciunea 1, S2 decodific instruciunea 2 i S1 extrage instruciunea 3.
Dac un ciclu main dureaz x ns, o main clasic ar avea o vitez de
1/5x MIPS (milion instruction per second). Viteza de prelucrare pe pipeline
este 1/x MIPS.
Folosirea pipeline determin un compromis ntre latena (latency ct
dureaz execuia unei instruciuni) i lrgirea de band a procesului.
(bandwidth cte MIPS execut un UCP). Pentru un ciclu de ceas T s i n
segmente, latena este nT i lrgimea de band -1/T MIPS.

Arhitecturi superscalare
Date fiind avantajele benzii de asamblare, ar fi de dorit mai multe din
acestea. n figura 1.4 este prezentat o posibil proiectare a unui UCP n
banda de asamblare dual. Pentru a putea lucra n paralel, cele 2
instruciuni nu trebuie s-i dispute resursele (de exemplu registrele) i nici
una nu trebuie s depind de rezultatul celeilalte. Fie compilatorul trebuie
s garanteze c ipoteza anterioar e respectat, fie conflictele sunt detectate
i eliminate pe parcursul execuiei, cu ajutorul unui hardware suplimentar.

31

Unitate de
decodificare a
instruciunilor
Unitate de
extragere a
instruciunilor
Unitate de
decodificare a
instruciunilor
Unitate de
extragere a
operanzilor
Unitate de
scriere a
rezultatelor
Unitate de
execuie a
instruciunilor
Unitate de
extragere a
operanzilor
Unitate de
extragere a
operanzilor
Unitate de
execuie a
instruciunilor
Unitate de
scriere a
rezultatelor
S1 S2 S3 S1 S1

Fig. 1.4. Banda de asamblare dual cu 5 segmente


Cu toate c benzile de asamblare, simple sau duale, sunt folosite pe
mainile RISC (386 i predecesorii nu aveau nici una), ncepnd cu 486,
Intel a introdus o band de asamblare n procesoarele sale.
Pentium are dou benzi de asamblare asemntoare cu cele din fig. 1.4,
dei mprirea ntre segmentele 2 i 3 (numite decode-1 i decode-2) este
puin difert fa de cea din exemplul nostru. Banda de asamblare
principal, numit u pipeline, poate executa orice instruciune Pentium, n
timp ce a doua band, numit v pipeline, poate executa doar instruciuni
pentru ntregi i o instruciune simpl n virgul mobil FXCH.
Reguli destul de complexe determin dac instruciunile sunt
compatibile, astfel nct s poat fi executate n paralel. Dac instruciunile
sunt incompatibile, doar prima este executat (pe banda u), iar a doua este
pstrat i mperecheat cu o instruciune care o va urma. Instruciunile
sunt executate n ordine. Din aceast cauz compilatoarele specifice
Pentium, care produceau perechi compatibile de instruciuni, puteau s
produc programe mai rapide. Pentru programe cu numere ntregi, Pentium
cu cod optimizat pentru el este de 2 ori mai rapid dect 486 la aceeai
frecven de ceas. Acest ctig se datoreaz celei de-a 2-a benzi de
asamblare.
Alte UCP utilizeaz abordri cu totul diferite. Idea de baz este de a
avea o singur band de asamblare, dar cu mai multe uniti funcionale,
aa cum se observ n figura 1.5
Procesorul Pentium II are o structur asemntoare cu cea din fig. 1.5.
Pentru aceast abordare a fost introdus termenul arhitectur superscalar.
Idea nu este nou, ci are o vechime de peste 30 de ani. n calculatorul
CDC6600 se extrgea o instruciune la fiecare 100nsec i se trimitea pentru
execuie, n paralel, uneia din cele 10 uniti funcionale, n timp ce UCP se
ocupa cu extragerea instruciunii urmtoare.
Ar rezulta din figur c segmental S3 poate lansa instruciunile mult
mai repede dect le poate executa segmental S4. n realitate, majoritatea
unitilor funcionale din segmental S4 au nevoie de mai mult timp dect un
ciclu de ceas pentru a-i face treaba, n mod cert cele care acceseaz
memoria sau care lucreaz n virgul mobil.
32



Unitate de
decodificare a
instruciunilor
Unitate de
extragere a
instruciunilor
Unitate de
extragere a
operanzilor
Unitate de
scriere a
rezultatelor
LOAD
S1 S2 S3
UAL
UAL
STORE
Virgul
mobil
S5
S4

Fig. 1.5. Un processor superscalar cu 5 uniti funcionale


Idea nu este nou, ci are o vechime de peste 30 de ani. n calculatorul
CDC6600 se extrgea o instruciune la fiecare 100nsec i se trimitea pentru
execuie, n paralel, uneia din cele 10 uniti funcionale, n timp ce UCP se
ocupa cu extragerea instruciunii urmtoare.
Ar rezulta din figur c segmental S3 poate lansa instruciunile mult
mai repede dect le poate executa segmental S4. n realitate, majoritatea
unitilor funcionale din segmental S4 au nevoie de mai mult timp dect un
ciclu de ceas pentru a-i face treaba, n mod cert cele care acceseaz
memoria sau care lucreaz n virgul mobil.
Dup cum se poate observa pot exista mai multe UAL n registrul S4.


1.6. Paralelism la nivelul procesorului

Creterea vitezei procesoarelor este o problem deschis. Paralelismul la
nivel de instruciune ajut, iar banda de asamblare i operarea superscalar
cresc performanele de 5-10 ori. Singura modalitate de a crete mai mult
viteza este de a proiecta calculatoare cu mai multe UCP. Cea mai buna rat
de cretere a vitezei de procesare ar fi proporional cu numrul de
procesoare utilizate i ar putea apare cnd toate procesoarele opereaz
simultan pe tot timpul aplicaiei i nu este nevoie de timp suplimentar
pentru transferul datelor sau datorit concurenei la resurse partajate.
Acest lucru nu este posibil n practic.
Termenii paralelism i concuren sunt utilizai pentru a descrie operarea
simultan a procesoarelor multiple. De aici au aprut termeni de
33
programare paralel, procesoare paralele, programare concurent.
Termenul paralelism este uneori restricionat la procesoare ce execut toate
acelai cod. Au existat numeroase dezbateri asupra situaiilor n care un
procesor rapid ar putea fi mai rapid dect un sistem format din procesoare
mai puin rapide, dar mai ieftine. Totui n anii 80 chiar productorii de
calculatoare rapide au fost nevoii s dezvolte versiuni multiprocesor pentru
sistemele lor monoprocesor cum ar fi, de exemplu, sistemul Cray 2, cu patru
procesoare.

Clasificri
Nu se vor face diferenieri eseniale ntre "paralel" i "distribuit" cu
privire la sistemele de timp real considerate. Proprietile distinctive sunt
legate de poziionarea fizic n cadrul sistemului, cerinele de timing i
metodele de transport (adic comunicaia).
Gama de aplicaie variaz de la procesarea semnalelor pn la sisteme de
control sofisticate i eterogene constituite ntr-o arhitectur ierarhic. n
multe cazuri, n special n medii cu restricii severe de timp, exist tendina
de a ncorpora sisteme de procesare sofisticate direct n produs ("embedded
system" sau sisteme ncrustate). De exemplu, cele mai multe din sistemele
de control n timp real pentru vehicule aparine acestei categorii.
Blocurile din care se construiesc arhitecturile utilizate n calculul paralel
sunt elementele procesoare (PE-processing element), memoriile (M-memory)
i cile de comunicaie (C-communications). Acestea formeaz partea
hardware a resurselor sistemului. Pentru a avea o imagine unificat a
sistemelor de calcul paralel/distribuit, se va utiliza o interpretare n sens
larg a acestor blocuri, dup cum urmeaz:
- element de procesare: un element de procesare este considerat orice
dispozitiv care poate efectua transformri. Deci el poate fi o poart,un
element de adunare sau mulire, un dispozitiv de uz special, un dispozitiv
programabil de scop general sau special
- memoria: este orice dispozitiv ce poate fi folosit pentru stocarea
informaiei n timp. Deci prin memorii se neleg registre, registre de
deplasare, bancuri de memorie, memorii cache sau combinaii ale acestora.
- comunicarea: este definit ca orice mijloc folosit pentru transmiterea
informaiei ntre elementele de procesare, memorii sau combinaii ale
acestora.
Comunicarea fizic poate fi fcut prin cablare direct, prin bus sau prin
canale de diferite tipuri. Actul comunicrii este ndeplinit de emitor i
receptor sau combinaii de astfel de circuite prin diferite ci de sincronizare
i protocoale de comunicaie.
Deoarece noiunea de proces este un numitor comun n sistemele de
calcul paralel, se va ncerca o definire a sa. Tocmai am considerat
elementele de procesare, memoria i comunicaia ca procese hardware. n
34
acseste cazuri, procesele sunt fizice. O generalizare este uor de fcut dac
toate nivelurile de deasupra nivelului fizic sunt compuse din procese
programate care-i datoreaz compoziia unor procese hardware de nivel
cobort i, n unele cazuri, unor procese programate de nivel inferior.
Procesul definete porturi de intrare i de ieire ctre alte procese sau ctre
mediul extern. De asemenea, se presupune c procesul conine o structur
de date (fie ea chiar primitiv ca, de exemplu, un singur bit) i c procedura
sau procedurile odat activate, manipuleaz aceast structur de date.
Granularitatea procesului este apreciat n termenii combinaiilor de date i
a complexitii procedurii (procedurilor) difereniaz att structura static
ct i comportarea dinamic a proceselor. Paralelismul poate proveni din
mai multe surse.
Un prim caz caracteristic este acela cnd structuri cu resurse generale
sunt aplicate unor probleme speciale fr consideraii speciale asupra
naturii problemei, fa de cazul n care paralelismul este obinut din natura
problemei i prins n descrierea comportamental a aplicaiei. Aceast idee
este prezentat n tabelul 1.1


Paralelismul
aplicaiei
Algoritm Geometria datei
Paralelismul
sistemului
Control Structura datei i a fluxului

Tabelul 1.1 Paralelismul sistemului i al aplicaiei


n paralelismul aplicaiei, paralelismul se obine prin partiionarea
algoritmului i/sau exploatnd geometria datei prin partiionarea datelor n
uniti naturale ce reflect natura problemei i care pot fi tratate convenabil
n structura cu resurse date. De exemplu se poate specula paralelismul
aplicaiei prin aplicarea filozofiei pipeline sau prin aplicarea filozofiei
procesrii paralele masive n arii de procesoare.
n paralelismul sistemului, paralelismul se obine numai din resurse
hardware, n unele cazuri complementar cu mecanisme sofisticate de
alocare i programare a proceselor. Paralelismul este obinut n relaii cu
controlul fluxului i/sau structurii datelor, fluxul fiind determinat de
structura resurselor i, uneori de managementul sistemului de operare. Unii
numesc paralelism scalar acest caz al extragerii automate a paralelismului,
n care programe secveniale nemodificate sunt paralizate n raport cu
resursele hardware paralele disponibile.
35
Prelucrarea paralel/distribuit este un nou model de calcul, ce poate fi
materializat numai n contextul unor caracteristici arhitecturale specifice.
ncercarea de a defini n mod unic conceptul de sistem cu prelucrare
distribuit conduce la ntrebarea: ce se distribuie, resursele fizice i logice,
controlul sau datele? Exist, prin urmare, mai multe dimensiuni ale unui
sistem care pot fi distribuite, fiecare dimensiune putnd avea un ntreg
spectru de "valori", (Punescu i Goleteanu, 1993).
Distribuirea ntr-un sistem de calcul (cu prelucrare distribuit) poate fi
caracterizat din trei perspective majore:
- distribuirea la nivel fizic, caracterizat doar n termeni de faciliti
hardware.
- distribuirea la nivel logic, caracterizat doar n termeni de faciliti
logice (software sau date),
- distribuirea la nivelurile logic i fizic.
Este dificil n aceste condiii s se disting sistemele cu prelucrare
distribuit de restul sistemelor doar prin observarea caracteristicilor lor
fizice (reelele generate de calculatoare). Distribuirea fizic este doar o
condiie necesar, deoarece apare n mod natural o a doua ntrebare: cum
interacioneaz i cum sunt controlate elementele fizice distribuite.
Caracterizarea sistemelor cu prelucrare distribuit doar n funcie de
caracteristicile lor logice, dei, la o prim vedere, pare c rezolv problema,
totui nu este posibil. Distribuirea la nivel logic are o semnificaie
independent de distribuirea fizic. Ca i un sistem fizic distribuit, un
sistem logic distribuit este constituit din componente logice, active i pasive,
coninnd cod i date. Un sistem se spune c este distribuit la nivel logic
dac fiecare component logic este autonom, n aa fel nct nlturarea
unei componente nu va mpiedica sistemul de calcul s-i realizeze sarcina
sa de prelucrare ntr-un mod acceptabil. Totui, dac se dorete satisfacerea
unor obiective ca: grad nalt de integritate, extensibilitate mare, putere de
calcul sporit, este nevoie de componente hardware multiple. Astfel de
obiective nu pot fi satisfcute de un sistem care ar include doar un singur
element de procesare (PE-Processing Element).
n afar de distribuirea fizic este deci necesar i distribuirea logic,
fr ca acesta din urm s fie suficient pentru caracterizarea complet a
sistemelor cu prelucrare distribuit.
Ca o prim concluzie a consideraiilor de mai sus, se poate afirma c,
pentru definirea conceptului de sistem cu procesare paralel/ distribuit,
trebuie acceptat ideea de distribuire att la nivelul fizic, ct i la nivel
logic.


36
C1 C2 C3 C4 C5 C6 C7 D1
D2
D3
D4
D5
D6
D7
Descentralizare in
baza de date
Descentralizare control
H5
H4
H3
H2
H1
Descentralizare
in hardware
Regiunea
caracteristica pentru
sistemele cu prelucrar
distribuita

Fig. 1.6. Spaiul tridimensional de distribuire al lui Enslow


Pentru a se putea realiza o difereniere clar a acestor sisteme de restul
sistemelor, se impune alegerea unui spaiu parametric multidimensional
(Punescu i Goleteanu, 1993 dup Enslow, 1978) n care s se caracterizeze unic
sistemele de procesare la modul general Spaiul tridimensional propus de Enslow,
prezentat n figura 1.6., caracterizeaz sistemele n funcie de gradul de
descentralizare n hardware, control i baze de date.
Valorile ntlnite pe cele trei axe ale spaiului tridimensional,
H i C i si D i
i i i
, , , , , , , = = = 1 5 1 7 1 7 sunt descrise n tabelul 1.2


Parametii Val
.
Semnificaia Observaii i precizri
H
1
procesor unic Sistem cu: - unitate de control unic
- memorie A/L unic
- memorie central unic
- exemplu: calculatorul uniprocesor unic
Descentral
izarea
hardware
H
2
uniti de execuie
multiple
Sistem cu: - uniti A/L identice
- posibil mai multe memorii
centrale independente
- exemplu: arii de procesoare
H
3
uniti
specializate
multiple
Sistem cu: - unitate de control universal
unic
- uniti A/L sau unit de prelucrare
multiple, posibil specializate; unele uniti
A/L pot fi universale identice.
- exemplu: arhitecturile de tip pipeline
37
H
4
procesoare
multiple
Sistem cu: - unitate de control multiple
- un singur sistem de I/E coordonat
-posibil memorii centrale independente
multiple
- ex.: arhitecturile de tip multiprocesor


H
5
calculatoare
multiple
Fiecare calculator dispune de un procesor
central universal cuprinznd unitate de
control, unitate A/L, memorie central, sistem
I/E;
- exemplu: arhitecturile de tip reea
general sau local
C
1
punct de control
unic (fie fizic, fie
conceptual)
De exemplu, executivele clasice ale
calculatoarelor convenionale


C
2
puncte de control
multiple cu relaie
de tip master-
slave fix
Pot fi niveluri multiple de relaii master-slave,
iar relaiile interslaves pot fi nesimetrice;
modificarea relaiei e posibil doar prin
aciuni exterioare sistemului


Descentral
izare
control
C
3
punct de control cu
relaie de tip
master-slave
dinamic
Modificarea relaiei master/slave se poate face
prin software; sistemul de operare master
vede sistemul slave ca pe o resurs


C
4
puncte de control
multiple,
multiplicate
De exemplu, interaciunea dintre dou
calculatoare separate care interacioneazI/E
prin transfer complet de fiiere.


C
5
puncte de control
multiple
coopernd la
execuia unui task
fragmentat n
subtaskuri
De exemplu sistemele de operare
multiprocesor cu funcii de control distribuite,
dedicate, n cooperare


C
6
puncte de control
multiplicate
identice,
coopernd la
execuia unui task
De exemplu, nucleul minimal multiplicat pe
componente omogene ale unui calculator
paralel


C7 puncte de control
multiple nu
neaparat omogene
cu cooperare
total.
De exemplu, diferitele sisteme de operare
instalate pe elemente de prelucrare
neomogene ale unei reele locale cu control
distribuit


D
1
baz de date
centralizat n
memoria
secundar
Copie unic pentru fiiere i directoare
pstrat n memoria secundar


D
2
baz de date
centralizat n
memoria primar
Copie unic pentru fiiere i directoare
pstrat n memoria primar
38
Descentral
izarea
datelor
D
3
baz de date cu
fiiere distribuite
i director central
unic
Un singur director central i nici un director
local. Toate accesele sunt prelucrate prin
unicul director central


D
4
baz de date
complet replicat
Cte o copie complet a tuturor fiierelor i un
director al sistemului la fiecare nod de
prelucrare


D
5
baz de date
partiionat cu
duplicare complet
Datele sunt pstrate n fiiere locale, cu copii
(la cerere) la celelalte noduri. Copie complet
a tuturor fiierelor la nodul master.


D
6
baz de date
partiionat fr
duplicare
Datele locale (fiiere i directoare) sunt
reinute la nodul de prelucrare; nici un
duplicat n nodul master
D7 baza de date
partiionat
complet
descentralizat
Nici un fiier sau director master

Tabelul 1.2 Spectrul de valori din spaiul tridimensional al lui Enslow.


O clasificare general a sistemelor de calcul a fost fcut de Flynn (1966).
Aceast clasificare, ca i multe din conceptele arhitecturale i funcionale
referite prin ea au fost concepute nc de la nceputurile perioadei de
dezvoltare a calculatoarelor electronice, dar nu au fost puse n practic, n
majoritatea lor, dect odat cu dezvoltarea tehnologiei circuitelor
semiconductoare integrate. Aceast clasificare are deci avantajul de a fi
trecut testul timpului i se bazeaz pe faptul c arhitecturile sistemelor de
calcul pot fi caracterizate n funcie de fluxul instruciunilor, care indic
secvena de instruciuni executate de unitatea sau unitile de calcul la un
moment dat, i de fluxul datelor, reprezentnd secvena de date asupra
creia opereaz fluxul instruciunilor. Att fluxul instruciunilor ct i cel al
datelor se refer la operaiile de transfer de tip registru -registru n
interiorul unui procesor, ntre microcalculatoare miniaturale construite pe
aceeai pastil integrat pe scar foarte larg, ntre procesoare sau ntre
sisteme de calcul interconectate. Aceast clasificare cuprinde patru clase de
sisteme de calcul dup cum urmeaz:
a) Flux de instruciuni i flux de date unice (SISD - Single Instruction
stream, Single Data stream), n care un flux de instruciuni opereaz asupra
unui flux de date.Acest tip de arhitectur este reprezentat n principal de
sistemele de calcul monoprocesor clasice.
b) Flux de instruciuni unic i flux de date multiple (SIMD - Single
Instruction stream, Multiple Data stream) n care un singur flux de
instruciuni opereaz simultan asupra mai multor fluxuri de date,
39
reprezentative pentru aceast arhitectur fiind sistemele de calcul cu
procesoare paralele.
c) Fluxuri de instruciuni multiple i flux de date unic (MISD - Multiple
Instruction stream, Sigle Date stream) n care mai multe fluxuri de
instruciuni opereaz simultan asupra aceluiai flux de date, arhitectur
implementat de procesoare pipeline.
d) Fluxuri de instruciuni i de date multiple (MIMD - Multiple
Instruction stream, Multiple data stream)n care mai multe fluxuri de
instruciuni opereaz simultan asupra mai multor fluxuri de date.
Reprezentative pentru acest tip de arhitectur sunt sistemele de calcul
multiprocesor i reelele de sisteme de calcul.
O alt clasificare a sistemelor de calcul paralel poate fi fcut din punct
de vedere al elementelor ce sunt tratate n paralel sau, mai precis, al
granularitii acestora. O astfel de clasificare cuprinde urmtoarele
categorii. granularitate fin, medie, mare i foarte mare.
Granularitate fin corespunde instruciunilor (n cazul procesoarelor
paralele) iar cea foarte mare lucrrilor (n cazul reelelor de sisteme de
calcul). Identificarea paralelismului la diferite niveluri de granularitate
este dependent de algoritmii folosii pentru exprimarea concurenei i de
capabilitatea limbajelor de programare de a specifica aceti algoritmi.
Exprimarea paralelismului prin algoritmi reprezint, n ultim instan,
materializarea modelelor de calcul ale aplicaiilor.
Deoarece discuia se refer la sistemele de timp real, exist nc o
granularitate ce nu a fost luat n discuie i anume aceea a timpului.
Aceasta nseamn c activitile diferitelor procese trebuie s fie ndeplinite
n cuante de timp specificate.
O alt clasificare uzual a sistemelor de calcul paralel este n funcie de
gradul de cuplare al acestora, adic se refer la topologia reelei i la
mijloacele de comunicare. Conform acestui criteriu se disting trei clase:
sisteme strns cuplate, sisteme apropiat cuplate, i sisteme slab cuplate.
Elementele procesoare pot fi conectate direct, pot comunica prin bus sau
canale sau pot comunica la distan prin radio sau microunde. Problema
cuplrii este deci legat de tipul pachetului ce se comunic ca i de metoda
de transfer i/ sau de caracteristicile utilizrii memoriei. Gradul de cuplare
este des folosit pentru a face distincie ntre procesarea paralel i
distribuit.
Sistemele de calcul de tip MIMD prezint prin caracteristicile structurale
i capabilitile funcionale, cel mai mare potenial de exploatare a
paralelismului. Sistemele de calcul de acest tip sunt constituite dintr-un
ansamblu de PE care au acces la o memorie central comun (sistemele cu
interconectare strns) sau nu, n acest caz comunicarea dintre PE fcndu-
se numai prin mesaje (sistem cu interconectare slab). Practica a dovedit c
40
sistemele de calcul de tip MIMD cu interconectare strns nu ating
mbuntirile de performan ateptate deoarece:
- partajarea direct a resurselor (memorie central, dispozitive de I/E)
conduce adesea la conflicte i ntrzieri;
- limbajele de programare care permit utilizarea efectiv a capacitilor
acestui tip de sistem nu au fost suficient de dezvoltate;
- definirea i implementarea unei strategii de planificare optim a
utilizrii elementelor de prelucrare este dificil, cu excepia situaiilor
statice;
- orice ineficien prezent n sistemul de operare este mult amplificat
de distribuia execuiei codului.
Sistemele de calcul de tip MIMD cu interconectare slab, n particular
sistemele cu prelucrarea distribuit - un ansamblu de elemente
independente de calcul, interconectate, care coopereaz permanent pentru
realizarea funciilor de control i prelucrare - permit identificarea i
exploatarea paralelismului la un nivel mai puin fin de granulaie, dar cu
posibilitatea de a ameliora unele din dezavantajele enumerate anterior.
Dezvoltarea unui sistem de calcul paralel se face pe seama modelului
BMR (Behaviour Mapping Resource) care pune n eviden componentele
majore ale acestuia (Lawson, 1992).


Descriere
comportamentala
COMPORTAMENTUL APLICATIEI
PROCESE DE GRANULARITATE DIVERSA
descompus in
rezulta
proceselor
Planificarea
PROCESE EXECUTABILE CU STRUCTURA DIVERSA
planificare statica si/sau dinamica
Resurse hardware
EP
M C


Fig. 1.7 Dezvoltarea unui sistem de calcul paralel (modelul BMR)


41
Elementele prezentate n figur sunt ntotdeauna prezente ntr-o form
sau alta. Comportamentul aplicaiei este descompus ntr-o descriere
comportamental de o form anumit. Pornind de la descrierea
comportamental, este extras (manual sau automat) un set de procese
coninnd procese de granularitate variabile. Procesele sunt planificate
(mapped) statistic sau dinamic n procese executabile n cadrul unei
anumite structuri precizate. n final, acestor procese li se d o semantic
executabil de ctre resursele hardware.

Calculatoare matriceale
Un numr mare de probleme de fizic i inginerie implic matrici,
vectori sau mcar o structur regulat. Organizarea regulat i structura
unor astfel de programe le fac potrivite pentru execuia paralel.
Un calculator matricial (array processor) aste alctuit dintr-un numr
mare de procesoare identice ce execut aceeai secven de instruciuni pe
seturi de date diferite. Primul calculator vectorial din lume a fost
calculatorul ILLIAC IV al Universitii din Illinois, prezentat n Fig. 1.8.



Unitate de control
Difuzarea instruciunilor
Procesor
Memorie
Matricea 8 x 8


Fig. 1.8. Calculator matricial de tipul ILLIAC IV


Planul iniial prevedea construirea unei maini din 4 cadrane, fiecare
cadran avnd o matrice de 8 X 8 procesoare + memorie. O singur unitate
de control pentru un cadran difuza instruciunile, care erau executate
sincron pe toate procesoarele. A fost construit un singur cadran i acesta a
obinut o performan de 50 Mflops (mega flotant operations per second).
42
Un procesor vectorial seamn foarte mult cu unul matricial. Dar spre
deosebire de calculatorul matricial, toate operaiile de adunare sunt
executate de un singur sumator, folosind intens benzile de asamblre.
Compania fondat de Segmour Cray, Cray Research, a produs multe
calculatoare vectoriale, ncepnd cu 1974. Acestea mai erau numite
supercalculatoare. Cray Research face parte n prezent din SGI.
Att calculatoarele matriciale ct i cele vectoriale pot executa operaii
unice (de exemplu: adun element cu element 2 vectori). n timp ce
calculatorul matricial folosete cte un sumator pentru fiecare element al
vectorilor, calculatorul vectorial dispune de conceptul registru vectorial, care
este alctuit dintr-un set de registre convenionale ce pot fi ncrcate din
memorie cu o singur instruciune, pe care de fapt le ncarc serial din
memorie. Pe urm, o instruciune de adunare vectorial execut adunarea
element cu element a celor doi vectori, trimindu-i din cele 2 registre
vectoriale ctre sumatorul cu band de asamblare. Rezultatul la ieirea
sumatorului este tot un vector, ce poate fi memorat ntr-un registru
vectorial, fie folosit drept operand pentru o alt operaie.
nc se mai produc calculatoare matriceale, dar segmentul de pia
ocupat de acestea este n scdere. Calculatoarele matriceale execut
anumite operaii mai bine dect cele vectoriale, deci au nevoie de mult mai
mult hardware i soft dificil de programat. Pe de alt parte, procesoarele
vectoriale pot fi adugate unui processor convenional.

Multiprocesoare
Elementele de prelucrare dintr-un proces matriceal nu sunt UCP-uri
independente, deoarece partajeaz o singur unitate de control.
Multiprocesorul este un sistem paralel cu mai multe UCP-uri complet
folosite. Aceasta partajeaz o memorie comun de memorie. De vreme ce
fiecare UCP poate citi sau scrie orice locaie de memorie, ele trebuie s se
coordoneze prin software astfel nct s evite conflictele.
Sunt posibile diverse scheme de implementare. Cea mai simpl este cu
mai multe UCP i o singur memorie, ca n fig. 1.9.a.
Ne putem da seama c vor apare conflicte dac un numr mare de
procesoare rapide vor ncerca permanent s acceseze memoria folosind
aceai magistral. Pentru a rezolva problema au fost imaginate diverse
scheme. O variant, cea din figura 1.9.b asigur fiecrui processor o
memorie local. Aceast memorie poate fi folosit pentru codul programului
i acele date care nu trebuie protejate. Accesul la memoria proprie nu
implic folosirea magistralei principale, reducnd mult traficul pe
magistral. Sunt posibile i alte scheme de exemplu cu memorii
intermediare.

43
UCP UCP UCP UCP
Memoria
partajat
(a)


UCP UCP UCP UCP
Memoria
partajat
(b)
Memorii locale

Fig. 1.9. (a) Un multiprocessor cu o magistral
(b) Un multicalculator cu memorii locale


Avantajul multiprocesoarelor fa de alte categorii de calculatoare este
acela c modelul de programare a unei singure memorii partajate este uor
de folosit.

Multicalculatoarele
Dei multicalculatoarele cu un numr mic de procesoare sunt uor de
construit (64), cele mai mari sunt surprinztor de greu de construit.
Dificultatea const n conectarea tuturor procesoarelor la memorie. Pentru a
evita aceste probleme, muli proiectani au renunat la ideea unei memorii
partajate i au construit pur i simplu sisteme alctuite dintr-un numr
mare de calculatoare fiecare avnd memorie proprie, dar fr o memorie
comun. Aceste sisteme sunt numite multicalculatoare (multicomputers).
UCP-urile dintr-un multicalculator comunic prin mesaje de mare vitez.
De exemplu, la transputere, comunicaia se face prin legturi INMOS
seriale de mare vitez. Pentru sisteme mari, conectarea fiecrui calculator
cu toate celelalte nu este o idee practic, astfel c se folosesc topologii de tip
matrice 2D i 3D, arbori sau inele. Rezult c mesajele de la un calculator
vor trebui s treac de mai multe ori printr-unul sau mai multe calculatoare
sau comutatoare intermediare pentru a ajunge la destinaie. Pot fi obinui
timpii de transmitere de ordinul ctorva microsecunde. Multicalculatoare cu
10.000 UCP s-au construit deja i sunt operaionale.
44
Pentru c multiprocesoarele sunt uor de construit se cerceteaz
proiectarea unor sisteme hibride care s mbine avantajele ambelor.









































45
Bibliografie

1. Brey, B., "The Intel Microprocessors", Fith Edition, Prentice Hall, Inc., Upper
Saddle River, New Jersey, 2000.
2. Lawson, H.W., "Parallel Processing in Industrial Real-Time Applications",
Prentice-Hall, Inc., Englewood Cliffs, New Jersey, 1992.
3. Mranu, R., "Calculatoare persoanale-elemente arhitecturale", Editura BIC
ALL, Bucureti 2001.
4. Murdocca, M.J., Heuring, V.P., "Principles of Computer Arhitecture", Prentice
Hall, 1999.
5. Norton, P., "Sectrete PC", Editura Teora, Bucureti 1998 (traducere dup SAMS
Publisluig USA, 1995).
6. Patterson, D., Hennessy, J., Organizarea i proiectarea calculatoarelor:
Interfaa hardware/software (traducere dup Morgan Kaufmann Publishers,
Inc., 1998), Editura ALL Educational, Bucureti, 2002.
7. Punescu, F., D. P. Goleteanu, "Sisteme cu prelucrare distribuit i aplicaiile
lor", Editura Tehnic, Bucureti, 1993.
8. Stallings, W., "Computer Organization and Architecture", Fifth Edition,
Prentice Hall, Inc., Upper Saddle River, New Jersey, 1999.
9. Tanenbaum, A., "Organizarea structurat a calculatoarelor", Ediia a IVa,
Editura Agora, Tg. Mure, 1999.
10. Wilkinson, B., "Computer Architecture: Design and Performance", Second
Edition, Prentice Hall Europe, 1996.

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