Sunteți pe pagina 1din 72

Arhitectura calculatoarelor 3

Capitolul 1

NOIUNI INTRODUCTIVE

1.1. SCHEMA DE BAZ A UNUI CALCULATOR


Orice calculator are n componen patru mari uniti fundamentale:
-Unitatea central (UC).
-Unitatea de memorie (UM).
-Unitatea de Intrare/Ieire (U I/E).
-Magistrale de interconectare (BUS-uri).


Periferic 1
Periferic 2


Periferic n







Magistral (BUS)

Fig.1.1. Schema general a unui calculator.



UC


UM


U I/E







Sorin Adrian Ciureanu 4
Rolurile acestor componente sunt:
-Unitatea central (UC) controleaz toate componentele, executnd
instruciunile unui program; efectueaz calcule aritmetice i logice.
-Memoria (UM) pstreaz programele n curs de execuie i datele
asociate lor.
-Unitatea de Intrare/Ieire (U I/E) leag sistemul cu lumea extern
prin intermediul unitilor periferice: ecran, tastatur, discuri, benzi
magnetice, reele etc.
-Magistralele sunt de trei feluri:
magistrale de adres, care vehiculeaz adresa memorie sau a unitii
I/E generat de UC (sau, n unele cazuri de alte uniti de control);
magistrale de date, care vehiculeaz informaia (instruciuni, date)
ntre UC, memorie i unitile I/E;
magistrale de control, care vehiculeaz semnalele utilizate de UC
pentru controlul sistemului (adres, memorie valid, adres I/E
valid, citire/scriere, ateptare, ntrerupere etc.).
Principiul de funcionare a unui calculator este relativ simplu. n
UM exist programe, fiecare program avnd un numr de instruciuni.
Ciclurile de executare a unei instruciuni sunt urmtoarele:
-Ciclul extragere instruciune (instruction fetch). UC face o citire a
memoriei la adresa la care se afl instruciunea. Instruciunea are un numr
de bii, n funcie de arhitectura calculatorului, de obicei multiplu de 8.
Instruciunea citit este adus pe magistral i depus ntr-un registru al UC-
ului.
-Ciclul de aflare a operanzilor. Oricare instruciune lucreaz cu
operanzi. ntre operanzi se petrece o operaie dat de un cmp al
instruciunii, numit codul instruciunii. n aceast faz trebuie depistai
operanzii, mai precis adresele unde se gsesc operanzii. Acetia se pot gsi
n dou tipuri de locaii:
-n registrele generale ale UC-ului;
-la o adres de memorie.
Exist mai multe tipuri de adresare pentru determinarea adreselor de
operanzi. La sfritul acestui ciclu, n UC trebuie s se existe adresele fizice
ale operanzilor participani la instruciune.
-Ciclul de aducere a operanzilor n UC. n acest ciclu se aduc
operanzii participani la instruciune de la adresele determinate n ciclul
anterior. Ei sunt adui din registrele generale sau de la adresele de memorie
n registrele funcionale.
-Ciclul de execuie propriu zis. n acest ciclu are loc execuia
propriu zis a instruciunii, dat de codul instruciunii.







Arhitectura calculatoarelor 5
-Ciclul de depunere a rezultatului. Orice instruciune are ca scop
final aflarea unui rezultat care poate fi un operand n cazul instruciunilor
aritmetice(de exemplu suma pentru cod de adunare, produsul pentru cod de
nmulire) sau poziionarea unor indicatori n cazul instruciunilor logice (de
exemplu, n cazul unui cod de comparaie ntre doi operanzi, poziionarea
indicatorului z=1 pentru identitatea celor doi operanzi).
La sfritul acestui ciclu, care nseamn i sfritul executrii
instruciunii, se calculeaz adresa instruciunii urmtoare i adresa de la care
va fi adus instruciunea urmtoare.
Execuia unui program nseamn execuia succesiv a instruciunilor
din care este alctuit. Programele care compun sistemul de operare asigur
gestiunea resurselor (procesor, memorie, I/E) i fac legtura cu programele
de aplicaie.

1.2. SCHEMA NIVELELOR CONCEPTUALE A UNUI
CALCULATOR

Un calculator virtual actual are apte nivele conceptuale.


Translatare


Translatare

Translatare

Interpretare

Interpretare


Microprogramexecutat
direct de hard


Fig.1.2. Nivelurile conceptuale ale mainii virtuale corespunztoare
calculatoarelor actuale.
Nivelul 7 Nivelul orientat pe aplicaie
Nivelul 6 Limbaje de nivel nalt
Nivelul 5 Limbaj de asamblare
Nivelul 4 Sistemul de operare
Nivelul 3 Arhitectura setului de instruciuni
Nivelul 2 Microarhitectur
Nivelul 1 Nivelul logic digital







Sorin Adrian Ciureanu 6
Maina virtual este organizat pe niveluri iar ntre dou niveluri pot
exista dou operaii:
-translatarea i
-interpretarea.


Translatare Interpretare



Utilizarea limbajului inferior este greoaie i de aceea s-a creat un
limbaj superior, mult mai aproape de gndirea uman. Se pot scrie
programe att n L
sup
ct i n L
inf
dar calculatorul va executa totdeauna setul
de instruciuni din L
inf
pentru care a fost proiectat fizic.
Translatarea nseamn transformarea programului din L
sup
n
ntregime ntr-un program din L
inf
. Programul din L
sup
este abandonat iar
noul program din L
inf
este ncrcat n memorie i executat. Translatarea
seamn cu compilarea.
Interpretarea nseamn execuia instruciunilor din L
sup
, pas cu pas,
fiecare instruciune fiind executat imediat. Este scrierea unui program n
L
inf
care preia programe din L
sup
ca date de intrare i le execut examinnd
fiecare instruciune pe rnd i executnd secvena echivalent de instruciuni
direct n L
inf
, dar fr s genereze un nou program n L
inf
.
Diferena fundamental ntre cele dou tehnici este c n translatare
un program mai nti este transformat n totalitate n alt program i apoi
executat programul translat, n timp ce n interpretare se execut fiecare
instruciune pas cu pas.
Fa de interpretare, translatarea are avantajul unei viteze de execuie
mult mai mari.
Nivelurile au urmtoarele semnificaii:
Nivelul 1 este hard pur. Este format din circuite electrice i
electronice.
Nivelul 2 este nivelul microprogram care interpreteaz instruciunile
nivelului 3 i le execut n nivelul 1. Fiecare instruciune a nivelului 3 este
executat de un microprogram.
Nivelul 3 este nivelul setului de instruciuni al mainii, instruciuni
executate pe nivelul hard.
Nivelul 4 . Sistemul de operare este hibrid deoarece cuprinde att
instruciuni interpretate de nivelul patru ct i instruciuni interpretate de
nivelul trei.
Limbaj superior(Lsup)
Limbaj inferior (Linf)







Arhitectura calculatoarelor 7
Nivelele 1-4 nu sunt utilizate de programatori, ele coninnd
interpretoare i translatoare construite de ctre programatorii de sisteme.
Nivelul 5 este nivelul limbajului de asamblare, destinat
programatorilor de aplicaii. Dac primele niveluri erau interpretate, acesta
este translatat de ctre un program numit asamblor.
Nivelul 6 este nivelul de limbaj nalt. Programele scrise n acest
nivel sunt translatate ctre nivelele cinci i ase de ctre programe
specializate numite compilatoare.
Nivelul 7 conine limbaje destinate unor domenii foarte speciale cum
ar fi proiectarea asistat, administraia, grafica etc.

1.3. SCURT ISTORIC AL DEZVOLTRII
CALCULATOARELOR

n decursul timpului, de la apariia primului calculator i pn astzi,
dezvoltarea n acest domeniu s-a datorat celor doi factori principali:
-progresul tehnologic i
-introducerea de noi concepii n arhitectura calculatoarelor.

1.3.1. Influena progresului tehnologic asupra dezvoltrii
calculatoarelor

De la apariia primului calculator, tehnologiile au fcut progrese
uriae, att n ceea ce privete componentele unui calculator ct i n
tehnologiile de stocare a informaiei. Din acest punct de vedere, se pot
distinge cinci generaii de calculatoare.

1.3.1.1. Generaia zero ,calculatoare mecanice,(1642-1945)

Primul care a construit o main de calcul funcionabil a fost Blaise
Pascal (1623-1662) care, la numai 19 ani, a proiectat o main mecanic,
folosind roi dinate i fiind acionat de o manivel manevrat de om.
Maina putea s fac numai adunri i scderi i a fost creat de tnrul
Pascal pentru a-l ajuta pe tatl su care era colector de taxe pentru guvernul
francez.
Gottfried von Leibnitz (1646-1716) a contribuit, teoretic i practic, la
naterea informaticii. El a perfecionat maina lui Pascal, noua main
reuind s execute, pe lng adunri i scderi, i nmuliri i mpriri.







Sorin Adrian Ciureanu 8
Cel care poate fi considerat autorul precursorului calculatorului
actual este Charles Babbage (1792-1871). Acesta a creat dou maini:
maina de calcul diferenial i maina analitic.
Maina de calcul al diferenelor (diferenial) era o main
specializat care, pe baza unui algoritm, calcula tabele de numere utile n
navigaia maritim prin metoda diferenelor finite. Cea mai interesant
caracteristic a acestei maini era nscrierea rezultatelor pe o tabl de aram
gravabil cu o tan de oel, previzionnd mediile periferice de
inscripionare de azi.
Maina analitic avea patru componente:
-magazia (memoria);
-moara (unitatea de calcul);
-seciunea de intrare (cititorul de cartele);
-seciunea de ieire (ieire perforat i imprimat).
Magazia consta din 100 de cuvinte a cte 50 cifre zecimale, fiecare
fiind folosite pentru a memora variabile i rezultate. Moara putea accepta
operanzi din magazie, pe care putea aduna , scdea, nmuli sau mpri,
pentru ca, n final, s ntoarc rezultatul n magazie. Aceast main
analitic era programabil, ntr-un limbaj simplu de asamblare, care necesita
pe cineva care s fac programarea. Acel cineva a fost Ada de Lovelace,
fiica lordului Byron, care este cunoscut ca fiind primul programator din
istoria calculatoarelor. n cinstea ei limbajul de programare a fost denumit
ADA. Din pcate, maina nu a funcionat pentru c folosea roi dinate care,
n sec. IX, erau realizate cu o precizie redus. Ins aceast main, care a
fost realizat practic n 1991 la Muzeul tiinei din Londra, st la baza
calculatoarelor moderne, ideile ei fiind valabile i astzi.
Urmtoarele calculatoare aparin tehnologiei electromecanice.
n 1930, un student german, Konrad Zuse, a construit o serie de
maini de calcul folosind relee electromagnetice. Din cauza rzboiului, ns,
mainile lui nu au fost cunoscute i, mai mult, au fost distruse n
bombardamentul Berlinului din 1945.
n SUA, J ohn Atanasoff, de la Colegiul Statului Yowa, a creat,
pornind de la ideea lui Babbage, o main asemntoare din punct de vedere
logic dar utiliznd o alt tehnologie. Memoria era format din capaciti care
se rencrcau periodic, idee utilizat astzi la memoria dinamic RAM cu
refresh.
Ca i maina Babbage, maina lui John Atanasoff era tributar
tehnologiei i nu a funcionat. Se pare, ns, c istoria a reinut prototipul
ABC (Atanasoff-Berry-Computer), Berry fiind un student a lui Atanasoff,
realizat n 1939.







Arhitectura calculatoarelor 9
George Stibitz, de la Bell Laboratories, a creat o main mai
primitiv ca a lui Atanasoff dar care are marele merit c a funcionat,
demonstraia fcndu-se, n 1940, la Colegiul Dartmouth.
n 1944, Howard Aiken a construit o main pornind de la maina
Babbage, pe care a studiat-o ndelung, crend o nou main pe baz de
relee electromagnetice. Maina avea 72 cuvinte, fiecare de cte 23 cifre
zecimale, i un timp de instruciune de 6 secunde. Intrarea i ieirea se
fceau pe baz de hrtie perforat.

1.3.1.2. Generaia nti, maini cu tuburi electronice (1945-1955)

Circuitele logice din generaia nti erau realizate cu tuburi
electronice i aveau un consum energetic foarte mare. Principalele
caracteristice ale acestor calculatoare au fost:
-memoria realizat cu tambur magnetic;
-utilizarea cititorului/perforator de hrtie;
-existena a 10-20 instruciuni simple care constituiau baza unui
limbaj cod main.
Din punct de vedere logic nu era mare diferen fa de maina
Babbage dar tehnologic se intra n era electronic.
Principalele calculatoare din aceast generaie au fost:
ENIGMA, main realizat de Germania n timpul celui de-al doilea
rzboi mondial pentru transmiterea mesajelor codificate.
COLLOSUS, maini fabricate de Englezi pentru decodificarea
mesajelor ENIGMA. De menionat c la fabricarea lor a contribuit i Allan
Turing, cunoscut mai trziu drept creator al mainii TURING.
ENIAC (Electronic Numerical Integrator And Computer), construit
de ctre John Mauchley i John Eckert (Universitatea din Pensilvania), cu
colaborarea lui John von Neumann,. Era destinat rezolvrii ecuaiilor
difereniale cu derivate pariale i a avut aplicaii n domeniul militar, la
calcularea traiectoriilor balistice i chiar la fabricarea bombei atomice n
proiectul Manhatan. Avea urmtoarele caracteristici:
-19000 tuburi electronice i 1500 relee;
-30 uniti separate care procesau datele;
-20 registre de cte 10 cifre zecimale destinate rezultatelor
finale i pariale;
-efectua 5000 operaii pe secund.
EDVAC (Electronic Discrete Variable Automatic Computer),
calculator cu numai 4000 tuburi electronice. Este important pentru c n
echipa care l-a proiectat s-a aflat i John von Neumann care n 1947 a







Sorin Adrian Ciureanu 10
publicat principiile calculatorului modern, valabile i astzi. Maina lui von
Neumann este un model de main universal, nespecializat, cu
urmtoarele elemente:
-o memorie coninnd programe (instruciuni) i date;
-o unitate aritmetic i logic(UAL);
-o unitate care permite schimbul de informaie cu perifericele (U I/E)
-o unitate de comand (UC).
Aceste dispozitive realizeaz funciile de baz ale unui calculator:
stocarea de date, tratarea datelor, micarea datelor i controlul lor, funcii
care sunt aceleai i n ziua de astzi. Calculatoarele moderne se bazeaz pe
schema lui von Neumann.
MANIAC , calculatorul de la Los Alamos Laboratory, utilizat la
proiectarea bombei atomice.
UNIAC 1, calculator lansat n 1951 de Eckert i Mauchley i utilizat
ntr-o aplicaie de predicie a alegerilor din SUA ctigate de Dwight
Eisenhower.
IBM 701, calculator cu memorie de 2kcuvinte a 36 bii i dou
instruciuni pe cuvnt (primul din seria de calculatoare lansate de celebra
firm IBM, nfiinat, de altfel, n 1911) .
IBM 704, cu 4kcuvinte de 36 bii.

1.3.1.3.Generaia a doua, calculatoare cu tranzistori (1955-1965)

John Bardeen, Walter Brattain i Wiliam Shockley au inventat n
1948 tranzistorul bipolar cu jonciune ceea ce le-a adus n 1956 Premiul
Nobel pentru Fizic. Tranzitorul are aceleai funciuni ca tuburile
electronice cu vid dar are avantajul de a fi miniaturizabil.
Calculatoarele bazate pe tehnologia cu tranzistori au urmtoarele
caracteristici:
-utilizarea diodelor i tranzistorilor pe baz de germaniu i apoi pe
baz de siliciu ceea ce a condus la o putere disipat mai mic, gabarit redus
i siguran n funcionare;
-memorii pe inele de ferit, de 1000 de ori mai rapide dect cele din
generaia anterioar, avnd timpul de acces de 2-12 s.;
-apariia cablajului imprimat;
-apariia echipamentelor periferice precum discul, banda magnetic,
imprimanta;
-apariia limbajelor de nivel nalt ca Fortran, Cobol, Algol.
Dintre calculatoarele din aceast generaie, cele mai cunoscute sunt:
TX-0 (Tranzistorised eXperimental computer 0) realizat la MIT.







Arhitectura calculatoarelor 11
PDP-1 (Programmable Data Procesor) realizat de ctre DEC (Digital
Equipement Corporation) , avnd o memorie intern de 4kcuvinte a 18 biii
ciclul instruciune de 5s., fiind echipat cu consol monitor CRT (Cathode
Ray Tube) cu posibilitatea de control al fiecrui punct de pe ecran.
PDP-8 , cu o magistral unic i cu urmtoarele module: CPU,
memorie, consol, dispozitive I/E. A fost primul calculator numeric
comercial, de mare serie, vnzndu-se 5000 buci.
CDC 6600,produs de DEC i proiectat de Seymour Cray, viitorul
proiectant al calculatoarelor Cray 1 i Cray 2.
IBM 7094, cu memorie de 32kcuvinte de 36 bii i ciclu instruciune
de 2s.
n aceast perioad i n Romnia au nceput s se produc primele
computere, care n majoritate au fost prototipuri, DACIC, MECIPT, ANCA,
CETA, ele fiind realizate la Institutul de Fizic Atomic i la Institutele
Politehnice din Bucureti i Timioara.

1.3.1.4. Generaia a treia, calculatoare cu circuite integrate (1965-1980)

n 1958 a fost inventat circuitul integrat de ctre Robert Noyl sau,
dup alte surse, de ctre Jack Kilby de la Texas Instruments. Este vorba
despre gruparea pe o pastil de siliciu a mii i apoi milioane de
componente.. Principalele caracteristici ale calculatoarelor din aceast
generaie sunt:
-utilizarea circuitelor integrate e scar redus, cu 100 tranzistori pe
chip;
-apariia memoriilor de semiconductoare, cu timp de acces de 0,5-
75s;
-memorie extern de mare capacitate, discuri de mas i benzi
magnetice.
Sistemele de calcul din aceast generaie au fost create de:
IBM, cel mai reprezentativ fiind IBM 360;
DEC, cu minicalculatoare din seriaPDP 11/XX.
Minicalculatorul IBM 360 avea urmtoarele caracteristici:
-ciclul instruciune 250s.;
-spaiul de adresare de 2
16
octei (19 Moctei);
-registre de lucru pe 32 bii;
-apariia multiprogramrii.
Minicalculatoarele PDP 11/XX aveau caracteristici asemntoare cu
ale lui IBM , ns cuvntul era de 16 bii (i apoi de 32 bii la cele din seria
VAX); raportul pre/performan era foarte bun, cel mai bun dina anii 80.







Sorin Adrian Ciureanu 12
i n Romnia , n acea perioad (anii 80), a fost o emulaie i o
efervescen n construcia de calculatoare, Romnia fiind la un moment dat
pe locul 1 din vechiul lagr socialist n ceea ce privea echipamentele de
tehnici de calcul.
n domeniul calculatoarelor numerice, Romnia a produs:
FELIX C 512/1024, serie de calculatoare care avea ca patent un
calculator francez produs de firma CII. Din punct de vedere tehnologic, a
fost construit pe pori logice i bistabile iar urmaul su, FELIX 5000, a avut
n componen circuite medii integrate ca registre i numrtoare. De
remarcat c circuitele pentru FELIX C 512/1024 erau de provenien
romneasc, produse la IPRS Bneasa Microelectronic. Din punct de vedere
al caracteristicilor, FELIX avea cuvtul de 16 bii, o memorie de maxim 1
Moctet pe baz de semiconductoare, o unitate de intrare/ieire numit USM
(Unitate de Schimburi Multiple) care emiea 5 instruciuni speciale de
intrare/ieire. Ca sistem de operare avea un sistem pe laturi, numit SIRIS V,
cu alocare de memorie cu partiii statice.
CORAL i INDEPENDENT, minicalculatoare ce emulau
instruciunile din PDP 11/44. Amndou calculatoarele romneti aveau
caracteristici tehnice asemntoare cu PDP 11/44, deosebirea dintre ele fiind
aceea c minicalculatorul CORAL avea n componen numai cipuri din
Europa de Vest i din America iar INDEPENDENT avea numai cipuri
romneti i ruseti. INDEPENDENT a fost proiectat de ITC (Institutul de
Tehnic de Calcul) iar Coral de un colectiv de la FCB (Fabrica de
Calculatoare Bucureti) dar toate erau produse de FCB. Sistemul de operare
era o prelucrare a SO RSX, numit MIX, creat de cei de la FCB.
RCD (Rom Control Data) fabrica echipamente periferice
romneti. RCD era o societate mixt, romno-american, n colaborare cu
CD (Control Data). Se fabricau discuri magnetice de mas MD-40, MD-50
(de 50 Moctei), benzi magnetice CDC, imprimante liniare BP (Band
Printer). Crearea RCD ne-adus un mare avantaj deoarece toate
calculatoarele romneti erau echipate cu periferice Control Data. Datorit
acestui fapt am putut exporta calculatoare romneti FELIX n China,
INDEPENDENT n China, Cehoslovacia i R.D.German. CORAL, dei
era cel mai performant i fcut cu echipament romnesc, nu a putut fi
exportat deoarece sistemul de operare MIX era o copie a RSX-ului . n vest
nu s-a putut exporta pe motiv de drept de autor iar n est cei de la FCB nu au
vrut s-l exporte fiind prea bun.
Oricum, n anii 70 eram cei mai buni productori de echipamente de
calcul din est. n anii 80, ns, am pierdut supremaia n favoarea Bulgariei
care a nvestit mai mult ca noi, n special n echipamente periferice i soft.







Arhitectura calculatoarelor 13

1.3.1.5. Generaia a patra . V.L.S.I. (1980-2005)

Apariia acestei generaii a fost posibil datorit perfecionrii
tehnologiei integratelor. Circuitele integrate VLSI (Very Large Scale
Integration) ajung la 1 miliard de tranzistoare pe cip..
Calculatoarele din aceast generaie se caracterizeaz prin
urmtoarele:
-utilizarea circuitelor VLSI;
-apariia i dezvoltarea microprocesoarelor;
-dezvoltarea de noi tipuri de memorii (MOS, magnetice, holografice)
i echipamente periferice orientate pe sesizarea primar a datelor;
-interconectarea calculatoarelor n reele, nsoit de ntreptrunderea
industriilor de calculatoare i telecomunicaii;
-apariia i dezvoltarea mediilor de programe complexe cu puternice
faciliti grafice.
n aceast generaie au aprut la nceput calculatoarele personale de
tip Home Computer iar apoi cunoscutele Personal Computer, pe baz de
microprocesoare; dou dintre firmele cele mai importante care produl
microprocesoare sunt INTEL i MOTOROLA.

1.3.1.6. Generaia cincia

S-a ncercat o definire a generaiei a cincia, prin formularea
cerinelor ce stau n faa calculatoarelor la ora actual, cerine care cuprin
urmtoarele:
-o interfa inteligent care s permit dialogul pe baz de limbaj
natural )voce, sunete, imagini, informaie grafic);
-crearea unei maini care s realizeze raionament pentru rezolvarea
problemei, fr cunoaterea prealabil a algoritmului;
-baze de date imense cu o cutare foarte rapid.

Tabelul 1.1. Tabel sintetic cu principalele evenimente din istoria
calculatoarelor

An Nume Eveniment
1642 Blaise Pascal Prima main de calculat mecanic
1834 Charles Babbage Maina analitic
1904 J.A.Flemming Inventarea diodei
1906 Lee de Forest Inventarea triodei
1936 Konrad Zuse Primul calculator cu relee-Berlin







Sorin Adrian Ciureanu 14
1943 Guvernul englez COLOSSUS,primul calculator cu tuburi
1944 H.Aiken Primul calculator.Mark 1
1946 J.Mauchley i J.P. Eckert ENIAC Pensilvania University
1948 Bardeen, Brattains i Sockley Inventarea tranzistorului
1948 Norbert Wiener Cibernetica
1949 M.Wilkes EDSAC primul calculator cu program
nregistrat
1951 MIT WHIRLWIND primul calculator n timp
real
1951 J.Mauchley i J.P. Eckert UNIVAC primul calculator comercializat
1952 John von Neumann IAS Princetown
1955 Laboratoarele Lincoln TX-0 primul calculator cu tranzistoare
1955-
1960
IBM IBM 704
!960/61 DEC PDP 1
1962 IBM IBM 7094 (32 bii)
1963 BORROGHS Limbajul ALGOL
1964 IBM IBM 360
1964 CDC CDC 6600 primul calculator paralel
1965 DEC PDP-8
1970 DEC PDP-11
1970/71 INTEL 4004 primul microprocesor pe 4 bii
1972 INTEL 8008 primul microprocesor pe 8bii
1974 CRAY CRAY 1 primul supercalculator
1978 INTEL 8080 UC pe un cip
1978 DEC VACS primul minicalculator pe 32 bii
1979 MOTOROLA 68000
1980 IBM Primul PC
1982 INTEL 286
1983 SUA Reeaua LAN
1984 MOTOROLA 68020 primul microprocesor pe 32 bii
1985 INTEL 386
1987 MOTOROLA 68030
1989 INTEL 486
1992 Lab CERN GENEVA WWW(World Wide Web)
1993 INTEL PENTIUM
1995 SUNMYCROSYSTEMS JAVA
1996 CYRYX 686
1997 AMD RISC K5,K6
1998 AMD K6
1999 INTEL PENTIUM III
1999 AMD ATHALON/47
2000 AMD SHARPTOOTH/K6-3










Arhitectura calculatoarelor 15

1.3.2. Concepte noi n evoluia calculatoarelor

n afara progresului tehnologic, concepiile noi au condus la o
dezvoltare rapid a sistemelor de calcul.. . Noile idei sunt legate, n primul
rnd, de arhitectura calculatoarelor. Menionm doar cele mai importante
dintre ele.

1.3.2.1. Microprogramarea

n 1951, Maurice Wilkes, un cercettor de la Universitatea din
Cambridge, a sugerat construirea unei maini pe trei niveluri, n loc de dou
cte erau pn atunci. Noul nivel propus de Wilkes avea rolul ca setul de
instruciuni s fie interpretat de microprogram, n loc s fie realizat direct pe
partea electronic. Acest concept, numit microprogramare, a devenit
dominant ncepnd cu anii 70.

1.3.2.2. Inventarea sistemului de operare

A fost proiectat i introdus cu scopul de a automatiza sarcinile
operatorului de calculator. Un sistem de operare este un program care
acioneaz ca un intermediar ntre utilizator i partea fizic a sistemului de
calcul i permite utilizarea eficace a componentelor unui calculator. Primul
sistem de operare a fost realizat, n 1955, de ctre programatorii de la
General Motors Research Center care au scris un astfel de program
intitulndu-l a monitor program for the IBM 701
Un pas foarte important n cadrul dezvoltrii sistemelor de calcul a
fost crearea sistemelor de operare cu timesharing de ctre MIT la nceputul
anilor 60. La sfritul anilor 60, se remarc o serie de invenii precum
sistemul de operare UNIX care are deja un sistem de fiiere sofisticat,
gestiunea proceselor, interfa cu sistemul i o serie de instrumente
specializate n tratarea unor sarcini specifice. Aa cum arat numele, marca
depus UNIX desemneaz nceputul sistemelor compatibile.

1.3.2.3. Memoria Cache

Memoria cache a fost o idee simpl dar foarte eficient care a mrit
de zece ori viteza de calcul a unui sistem.









Sorin Adrian Ciureanu 16

1.4. TIPURI DE ARHITECTURI ALE
CALCULATOARELOR NUMERICE

1.4.1. Arhitectura von Neumann

ntr-un articol publicat n 1947, John von Neumann a expus nite
principii care stau la baza calculatoarelor moderne. Acestea sunt:
-Existena unui mediu de intrare prin intermediul cruia s poat fi
introdus un numr practic nelimitat de date i instruciuni.
-Existena unei memorii n care s fie depui operanzii i
instruciunile i de unde s fie preluate rezultatele n ordinea dorit.
-Existena unei seciuni de calcul care s fie capabil s execute
operaii aritmetice i logice asupra datelor din memorie.
-Existena unui mediu de ieire prin intermediul cruia s poat fi
comunicat utilizatorului un numr nelimitat de instruciuni.
-Existena unei uniti de comand capabil s interpreteze
instruciunile citite n memorie i, pe baza informaiilor citite n memorie i
a informaiilor furnizate de seciunea de calcul, s fie capabil s decid
ntre mai multe variante de desfurare a operaiilor.
-Datele i instruciunile trebuie s fie stocate n memorie sub aceeai
form.















Fig. 1.3. Modelul funcional al mainii John von Neumann


Unitate de
control
Memorie
Dispozitiv
de intrare
Dispozitiv
de ieire
Unitate
logic
i
aritmetic







Arhitectura calculatoarelor 17

1.4.2. Maina Turing

n 1936, matematicianul englez Allan Turing a creat un automat
abstract care s opereze cu numere calculabile. Un numr calculabil este un
numr a crei parte zecimal poate fi determinat cu un numr finit de
iteraii.
Automatul a fost sintetizat pe baza urmtoarelor ipoteze:
a)Automatul are un numr n finit de stri.
b)Automatul se afl n orice moment ntr-o stare i, 1in, urmnd ca
n momentul imediat urmtor s se afle n starea j, 1jn.
c)Fiecare din cele n stri se caracterizeaz prin:
-valoarea caracteristic e
i
, care este o valoare curent a
numrului ce se calculeaz;
-funcia f
j
care aplicat strii e
i
permite obinerea
urmtoarei stri e
j
.
-deplasamentul d
ij
care va trebui aplicat numrului pentru a
se realiza din starea i n starea j , adic j=i+d
ij


Modelul funcional al mainii construite pe baza acestor ipoteze este
dat n figura 1.4.







C S



SR



Fig. 1.4. Modelul funcional al mainii Turing; SR-sistem reprezentativ;
C/P-cip citire/scriere.

Procesor








Sorin Adrian Ciureanu 18
-Sistemul reprezentativ (SR) sau memoria mainii este construit
dintr-o band magnetic de lungime practic infinit, mprit n segmente
de lungime egal, fiecare segment putnd stoca un numr finit de semne.
-Procesorul (P) este un circuit secvenial cu un numr finit de stri,
care poate executa urmtoarele instruciuni, (setul de instruciuni al
mainii):
-schimb segmentul de pe band de la poziia curent;
-poziioneaz capul de citire (C ) cu o poziie la dreapta;
-poziioneaz capul de citire cu o poziie la stnga;
-oprete sistemul.
Pentru a realiza un calcul cu aceast main, se nscriu datele ntr-un
mod convenabil i se descompune algoritmul de calcul, n funcie de modul
de reprezentare a datelor, ntr-o secven de instruciuni ale mainii. Ultima
instruciune este cea de oprire a mainii.

1.5. CLASIFICAREA CALCULATOARELOR

Este destul de dificil s se clasifice tipurile de calculatoare din cauza
multitudinii lor. Totui, anumite taxonomii s-au impus. Vom prezenta trei
clasificri dup arhitectur i una strict comercial.

1.5.1. Taxonomia Flynn

A fost publicat n 1966 de ctre Flynn care avea n vedere existena
ntr-un sistem de calcul a dou fluxuri:
-fluxul de instruciuni, care reprezint programul;
-fluxul de date, care reprezint datele de intrare sau rezultatele
pariale.
Clasificarea lui Flynn ia n consideraie gradul de multiplicitate ale
celor dou fluxuri i identific patru tipuri de arhitecturi:

SISD (Single Instruction Single Data)
SIMD (Single Instruction Multiple Data)
MISD (Multiple Instructions Single Data)
MIMD (Multiple Instructions Multiple Data)

SISD realizeaz o execuie sequenial a instruciunilor (figura 1.5.).
Principalul neajuns al acestei arhitecturi este viteza de execuie care , la un
moment dat, este plafonat, situaie denumit gtul sticlei lui Neumann







Arhitectura calculatoarelor 19
(Neumann Bottleneck). Spargerea acestei limitri este realizat prin
arhitectura paralel.




Fig. 1.5. Arhitectura SISD; UC-seciunea de comand a Unitii
centrale; UP-seciunea de prelucrare a Unitii centrale; MM-modul de
memorie; FD-flux de date; FI-flux de instruciuni.

ArhitecturaSIMD se caracterizeaz prin n uniti de procesare (UP)
care opereaz sub controlul unui flux unic de instruciuni (FI) lansat de o
singur unitate de comand (UC).


FD1

FD2

FI



FDn


Fig. 1.6. Arhitectura SIMD; UC-seciunea de comand a Unitii
centrale; UP-seciuni de prelucrare a Unitii centrale; MM-moduri de
memorie; FD-flux de date; FI-flux de instruciuni.

Cele mai cunoscute maini SIMD sunt calculatoarele vectoriale.
Acestea transform instruciuni care se execut n n pai ntr-o main
SIMD, n instruciuni care se execut ntr-un singur pas. De exemplu, suma
a doi vectori: c[i]=a[i]+b[i] pentru i=1n se face ntr-un pas, fiecare
Unitate de Prelucrare calculnd o component a vectorului sum.
MISD nu are nici un sens i de aceea nu este utilizat.
MIMD cuprinde dou feluri de maini:
-multiprocesoare i
-multicalculatoare.
Multiprocesoarele se caracterizeaz prin existena memoriei comune
la care au acces n procesoare. Schimbul de informaie dintre procesoare se
UC UP MM
UC
UP2
UP1
UPn
MM!
MM2
MMn







Sorin Adrian Ciureanu 20
face prin variabilele partajate din memoria comun la care au acces toate
procesoarele, ns accesul trebuie fcut prin excludere mutual pentru a
realiza ceea ce se numete consistena memoriei.
Multicalculartoarele se caracterizez prin existena unui numr foarte
mare de calculatoare ( de la ordinul sutelor n sus) care sunt legate printr-o
reea topologic. Fiecare procesor are memoria lui local, vzut doar de el,
iar comunicarea ntre procesoare se face prin mesaje.

1.5.2. Taxonomia lui Wang

Aceast clasificare presupune o organizare matricial a datelor. O
matrice de dimensiunea m x n are m cuvinte, fiecare cuvnt are o lungime
de n bii. Criteriul de clasificare este gradul de paralelism n procesarea
datelor organizate matricial. Conform acestui criteriu exist patru tipuri de
arhitecturi i anume:
-WSBS (Word Serial-Bit Serial) n care se lucreaz pe un singur
cuvnt, fiecare cuvnt fiind prelucrat serial bit cu bit, ns1, ms1.
-WSBP (Word Serial-Bit Paralel) n care se lucreaz pe un singur
cuvnt , biii fiecrui cuvnt fiind prelucrai simultan, n>1, ms1.
WPBS (Word Paralel-Bit Serial) n care se lucreaz pe un singur bit
la toate cuvintele simultan, ns1, m>1.
-WPBP (Word Paralel-Bit Paralel) n care se lucreaz simultan pe
toate cuvintele i pe toi biii, n>1, m>1.
WSBS nu are elemente de paralelism.
WSPB i WPBS sunt parial paralele, fiind orientate pe prelucrarea
vectorilor.
WPBP este complet paralel.

1.5.3. Taxonomia lui Shore

Spre deosebire de Flynn, Shore i-a bazat clasificarea pe modul n
care este organizat calculatorul din prile sale componente. Din acest punct
de vedere, au fost identificate ase tipuri de maini, fiecreia atribuindu-se o
cifr roman.
Maina I are o arhitectur convenional von Neumann, cu
urmtoarea structur:
-unitate de comand (CU)
-unitate de procesare (PU)
-memorie pentru instruciuni (IM)







Arhitectura calculatoarelor 21
-memorie pentru date (DM)




(orizontal)





Fig. 1.7. Maina I Shore.

O citire a DM produce toi biii unui cuvnt, care sunt prelucrai n
paralel de PU, PU putnd conine mai multe uniti funcionale.
Aceast clas include calculatoare vectoriale, de exemplu CRAY 1.
Maina II este similar mainii I, cu deosebirea c, n timp ce
maina I citete slice-uri orizontale, maina II citete un slice vertical.












(vertical)

Fig. 1.8. Maina II Shore

Exemple de calculatoare de tip maina II Shore : ICL, DAP,
STARAN etc.

Maina III este o combinaie a mainilor I i II. Un exemplu de
astfel de main este calculatorul ortogonal Shooman(1970)

IM CU
PU
DM
IM
CU

PU

DM







Sorin Adrian Ciureanu 22




(orizontal)





(vertical)

Fig. 1.9. Maina III Shore

Masina IV se obine prin multiplicarea unitilor PU i DM din
maina I i prin trimiterea acestui ansamblu de la o singur unitate de
control UC. Exemplu: PEPE.








Fig. 1.10. Maina IV Shore

Maina Veste exact maina IV cu facultatea suplimentar c
unitile PU sunt aezate pe o linie i se asigur conexiuni ntre vecinii cei
mai apropiai; fiecare PU poate adresa informaii din memoria sa dar i din
cea a vecinilor si imediai. Este un masiv conectat. Exemplu: ILIA CIV.
Maina VI este denumit maina cu logica n memorie. Este o
abordare alternativ a distribuirii comenzii n memorie.





Fig. 1.11. Maina VI Shore
Exemplu: calculatoare cu memorii asociative.
IM
CU
PU
PU
DM
CU
PU PU PU
DM DM DM
CU
PU +DM







Arhitectura calculatoarelor 23

1.5.4. Clasificare comercial

Dac primele trei clasificri erau strict legate de arhitectur,
clasificarea urmtoare are ca punct de vedere piaa de calculatoare.
Sistemele de calcul pot fi:
-calculatoare personale;
-servere;
-sisteme dedicate.
Calculatoarele personale sunt cele mai populare. Au cel mai mic
cost i n ultimii ani s-au produs 150-200 milioane pe an. Preul lor nu
depete suma de 10000 dolari.
Serverele sunt destinate s ofere servicii tot mai sofisticate de reea.
Costul lor este de 10.000 10.000.000 dolari. n ultimii ani s-au produs
aproximativ 4 milioane servere pe an.
Sistemele dedicate sunt construite pentru anumite aplicaii speciale.
Costul lor este de 10.000-100.000 dolari.

1.7. TRENDUL N ARHITECTURA
CALCULATOARELOR

Din punct de vedere tehnologic cele mai importante tendine sunt:
-gradul de integrare al tranzistorilor pe cip crete cu cca. 55% pe an;
tehnologia de integrare a microprocesoarelor a evoluat de la 10 microni
(1971) la 0,18 microni 2001.
-frecvena ceasului crete i ea cu 50% pe an;
-pentru memoriile DRAM, densitatea de integrare crete cu cca 40-
50% pe an, iar timpul de acces aferent scade cu 3 % pe an.
-tehnologia i performanele reelelor se mbuntesc semnificativ.
Se poate spune c aceste tendine respect legea lui Gordon Moore,
cofondator mpreun cu Obert Noyce a societii INTEL. Acesta, n 1965,
enun celebra sa lege: numrul de tranzistori din circuitele integrate se va
dubla la fiecare doi ani . Aceasta nseamn c, la fiecare 10 ani se schimb
prefixul de msurare, adic totul crete de 1000 de ori. ntr-adevr, dac
hard discurile din anii 90 aveau 100 MB, n 2000 ele au 100 GB. Frecvena
ceasului era n 1990 de 8 MHz iar n 2000 era de 1 GHz etc.
Ceea ce s-a ntmplat ntr-adevr cu procesoarele INTEL n ultimele
trei decenii se poate constata din tabelul de date reale dat n continuare, date
care verific destul de bine legea lui Gordon.







Sorin Adrian Ciureanu 24


Tabelul 1.2. Evoluia procesoarelor Intel ntre 1972 i 2000
anul numele Frecvena

Tranzistor
(nr./cip)
1972 8008 200KHz 3500
1974 8080 2MHz 6000
1976 8085 5MHz 6500
1978 8086 10MHz 29000
1982 286 12MHz 134.000
1985 386 16MHz 275.000
1989 486 25MHz 1,2.10
6

1993 P 60MHz 3,1.10
6
1997 PII 300MHz 3,3.10
6
1999 PIII 600MHz 9,5.10
6
2000 PIV 1,5GHz 42.10.
6


ntre cele mai evidente tendine de evoluie n arhitectur amintim:
-exploatarea paralelismului la nivelul instruciunilor i firelor de
execuie, att prin tehnici statice (soft) ct i dinamice(hard); exist i
tehnici hibride cum ar fi cazul procesorului Intel Ithamium IA-64;
-structuri tot mai performante de ierarhizare a sistemului de memorie
prin utilizarea arhitecturilor evoluate de memorie cache;
-reducerea latenei critice de program, prin tehnici de
predicie;
-utilizarea microprocesoarelor Shered memory n special n cadrul
arhitecturii serverelor i staiilor grafice.


















Arhitectura calculatoarelor 25



Capitolul 2

UNITATEA CENTRAL


Unitatea central (UC), n englez CPU=Central Processing Unit,
este partea din calculator care are rolul de a interpreta i executa
instruciunile unui program, de a citi sau salva n memorie rezultatele i de a
comunica cu unitile de schimb. Toate aceste activiti sunt cadenate de un
ceas la frecven constant care mparte timpul n fraciuni de aceeai durat
numite cicluri.

2.1. STRUCTURA UNITII CENTRALE

Unitatea Central are n componen:
-Unitatea Aritmetic i Logic (UAL);
-Unitatea de comand (UCd);
-Registrele generale (RG).

a) Unitatea Aritmetic i Logic (UAL)

UAL execut operaii aritmetice (adunare, scdere, nmulire
mprire, complement fa de 1, complement fa de 2 etc.) , operaii logice
(negare, i, sau, suma modulo 2), decalaje i rotaii. Are dou intrri de date,
pe n bii, o ieire corespunztoare operaiei efectuate, pe n bii, eventual o
ieire corespunztoare flagurilor poziionate de operaie i o intrare de
comand care selecioneaz operaia de efectuat.
Toat Unitatea Aritmetic i Logic este grupat n jurul unui
sumator paralel care poate aduna coninutul a dou registre multiplexate la
cele dou intrri ale sumatorului. Operaiile de nmulire i mprire se
realizeaz, cu ajutorul diferiilor algoritmi, prin adunri i deplasri
stnga/dreapta succesive. Scderea se realizeaz ca o adunare cu
complementul scztorului.







Sorin Adrian Ciureanu 26
Schema unei UAL este dat n figura 2.1.

















Fig 2.1. Schema bloc UAL


b) Unitatea de Comand (UCd)

Unitatea de comand este format din:
-Generatorul de Faze (GF);
-Generatorul de Tact (GT);
-Blocul Circuitelor de Comand (BCC).
Blocul circuitelor de comand (BCC) dirijeaz toate operaiile
executate n cadrul unei instruciuni. Exist microoperaii, care sunt
operaiile elementare executate ntr-o instruciune, i microcomenzi, care
sunt semnalele generate de BCC pentru execuia microoperaiilor.
Microcomenzile sunt trimise elementelor de execuie din structura
calculatorului: registre, UAL, memorie, porturi etc. O instruciune este, de
fapt, o succesiune de microoperaii.
Toate microoperaiile care se execut n acelai timp definesc o stare
n execuia unei instruciuni, stare numit faz.
Generatorul de faze (GF) construiete succesiunea fazelor necesar
pentru execuia instruciunii.
Generatorul de tact (GT) d cadena schimbrilor de stare pentru
toate circuitele secveniale.

Set
de
registre
Registru
tampon
Registru
acumulator
Sumator







Arhitectura calculatoarelor 27
c) Registrele generale (RG)

Registrele generale (RG) sunt considerate o memorie foarte rapid i
de foarte mic capacitate. Structural fac parte din UC i, n marea majoritate
a arhitecturilor, ele sunt adresabile pe magistral.
Exist dou moduri de conexiune a registrelor generale:
-RG conectate direct ntre ele:
-RG conectate la magistrale.

2.2. CARACTERISTICILE UNITII CENTRALE

Performanele n funcionarea unei Uniti Centrale sunt redate prin
urmtoarele caracteristici:
-Lungimea cuvntului;
-Frecvena ceasului;
-Numrul de instruciuni executate n unitatea de timp;
-Gradul de paralelism.

2.2.1. Lungimea cuvntului

Calculatoarele lucreaz cu ajutorul cuvintelor de cod a cror cantitate
de informaie este msurat n bii. Numrul de bii reprezint lungimea unui
cuvnt i este multiplu de doi. Un cuvnt poate reprezenta:
-o instruciune;
-un segment de date.
ntr-un calculator, lungimea cuvntului se identific cu numrul de
bii ai instruciunii. Cele mai noi calculatoare au instruciuni pe 64 bii.
Aceasta este o caracteristic principal a UC .
Nu este obligatoriu ca lungimea cuvntului s fie aceeai cu
dimensiunea magistralei de memorie pe care se aduc instruciunile din UM
n UC. Un calculator poate avea, de exemplu, lungimea instruciunii de 64
bii i lrgimea magistralei de 32 bii; pentru aducerea unei instruciuni din
memorie sunt necesare, n acest caz, dou apeluri la memorie.

2.2.2. Frecvena ceasului

Orice calculator are un generator de impulsuri, numit ceasul unitii
centrale.. Acesta este realizat cu un cuar care emite impulsuri cu frecven
fix. Ceasul iniial sufer dou tipuri de operaii:







Sorin Adrian Ciureanu 28
-operaia de divizare a ceasului, ceea ce nseamn c ceasul iniial,
cu cuar, sufer modificarea frecvenei sale;
-operaia de amplificare a semnalului de ceas.
Pe acest ceas, care este inima calculatorului, au loc toate
evenimentele hard din UC.

2.2.3. Numrul de instruciuni executate
n unitatea de timp

Dac facem urmtoarele notaii:
f = frecvena ceasului, n Hz
N = numrul mediu de ceasuri n care se execut o instruciune
n = numrul de instruciuni executate ntr-o secund
atunci
N
f
n
De exemplu, pentru un calculator care are frecvena ceasului de 2
GHz i care execut dou instruciuni pe ceas, numrul de instruciuni
executate n unitatea de timp este:
4 10 . 4
2
1
2
9

GHz
N
f
n miliarde instruciuni pe secund
Pentru calculatoarele moderne se adopt o unitate de msur numit
MIPS (milioane de instruciuni executate ntr-o secund). n exemplul
precedent, parametrul n va fi de 4000 MIPS.
Trebuie precizat c acest parametru (n) este mai aproape de adevr
dect frecvena ceasului (f). Exist calculatoare cu frecven mai mic dar
care sunt inferioare calculatoarelor cu frecvena ceasului mai mare, tocmai
datorit mrimii N. De exemplu Intel 586 cu frecvena 100 MHz i Pentium
I cu frecvena 66 MHz. Ar fi mai bine s fie afiat parametrul n n locul
parametrului f, dar partea dificil este calcularea practic a lui N. Este
dificil, deoarece, n setul de instruciuni, fiecare are N diferit i chiar
aceeai instruciune are N diferit n funcie de contextul rulrii.

2.2.4. Gradul de paralelism

Exist dou feluri de paralelism:
-paralelism la nivel de instruciuni (pipeline)







Arhitectura calculatoarelor 29
-paralelism la nivel de procesor.

2.2.4.1. Paralelism la nivel de instruciuni (pipeline)

a)Principiul pipeline-ului este acela al liniei de montaj (de
asamblare):
-mprirea unei sarcini n mai multe subsarcini de durate egale,
numite etaje;
-executarea simultan a diferitelor subsarcini din mai multe sarcini.
n felul acesta se mrete debitul de sarcini al sistemului. Sistemul va
fi caracterizat prin doi parametri: durata individual a unui etaj (T) i
numrul de etaje (l)din pipeline. Latena L este durata total de execuie a
unei sarcini: L= lT
Debitul, d, al pipeline-ului depinde de numrul n de sarcini de
executat. Timpul necesar pentru execuia n pipeline a n sarcini este timpul
de execuie a primei sarcini, L= lT, plus timpul necesar pentru a le termina
pe celelalte n-1 urmtoare:
T n L
n
d
) 1 (

sau, la limit:
1
lim


T d
n

Apare rezultatul esenial: pentru un mare numr de sarcini, debitul
nu depinde de laten ci de durata individual a fiecrui etaj. Deci, debitul
optimal va fi atins fracionnd ct mai fin posibil sarcina n subsarcini.
Evident, fracionarea are limite tehnice.
b)Clasicul pipeline pentru execuia instruciunilor
n calculatoare, pipeline-ul const n fracionarea execuiei unei
instruciuni n mai multe module, fiecare modul executnd hard o parte de
instruciune. Conceptul de pipeline nseamn de fapt o band de asamblare
cu segmente, fiecare segment executnd o parte de instruciune.
De exemplu, o band de asamblare cu 5 segmente. Aceste 5
segmente sunt:
S1 unitate de extragere a instruciunii
S2 unitate de decodificare a instruciunii
S3 unitate de calcul i extragere a operanzilor
S4 unitate de execuie propriu zis a operaiei instruciunii
S5 unitate de scriere a rezultatelor









Sorin Adrian Ciureanu 30


(a)

S1 1 2 3 4 5 6 7 8 9 10 11
S2 1 2 3 4 5 6 7 8 9 10
S3 1 2 3 4 5 6 7 8 9
S4 1 2 3 4 5 6 7 8
S5 1 2 3 4 5 6 7
Timpi de
execuie a
segmentelor
t
1
t
2
t
3
t
4
t
5
t
6
t
7
t
8
t
9
t
10 t
11

(b)
Fig.2.2. Schema unei benzi de asamblare cu 5 segmente; (a) schema de
funcionare; (b)diagrama temporar a execuiei segmentelor.

Din figura 2.2. se observ cum funcioneaz paralelismul ntr-o
band de asamblare, la un moment de timp fiecare segment executnd unul
din cele 5 segmente de instruciune diferite. Dac timpul de execuie a unui
segment este de 1 secund, (t
1
=t
2
=.=t
10
=t
11
=1s) atunci timpul de
execuie a 7 instruciuni este, aa cum se vede n figur, de 11 secunde. Pe o
main normal, fr pipeline, timpul de execuie a 7 instruciuni, fiecare
necesitnd 5 secunde, ar fi de 35 sec. Efectul se vede n creterea debitului
n executarea instruciunilor.
Exist i sisteme cu dou benzi de asamblare, ca n figura 2.3.






Fig.2.3. Pipeline cu dou benzi de asamblare.

Un astfel de sistem are o singur unitate de extragere a instruciunii
(S1) care extrage perechi de instruciuni i le plaseaz pe cele dou benzi.
Condiia de a lucra n paralel este ca cele dou instruciuni s nu i dispute
aceeai resurs i s nu depind una de rezultatul celeilalte. Aceast condiie
este garantat fie de compilator , fie de un hard suplimentar dotat cu un
sistem de predicie.
Calculatoarele Pentium I erau dotate cu dou benzi de asamblare:
S1 S2 S3 S4 S5

S1

S2 S3 S4 S5
S2 S3 S4 S5







Arhitectura calculatoarelor 31
-band de asamblare U (U pipeline), band principal, care putea
executa orice instruciune;
-band de asamblare V (V pipeline), care putea executa doar
instruciunile simple n numere ntregi i o singur instruciune simpl n
virgul mobil.
Existau reguli destul de complicate pentru mperecherea
instruciunilor. Erau extrase cte dou instruciuni i dac erau compatibile
erau executate, dac nu, se executa doar prima pe banda U, a doua fiind
pstrat i mperecheat cu cea care urma. n acest mod, s-a constatat c
Pentium I era de dou ori mai rapid dect un 586 la aceeai frecven.
c) Arhitecturi suprascalare
Pornind de la ideea benzilor de asamblare , s-a ajuns la concluzia c
este mai benefic de a avea o singur band de asamblare dar cu mai multe
uniti funcionale. O astfel de arhitectur se numete superscalar, termen
introdus de Agerwals i Cocke n 1987. n figura 2.4. este dat o astfel de
arhitectur.
S4
















Fig. 2.4. Procesor superscalat cu 5 uniti funcionale.

Ideea arhitecturii superscalare este c segmentul S3 poate lansa
instruciuni mult mai rapid dect le poate executa S4, deci, la o band
simpl exist o gtuire de timp ntre S3 i S4. La arhitectura superscalar, se
mparte unitatea de execuie S4 n uniti funcionale pe tipuri de
instruciuni (de ncrcare,LOAD, de memorie, STORE, de virgil mobil)
S1 S2 S3 S5 lLOAD
STORE
VIRGUL
FLOTANT
UAL
UAL







Sorin Adrian Ciureanu 32

2.2.4.2. Paralelism la nivel de procesor

Banda de asamblare sau arhitectura superscalar nu cresc
performanele n mod simitor. Mult mai eficient este mrirea numrului de
procesoare. Acest lucru se ntmpl n :
-mainile SIMD, calculatoare vectoriale;
-mainile MIMD, multiprocesoare;
-mainile MIMD, multicalculatoare.

2.3. MODURI DE ADRESARE

Dup posibilitatea gsirii operanzilor, exist mai multe moduri de
adresare:
-adresare imediat;
-adresare direct;
-adresare indirect;
-adresare indexat.

a) Adresare imediat

Operandul se afl chiar n cmpul instruciunii.


Instruciune
Cmp operand
MOV R 20000
Se transfer valoarea 20000 n registrul R.

b) Adresare direct

Operandul se gsete la o adres care exist n instruciune
Cmp adres


OPERAND
MOV R 100
100 20000
n cmpul de adres al instruciunii se afl o adres (100) la care
exist operandul.
OPERAND
ADRES







Arhitectura calculatoarelor 33

c) Adresare indirect

n cmpul de adres al instruciunii se afl o adres. La acea adres
se afl operandul. Numrul de indirectri depinde de fiecare calculator n
parte.
Cmp adres


ADRES OPERAND

MOV R 100
100 200
200 20000

La adresa 100 din cmpul instruciunii se afl alt adres, 200, iar la
aceast adres se afl operandul.

c) Adresare indexat

La adresarea indexat particip un registru numit registru INDEX.
Adresa operandului este:
Adresa operand =valoare
CMP ADRES
+valoare
REGISTRU INDEX

MOV R 100
RINDEX 600
100 700
Adresa calculat: 600 + 700 = D00
D00 20000

2.4. UNITATE CENTRAL CABLAT

ntr-o UNITATE CENTRAL CABLAT toate transferurile se fac
n mod hard, de ctre o unitate de comand. Prile componente ale unei
astfel de UC, aleas ca exemplu (figura 2.5.), sunt:
-registrul A, numit registru acumulator (32 bii);
-registrul T, numit registrul tampon, cu rol de a pstra rezultatele
pariale, (32 bii);


ADRES







Sorin Adrian Ciureanu 34

Bus local n UC


Bus memorie





RG








IC








Fig. 2.5. Schema bloc a unei uniti centrale cablate.

-registrul M, care are rolul de a reine datele scrise sau citite din
unitatea de memorie (32 bii);
-registrul RI, care are rolul de a stoca instruciunea pe toat durata
execuiei sale;
-registrul PC, care are rolul de a reine adresa urmtoarei instruciuni
din program;
-registrul ADRMEM, care adreseaz memoria, att la scriere ct i la
citire;
ADRMEM ADRMEM
M UM M UM
citire scriere
A T

SUMATOR
INDEX
ADRMEM
M
RI
PC
RG 1
RG 2
RG 16
Z
S
C
D
U
M
E
M







Arhitectura calculatoarelor 35
de asemenea, prin ADRMEM se adreseaz i cele 16 registre generale (RG),
dar pe bus-ul local nu pe cel al memoriei; adresele de registre generale sunt
primele 16 adrese de memorie, adrese rezervate exclusiv pentru RG,
neputnd fi utilizate ca adrese de memorie;
-!6 registre generale (RG) adresate pe bus-ul local al UC-ului;
-registrul INDEX , care particip la calculul adresei n mod indexat;
-4 indicatori de condiie (ZC) cu urmtoarele semnificaii:
Z arat dou situaii
Compararea ntre registrele A i T
Z=1 A=T
Z=0 AT
Coninutul acumulatorului este zero (Z=1)
S S=1 rezultat negativ (n A)
D D=1 depire
C C=1 transport
-BUS-ul local, un bus foarte rapid n interiorul UC-ului;
-BUS-ul de memurie, un bus mai lent care face legtura UCUM;
Convenional, o adres este o adres de octet. Un cuvnt este pe 32
bii, deci pe 4 octei.
Adresele din PC vor evolua cu 4, urmtoarea adres de instruciune
fiind PC+4.
Adresele celor 16 registre generale sunt:
RG 1 0 RG 5 10 RG 9 20 RG 13 30
RG 2 4 RG 6 14 RG 10 24 RG 14 34
RG 3 8 RG 7 18 RG 11 28 RG 15 38
RG 4 C RG 8 1C RG 12 2C RG 16 3C

O instruciune are 32 bii i are urmtoarea structur:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

COD MS SURSA MD DESTINAIE


COD 4 bii codul instruciunii (calculatorul are 16 instruciuni)
MS - modul operandului surs 2 bii
00 mod imediat
01 mod direct
10 mod indirect
11 mod indexat
SURSA cmpul operandului SURSA 12 bii







Sorin Adrian Ciureanu 36
MD modul destinaie
00 mod imediat
01 mod direct
10 mod indirect
11 mod indexat
DESTINAIE cmpul operandului DESTINAIE 12 bii
Setul de instruciuni executate de acest calculator este de numai 16
instruciuni.
Tabelul 2.1. Lista de instruciuni a calculatorului
COD MNEMONIC ACIUNE
0000 ADD SURS+DESTINAIEDESTINAIE
0001 MOV SURSADESTINAIE
0010 CMP SURSA compar cu DESTINAIEpoziioneaz Z
0011 C1 SURSAcomplementDESTINAIE
0100 DDn SURSA deplasare dreapta cu n poziii DESTINAIE : n
0101 DSn SURSA deplasare stnga cu n poziii DESTINAIE : n
0110 SM2 SURSA suma modulo 2 DESTINAIE DESTINAIE
0111 SAU SURSA sau DESTINAIE DESTINAIE
1000 SI SURSA i DESTINAIE DESTINAIE
1001 INC SURSA +1 DESTINAIE
1010 DEC SURSA 1 DESTINAIE
1011 SWAP SURSA
1-16
DESTINAIE
17-32
SURSA
17-32
DESTINAIE
1-16
1100 SALTNEC SALT LA ADRESA DAT DE SURS
1101 SALTCOND DAC Z=1 SALT LA ADRESA DIN SURS, Z=0 PROGR
CONTINU N SECVEN
1110 DDCn SURSA deplasare circular dreapta cu n poziiiDESTINAIE n
1111 DSC n SURSA deplasare circular stnga cu n poziiiDESTINAIE n

Fiecare instruciune, pentru a fi executat, are o serie de comenzi
care, la UC cablat, sunt efectuate de ctre partea hardware a unitii
centrale.
Orice instruciune are o parte comun care se numete ifetch
(instructionfetch) i care este partea de aducere a instruciunii din memorie
n UC. Ea are urmtoarele comenzi:
PC ADRMEM

ADRMEM
M UMEM
CITIRE

M RI
PC PC + 4

n continuare, s vedem care sunt comenzile pentru diferite
instruciuni care lucreaz n diferite tipuri de adrese.







Arhitectura calculatoarelor 37
1)
COD 0001
MNEMONIC ADD
MS 00 - imediat
SURSA 02A
MD 00 - imediat
DESTINAIA - 05B
Adresa instruciunii 100
Instruciunea este
000A805B
Comenzi:
ifetch: PC ADRMEM 100

ADRMEM
M UMEM 000A805B
CITIRE

M RI 000A805B
PC PC + 4 104

RI
7-18
A 0000 002A
RI
21-32
T 0000 005B
A +T A 0000 0085
A RI 0000 0085

2)
COD 0001
MNEMONIC MOV R5 ABCDEF01
MS 01 - direct
SURSA RG5 10
MD 01 - direct
DESTINAIA - RG16 3C
Adresa instruciunii 200
Instruciunea este 0404103C
Comenzi:
ifetch: PC ADRMEM 200

ADRMEM
M UMEM 0404103C
M RI 0404103C
PC PC + 4 204
RI
7-18
ADRMEM 10







Sorin Adrian Ciureanu 38
ADRMEM
M RG5 ABCDEF01
RI
21-32
ADRMEM 3C
ADRMEM
M RG16 ABCDEF01
3)
COD 0010
MNEMONIC CMP
MS 10 - indirect
SURSA 800 800 F00
MD 10 - indirect 900 E00
DESTINAIA - 900 F00 ABCDEF01
Adresa instruciunii 200 E00 ABCDEF01
Instruciunea este 1A002900
Comenzi:
ifetch: PC ADRMEM 200

ADRMEM
M UMEM 1A002900
M RI 1A002900
PC PC + 4 204

RI
7-18
ADRMEM 800

ADRMEM
M 800 F00
M ADRMEM F00

ADRMEM
M F00 ABCDEF01
M A ABCDEF01
RI
21-32
ADRMEM 900

ADRMEM
M 900 E00
M ADRMEM E00
ADRMEM
M E00 ABCDEF01
M T ABCDEF01
A compara cu T pozit lui Z=1
prm









Arhitectura calculatoarelor 39

2.5. UNITATE CENTRAL CU MICROPROCESOR

Microprocesorul este o unitate central de prelucrare a datelor
(UCP), realizat ntr-un singur circuit integrat. Vom exemplifica o
arhitectur de microprocesor pe INTEL 8086, primul microprocesor pe 16
bii.

2.5.1. Schema general a unui microprocesor 8086

Microprocesorul 8086 are dou componente:
-Unitatea de execuie (UE);
-Unitatea de interfa cu bus-urile(UI)
Structura acestui microprocesor este de tip pipeline, adic este o
structur n band de asamblare cu dou segmente: UE i UI.
UE decodific instruciunile numerice, elaboreaz comenzi interne
pentru efectuarea calculelor i comenzi externe ctre cea de-a doua unitate.
UE conine 8 locaii de memorie intern numite registre de uz general.
UI calculeaz adresele de memorie i de intrare/ieire, transfer
datele ntre UE i memorie, ntre UE i I/O i transfer ctre UE codurile
numerice ale instruciunilor citite n memorie.
Cele dou segmente efectueaz autonom secvene de operaii proprii,
transferndu-i n acelai timp informaii. Secvenele de operaii efectuate de
cele dou uniti ale microprocesorului pentru a executa instruciunile se
numesc cicluri de instruciune, pentru UE i cicluri main de bus, pentru
UI.
a)Structura UE

UE are componentele:
-Unitatea aritmetic-logic (UAL), n englez Arithmetic-Logic
Unity (ALU), care execut operaii aritmetice i logice, deplasri i rotaii.
-Registrele temporare (RT), care preiau operanzii de pe bus-ul intern
i i ofer unitii UAL. mpreun cu UAL formeaz un automat.
-Registrul de flaguri, F, care conine indicatorii de stare ALU ai
ultimei operaii; registrul este actualizat de ctre ALU.
-Blocul de comand, care decodific codul instruciunii curente,
preluat din coada de ateptare Q, execut operaia i elaboreaz comenzi
externe pentru UI.







Sorin Adrian Ciureanu 40
UE este complet separat de exterior, toate sarcinile privind
transferul cu exteriorul revenind UI-ului.

20bii

16 bii
8bii 8bii

Ax

Bx Registrede offset
date
Cx

Dx


Registre de
adrese



Bus intern 4bii
A16.-19
AD0-15
BD0-15
RT
BC




Coad de ateptare
Instruciuni (Q)
F





UE UI

Fig. 2.6. Arhitectura intern a microprocesorului 8086.

b)Structura UI

UI conine componentele date n continuare.
1)Blocul de interfa ntre bus-uri, care face transferurile UE.
AH AL
BH BL
CH CL
DH DL
DI
SJ
BP
SP
Registre temporare
ALU
Registru
flaguri
Decodificare
operaie
Comand
Inter-
fa
Bus-uri

CS
DS
ES
SS
IP







Arhitectura calculatoarelor 41
Are urmtoarele cicluri:
-cicluri de scriere memorie sau I/E (UCMEM , I/E)
-cicluri de citire memorie sau I/E (UCMEM , I/E)
2)Coada de ateptare a codurilor de instruciuni (Q), care:
-este ncrcat de ctre UI cu coduri de instruciune, numai n
momentele de timp cnd UE nu are transferuri de date;
-este inactiv dac este plin sau se cer transferuri pe bus;
-este tears complet dac instruciunea este de salt.
3)Blocul de calcul al adreselor fizice, care include:
-registrele de segment ce conin componenta segment a adresei
locaiei de memorie accesat;
-registrul indicator al instruciunii curente (IP) cu componenta offset
a adresei instruciunii curente;
-unitate de deplasare-adunare pentru calculul adresei fizice din
componentele segment i offset .

2.5.2. Registrele microprocesorului

Registrele microprocesorului 8086 au o capacitate de 16 bii i pot fi
clasificate n patru grupe, n funcie de rolul pe care l au n execuia
instruciunilor.
-Registre generale.
-Registre segment.
-Registru indicator al adresei instruciunii curente IP.
-Registru de flaguri,F, i registrul IP.

2.5.2.1. Registre generale

Registrele generale se impart n dou seturi de registre:
-Registre de date: Ax,Bx,Cx,Dx.
-Registre de adresare: SP, BP, SI, DI.

a)Registre de date

Exist patru registre de date de 16 bii:
Ax-acumulator;
Bx-baza n adresarea datelor;
Cx-contor;
Dx-date.







Sorin Adrian Ciureanu 42
Fiecare din aceste registre pot fi mprite n dou registre de 8 bii:
16 bii 8 bii 8 bii
Ax AH AL
Bx BH BL
Cx CH CL
Dx DH DL
Registrele de date sunt utilizate n majoritatea instruciunilor
aritmetice i logice. Majoritatea instruciunilor aritmetice utilizeaz n
acelai mod toate registrele. Exist i instruciuni aritmetice pentru care
anumite registre generale au ntrebuinri speciale. De exemplu:
Ax - operaii de intrare/ieire pe 16 bii, nmuliri i mpriri pe 16
bii;
AL - operaii de intrare/ieire pe 8 bii, translaii, aritmetice BCD,
nmuliri i mpriri pe 8 bii;
AH nmuliri i mpriri pe 8 bii;
Bx operaii cu memoria, adresare indirect, translaii;
Cx operaii cu iruri, bucle program;
CL operaii de deplasare sau rotaie cu mai mult de o poziie;
Dx operaii de intrare/ieire, adresare indirect, nmuliri i
mpriri pe 16 bii.

b)Registre de adresare

Sunt de dou tipuri:
1)Registre indicatoare de adres n stiv (pointer):
-SP (Stack Pointer), care conine adresa curent a vrfului stivei;
-BP (Base Pointer), care conine adresa baz pentru adresarea
indirect a stivei.
2)Registre indicatoare de adrese pentru iruri (index):
-DI (Destination Index)conine adresa curent pentru irul
destinaie;
-SI (Source Index)conine adresa curent pentru irul sursei.
Registrele de adresare pot fi utilizate i pentru anumite instruciuni
aritmetico-logice.
Registrele pointer conin componente offset ale adreselor de stiv
(adresele relative n segmentul de stiv curent) .
Registrul BP poate fi utilizat i pentru adresarea n cadrul altor
segmente.
Registrele index conin componente offset ale adreselor variabilelor
(adrese relative n segmentul de date curent). Ele sunt utilizate ca registre de







Arhitectura calculatoarelor 43
adresare i instruciunile de transfer sau prelucrri de iruri de caractere. n
acest ultim caz registrul SI conine adresa relativ curent a irului destinaie
n cadrul segmentului de date curent (DS), iar DI conine adresa relativ
curent a irului surs n cadrul segmentului de date suplimentar (ES).

2.5.2.2. Registrele segment

Spaiul de memorie pe care poate s-l adreseze un microprocesor
8086 este mprit n segmente logice de lungime 64KO. Exist patru
registre segment:
-CS (Cod Segment), care conine componenta segment a adreselor
codului (instruciunile programului);
-DS (Data Segment), care conine componenta segment a adreselor
variabilelor (segment date curent);
-ES (Extra Segment), care conine componenta segment a adreselor
variabilelor (segment suplimentar);
-SS (Stack Segment), care conine componenta segment a adreselor
datelor din segmentul stiv.
Instruciunea care urmeaz s fie executat se gsete n segmentul a
crui adres se afl n registrul CS, la adresa relativ coninut n IP.
Coninutul registrului DS definete segmentul de date curent. Toate
referirile la datele din memorie, cu excepia celor prin registrele BP iSP sau
registrul DI n instruciunile pentru iruri, utilizeaz n mod implicit
segmentul referit de DS.
Coninutul registrul ES definete segmentul de date suplimentar.
Referirile la date n instruciunile pentru iruri utilizeaz n mod implicit
segmentul referit de ES.
Coninutul registrului SS definete segmentul curent al stivei. Toate
referirile la datele din memorie prin registrele BP i SP utilizeaz n mod
implicit segmentul referit de registrul SS.

2.5.2.3. Registrele IP i F

Registrul indicator al adresei curente , IP (Instrucion pointer), este
un registru de 16 bii care conine componenta ofset a adresei instruciunii n
segmentul de cod curent.
Programele nu au acces direct la IP, dar exist instruciuni care l
modific i l ncarc sau l descarc prin stiv.
Registrul de flaguri F cuprinde biii indicatori de stare i control,
numii i flaguri. Aceste flaguri sunt utilizate pentru a memora informaii







Sorin Adrian Ciureanu 44
referitoare la rezultatul unor operaii aritmetice i logice (OF, SF, ZF, AF,
PF, CF) i pentru memorarea unor informaii de control al
microprocesorului (TF, DF, IF). Semnificaiile acestor flaguri sunt date n
continuare.
-CF (Carry Flag) reflect transportul n exterior al bitului cel mai
semnificativ al rezultatului operaiilor aritmetice. CF=1 nseamn un
transport la operaia de adunare. CF mai este modificat la operaiile de
rotaie i deplasare.
-PF (Parity Plag) este indicator de paritate, el fiind 1 dac rezultatul
are paritate par; de asemenea acest indicator este utilizat i de instruciunile
de aritmetic zecimal.
-AF (Auxiliary Cary Flag) este indicator de transport auxiliar i este
1 dac a fost transport de la jumtatea de octet inferioar la jumtatea de
octet superioar; este utilizat la instruciunile de aritmetic zecimal;. -ZF
(Zero Flag) este indicatorul de zero, avnd valoarea 1 dac rezultatul
operaiei a fost zero;
-SF (Sign Flag), indicatorul de semn, este 1 dac cel mai
semnificativ bit al rezultatului este 1, adic, n reprezentarea numerelor n
complement fa de 2, rezultatul este negativ.
-OF (Overflow Flag), indicatorul de depire aritmetic, a gamei de
valori posibil de reprezentat, este 1 dac dimensiunea rezultatului depete
capacitatea locaiei memoriei.
-IF (Interrupt Flag), indicatorul de validare a ntreruperilor, este 1
dac se pot valida ntreruperile externe mascabile i 0 dac ntreruperile
externe sunt invalidate. De remarcat c acest flag nu afecteaz ntreruperile
interne sau pe cele externe nemascabile.
DF (Direction Flag) este utilizat de instruciunile pe iruri de
caractere i specific direcia de parcurgere a lor:
0 de la adrese mici spre adrese mari;
1 de la adrese mari spre adrese mici.
-TF (Trace Flag) este utilizat pentru controlul execuiei
instruciunilor n regim pas cu pas n scopul depnrii programelor. Dac
este 1, dup execuia fiecrei instruciuni se va genera un semnal de
ntreruperi intern.

2.5.3. Adresarea memoriei. Segmentarea memoriei.

Intel 8086 poate adresa un spaiu de memorie din memoria
principal (MP) de 1 Moctet. Conform conveniei INTEL, datele formate
din mai muli octei sunt memorate cu octetul cel mai semnificativ la locaia







Arhitectura calculatoarelor 45
de adres cea mai mare, adic octetul cel mai puin semnificativ este
memorat la adresa cea mai mic.
Intel 8086 vede memoria principal organizat ca un grup de
segmente. Un segment este un bloc de memorie de dimensiune 64 Koctei.
Fiecare segment poate fi accesat, n scriere sau n citire, n mod
independent.
Procesoarele pot lucra n dou moduri: modul real i modul protejat.
n modul real procesoarele adreseaz memoria principal printr-o
adres fizic direct.
n modul protejat, procesoarele adreseaz memoria principal ca pe
o memorie virtual. O adres virtual este, de fapt, un nume pentru o locaie
de memorie pe care procesorul o translateaz ntr-o adres fizic
corespunztoare. O adres virtual are dou componente: o adres de baz
(segment) i un deplasament (ofset). Notaia consacrat pentru adresa logic
este:
Segment : of f set
Trecerea de la adresa logic la adresa fizic se face astfel:
Adresa logic adres fizic
Adres fizic = segment x 10
( +)
+ of f set
nmulirea cu zece a unui numr n . nseamn deplasarea spre
stnga cu o poziie. Exemple:
1) adresa logic ABC4 : EFB8
adr esa f izic = ABC40 + EFB8 = BACF8
2) adresa logic AB00 : CD00
adresa fizic = AB000 + CD00 = B7D00
Aceast adres fizic este calculat n UI n funcie de modul de
adresare.
Structura pe segmente a memoriei face posibil scrierea unor
programe care sunt independente de poziia lor n memorie, adic sunt
relocabile dinamic. Pentru ca un program s fie relocabil trebuie s fie scris
astfel nct s nu altereze registrele sale segment i s nu fac transferuri
directe de la o locaie n afara segmentului de cod. Aceasta permite
programului s fie mutat oriunde n memoria disponibil, atta timp ct
registrele segment sunt actualizate cu noua adres de baz.

2.5.4. Formatul instruciunii

Instruciunile, codificate n binar, pot ocupa n memorie de la 1 la 6
octei. Codul instruciunii este format din:
-codul operaiei care ocup 1 sau 2 octei i care specific:







Sorin Adrian Ciureanu 46
-tipul operaiei;
-tipul operanzilor (8 sau 16 bii);
-sursa operanzilor (intern sau extern);
-destinaia rezultatelor operaiilor ALU;
-modul de calcul al EA;
-operanzii de tip imediat: date i adrese.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 OFFSET
COD
OPERAIE

D

W

MOD

REG

R/M


Fig.2.7. Formatul instruciunii cu cod pe un octet.

Semnificaiile cmpurilor din figura 2.7. sunt date n continuare.
D destinaie. Specific direcia rezultatului n combinaie cu
cmpurile MOD i R/M.
W word. Specific tipul de transfer. W = 0 nseamn transfer pe un
octet iar W = 1, transfer pe 2 octei (1 cuvnt).
MOD este o codificare a modului de calcul al adresei efective sau
lungimea deplasamentului. Este utilizat pentru a determina adresa efectiv
mpreun cu cmpul r/m.
MOD = 1 1, cmpul r/m este un cmp de registru cu
urmtoarele semnificaii:


r/m
registru
(w=0)
cuvnt
(w=1)
octet
000 Ax AL
001 Cx CL
010 Dx DL
011 Bx BL
100 SP AH
101 BP CH
110 SI DH
111 DI BH

MOD =00, cmpul deplasament nu este prezent
MOD = 01, cmpul deplasament are 8 bii (low)
MOD = 10, cmpul deplasament are 16 bii.








Arhitectura calculatoarelor 47
R/M conine:
-adresa unui registru (pentru MOD=11)
-o codificare utilizat pentru calculul adresei efective.
R/M Adresa efectiv
000 BX +SI +deplasament
001 BX +DI +deplasament
010 BP +SI +deplasament
011 BP +DI +deplasament
100 SI +deplasament
101 DI +deplasament
110 BP +deplasament
111 BP +deplasament
Unitatea de execuie (UE) are acces la operanziiimediai i de
registre; cnd este nevoie de un operand de memorie, se transmite la UI
deplasamentul acestuia i registrul de segment IC determin adresa fizic a
operandului n funcie de modul de adresare.

2.5.5. Moduri de adresare

Exist, n principal, cinci moduri de adresare.

2.5.5.1. Adresare direct

Adresa efectiv (AE) a operandului este reprezentat de
deplasamentul coninut n instruciune.













Fig. 2.8 Adresare direct. AE, adres efectiv. AS, adres
segment. AF, adres fizic.
deplasament
AE
AS
AF
OPERAND +
MEMORIE







Sorin Adrian Ciureanu 48

2.5.5.2. Adresare indirect prin registre

n cmpul calculat nu se afl operandul, ca la adresarea direct, ci o
alt adres de operand.





Memorie







Fig. 2.8. Adresare indirect prin registre.

Sintaxa instruciunilor n limbajul de asamblare utilizeaz pentru
adresarea indirect operatorul [ ]. De exemplu: mov ax, [ bx] , se
deplaseaz la adresa coninut de bx.

2.5.5.3. Adresare indexat

La calculul adresei particip i un registru index (SI sau DI n cazul
procesoarelor 8086).






Memorie







Fig. 2.9. Adresare indexat
Cod operaie Deplasament
BX
BP
SI
DI
AE
AS
AF
+
OPERAND
AE
AS
AF
+
OPERAND
SI
DI
COD OP MOD R/M DEPLASAMENT
+
7 07 015







Arhitectura calculatoarelor 49
Adresa se obine din suma registrului index i deplasamentul din
instruciune.
Acest mod de indexare este utilizat, n cele mai multe cazuri, pentru
referirea elementelor unui vector. Deplasamentul marcheaz nceputul
vectorului iar registrul index selecteaz elementul prin poziia sa relativ n
cadrul vectorului. Deoarece toate elementele vectorului sunt de aceeai
lungime, prin operaii aritmetice elementare asupra registrului index se va
selecta orice element. De aceea se poate specifica un factor de scal
(1,2,3,4) pentru index, pentru a referi vectori cu componente de lungime
fix de 1,2,3,4 octei.

















Fig. 2.10. Referirea vectorilor de lungime fix n adresarea
indexat.


2.5.5.4. Adresare imediat

n acest caz operandul se afl chiar n instruciune.







Fig. 2.11. Adresare imediat.
Adresare efectiv
Deplasament
Registru index
+
V[2 ]
V[1 ]
V[0 ]
V[3 ]
V[4 ]
V[5 ]
V[6 ]
Memorie

OPERAND
AE







Sorin Adrian Ciureanu 50

2.5.5.5. Adresarea porturilor de intrare/ieire

Porturile de intrare/ieire se adreseaz unde aceeai adres se gsete
n instruciune, pe 8 bii, cu 256 de adrese.






Fig. 2 11. Adresarea porturilor intrare/ieire

2.5.6. Procesoare 286

Fa de procesoarele 8086, procesoarele 286 au o serie de modificri
importante.
a)Se introduc dou moduri de lucru:
-modul KERNEL;
-modul USER.
n modul KERNEL, care este un mod protejat, se pot executa toate
instruciunile procesorului, inclusiv cele privilegiate. Este un mod specific
sistemului de operare.
n modul USER nu toate instruciunile se pot executa. Este un mod
specific aplicaiilor utilizator.
b) Spectrul de adrese crete la 16MB , acest lucru realizndu-se prin
adugarea a patru linii de adrese. n acest fel numrul de linii de adrese este
14.
16 MB =2
4
.2
10
B =2
14
B
nr. linii de adrese =log
2
2
14
=14
c) Se mbuntete tehnica pipeline. n varianta 286, procesorul are
patru uniti funcionale:
-unitatea de interfa cu magistrala;
-unitatea de instruciuni;
-unitatea de execuie;
-unitatea de adresare.
Unitatea de interfa cu magistrala realizeaz toate operaiile de
transfer pe magistral, adic extragerea instruciunilor i citirea/scrierea
operanzilor. Instruciunile sunt citite n avans i sunt transferate ctre
unitatea de instruciuni.
COD OP SI AE surs
DI AE destinaie







Arhitectura calculatoarelor 51
Unitatea de instruciuni decodific instruciunile i le plaseaz ntr-o
coad de instruciuni decodificate.
Unitatea de execuie preia aceste instruciuni i le execut, n funcie
de codul fiecrei instruciuni.
Unitatea de adresare calculeaz adresele de memorie n funcie de
diferitele moduri de adresare. Adresele de memorie sunt transmise ctre
unitatea de interfa cu magistrala pentru efectuarea transferurilor.

2.5.7. Procesoare 386

La aceste procesoare s-au introdus unele mbuntiri.
a) Arhitectura de baz este extins la 32 bii. Att magistrala ct i
registrele interne sunt de 32 bii.
b) Se poate adresa o memorie de 46 B, utilizndu-se n acest scop 32
linii de adres.
46 B =2
2
.2
30
B =2
32
B
nr linii de adres = log
2
2
32
=32
c) S-a introdus mecanismul de paginare n microprocesor. Cipul
MMU (Memory Management Unity), care la 8086 i 286 era separat de
procesor, a fost plasat n interiorul microprocesorului.
d) Tehnica pipeline este mbuntit cu dou module: unitate de
paginare i unitatea de prencrcare a instruciunilor.










Fig. 2.12. Schema pipeline pentru procesorul 386.

2.5.8. Procesoare 486

La procesoarele 486 s-au adus urmtoarele mbuntiri:
a) S-a nglobat n procesor aa numitul coprocesor matematic,
pentru calcului n virgul mobil.
Unitatea de segmentare Unitatea de paginare
Unitate de execuie Unitate de interfa
Unitate de
decodificare
Unitate de prencrcare a
instruciunilor







Sorin Adrian Ciureanu 52
b) S-a nglobat memorie cache de level 1 de 8kB i, de asemenea, o
unitate de management a memoriei Cache.
c) Structura pipeline a fost extins prin divizarea unitii de extragere
i execuie a instruciunilor n cinci nivele. Fiecare nivel poate s prelucreze
o alt instruciune, traversarea unui nivel fcndu-se ntr-o perioad de ceas.
d) Pentru raionalizarea consumului de energie s-a introdus un
mecanism de management ce permite comutarea procesorului n regim de
consum redus.












Fig. 2.13. Schema bloc a procesorului 486.


2.5.9. Procesoare PENTIUM

Familia de procesoare PENTIUM se bazeaz pe o arhitectur
pipeline superscalar, ceea ce nseamn c utilizeaz mai multe linii de
prelucrare pipeline autonome ce lucreaz n paralel. La varianta de baz
exist dou linii de asamblare (liniile U i V). Versiunile mai noi au trei linii
de asamblare.
Controlorul de ntreruperi APIC (Advanced Programable Interrupt
Controller) a fost inclus n structura microprocesorului.
n ceea ce privete lungimea cuvntului i a magistralelor , intern
procesorul a rmas pe 32 bii i magistrala principal extern are 64 bii.
Anumite magistrale interne, ns, au 128 sau chiar 256 bii.
S-a introdus un mecanism de protecie a salturilor care se bazeaz pe
memorarea ultimelor salturi efectuate n cadrul secvenei de program.
Citirea n avans a instruciunilor i introducerea lor n linia de prelucrare se
face pe baza probabilitii de realizare a unor salturi.

Unitate de segmentare Unitate de programare
Procesor virgul
fix
Procesor virgul
mobil
Unitate
cache
Decodificare instruciuni Prencrcare instruciuni
Unitate
de
interfa
cu
magistrala







Arhitectura calculatoarelor 53

2.5.9.1. Microarhitectura familiei de procesoare PENTIUM













Fig. 2.14. Schema de principiu a arhitecturii PENTIUM.

Microarhitectura specific procesoarelor de tip PENTIUM PRO,
PENTIUM II i PENTIUM III conine trei uniti de tip pipeline care
comunic prin intermediul unui REZERVOR DE INSTRUCIUNI :
-unitatea de extragere i decodificare a instruciunii care se ocup
de extragerea n avans a instruciunilor i transformarea lor n secvene de
microoperaii;
-unitatea de dispecerizare i execuie care selecteaz microoperaiile
ce pot fi executate i le distribuie pentru execuie;
-unitate de retragere care asambleaz rezultatele pariale n ordinea
prestabilit de program.
Aceast arhitectur se bazeaz pe execuia instruciunilor ntr-o
ordine dictat de disponibilitile datelor i a unitilor de execuie. n acest
sens unitatea de extragere i decodificare ca i unitatea de retragere sunt
uniti in order, adic uniti care respect ordinea de prelucrare a
instruciunilor prestabilit n program. Unitatea de dispecerizare i execuie
este o unitate aut of order care nu respect aceast ordine. Datorit unit-ii
de retragere, care reordoneaz rezultatele pariale pe baza ordinii iniiale, se
elimin multe din situaiile de blocare temporar a liniei de prelucrare
pipeline cauzate de ateptrile provocate de transferurile externe de date.
La procesoarele PENTIUM, odat cu apariia lui PENTIUM PRO, se
introduce conceptul de execuie dinamic. Aceasta este o combinaie de trei
tehnici:
-predicia salturilor;
UNITATE DE
EXTRAGERE I
DECODIFICARE
INSTRCIUNI
UNITATE DE
DISPECERIZARE
I
EXECUIE
UNITATE
DE
RETRAGERE
REZERVOR
DE
INSTRUCIUNI







Sorin Adrian Ciureanu 54
-execuie speculativ;
-analiza fluxului de date.
Cele trei tehnici soluioneaz majoritatea situaiilor de blocare a
liniilor de prelucrare i procesorul poate s lucreze la capacitatea maxim de
3 instruciuni ntr-o perioad de tact. La aceasta mai contribuie i existena
mai multor uniti de execuie care lucreaz n paralel.
Aceast arhitectur elimin n mare parte neajunsurile unei
arhitecturi pipeline clasice prin evitarea situaiilor de ntrziere a liniei
pipeline. ntrzierea poate s survin din diverse cauze:
-linia este golit n urma unei instruciuni de salt;
-operanzii solicitai nu sunt disponibili;
-nu exist o unitate de execuie.
Prezena rezervorului de instruciuni ofer unitii de dispecerizare i
execuie o anumit perspectiv ce permite optimizarea ordinii de execuie a
instruciunilor astfel nct s se reduc timpii de ateptare.

2.5.9.2. Unitatea de extragere i decodificare a instruciunilor

Dela BIU (Basic Interface Unit)
















Spre rezervorul de microinstruciuni


Fig. 2.15. Unitatea de extragere i decodificare a instruciunilor.


L1 I CACHE NEXT IP



DECODIFICARE

DE

INSTRUCIUNI
Bloc de memorie a
adresei de salt
Secvenator de
microinstruciuni
Alocator de registre
alias







Arhitectura calculatoarelor 55
Instruciunile se extrag din Cache-ul de instruciuni la nivelul 1(L1).
Adresarea instruciunilor se face cu ajutorul modului Next IP care folosete
n acest scop informaiile coninute n blocul de memorare a ultimelor
adrese de salt. Astfel vor fi extrase secvenele de instruciuni care au
probabilitatea cea mai mare de a fi executate n vectorul apropiat.
Pe fiecare perioad de tact se extrage cte o linie de memorare cache
de 32 bii. Se marcheaz nceputul fiecrei instruciuni, dup care extras este
transmis ctre cele trei modul de decodificare independente. Exist dou
module de decodificare simple i unul pentru instruciunile complexe.
n urma procesului de decodificare, o instruciune este transformat
ntr-o secven de microoperaii triadice. O operaie triadic este o operaie
elementar care are maximum trei operanzi: doi operanzi surs i unul
rezultat.
Instruciunile simple se decodific n unu pn la patru
microoperaii. Instruciunile complexe sunt decodificate n secvene
predefinite de microoperaii pstrate n modulul de secveniere a
microoperaiilor. Decodificatorul poate genera pn la 6 microoperaii pe o
perioad de tact.
Deoarece sunt utilizate un numr restrns de registre interne, pot s
apar dependene false ntre variabilele care utilizeaz temporar acelai
registru intern. Aceste dependene conduc la ntrzieri n linia de prelucrare
pipeline. Pentru a evita astfel de situaii, unitatea de decodificre aloc
microoperaiilor un registru alias dintr-un set de registre invizibile pentru
programator. Registrele alias pot fi utilizate n operaii aritmetice i logice.
Fiecrei microoperaii i sunt ataai bii de stare, necesari n procesul de
execuie.
Microoperaiile sunt plasate n rezervorul de instruciuni, rezervor
care face legtura ntre cele trei uniti independente de prelucrare din
aceast arhitectur superscalar.

2.5.9.3. Unitate de dispecerizare i execuie

n Unitatea de dispecerizare i execuie exist diferite module:
UEI - unitate de execuie pentru numere ntregi;
UEF unitate de execuie pentru numere n virgula flotant;
UE-MMX unitate de execuie a operaiilor MMX;
UES unitate de execuie a salturilor;
UGA unitate de generare a adreselor pentru citirea operanzilor i
scrierea rezultatelor.
Staie de rezervare







Sorin Adrian Ciureanu 56








i


i







Fig.2.16. Unitate de dispecerizare i execuie.

Staia de rezervare extrage din rezervorul de instruciuni
microoperaii ale cror condiii de execuie sunt ndeplinite i le aloc n
funcie de specificul operaiei. O microoperaie este executabil dac
operanzii cu care lucreaz sunt disponibili i dac unitatea de execuie pe
care o solicit este liber. Pentru a determina disponibilitatea operanzilor se
folosete o metod de analiz a fluxului de date, n urma creia se genereaz
un graf al dependenelor de ordine existente ntre mai multe operaii care
utilizeaz aceleai variabile. Dac mai multe microoperaii sunt simultan
disponibile, atunci se folosete un algoritm de planificare de tip FIFO care
favorizeaz execuia n secven a microoperaiilor.
Staia de rezervare dispune de 5 porturi prin care poate s comunice
cu unitile de execuie. Pot fi executate simultan maximum 5 microoperaii.
Sunt disponibile mai multe uniti de execuie care pot s lucreze n paralel:
-dou uniti pentru numere ntregi:
- o unitate pentru numere n virgul mobil;
-o unitate de execuie a salturilor;
-dou uniti pentru MMX;
-dou uniti pentru scrierea i citirea operanzilor.
Microoperaiile executate, mpreun cu rezultatele obinute, sunt
plasate din nou n rezervorul de instruciuni.
Staie de
rezervare

Port 0




Port 1




Port 2




Port 3, 4
UEI UEF UE-
MMX
UEI UES UE-
MMX
UGA
UGA
Citire operanzi
Scriere operanzi
Rezervor
de
instruciuni







Arhitectura calculatoarelor 57
Pentru instruciunile de salt, se verific dac previziunea cu privire la
adresa de salt a fost corect. n caz contrar, unitile de execuie a salturilor
invalideaz toate operaiile care urmeaz dup instruciunea de salt, spre a fi
eliminate din rezervor.

2.5.9.4. Unitatea de retragere














Fig. 2.17. Unitate de retragere.

Unitatea de retragere are rolul de a restabili ordinea iniial (aceea a
programului iniial) ntre rezultatele pariale generate n urma executrii
microoperaiilor. n acest scop se extrag din rezervorul de instruciuni
microoperaiile a cror execuie este terminat i care urmeaz n ordinea
secvenial de execuie. Rezultatele pstrate n registrele alias sunt
transferate n registrele interne sau n memorie. Unitatea de retragere poate
extrage trei microoperaii ntr-o perioad de tact.


2.6. UNITATE CENTRAL DE TIP RISC

2.6.1. CISC versus RISC

Din punct de vedere al complexitii instruciunilor, procesoarele pot
fi de dou tipuri:
-CISC (Complex Intruction Set Computer);
-RISC (Reduced Instruction Set Computer).
D Cache
UIM (unitate de interfa cu
memoria)
FER (Fiierul de registre de
retragere)
Rezervor de
instruciuni

Staie de
rezervare







Sorin Adrian Ciureanu 58
Modelele CISC sunt caracterizate printr-un set foarte mare de
instruciuni cod main, prin formate de instruciuni de lungime variabil,
i prin numeroase moduri de adresare foarte sofisticate. Desigur c aceast
complexitate arhitectural are repercursiuni negative asupra performanelor
computerului. Arhitecturile CISC au fost concepute ncepnd cu anii 1960,
pe baza datelor tehnologice din epoc . Atunci compilatoarele nu puteau
utiliza bine registrele, microinstruciunile se executau mai rapid dect
instruciunile (pentru c se situau n memorii cu semiconductori n timp ce
instruciunile se situau in memorii toroidale), memoria central era de
dimensiuni limitate etc.
Modelele RISC ncearc s corecteze neajunsurile modelelor CISC
i, de aceea, sunt caracterizate printr-o simplitate i eficien mrite. Ideea
de baz este utilizarea unui numr redus de instruciuni, cu mult mai mic
dect n modelele CISC, instruciuni care sunt cele mai frecvent utilizate i
care confer o mai mare flexibilitate n funcionare. Primele
microprocesoare RISC au fost proiectate la Universitile de Stanford
(coordonator profesorul John Hennessy) i Berkeley (cooordonator
profesorul John Patterson, cel care a i propus denumirea de RISC), n 1981.
Caracteristicile de baz ale modelului RISC sunt urmtoarele:
-timp de proiectare i erori de construcie mai reduse dect la CISC;
-unitate de comand hardware cablat, fr microprogramare, ceea
ce mrete rata de execuie a instruciunilor;
-utilizarea tehnicilor de procesare pipeline;
-utilizarea instruciunilor LOAD/STORE cu referire la memorie,
ceea ce nseamn c nu mai exist instruciuni cu operanzi n memorie ci
numai n registrele generale;
-exist un format fix al instruciunilor, codificate pe un singur cuvnt
de 32 bii sau, mai recent, pe 64 bii;
-datorit unor particulariti ale procesrii pipeline i anume datorit,
mai ales, hazardurilor pe care aceasta le implic, apare necesitatea unor
compilatoare optimizate (schedulere), cu rolul de a reorganiza programul
surs pentru a putea fi procesat optimal din punct de vedere al timpului de
execuie;
-numrul de registre generale este substanial mai mare dect la
arhitectura CISC, deoarece la arhitectura RISC se lucreaz cu ferestre
(register WINDOWS); numrul mare de registre generale este util i pentru
mrimea spaiului intern de procesare, tratarea optimizat a evenimentelor
de excepie i modelul ortogonal de programare.
Microprocesoarele RISC scalare reprezint modele cu adevrat
evolutive n istoria tehnicii de calcul. Primul articol despre modelele RISC ,







Arhitectura calculatoarelor 59
semnat de David Petterson i Carlo Sequin, a aprut n 1981, i numai peste
6-7 ani toate marile firme productoare de hardware realizau
microprocesoare RISC scalare, n scopuri comerciale sau de cercetare.
Performana acestor microprocesoare crete cu 75% n fiecare an.

2.6.2. Setul de instruciuni

n proiectarea setului de instruciuni aferent unui microprocesor
RISC intervine o multitudine de consideraii:
-compatibilitatea cu seturile de instruciuni ale altor tipuri de
procesoare pe care s-au dezvoltat produse soft consacrate; portabilitatea
acestor produse pe noile procesoare este condiionat de aceast cerin
care, n general, vine n contradicie cu cerinele de performan a
sistemului;
-setul de instruciuni este n strns dependen de tehnologia
folosit care, de obicei, limiteaz sever performanele (constrngeri legate
de aria de integrare, numrul de ., cerine specifice tehnologiei etc);
-minimizarea complexitii unitii de comand i a fluxului de
informaie procesor-memorie;
-n cazul multor procesoare RISC setul de instruciuni este ales ca
suport pentru implementarea unor limbaje de nivel nalt.
Setul de instruciuni din procesoarelor RISC este caracterizat prin
simplitatea formatului precum i de un numr limitat de moduri de adresare.
De asemenea se urmrete ortogonalalizarea setului de instruciuni.
n primul procesor RISC 1 BERKELEY exista un set de 31
instruciuni grupate n patru categorii:
-aritmetice/logice;
-acces la memorie;
-salt/apel subrutine
-instruciuni speciale.
Formatul unei astfel de instruciuni este dat n figura 2.18.

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
OP
CODE
S
C
C
DEST SOURCE 1 I
M
M
SOURCE 2

Fig.2.18. Formatul instruciunii Berkley RISC 1.

IMM = 0 cei mai puini semnificativi 5 bii ai cmpului SOURCE 2
codific al doilea registru operand ;







Sorin Adrian Ciureanu 60
IMM =1 SOURCE 2 semnific o constant pe 13 bii cu extensie
semn pe 32 bii;
SCC (Store Condition Code) semnific validare/invalidare a
activitilor de condiie, corespunztor operaiilor
aritmetice/logice executate.
Cu toate c setul su de instruciuni este redus, procesorul Berkley
RISC 1 poate sintetiza o multitudine de instruciuni aparent inexistente.
Practic nu se pierd instruciuni ci doar opcode-uri. Dar prin aceasta se
simplific foarte mult logica de decodificare i unitatea de comand.
Iat mai jos cteva exemple de instruciuni emulate de RISC 1 n
comparaie cu un calculator CISC, VAX 11/780:

Instruciunea VAX11/780 RISC 1
Incrementare INC R
i
ADD R
i
, 1, R
i

Decrementare DEC R
i
SUB R
i
, 1, R
i
ncrcare contor MOVL, #N, R
i
ADD R
0
, #N, R
i
Complement fa de 1 MCOMPL R
i
, R
j
XOR R
i
, 1, R
j


2.6.3. Principiul de procesare pipeline
ntr-un procesor RISC

Procesarea pipeline a instruciunilor reprezint o tehnic prin
intermediul creia fazele aferente multiplelor instruciuni sunt suprapuse n
timp. Arhitectura RISC este mai bine adaptat la procesarea pipeline dect
cea CISC, datorit lungimii fixe a instruciunilor, modurilor de adresare
specifice, structurii interne bazate pe registre generale .a. n general, exist
4-6 niveluri. Iat un exemplu cu 5 niveluri:
1. Nivelul IF (Instruction fetch)
Este ciclul de ncrcare a instruciunii, care const n calculul adresei
instruciunii ce trebuie ncrcat din cache sau memorie i din aducerea
efectiv a instruciunii din cache sau memorie n procesor.
2. RD (ID)
Se decodific instruciunea adus i se citesc operanzii din setul de
registre generale.
3. Nivelul ALU
Se execut operaia ALU asupra operanzilor selectai, n cazul
instruciunilor aritmetice/logice. Se calculeaz adresa la memoria de date
pentru instruciunile LOAD/STORE.







Arhitectura calculatoarelor 61
4. Nivelul MEM
Este nivelul n care se face acces la memoria principal sau CACHE,
dar numai pentru instruciuni LOAD/STORE.
n cazul citirii, apar probleme datorate neconcordanei ntre rata de
procesare i timpul de acces la memoria principal. Rezult, teoretic, c ntr-
un sistem pipeline cu N niveluri, memoria trebuie s fie de N ori mai rapid
dect ntr-un sistem clasic. Acest lucru se realizeaz, de obicei, prin
implementarea de memorii rapide, n special CACHE.
La scriere, aceast problem nu apare, datorit procesorului de ieire
specializat (DWB), ce va fi studiat la memoria CACHE.
5. Nivelul WB (write buffer)
Se scrie rezultatul n registrul destinaie din setul de registre generale
al microprocesorului.














Fig 2.19. Principiul procesrii pipeline ntr-un procesor RISC.

Prin procesarea pipeline se urmrete o rat ideal de o instruciune
pe ciclu main, ca n figura 2.19., dei, dup cum se observ, timpul de
execuie pentru o instruciune dat nu se reduce.
Se observ necesitatea suprapunerii a dou nivele concureniale:
nivelul IF i respectiv MEM, ambele cu referire la memorie. Deseori aceast
situaie se rezolv prin legturi (busuri) separate ntre procesor i memoria
de date respectiv de instruciuni .
O deficien important a acestor microprocesoare este c nu orice
instruciune trece prin cele 5 nivele de procesare. De exemplu prin nivelul
MEM trec doar instruciunile LOAD/STORE . Corectarea acestui neajuns se
face, uneori, prin comprimarea a dou niveluri.
IF RD ALU MEM WB
IF RD ALU MEM WB
IF RD ALU MEM WB
IF RD ALU MEM WB
IF RD ALU MEM WB
IF RD ALU MEM WB Un
ciclu
mai
n
Sensul fluxului de date







Sorin Adrian Ciureanu 62

2.6.4. Structura unui Procesor RISC

Structura hardware a unui procesor RISC, prezentat n continuare, permite
procesarea pipeline a instruciunilor. Interconectarea nivelurilor (IF/ID ,
ID/EX, EX/MEM; MEM/WB) sunt implementate sub forma unor registre
de ncrcare, actualizai sincron cu fiecare ciclu de procesare. Memorarea
anumitor informaii de la un nivel la altul este absolut necesar, pentru ca
informaiile coninute n formatul instruciunii curente s nu se piard prin
suprapunerea fazelor de procesare.
Adres de salt




4 IF/ID ID/EX sum EX/MEM MEM/WB
/ 2
32
sum 5 /
1 / 32
/ /
5 32 ALU


.
S1+S2
/
19 /
S2 32
/
13


5 DEST


CLK

Adr. Reg, DEST.

Data in reg.


Fig.2,20. Schema de principiu a unui procesor RISC.

Cmpul DEST este memorat succesiv din nivel n nivel i este
rebuclat la intrarea setului de registre generale. Utilitatea acestui cmp
devine oportun abia n faza WB, cnd i data de nscris n setul de registre
generale devine disponibil (cazul instruciunilor aritmetico/logice sau
STORE)
PC
Adr
MEM
I
S1
S2 SET
REG
D
D IN

mux
2:1
Ext.
semn
mux
2:1
m
u
x

2
:
1

adr
M
E
M
D
D
in
m
u
x

2
:
1








Arhitectura calculatoarelor 63
Multiplexorul de la intrarea ALU are rolul de a genera registrul surs
2, n cazul instruciunilor aritmetice/logice, indexul de calcul adres
(constanta pe 13 bii cu extensie semn), n cazul instruciunilor
LOAD/STORE. Sumatorul sum 2 calculeaz adresa de salt n cazul
instruciunilor salt (branch) dup formula
PC
next
=PC+Ext.semn(IR18-=0
Multiplexorul 2:1 de la ieirea nivelului MEM/WB multiplexeaz
rezultatul de ALU n cazul unei instruciuni aritmetice/logice, respectiv data
citit din memoria de date n cazul unei instruciuni LOAD. Ieirea acestui
multiplexor se va nscrie n registrul destinaie codificat de instruciune.
Evident, ntreaga structur este comandat de o unitate de control.

2.6.5. Problema hazardurilor n procesoarele RISC

Hazardurile sunt situaiile care pot aprea n procesarea pipeline i
care determin blocarea procesrii, avnd o influen negativ asupra ratei
de execuie a instruciunilor. Exist trei categorii de hazarduri:
-structurale;
-de date;
-de ramificaie.

2.6.5.1. Hazarduri structurale

Aceste hazarduri sunt determinate de conflictele la resurse comune,
adic atunci cnd mai multe procese simultane, aferente mai multor
instruciuni n curs de procesare, acceseaz o resurs comun.
Pentru a le elimina prin hardware, este nevoie ca numrul de resurse
s fie mrit. Prin multiplicarea resurselor hardware s-a creat posibilitatea
execuiei mai multor operaii, fr a avea conflicte la resurse.

2.6.5.2. Hazarduri de date

Aceste hazarduri apar cnd o instruciune depinde de rezultatele
unei instruciuni anterioare n banda de asamblare. Exist trei categorii de
hazarduri de date, funcie de ordinea acceselor de citire respectiv scriere, n
cadrul instruciunilor:
-hazardul RAW (Read After Write);
-hazardul WAR (Write After Read);
-hazardul WAW (Write After Write).








Sorin Adrian Ciureanu 64
a) Hazardul RAW
Apare atunci cnd instruciunea 2 ncearc s citeasc o surs nainte
ca instruciunea 1 s o scrie n surs. Este foarte frecvent n actualele
procesoare pipeline. De exemplu:
Dat disponibil

I
1
LOAD R
1
Memorie

I
2
LOAD R
1
+R
2
R
2

.

Dat necesar

n acest caz, R
1
fiind sursa, data ce urmeaz a fi ncrcat n R
1
este
disponibil abia la sfritul ciclului MEM aferent instruciunii I
1
, prea
trziu, deoarece pentru procesarea corect a lui I
2
ar fi nevoie ca data s fie
disponibil cel trziu la nceputul nivelului ALU din I
2
. Ar fi necesar ca I
2

s fie stagnat cu un ciclu main. Se cunosc mai multe metode pentru a
prentmpina hazardul RAW.
-Prin nscrierea unei instruciuni NOP (metod software) se
stagneaz a doua instruciune; timpul nu mai este critic. n exemplul ales,
programul devine:
I
1

NOP
I
2

-Prin tehnica scoreboarding (metod hardware), se stagneaz
hardware a doua instruciune, stagnare determinat de detecia hazardului
RAW de ctre unitatea de control. Aceast tehnic de ntrziere a fost
propus de Saymour Cray n 1964. Se impune ca fiecare registru al
procesorului s aib un bit de scor asociat:
bit de scor =0 registru disponibil
bit de scor =1 registru ocupat
Dac pe un anumit nivel al procesrii este necesar accesul la un
anumit registru avnd bitul de scor 1, respectivul nivel va fi ntrziat,
permindu-i-se accesul numai cnd bitul respectiv a fost ters de ctre
procesul care l-a setat.
Pentru exemplul anterior, se arat n figura 2.21 cum se testeaz i se
seteaz bitul de scor i n figura 2.22 cum se face resetarea procesrii
instruciunilor.
De remarcat c ambele soluii bazate pe stagnarea fluxului de
instruciuni (NOP i score boarding) scad performanele.
IF RD ALU MEM
MI
WB
IF RD MEM ALU WB







Arhitectura calculatoarelor 65
I1 LOAD R1 Memorie

R1

R2

R3



Rn


Fig.2.21. Detecia hazardului pe baza bitului de scor.
.




R1

R2

R3





Rn





Fig. 2.22. Restartarea procesrii instruciunilor.

-Prin tehnica forwarding (bypassing), n anumite situaii, hazardul
RAW se rezolv fr s se cauzeze stagnri ale fluxului de procesare.
Aceast tehnic se bazeaz pe pasarea anticipat a rezultatului
instruciunii. Fie urmtoarea secven:
ADD R
1
R
2
R
3
R
2
+R
3
=R
1

SUB R
4
R
1
R
5
R
1
R
5
=R
4


ADD pt. R
1

R2

R3
SUB pt. R
4



!F RD ALU MEM WB 1
x
x
x
Restartare procesare
!F RD ALU MEM WB 0
x
x
x
!F RD ALU MEM WB DELAY
resetare
I1 LOAD R1 memorie
I2 ADD R1 +R2 R1
!F RD ALU MEM WB
!F RD ALU MEM WB







Sorin Adrian Ciureanu 66


















R5





A B
ALU DIF

R SUM












Fig. 2 23. Implementarea forwardingului.

Rezultatul ALU aferent primei instruciuni R
2
+R
3
este memorat n
tampoanele ALU la finele fazei ALU a instruciunii ADD. Dac unitatea de
control va detecta hazardul RAW , va selecta pe parcursul fazei ALU
aferente instruciunii SUB, la intrarea A din ALU, tamponul care conine
R
2
+R
3
( n urma fazei ALU a instruciunii ADD), evitnd astfel hazardul
RAW.
Este necesar implementarea proceselor de forwarding nu numai de
la ieirile ALU spre intrri ci i din nivelele urmtoare (de exemplu MEM)
SET REGISTRI GENERALI


DATA IN


DATA AUT 1 DATA AUT 2
READ
REGISTRU 1
READ
REGISTRU 2
WRITE
REGISTRU
MUX 2:1
TAMPOANE ALU
R2 +R3








Arhitectura calculatoarelor 67
spre intrrile ALU. Aceast situaie corespunde unor instruciuni dependente
RAW dar nesuccesive strict n program. Valoarea pasat uneia din
intrrile din ALU, n acest caz, reprezint rezultatul ALU memorat n
nivelul urmtor (MEM) pentru instruciunile aritmetice/logice sau data citit
n memoria CACHE de date pentru unele instruciuni LOAD.
n implementarea controlului mecanismului de forwarding, pot
aprea situaii conflictuale care trebuie rezolvate pe baze de arbitrare-
priorizare.
Se consider secvena de instruciuni:

I
1
SUB R
2
R
1
R
3

I
2
AND R
2
R
2
R
5
I
3
ADD R
6
R
2
R
4

n acest exemplu apar necesare dou pasri anticipate de valori, de
la I
1
la I
3
(R
3
) pe intrarea A de la ALU i respectiv de la I
2
la I
3
(R
2
) pe
aceeai intrare A de la ALU. Trebuie acordat prioritate nivelului pipeline
mai apropiat de ALU, informaiei produs de ieirile ALU i nu celei situate
n nivelul urmtor (aici MEM). Se preia pe intrarea A a unitii ALU
rezultatul produs de I
2
i nu cel produs de I
1
. Rezult deci c i astfel de
poteniale situaii conflictuale trebuie implementate n logica de control a
mecanismelor forwarding.
b) Hazardul WAR
Apare atunci cnd o instruciune scrie o destinaie nainte ca aceasta
s fie citit pe post de surs de ctre o instruciune anterioar. Poate avea loc
dac ntr-o structur pipeline exist o faz de citire posterioar unei faze de
scriere. De exemplu, modurile de adresare indirect cu predecrementare pot
introduce acest hazard i de aceea nici nu sunt implementate n
calculatoarele RISC.
Aceste hazarduri de tip WAR mai pot aprea i datorit execuiei
instruciunilor n afara ordinii lor normale din program, n aa numita
execuie Out of Order. Aceast procesare este impus de necesitatea
creterii performanei i se poate realiza att prin mijloace hardware ct i
software.
c)Hazardul WAW
Apare atunci cnd o instruciune scrie un operand nainte ca acesta s
fie scris de o instruciune anterioar, scrierile fiind fcute ntr-o ordine
eronat.
Hazardul WAW poate aprea n structurile care au mai multe
niveluri de scriere sau care permit unei instruciuni s fie procesat chiar







Sorin Adrian Ciureanu 68
dac o instruciune anterioar este blocat. Modul de adresare indirect cu
postincrementare poate introduce acest hazard, fapt pentru care acest mod
de adresare nu este implementat n maina RISC. De asemenea, hazardul
WAW poate aprea n cazul execuiei Aut of Order a instruciunilor cu
aceeai destinaie.
Hazardurile WAW, ca i cele WAR de altfel, nu reprezint hazarduri
reale, ci mai degrab conflicte de nume. Ele pot fi eliminate de ctre
compilator (scheduler) prin redenumirea resurselor utilizate de program. De
aceea se mai numesc autodependente, cele WAW, i dependente de ieire
cele WAR.
Exemple:

I1 MULF Ri Rj Rk Rj * Rk Rj
I2 ADD Rj Rp Rm Rp+Rm Rj

n acest caz poate s apar hazard WAR deoarece instruciunea I1
fiind o instruciune de coprocesor (cu virgul mobil) se va ncheia n
execuie dup I2 care este o instruciune de procesor (cu operanzi ntregi)
Pentru c numrul de niveluri aferent structurii pipeline a coprocesorului
este mai mare dect numrul de nivele aferentprocesorului, instruciunile I1
i I2 se termin Out of Order (I2 naintea lui I1). Secvena care elimin
hazardul WAR, reorganizat prin software este:

MULF Ri Rj Rk
ADD Rx Rp Rm
MOV Rj Rx

c) Graful dependenelor de date
Mai jos este dat un exemplu de reorganizare a unui program n
vederea eliminrii hazardurilor de date i a procesrii optimale, folosind
graful dependenelor de date.

I
0
ADD R
3
R
1
R
2

I
1
LD R
9
A(R
7
)
I
2
ADD R
4
R
3
R
2

I
3
ADD R
5
R
4
R
6

I
4
LD R
4
A(R
6
)
I
5
LD R
2
A(R
4
)









Arhitectura calculatoarelor 69





R3 R4

R4

R4





Fig. 2. 24. Graful dependenelor de date
aferent secvenei de instruciuni din exemplul ales

O prim secven de reorganizare a programului ar fi

I
0
ADD R
3
R
1
R
2

I
1
LD R
9
A(R
7
)
I
4
LD R
4
A(R
6
)
I
2
ADD R
4
R
3
R
2

I
3
ADD R
5
R
4
R
6


Se observ c n aceast reorganizare execuia aut of order a
instruciunilor I
4
i I
2
determin o procesare eronat a programului prin
hazardul de tip WAW prin R
4
.De asemenea, ntre I
3
i I
4
exest hazard
WAR prin acelai registru. Aadar detecia hazardului WAW ntre
instruciunile I
2
i I
4
determin impunerea unei relaii de preceden intre
aceste instruciuni, adic procesarea lor trebuie s se realizeze n ordinea din
program (order). Exte necesar ca I
3
, dependent RAW de I
2
, s se execute
naintea instruciunii I
4
. Aceste restricii au fost evideniate prin linii
punctate n graful dependenelor de date.. n aceste condiii secvena
reorganizat corect este:

I
0
ADD R
3
R
1
R
2

I
1
LD R
9
A(R
7
)
I
2
ADD R
4
R
3
R
2

I
3
ADD R
5
R
4
R
6

I
4
LD R
4
A(R
6
)
I0 I1 I4
I2
I3
I5







Sorin Adrian Ciureanu 70
NOP
I
5
LD R
2
A(R
4
)
Hazardul WAR ntre I
3
i I
4
ar putea fi eliminat prin redenumirea
registrului R
4
n instruciunea I
4
. deoarece hazardurile WAR i WAW nu
reprezint conflicte reale ci doar conflicte de nume. Considernd un
procesor cu mai multe registre fizice dect logice, precedenele impuse de
aceste hazarduri pot fi eliminate uor prin redenumirea registrelor logici cu
cei fizici (Register Reaming). Principiul const n existena unei liste a
registrelor active, adic folosite momentan, i o alt list cu registrele libere.
Fiecare schimbare a coninutului unui registru logic prin program se va
face asupra unui registru fizic disponibil n lista registrelor libere registru
care va fi trecut n lista registrelor active. In acest caz secvena se va rescrie
astfel:
I
0
ADD R
3a
R
1a
R
2a

I
1
LD R
9a
A(R
7a
)
I
2
ADD R
4a
R
3a
R
2a

I
3
ADD R
5a
R
4a
R
6a

I
4
LD R
4b
A(R
6a
)
I
5
LD R
2b
A(R
4b
)

n acest caz n optimizare nu ar mai avea importandect
dependenele RAW, celelalte fiind eliminate. n baza grafului dependenelor
de date, procesarea optim ar nsemna, n exemplul ales, secvena:

I0 I1 I4 I2 I3 I5

2.6.5.3. Hazarduri de ramificaie

Sunt generate de ctre instruciunile de salt (ramificaie). Cauzeaz
pierderi de performan mult mai importante dect hazardul de date.
Diverse statistici arat c instruciunile de salt necondiionat au o
frecven de 2-8% din instruciunile unui program, iar cele de salt
condiionat 11-17%. De asemenea salturile condiionate simple au o
probabilitate de apariie de 50% iar buclele de 90%.
n principiu, efectele defavorabile ale instruciunilor de ramificaie
(Branch) pot fi reduse prin:
.metode soft, care reorganizeaz programul surs;
-metode hard, n care se determin n avans dac saltul se va face
sau nu i se calculeaz n avans noul Program Counter,







Arhitectura calculatoarelor 71
O prim soluie pentru o procesare corect ar fi aceea de a dezvolta
unitatea de control hardware n vederea detectrii prezenei saltului i de a
ntrzia procesarea instruciunilor urmtoare cu un numr de cicluri egal cu
latena BSD-ului, pn cnd adresa ar fi disponibil. Soluia implic, ns,
reducerea performanelor. Acelai efect l-ar avea i umplerea BSD-ului de
ctre scheduler cu instruciuni NOP
Efectul defavorabil al unei instruciuni de salt este sugerat n
fig.2.24. pentru o structur pipeline cu 5 nivele n care la finele nivelului RD
adresa se salt este disponibil. Evident c n alte structuri Branch Delay Slot
(BDS) poate fi mai mare dect un ciclu.














Fig. 2.25. Hazardul de ramificaie pe un procesor scalar.

n principiu, efectele defavorabile ale instruciunilor de ramificaie
(branch) pot fi reduse prin:
-metode soft, care reorganizeaz programul surs;
-metode hard, n care se determin n avans dac saltul se va face sau
nu i calculeaz n avans noul Program Counter.
a) Metode soft. Metoda Gross Hennesy (1982).
Se definete o instruciune de salt situat la adresa b spre o
instruciune aflat la adresa a ca un salt ntrziat de ordinul n dac, atunci
cnd se face saltul, sunt executate instruciunile situate la adresele b, b+1,
b+2,b+n i a .
O prim soluie de optimizare ar fi mutarea instruciunii de salt cu n
instruciuni mai sus. Acest lucru este posibil doar cnd nici una dintre
precedentele instruciuni nu afecteaz condiiile de salt. Atunci se poate
muta instruciunea de salt cu k instruciuni mai n sus, unde k reprezint
BRANCH:



I1


I2
IF RD ALU MEM WB
IF RD ALU MEM WB
IF RD ALU MEM WB
1 ciclu
Branch delay slot (BDS)=1
Dac saltul se va face, I1 se va executa n mod nedorit







Sorin Adrian Ciureanu 72
numrul maxim de instruciuni anterioare care nu afecteaz condiiile de
salt. Se duplic primele (n-k) instruciuni, plasate ncepnd de la adresa de
destinaie a saltului, imediat dup instruciunea de salt. Se modific
corespunztor adresa de salt, la acea adres care urmeaz imediat dup cele
(n-k) instruciuni originale (figura 2.25)
n cazul n care saltul necondiionat nu se execut, este necesar ca
nici una dintre cele (n-k) instruciuni adiionale s nu afecteze execuia
urmtoarelor (1+n-k) instruciuni.













Fig. 2.25. Soluionarea unui hazard de ramificaie prin duplicarea
instruciunilor.


b)Metode hardware. Predicii prin hardware
Cele mai performante strategii actuale de gestionare a ramificaiilor
de program sunt prediciile hardware. Au la baz un proces de predicie
run-time a ramurii de salt condiionat precum i determinarea n avans a
noului Program Counter (PC).
Notnd cu BP (Branch Penalty) numrul mediu de cicluri de
ateptare pentru fiecare instruciune din program, introdui de salturile fals
predicionate, se poate scrie relaia:
BP=C(1-Ap)b IR
unde:
C = numrul de cicluri de penalizare introdui de un salt prost predicionat
Ap = acurateea prediciei
p= procentele de instruciuni de salt instruciunile procesate n program
IR = rata medie de lansare n execuie a instruciunilor.
BRANCH (cond), ADR BRANCH (cond), ADR M
I instr.


(n-k) instr.
k[

ADR ADR 1
k[

ADR 2



ADR M
(n-k) i nstr.
adiionale


I instr.



(n-k) i nstr.
ori gi nal e


ADR M=ADR+
1+2(n-k)







Arhitectura calculatoarelor 73
Se observ c BP(Ap=0)=CbIR iar BP(Ap=1)=0, predicia ideal. Impunnd
BP=0.1 i considernd valorile tipice C=5, IR=4, b=22,5 %=0,225 rezult
Ap =0,977=97,7%. Este necesar o predicie aproape perfect pentru a nu se
simi efectul defavorabil al ramificaiilor de program asupra performanelor
procesoarelor.
O metod consacrat n acest sens este metoda Branch Prediction
Buffer (BPB). BPB reprezint o mic memorie adresat cu cei mai puin
semnificativ bii ai PC-ului aferent unei instruciuni de salt condiionat.
Cuvntul BPB este constituit n principiu dintr-un singur bit. Dac acesta
este 1 logic, se prezice c saltul se va face iar dac este 0 logic, e prezice c
saltul nu se va face. Evident c nu se poate ti n avans dac predicia este
corect. Oricum structura va considera predicia corect i va declana
aducerea instruciunii urmtoare pe ramura prezis. Dac predicia se
dovedete a fi fost fals, structura pipeline se evacueaz i se iniiaz
procesarea celeilalte ramuri de program. Totodat valoarea bitului de
predicie din BPB se inverseaz.


C N


START:



C (C-1)


NU DA







Fig. 2.25. O bucl tipic.

BPB cu un singur bit are un dezavantaj care se manifest cu
precdere n cazul buclelor de program ca cea din figura 2.25., n care saltul
se va face de (N-1) ori; o dat, la ieirea din bucl nu se va face. n acest
caz, vom avea dou predicii false: una la intrarea n bucl (prima
parcurgere) i alta la ieirea din bucl (ultima parcurgere a buclei).
Acurateea prediciei va fi de (N-2).100/N% iar saltul se va face n proporie
C=0







Sorin Adrian Ciureanu 74
de (N-1).100/N%. Pentru a elimina acest dezavantaj se utilizeaz 2 bii de
predicie modificabili conform graficului de tranziie de mai jos (numrtor
saturat). n acest caz acurateea prediciei unei bucle care se face de (N-1)
ori va fi (N-1).100/N%.
Prin urmare, n cazul n care se prezice c branch-ul va avea loc,
aducerea noii instruciuni se face de ndat ce coninutul noului PC este
cunoscut. n cazul unei predicii incorecte, se evacueaz structura pipeline i
se atac cealalt ramur a instruciunii de salt. Totodat biii de predicie se
modific n conformitate cu graful din figura 2.26.


DA


NU


DA

DA NU



NU NU

DA

Fig. 2.26. Automat de predicie de tip numrtor saturat pe 2 bii.


Prezice DA
01
Prezice DA
00
Prezice NU
11
Prezice NU
10