Sunteți pe pagina 1din 70

UNIVERSITATEA "AL. I.

CUZA" IAI
Facultatea de Informatic
Departamentul de nvmnt la Distan

Vlad Rdulescu
Henri Luchian
Adrian Buburuzan

ARHITECTURA CALCULATOARELOR
I SISTEME DE OPERARE

2005-2006

Adresa autorului:

Universitatea "Al. I. Cuza"


Facultatea de Informatic
Str. Berthelot nr. 16
700483 Iai
Romnia
e-mail: rvlad@infoiasi.ro
web home page: http://www.infoiasi.ro/~rvlad

1. Introducere
Dei de-a lungul timpului au existat ncercri de a realiza dispozitive capabile s
realizeze n mod automat operaii de calcul, abia ncepnd aproximativ cu perioada
celui de-al doilea rzboi mondial se poate vorbi de un efort concertat i direcionat n
acest sens. Calculatoarele, n forma n care se prezint astzi, i datoreaz n mare
msur existena rezultatelor obinute n acea perioad de ctre John von Neumann,
Alan Turing i Kurt Gdel.
Odat stabilite principiile de baz, ultima jumtate de secol a cunoscut un efort
continuu de perfecionare a tehnologiilor folosite n construcia calculatoarelor. Din
fericire, dezvoltarea exploziv a domeniului electronicii a permis o cretere
exponenial a puterii de calcul. Una dintre pesonalitile domeniului, Gordon Moore
(cofondator al companiei Intel), a enunat n urm cu circa 3 decenii legea care-i
poart numele i care prevede c puterea sistemelor de calcul se dubleaz la fiecare 18
luni. Dei este o lege empiric, bazat numai pe observaii practice i fr vreo
fundamentare teoretic, experiena i-a confirmat valabilitatea pn n zilele noastre.
Ca urmare a acestei rate deosebite a progresului, calculatoarele au invadat
practic toate domeniile de activitate. Astzi nu mai exist vreo ocupaie care s nu
beneficieze de pe urma utilizrii tehnicii de calcul. O meniune aparte trebuie fcut n
legtur cu extinderea reelelor de calculatoare pn la apariia Internetului, care
astzi permite accesul tuturor la un volum de informaie nemaintlnit n trecut.
n spatele tuturor acestor realizri impresionante st munca depus de
specialitii n domeniu. Un sistem de calcul are dou pri: hardware (circuitele fizice
care l compun) i software (programele care ruleaz pe acel sistem). Pentru o
funcionare la parametrii optimi a calculatorului este necesar o bun conlucrare a
celor dou pri. Cel mai performant hardware este inutil n absena programelor care
s realizeze activitile dorite. La rndul lor, programele au nevoie de hardware pe
care s ruleze. Astfel, performanele obinute astzi sunt posibile numai ca urmare a
activitii tuturor celor implicai n dezvoltarea echipamentelor i scrierea
programelor.

1.1. Elemente de baz


Activitatea principal a calculatorului, dup cum o arat nsui numele su, este
aceea de a efectua calcule. Cu toate acestea, orice persoan care a lucrat cel puin o
dat cu un calculator nelege imediat c o asemenea caracterizare este cu totul
insuficient pentru a descrie sarcinile ndeplinite de acesta. ntr-adevr, este greu de
acceptat c semnificaia unui program de grafic, de exemplu, s-ar reduce la nite
simple calcule, dei aceste calcule au un rol cu adevrat foarte important. ntr-o
accepiune mai general, putem spune c funcionarea unui calculator are ca principal
obiectiv prelucrarea informaiei. Pentru a nelege modul n care este tratat
informaia, vom vedea mai nti cum este ea reprezentat ntr-un calculator.
Cea mai mic unitate de informaie folosit este bitul. Fr a intra n detalii,
putem spune c un bit reprezint o entitate, teoretic sau material, care are dou stri
distincte posibile; evident, la un moment dat entitatea se poate afla ntr-una singur
din cele dou stri. Observm deci c prin termenul de bit sunt desemnate att
conceptul teoretic, ct i implementrile sale fizice.
Au existat mai multe forme de implementare practic a biilor. Cele mai
eficiente soluii s-au dovedit a fi cele bazate pe circulaia curentului electric, acestea
prezentnd avantajul unei viteze de operare mult mai mare dect n cazul sistemelor
1

mecanice sau de alt natur. n circuitele electrice, cele dou stri care definesc un bit
sunt uor de definit: putem asocia una dintre stri cu situaia n care curentul electric
strbate o poriune de circuit, iar cealalt stare cu situaia n care curentul nu parcurge
aceeai poriune de circuit. (n practic, electronitii prefer s discute despre cele
dou stri n termenii nivelelor de tensiune din circuit, dar ideea este de fapt aceeai).
n timp au fost folosite dispozitive tot mai sofisticate, pornind de la comutatoare,
coutinund cu releele i diodele i ajungndu-se astzi la utilizarea tranzistorilor.
Toate ns se bazeaz pe acelai principiu: permiterea trecerii curentului electric sau
blocarea sa.
ntruct, aa cum am vzut mai sus, obiectivul urmrit este de a obine circuite
care s permit efectuarea de calcule, este necesar ca biii s primeasc o semnificaie
numeric. Prin convenie, celor dou stri ale unui bit le sunt asociate valorile 0 i
respectiv 1. n acest mod, putem considera c lucrm de fapt cu cifre n baza 2, iar
calculele devin posibile.
O prim consecin a acestei abordri o constituie necesitatea gruprii biilor.
ntr-adevr, o singur cifr, mai ales n baza 2, conine prea puin informaie pentru a
fi util. Deoarece n scrierea poziional numerele sunt iruri de cifre, apare imediat
ideea de a reprezenta numerele prin iruri de bii. Dei pentru om lucrul n baza 2 pare
mai dificil, datorit obinuinei de a lucra n baza 10, n realitate nu exist diferene
conceptuale majore ntre diferitele baze de numeraie.
(Putem rspunde aici unei ntrebri care apare natural: de ce se prefer utilizarea
biilor, deci implicit a cifrelor n baza 2, dac omul prefer baza 10? Rspunsul este de
natur tehnologic: nu exist o modalitate simpl de a realiza un dispozitiv cu 10 stri
distincte, care s permit implementarea cifrelor n baza 10.)
Pe de alt parte, ntr-un sistem de calcul trebuie s existe o standardizare a
dimensiunii irurilor de bii prin care sunt reprezentate numerele. Creierul uman se
poate adapta pentru a aduna, de exemplu, un numr de 3 cifre cu unul de 6 cifre, iar
apoi poate trece imediat la adunarea unui numr de 8 cifre cu unul de 9 cifre; un
calculator ns, fiind format din circuite fr inteligen, nu poate fi att de flexibil.
Soluia este de a permite ca irurile de bii s aib numai anumite dimensiuni
prestabilite. Astfel, circuitele din calculator se pot nelege ntre ele, deoarece lucreaz
cu operanzi de aceeai dimensiune. Ajungem astfel la o alt unitate de informaie larg
folosit, i anume octetul (n englez byte). Acesta reprezint un ir de 8 bii i se
constituie ntr-un standard unanim respectat. Un octet poate avea 28 = 256 valori
diferite, ceea ce este evident insuficient pentru unele tipuri de informaie vehiculate n
calculator. Pentru a nu pierde avantajele standardizrii, se permite ca operanzii s aib
i dimensiuni mai mari, dar numai multipli de dimensiunea octetului; mai mult, aceti
multipli pot fi doar puteri ale lui 2. n funcie de stadiile pe care le-a parcurs
tehnologia de-a lungul timpului, dimensiunea maxim a operanzilor a fost de 16, 32
sau 64 bii (respectiv 2, 4 sau 8 octei) i fr ndoial va continua s creasc. Aceast
dimensiune poart denumirea de cuvnt.
Dimensiunea unui circuit de memorie sau a unui disc hard este mult mai mare
dect un octet. Pentru a putea exprima aceste dimensiuni s-au introdus denumiri
pentru multipli, ntr-un mod similar celui din lumea tiinific. Reamintim c prefixul
kilo- (reprezentat prin simbolul K) desemneaz un multiplu egal cu 1000=103. n
informatic se prefer exprimarea multiplilor n baza 2, care este cea utilizat n toate
situaiile. Astfel, prefixul kilo- are aici valoarea 210=1024, care este foarte apropiat
de 1000. Un kilooctet (sau kilobyte) se noteaz deci Ko (sau KB). Analog se definesc
i ceilali multipli: mega- (1Mo=220 octei), giga- (1Go=230 octei), tera- (1To=240
octei). Pot fi definii i multipli cu ordine de mrime superioare, dar pe moment
2

practica nu face necesar utilizarea lor. Dup cum era de ateptat, nu se definesc
submultipli, care nu ar avea sens.
Facem observaia c, spre deosebire de noiunea de bit, a crei definire are o
solid baz teoretic, octetul este doar un standard impus de practic. Nu exist nici
un motiv conceptual pentru a considera c dimensiunea de 8 bii este special. Pur i
simplu, la un moment dat n trecut s-a considerat c aceast dimensiune corespundea
necesitilor practice din acea vreme. O dat impus un standard pe scar larg,
nlocuirea sa devine foarte dificil. n plus, n acest caz, dac dimensiunea 8 nu este
neaprat mai "bun" dect alte variante, ea nu este nici mai "rea", deci o eventual
schimbare a standardului nu ar aduce nici un ctig. Alegerea unuia dintre multiplii
octetului ca standard nu ar reprezenta dect o soluie temporar, ntruct i noua
dimensiune ar deveni curnd prea mic i ar fi necesar utilizarea de multipli.
O problem important provine din modul de implementare al biilor. Dat fiind
c valoarea unui bit este materializat n practic de o valoare de tensiune, devine clar
c pn i operaiile aritmetice cele mai simple, cum ar fi adunarea sau scderea, nu
au sens ntr-un circuit electric. Cu alte cuvinte, dei avem posibilitatea fizic de a
reprezenta numerele, trebuie s putem realiza i operaiile dorite.
Soluia a fost gsit n lucrrile matematicianului englez George Boole. n jurul
anului 1850 (deci mult nainte de apariia calculatoarelor), acesta a realizat c
probleme matematice complexe pot fi rezolvate prin reducere la o serie de rspunsuri
de tipul "adevrat"/"fals". Astfel, el a elaborat o teorie, numit logica Boole (sau
logica boolean), care lucreaz cu aceste dou valori. Se observ imediat analogia cu
noiunea de bit, care permite tot dou valori. Dac, de exemplu, asociem valoarea
"adevrat" din logica Boole cu cifra binar 1 i valoarea "fals" cu cifra 0 (de altfel se
poate i invers), rezultatele logicii booleene pot fi folosite direct n sistemele de
calcul.
Logica Boole definete un set de operaii elementare (NOT, AND, OR etc.), cu
ajutorul crora poate fi descris orice funcie. Din fericire, aceste operaii elementare
ale logicii Boole pot fi uor implementate cu ajutorul tranzistorilor. Ca urmare,
adunarea, scderea i celelalte operaii aritmetice, care sunt n fond nite funcii
matematice ca oricare altele, pot fi la rndul lor realizate practic. n concluzie, dei
obinuim s spunem c un calculator lucreaz doar cu numere, n realitate el lucreaz
cu iruri de bii, asupra crora aplic o serie de prelucrri, pe care noi le numim
adunare, nmulire etc.; pentru circuitele din calculator, aceste operaii nu au o
semnificaie special, ci sunt nite funcii oarecare.
Pe baza conceptelor prezentate mai sus sunt create circuite din ce n ce mai
complexe, capabile s ndeplineasc sarcini tot mai dificile. Aceste circuite formeaz
n cele din urm sistemul de calcul.

1.2. Tipuri de calculatoare


Practic, astzi nu mai exist domeniu al societii care s nu fac apel la
calculatoare. Problemele pe care le putem aborda cu ajutorul unui sistem de calcul
sunt att de variate, nct nu este de mirare c nu exist un singur tip de calculator,
capabil s rezolve n mod optim toate aceste probleme. Caracteristici cum ar fi puterea
de calcul, capacitatea de stocare i nu n ultimul rnd preul trebuie luate n
considerare atunci cnd se intenioneaz achiziionarea unui calculator. Toate aceste
caracteristici variaz ntr-o plaj foarte larg. Putem clasifica sistemele de calcul dup
gradul de miniaturizare, parametru care d o imagine suficient de clar asupra
performanelor. Pe msur ce coborm pe scara dimensiunilor fizice sistemelor,
3

constatm o reducere progresiv a puterii de calcul i a capacitii de stocare, dar i a


preului.
- Supercalculatoarele includ de obicei sute sau mii de procesoare care lucreaz
n paralel. Rezult astfel o putere de calcul impresionant, datorat i faptului c se
utilizeaz tehnologii aflate la limita posibilitilor actuale, n condiiile n care preul
nu este factorul principal n construcia lor. O asemenea putere de calcul i gsete
utilizare n rezolvarea unor probleme de foarte mare complexitate din cteva domenii
de vrf ale tiinei, cum ar fi: elaborarea modelelor climatice, studiul cutremurelor,
secvenierea genomului, interaciunile particulelor fundamentale, testarea teoriilor
cosmologice. Preul unui supercalculator este ns pe msur, fiind exprimat n
general n milioane de dolari. O abordare mai recent se axeaz pe utilizarea
sistemelor distribuite (bazate pe reele de calculatoare) pentru a obine performane
comparabile, dar la un pre cu un ordin de mrime mai mic. Asemenea
supercalculatoare pot constitui n unele cazuri o alternativ viabil la cele clasice.
- Mainframe reprezint un tip de calculator de asemenea de mare putere, dar nu
la acelai nivel cu supercalculatoarele. Sunt utilizate cel mai adesea pentru gestiunea
bazelor de date de dimensiuni foarte mari, precum i a altor aplicaii asemntoare,
care necesit o capacitate de stocare foarte mare i o interaciune puternic cu un
numr mare de utilizatori, concretizat printr-un volum foarte mare de comunicaii de
date. De asemenea, se pot folosi i la efectuarea de calcule tiinifice de o
complexitate mai redus dect n cazul supercalculatoarelor.
- Serverul este un calculator care are rolul de a pune la dispoziia altor sisteme
de calcul diverse resurse (capacitate de stocare, putere de calcul, informaii de un
anumit tip), de obicei prin intermediul unei reele de calculatoare. Fiind destinat s
serveasc de obicei un numr mare de cereri n paralel, serverul trebuie s aib la
rndul su o putere de calcul considerabil. Un exemplu bine cunoscut (dar nu
neaprat cel mai important) l constituie serverele Web. De altfel, serverele din gama
de vrf au tendina de a nlocui sistemele de tip mainframe, profitnd i de progresul
tehnologic, care permite obinerea unor performane superioare i de ctre
calculatoarele de dimensiuni mai reduse. Dincolo de imaginea uzual pe care o are
publicul, un server de vrf poate include un numr mare de procesoare, iar capacitatea
de stocare poate fi foarte mare.
- Staiile de lucru sunt destinate lucrului individual, dar sunt proiectate pentru a
rula aplicaii profesionale, de complexitate mare, cum ar fi: grafic 3D, prelucrri
audio i video, aplicaii de tip CAD sau GIS etc.
- Sistemele desktop intr n categoria calculatoarelor personale, care pot fi
folosite pentru aplicaii de birou (editare de texte, calcul tabelar, baze de date de
dimensiuni reduse etc.) sau pentru jocuri. Sunt n principiu cele mai ieftine
calculatoare i din acest motiv cele mai accesibile publicului larg. De asemenea, se
adreseaz i utilizatorilor nespecialiti n informatic.
- Laptop i notebook sunt termeni care desemneaz calculatoarele personale
portabile. Acestea au la baz aceleai principii i tehnologii ca i sistemele desktop i
sunt prin urmare comparabile din toate punctele de vedere (putere, pre etc.).
Diferena const n accentul pus pe mobilitate. Un laptop are dimensiuni i greutate
reduse i poate funciona un timp (cteva ore) cu ajutorul bateriilor, fr alimentare de
la reeaua electric. inta principal a acestei categorii de sisteem o reprezint mediul
de afaceri, pentru care mobilitatea este esenial.

1.3. ntrebri
1. Ce este hardware-ul? Dar software-ul?
2. Definii noiunile de bit i de octet.
3. Enumerai multiplii utilizai n informatic i semnificaia lor.
4. Ce nseamn cuvntul unui procesor?
5. Ce este logica Boole?
6. Care sunt tipurile de calculatoare existente?

2. Arhitectura sistemelor de calcul


Modelul de baz pentru arhitectura unui sistem de calcul a fost introdus de
savantul american John von Neumann, ca rezultat al participrii sale la construcia
calculatorului ENIAC, n anii 1944-1945. Acest model este cunoscut n literatura de
specialitate ca arhitectura von Neumann.

2.1. Arhitectura generalizat von Neumann


Dup cum se observ n figura 2.1., un sistem de calcul este format din 3 uniti
de baz, care sunt conectate ntre ele prin 3 ci separate de comunicaie, numite
magistrale (mai des se folosete termenul englezesc - bus).

Fig. 2.1.
Informaiile vehiculate n sistemul de calcul se mpart n 3 categorii:
- date care trebuie prelucrate
- instruciuni care indic prelucrrile ce trebuie efectuate asupra datelor
(adunare, scdere, comparare etc.)
- adrese care permit localizarea diferitelor date i instruciuni
Simplist spus, sarcina unui sistem de calcul este de a executa instruciuni
(grupate n secvene coerente, care urmresc un obiectiv bine stabilit, numite
programe) asupra datelor; adresele joac un rol auxiliar, dar nu mai puin important.
Privind din aceast perspectiv, vom analiza pe scurt scopul elementelor din figura
2.1.
Unitatea de memorie are rolul de a stoca att instruciunile, ct i datele asupra
crora vor opera instruciunile (operanzii). Instruciunile unui program trebuie aduse
n memorie anterior nceperii execuiei programului respectiv. De asemenea, unele
date se vor afla n memorie naintea pornirii prelucrrii, iar rezultatele prelucrrii se
vor memora n timpul execuiei programului. Aceast memorie, realizat n diverse
6

tehnologii de-a lungul evoluiei calculatoarelor, constituie suportul fizic necesar


desfurrii operaiilor executate de CPU. Structural, memoria este format dintr-un
numr mare de celule independente (numite i locaii), fiecare celul putnd memora
o valoare.
Pentru organizarea i regsirea informaiilor n memorie se folosesc aanumitele adrese. O adres este de fapt un numr care identific n mod unic o locaie
de memorie; cu alte cuvinte, fiecrei locaii i este asociat un numr unic (adresa sa),
n aa fel nct s nu existe dou locaii diferite cu aceeai adres. Pentru accesarea
unei informaii din memorie se furnizeaz adresa acelei informaii, iar circuitele de
control al memoriei vor furniza coninutul locaiei care reprezint informaia cerut.
Similar se petrec lucrurile i la scrierea n memorie.
Tehnologic, unele dispozitive de memorie pot reine informaia numai cnd sunt
alimentate electric (i avem de-a face cu aa-zisa memorie volatil), n timp ce altele
pstreaz informaia i atunci cnd nu sunt alimentate electric, formnd memoria
nevolatil. Aceasta din urm este folosit n mod special la stocarea programelor
pentru iniializarea calculatorului i a sistemului de operare.
Unitatea central de prelucrare (CPU) are rolul de a executa instruciunile.
Din acest motiv, CPU reprezint componenta cea mai important a sistemului de
calcul i poate controla activitatea celorlalte componente. Deoarece att instruciunile,
ct i datele prelucrate de instruciuni se gsesc n memorie, execuia unei instruciuni
presupune efectuarea de ctre CPU a urmtoarei secvene de aciuni:
- Depunerea pe busul de adrese a unei informaii care localizeaz adresa de
memorie ce conine cmpul de cod al instruciunii (faza de adresare).
- Citirea codului instruciunii i depunerea acestuia ntr-un registru intern al
decodificatorului de instruciuni. Aceast informaie este vehiculat pe busul de date
(faza de citire).
- Decodificarea codului instruciunii, n urma creia CPU va cunoate ce
instruciune are de executat i ca urmare pregtete modulele ce vor participa la
instruciunea respectiv (faza de decodificare).
- Executarea efectiv a operaiei specificate de de instruciune - faza de execuie
propriu-zis.
Dup terminarea execuiei unei instruciuni, se continu cu extragerea
instruciunii urmtoare i trecerea ei prin secvenele amintite .a.m.d.
Dispozitivele de intrare/ieire (I/O - input/output), numite i dispozitive
periferice, permit transferul informaiei ntre CPU, memorie i lumea extern.
Funcional, aceste dispozitive de I/O pot fi adresate (apelate) de ctre CPU
similar cu memoria, ele dispunnd de asemenea de cte un set de adrese. n mod
clasic, schimbul de informaii cu exteriorul se face sub controlul CPU, dar exist
tehnici, care vor fi amintite mai trziu, prin care accesul la memorie se poate face i
cu o intervenie minim a CPU (aa-numitele transferuri DMA - Direct Memory
Access).
Cele mai utilizate periferice sunt: monitorul, tastatura, mouse-ul, discul dur,
mediile de stocare portabile (dischet, CD, DVD etc.), imprimanta.
Busul de date este acea cale care leag cele 3 blocuri funcionale (o parte a sa
poate s ias i n exteriorul sistemului) i pe care se vehiculeaz datele propriu-zise
(numere sau caractere) sau instruciunile programului.
Busul de adrese este calea pe care sunt transmise de CPU adresele ctre
memorie, cnd se face o operaie cu memoria (citire sau scriere), sau se vehiculeaz
adresele dispozitivului de I/O n cazul unui transfer cu un periferic.

Busul de comenzi vehiculeaz semnalele de comand i control ntre toate


aceste blocuri i astfel permite o sincronizare armonioas a funcionrii
componentelor sistemului de calcul. n marea majoritate a cazurilor, semnalele de
comand sunt emise de ctre CPU i servesc la controlul funcionrii celorlalte
componente.
Arhitectura de tipul von Neumann a fost o inovaie n logica mainilor de calcul,
deosebindu-se de cele care se construiser pn atunci prin faptul c sistemul trebuia
s aib o cantitate de memorie, similar creierului uman, n care s fie stocate att
datele, ct i instruciunile de prelucrare (programul). Acest principiu al memoriei a
reprezentat unul din fundamentele arhitecturale ale calculatoarelor. Diferena
fundamental consta n stocarea n memorie nu numai a datelor, ci i a programelor.
A nceput astfel s apar din ce n ce mai clar care este aplicabilitatea memoriei.
Datele numerice puteau fi tratate ca i valori atribuite unor locaii specifice ale
memoriei. Aceste locaii erau asemnate cu nite cutii potale care aveau aplicate
etichete numerotate (de exemplu 1). O astfel de locaie putea conine o variabil sau o
instruciune. A devenit posibil ca datele stocate la o anumit adres s se schimbe n
decursul calculului, ca urmare a pailor anteriori. Astfel, numerele stocate n memorie
au devenit simboluri ale cantitilor i nu neaprat valori numerice, n acelai mod n
care algebra permite manipularea simbolurilor x i y fr a le specifica valorile. Cu
alte cuvinte, se putea lucra cu entiti abstracte.
Calculatoarele ulterioare i mai trziu microprocesoarele au implementat aceast
arhitectur, care a devenit un standard. n ciuda vechimii sale, arhitectura von
Neumann nu a putut fi nlocuit pn azi.

2.2. Clasificarea arhitecturilor interne


ntr-un efort continuu de mbuntire, arhitectura von Nuemann a fost
dezvoltat n mai multe direcii, rezultnd sisteme de calcul cu posibiliti noi i
adaptate noilor cerine cerute de societate. Pentru a vedea aceste noi direcii, ne vom
folosi de o clasificare a sistemelor dup arhitectura intern, propus de Flynn:
SISD (Single Instruction Single Data - o singur instruciune, o singur
dat de prelucrat)
Sunt sistemele uzuale cu un singur microprocesor. Aici se ncadreaz
microprocesoarele clasice cu arhitectur von Neumann pe 8, 16, 32, 64 bii cu
funcionare ciclic - preluare instruciune, execuie instruciune (rezult prelucrarea
datelor) .a.m.d.
Tot n aceast categorie trebuie incluse i aa-numitele procesoare de semnal
DSP (Digital Signal Processors) folosite actualmente pe scar larg n plcile de
sunet, telefonia mobil etc.
SIMD (Single Instruction Multiple Data - o singur instruciune, mai multe
date)
Sunt sistemele cu microprocesoare matriceale, la care aceleai operaii
aritmetice se execut n paralel pentru fiecare element al matricei, operaia necesitnd
o singur instruciune (se mai numesc i sisteme de procesare vectorial). Privit ca o
cutie neagr, o arhitectur SIMD arat ca n figura 2.2:

Fig. 2.2.
Dac intrm n detalii arhitecturale, devine evident faptul c exist mai multe
uniti de execuie, capabile s execute acelai tip de prelucrare n paralel pe date
diferite, coordonate de o singur unitate de control. Deoarece datele prelucrate de o
unitate de execuie sunt independente de datele celorlalte uniti, devine clar faptul c
fiecare unitate de execuie are memoria sa proprie. Evident, trebuie s existe totui i
o form de interconectare ntre uniti. Arhitectura SIMD are deci urmtoarea schem
de principiu:

Fig. 2.3.
Eficiena SIMD-urilor se dovedete a fi ridicat n cazul unor programe cu
paralelism de date masiv, pus n eviden cel mai adesea de anumite bucle de
programe.
Exemplu: arhitectura de tablou sistolic construit n 1984 de General Electric,
un tablou de 64 64 elemente, rezultnd o vitez de procesare de 1 miliard de operaii
pe secund.
MISD (Multiple Instruction Single Data - mai multe instruciuni, o singur
dat)
Sunt sistemele care folosesc microprocesoare de tip pipeline (conduct), metod
folosit de ctre procesoarele recente (Pentium sau echivalente). La un astfel de
microprocesor, de exemplu, n paralel se execut instruciunea n, se decodific
instruciunea n+1 i se aduce n memorie instruciunea n+2. Aceast arhitectur a fost
inspirat de banda de montaj a automobilelor.
Celebrele supercomputere Cray din anii 1970 foloseau de asemenea arhitectura
MISD.
MIMD (Multiple Instruction Multiple Data - mai multe instruciuni, mai
multe date) sunt acele sisteme n care se ncadreaz att supercalculatoarele cu
procesoare dedicate, ct i sistemele multiprocesor (figura 2.4). Sunt cunoscute i sub
denumirea de arhitecturi paralele.

Fig. 2.4.
n cazul arhitecturilor MIMD, procesoarele pot avea fiecare propria sa memorie
local, dar exist i o memorie global, accesat prin intermediul reelei de
interconectare (figura 2.5). Complexitatea reelei de interconectare poate varia ntr-o
plaj larg, mergnd de la simpla arhitectur de tip bus comun (n care un singur
procesor poate avea acces la memoria global) i pn la reelele de tip crossbar (care
permit accesul simultan al tuturor procesoarelor la memoria global, dar la module
diferite pentru fiecare procesor).

Fig. 2.5.
Acest tip de arhitecturi necesit existena unor sisteme de operare capabile s
asigure rularea n paralel a diferitelor procese, altfel potenialul lor de performan ar
rmne n mare parte neexploatat. Astfel, avem mai multe tipuri de sisteme de
operare:
- master-slave - la care funciile sistemului de operare sunt ataate unui
procesor distinct (master), iar restul procesoarelor (numite slave) acceseaz aceste
funcii indirect, prin intermediul procesorului master
- divizat - nu exist un procesor evideniat, fiecare procesor avnd funciile de
sistem plasate separat n memorie
- flotant - cnd funciile sistemului de operare sunt plasate n memoria comun,
putnd fi accesate de oricare microprocesor al sistemului; acest model de calcul poat
denumirea de multiprocesare simetric (Symmetrical Multiprocessing - SMP)
Tot n cadrul acestei ultime categorii trebuie amintite aa-numitele transputere,
care sunt de fapt microcalculatoare integrate ntr-un singur circuit, cu memorie
proprie i reea de conectare punct la punct cu alte transputere din aceeai categorie.
Cu acestea se pot construi maini SIMD sau MIMD, folosindu-se limbaje de
programare specifice proceselor paralele (de exemplu OCCAM), precum i algoritmi
paraleli.
Putem aminti aici, n afara clasificrii propuse de Flynn, i de sistemele
distribuite. Un sistem distribuit este de fapt un grup de calculatoare legate n reea,
care coopereaz ntr-un mod asemntor cu procesoarele ditnr-un sistem
multiprocesor. Desigur, exist i diferene, legate n principal de eterogenitatea
sistemului distribuit (este puin probabil c toate calculatoarele dintr-o reea sunt
identice, putnd fi chiar foarte diferite) i de particularitile modului de comunicare
10

ntr-o reea de calculatoare. n mod paradoxal, n acest moment sistemele distribuite


sunt n general mai eficiente economic dect sistemele multiprocesor. Evident, o reea
de n calculatoare este aproape ntotdeauna mai scump dect un sistem cu n
procesoare; eficiena vine ns din faptul c practic n orice instituie exist deja o
baz instalat de calculatoare, cu care se poate realiza un sistem distribuit, n timp ce
sistemele multiprocesor trebuie achiziionate. Din acest motiv sistemele distribuite
cunosc o dezvoltare remarcabil (de altfel, ele nu apreau n clasificarea lui Flynn
deoarece, la momentul cnd a fost propus aceast clasificare, nc nu existau sisteme
distribuite).

2.3. ntrebri
1. Care sunt componentele principale ale arhitecturii von Neumann?
2. Ce tipuri de informaii sunt utilizate n sistemele de calcul?
3. Ce este o adres de memorie?
4. Care sunt fazele execuiei unei instruciuni de ctre procesor?
5. Ce nseamn magistral (bus) i care sunt magistralele dintr-un sistem de
calcul?
6. Enumerai tipurile de arhitecturi interne.
7. Ce este un sistem distribuit?

11

3. Arhitectura intern a microprocesoarelor Intel


n general, cnd se vorbete despre un microprocesor se nelege c acesta
reprezint CPU (Central Processing Unit) din arhitectura generalizat von Neumann.
Dup ce s-au construit primele microprocesoare pe 8 bii, s-a cutat ca puterea de
calcul a acestora s se mreasc prin creterea numrului de bii prelucrai, trecnduse la prelucrri pe 16 bii, apoi la 32 bii i, mai recent, la 64 bii. Totodat, s-au fcut
n permanen inovaii n cadrul arhitecturii interne, care au dus la o cretere a vitezei
de prelucrare.

3.1. Microprocesoare pe 16 bii


ncepnd cu microprocesoarele pe 16 bii (8086, 8088, 80286), unitatea de
prelucrare nu mai urmeaz strict schema ciclic descris la arhitectura von Neumann,
de extragere a instruciunii, decodificare, execuie .a.m.d. Noutatea a fost divizarea
unitii de prelucrare n dou uniti (vezi figura 3.1):
- unitatea de execuie (Execution Unit - EU)
- unitatea de interfa cu magistrala (Bus Interface Unit - BIU)

Fig. 3.1.
Dup cum se observ, cele dou uniti sunt legate ntre ele cu o conduct
(pipeline) prin care sunt transferate instruciunile extrase din memoria program de
ctre BIU spre EU; aceasta din urm are numai rolul de a executa instruciunile
extrase de BIU, EU neavnd nici o legtur cu magistrala sistemului. n timp ce EU
i ndeplinete sarcina, BIU extrage noi instruciuni pe care le organizeaz ntr-o
coad de ateptare (queue). La terminarea execuiei unei instruciuni, EU are deja la
dispoziie o nou instruciune din coada de ateptare meninut de BIU. Cele dou
uniti, EU i BIU, lucreaz deci n paralel, existnd momente de sincronizare i
ateptare ntre ele, atunci cnd coada de instruciuni este goal, ceea ce se ntmpl
ns foarte rar.
Funcionarea paralel a celor dou uniti (BIU i EU) este transparent
utilizatorului. Aceast arhitectur se mai numete i arhitectur cu prelucrare
secvenial - paralel pipeline.
Unitatea de execuie EU conine o unitate logico-aritmetic (ALU) de 16 bii,
registrul indicatorilor condiionali, registrul operatorilor i regitrii generali.
BIU conine indicatorul de instruciuni IP (Instruction Pointer), registrele de
segmente, un bloc de control al magistralei i de generare de adrese i o memorie
organizat sub forma unei cozi, n care sunt depuse instruciunile extrase (Instruction
Queue).
12

Vom detalia n continuare blocurile de regitri, artnd i rolul unora dintre


acetia n cursul execuiei programului. Avem urmtoarele categorii de regitri pe 16
bii:
- regitri generali
- regitri de segment
- registru pointer de instruciune
- registrul indicatorilor de stare i control
Regitrii generali sunt n numr de 8 i sunt mprii n dou seturi a cte 4
regitri (fig. 3.2):
- regitrii de date AX, BX, CX, DX
- regitrii de pointer i de index SP, BP, SI, DI
AH
AL
AX
BH
BL
BX
CH
CL
CX
DH
DL
DX
SP
BP
SI
DI
Fig. 3.2.
Fiecare registru de date este format din doi regitri de cte 8 bii, care pot fi
adresai i individual. Regitrii pointer i index pot fi folosii numai pe 16 bii i pot
participa la majoritatea operaiilor aritmetice i logice. De asemenea, regitrii pointer
i index (ca i BX) sunt utilizai i la adresarea memoriei.
Regitrii de segment, la rndul lor, sunt folosii exclusiv pentru adresarea
locaiilor de memorie. Rolul lor n adresare este ns diferit de cel al regitrilor
prezentai mai sus i se refer la mprirea memoriei n segmente.
Un segment este o unitate logic de memorie care poate avea cel mult 64 Ko
(locaii contigue), n timp ce cantitatea maxim de memorie acdresabil de un
procesor Intel pe 16 bii este de 1 Mo . Fiecrui segment i se atribuie o adres de baz,
care este adresa locaiei de nceput a segmentului. Valoarea acestei adrese se afl
memorat ntr-un registru de segment. Exist 4 regitri segment (conform figurii 3.3)
i ei se gsesc localizai n BIU.
CS
DS
SS
ES
Fig. 3.3.
n memorie pot exista, n funcie de poziia lor relativ, segmente adiacente,
parial suprapuse sau suprapuse complet i disjuncte.
Deci fiecare aplicaie (program aflat n memorie) are la dispoziie un spaiu de
64Ko pentru codul instruciunilor (segmentul de cod), 64 Ko pentru stiv (segment de
stiv) i 128 Ko pentru date (segmentul de date i extra segmentul). Unele aplicaii pot
ns gestiona un spaiu de memorie mult mai mare, fcnd gestionarea segmentelor
dup propriile necesiti.
mprirea memoriei n segmente de 64Ko provine din faptul c
microprocesoarele pe 8 bii anterioare gestionau un spaiu de numai 64Ko.
Proiectanii de la Intel au cutat ca i noile microprocesoare pe 16 bii s foloseasc
eventual programe scrise pentru microprocesoarele anterioare, adoptnd aceast
13

soluie a segmentului, fcnd ns adresarea memoriei mai greu de neles i limitat


ca funcionalitate.
Generarea adresei fizice
Fiecare locaie de memorie are dou tipuri de adres:
- fizic
- logic
Adresa fizic este o valoare format din 20 bii care identific unic fiecare
locaie din spaiul de adresare de 1 Mo. Adresa fizic se gseste n domeniul 00000hFFFFFh i se mai numete adres absolut.
Pentru a nu depinde de locul unde se afl codul n memorie, se folosesc aazisele adrese logice, diferite de cele fizice. Adresa logic const dintr-o valoare de
baz de segment i o valoare de deplasament (offset). Pentru orice locaie de memorie,
valoarea de baz a segmentului este adresa primului octet al segmentului care conine
locaia. Aceast adres este exprimat n paragrafe (paragraful fiind o unitate de 16
bii) iar deplasamentul (offset) este distana n octei de la nceputul segmentului pn
la locaia respectiv. Adresa de baz i deplasamentul sunt valori pe 16 bii fr semn.
Mai multe adrese logice pot corspunde aceeleiai locaii fizice dac se afl n
segmente diferite, dup cum se observ din figura 3.4.
BIU genereaz ntotdeauna o adres fizic dintr-o adres logic, dup
mecanismul prezentat n figura 3.5.

Fig. 3.4.

Fig. 3.5.
Se observ c, n principiu, calculul adresei fizice se face prin deplasarea bazei
segmentului (coninut ntr-un registru segment) cu 4 poziii spre stnga (ceea ce
echivaleaz cu o nmulire cu 16) i adunarea valorii deplasamentului.
BIU obine n mod diferit adresa logic a unei locaii de memorie, n funcie de
tipul de referire a memoriei. Instruciunile sunt ntotdeauna ncrcate din segmentul de
cod curent, iar registrul IP conine deplasamentul instruciunii urmtoare fa de
nceputul segmentului. Operaiile cu stiva lucreaz n segmentul de stiv curent, iar
registrul SP conine deplasamentul fa de vrful stivei. Variabilele se gsesc de
obicei n segmentul de date, iar deplasamentul este dat dup modul de adresare
specificat n instruciune. Rezultatul este aa-numita adres efectiv, despre care vom
mai vorbi la prezentarea modurilor de adresare.
Acestea sunt atribuiile segmentelor n mod implicit. Unele din aceste atribuii
pot fi schimbate.

14

Faptul c memoria microprocesorului 8086 sau 8088 este segmentat face


posibil scrierea de programe care sunt independente de poziia lor n memorie, adic
sunt relocabile dinamic. Aceste programe trebuie ns s ndeplineasc o sum de
condiii. Dac aceste condiii sunt ndeplinite, programul poate fi mutat oriunde n
memorie. Un astfel de program poate fi fcut s ocupe o zon contigu de memorie,
lsnd spaiu nefragmentat i pentru alte aplicaii. De asemenea, acest fapt este
important atunci cnd programul este inactiv n memorie i sistemul de operare mut
programul pe disc; atunci cnd se dorete ca programul s fie adus din nou n
memorie, pentru a se relua execuia sa, zona n care s-a aflat prima dat este ocupat
de un alt program. Prin simpla schimbare a valorilor registrelor de segment,
programul poate rula din alt zon de memorie.
Pointerul de instruciuni (IP) este un registru pe 16 bii actualizat de BIU i
conine deplasamentul (offsetul) instruciunii urmtoare fa de nceputul segmentului
de cod curent. Programele nu au acces direct la el, dar exist instruciuni care l
modific i l ncarc sau l descarc de pe stiv.
Registrul de stare i control (Flags register) conine 6 indicatori de stare i 3
indicatori de control, notai conform figurii 3.6.

Fig. 3.6.
EU poziioneaz cei 6 indicatori de stare pentru a reflecta anumite stri ale unei
operaii aritmetice sau logice. Un anumit set de instruciuni permit modificarea
execuiei unui program n funcie de starea acestor indicatori - cum ar fi instruciunile
de salt condiionat. Indicatorii de stare reflect urmtoarele condiii:
- C (Carry) indic transportul n exterior al bitului cel mai semnificativ al
rezultatului operaiilor aritmetice
- P (Parity) este poziionat dac rezultatul are paritate par (conine un numr
par de bii cu valoarea 1)
- A (Auxiliar Carry) este poziionat dac a avut loc un transfer de la semioctetul
inferior la semioctetul superior al rezultatului i este folosit n aritmetica zecimal
- Z (Zero) poziionat dac rezultatul operaiei a fost zero
- S (Sign) este poziionat dac cel mai semnificativ bit al rezultatului este 1 (prin
convenie, 0 indic un numr pozitiv, iar 1 - un numr negativ)
- O (Overflow) - poziionat cnd dimensiunea rezultatului depete capacitatea
locaiei de destinaie i a fost pierdut un bit
Pentru controlul unor operaii ale procesorului, pot fi modificai (prin program)
trei indicatori de control:
- D (Direction) stabilete dac operaiile pe iruri lucreaz prin incrementare
(cnd are valoarea 0) sau prin decrementare (valoarea 0)
- I (Interrupt) este poziionat pe 1 pentru a permite CPU s recunoasc cererile
de ntrerupere externe mascabile
- T (trap) - cnd este poziionat pe 1, trece CPU n execuia de pas cu pas, n
scopul depanrii programului instruciune cu instruciune

3.2. Microprocesoare pe 32 bii


Apariia microprocesorului 80386 a reprezentat un salt major n familia Intel. Pe
lng creterea dimensiunii operanzilor de la 16 la 32 bii, au fost introduse o serie de
15

noi caracteristici care au mbuntit substanial performanele i funcionalitatea.


Linia inovativ a fost continuat i de procesoarele care au urmat (80486, Pentium,
Pentium Pro, Pentium II, Pentium III, Pentium IV), astfel nct astzi familia
procesoarelor Intel pe 32 bii are n urm o istorie bogat. n cele ce urmeaz vom
creiona noutile aduse de procesoarele pe 32 bii.
Dimensiunea datelor i adreselor
Magistrala de adrese, la fel ca i cea de date, are 32 bii, deci cantitatea maxim
de memorie care poate fi accesat este de 4 Go. Dei au aprut deja aplicaii al cror
necesar de memorie depete i aceast valoare, saltul de la 1 Mo este mai mult dect
semnificativ. Ca dovad, au trecut aproximativ dou decenii de la lansarea
microprocesorului 80386 i marea majoritate a programelor nc nu au probleme cu
limita de memorie.
Corespunztor, dimensiunea regitrilor a crescut i ea la 32 bii. De fapt, pentru
a se pstra compatibilitatea cu procesoarele pe 16 bii, regitrii acestora exist n
continuare, exact n forma n care au fost prezentai mai sus. n plus, au fost introdui
o serie de regitri noi, pe 32 bii, care i includ pe cei deja existeni (figura 3.7).
EAX
AH
AL
AX
EBX
BH
BL
BX
ECX
CH
CL
CX
EDX
DH
DL
DX
ESP
SP
EBP
BP
ESI
SI
EDI
DI
Fig. 3.7.
Fiecare registru pe 32 bii include, la partea mai puin semnificativ, unul dintre
regitrii pe 16 bii, iar numele su este format din numele registrului vechi,
adugndu-i-se n fa litera E (extended). Astfel, noii regitri generali ai procesorului
sunt EAX, EBX, ECX, EDX, ESP, EBP, ESI, EDI. Denumirile de regitri de date,
index i pointer i pierd practic semnificaia, deoarece noii regitri sunt complet
interschimbabili, adic nu mai exist diferene ntre ei cu privire la operaiile la care
pot fi folosii.
Registrul IP (pointerul de instruciuni al procesoarelor pe 16 bii) este inclus
ntr-un registru de 32 bii, numit desigur EIP. Acesta din urm ndeplinete acum rolul
de pointer de instruciuni. n plus, registrul indicatorilor de condiii (FLAGS) este la
rndul su extins la un registru de 32 bii (EFLAGS). Nu vom intra ns n detalii
privitoare la indicatorii de condiii suplimentari.
Exist i o excepie de la regula extinderii. Regitrii de segment rmn la
dimensiunea de 16 bii, fr a fi creai regitri noi. n schimb sunt adugai doi regitri
de segment noi, tot pe 16 bii, numii FS i GS (figura 3.8). Acetia nu au un rol
anume, ci pot fi folosii pentru accesarea datelor, la fel ca DS sau ES.
CS
DS
SS
ES
FS
GS
Fig. 3.8.

16

n final, facem observaia c noii regitri nu sunt ntotdeauna disponibili. Orice


microprocesor Intel pe 32 bii are dou moduri diferite de funcionare:
- modul real, n care funcioneaz la fel ca un procesor pe 16 bii
- modul protejat, n care se poate lucra cu regitrii de 32 bii
Modul real a fost pstrat pentru compatibilitatea cu aplicaiile mai vechi.
Trecerea microprocesorului dintr-un mod de funcionare n altul poate fi controlat
prin software.
Coprocesorul matematic
ncepnd cu microprocesorul 80486, coprocesorul matematic a fost inclus n
unitatea central de procesare, nemaifiind un circuit separat. Aceasta reprezint o
consecin logic a evoluiei tehnologiei, care a permis o cretere a numrului de
tranzistoare pe o pastil de siliciu (prin scderea dimensiunii acestora), dar i o
recunoatere a importanei calculelor n virgul mobil n cadrul aplicaiilor. Prin
integrarea coprocesorului matematic n acelai circuit cu microprocesorul s-a obinut
un spor de performan datorat scrutrii cilor de semnal i simplificrii comunicrii
ntre componente.
Pipeline
O alt mbuntire important este dat de perfecionarea structurii de tip
pipeline. Aa cum am vzut mai sus, la procesoarele pe 16 bii unitatea de prelucrare
este mprit n unitatea de interfa cu magistrala (BIU), care se ocup de aducerea
n avans a instruciunilor din memorie i depunerea lor ntr-o coad, i unitatea de
execuie (EU), care preia instruciunile din coad i le execut. Aceast mprire
permite lucrul n paralel al celor dou uniti, ceea ce se traduce printr-o funcionare
mai rapid. La procesoarele pe 32 bii ideea a fost dus i mai departe. Dup cum ne
amintim, fiecare instruciune const din 4 faze (adresare, citire, decodificare,
execuie). Mai mult, fiecare din aceste faze (mai ales cea de execuie, care este cea
mai complex) poate consta la rndul su din mai multe operaii mai simple. Ideea
este c fiecare din aceste operaii lucreaz n principiu cu alte resurse, deci toate
operaiile se pot executa n paralel. Astfel, execuia unei instruciuni poate fi mprit
ntr-un numr mare de aciuni elementare, numite stagii ale pipeline-ului. Deci, la un
moment dat se pot afla n execuie n procesor mai multe instruciuni, n diferite faze;
n cazul cel mai fericit exist cte o instruciune tratat n fiecare stagiu al pipelineului. Dei execuia unei instruciuni de la nceput pn la sfrit necesit un numr
mare de aciuni, o instruciune poate ncepe s fie executat imediat ce instruciunea
anterioar a trecut de primul stagiu.
De ce este att de eficient aceast structur? Activitatea procesorului este
coordonat cu ajutorul semnalului de ceas al sistemului. Trecerea execuiei unei
instruciuni de la un stagiu la altul se poate face numai atunci cnd "bate" ceasul, deci
la intervale regulate de timp. Pe de alt parte, fiecare aciune elementar (stagiu) se
execut ntr-o anumit durat finit de timp. Dac semnalul de ceas este prea rapid,
aciunile nu se mai pot realiza pe durata dintre dou "bti" ale ceasului, ceea ce ar
duce la pierderea controlului asupra execuiei instruciunilor. Ca urmare, frecvena
ceasului nu poate fi crescut orict de mult, ci este limitat de duratele de execuie ale
stagiilor. Dac aciunile elementare sunt mai simple (ceea ce implic o descompunere
mai fin a instruciunilor i deci un numr de stagii mai mare), ele vor consuma mai
puin timp; implicit, frecvena ceasului va putea fi crescut. Dac analizm
funcionarea unui pipeline, observm c, n cazul cel mai fericit, la fiecare "btaie" a
ceasului se poate termina de executat cte o instruciune, deci performana
procesorului depinde direct de creterea frecvenei semnalului de ceas.

17

Procesoarele Intel au evoluat n sensul creterii continue a numrului de stagii a


pipeline-ului. La ultimele microprocesoare Pentium IV s-a ajuns la un pipeline cu 32
stagii, ceea ce este mult mai mult dect oricare variant anterioar. Cu alte cuvinte,
execuia unei instruciuni a microprocesorului este mprit n 32 operaii elementare.
Pentru microprocesoarele cu numr foarte mare de stagii se folosete i denumirea de
uniti superpipeline.
Totui, structura de tip pipeline are i dezavantaje. Ideea sa de pornire este c
fiecare stagiu lucreaz cu alte resurse ale procesorului dect restul stagiilor. Aceast
cerin nu poate fi niciodat satisfcut n totalitate. Ca un exemplu simplu, o operaie
de adunare necesit folosirea unitii aritmetico-logice (ALU) pentru efectuarea
calculului propriu-zis. n acelai timp, n faza de adresare a unei instruciuni, valoarea
registrului indicator de instruciuni (IP la procesoarele pe 16 bii) este incrementat,
pentru a putea aduce codul urmtoarei instruciuni. Deoarece incrementarea este tot o
operaie de adunare, va fi nevoie tot de ALU. Astfel, o instruciune de adunare aflat
n faza de execuie i o alt instruciune aflat n faza de adresare vor concura pentru
aceeai resurs (ALU). Asemenea situaii apar de fapt mult mai des, deoarece ntre
instruciuni exist relaii de dependen rezultate din nsi logica programului. Se
ntmpl foarte des ca o instruciune s aib nevoie de rezultatul unei instruciuni
anterioare, care nc nu l-a calculat. Din acest motiv, de multe ori o instruciune (i
implicit cele care urmeaz dup ea) trebuie s atepte pn cnd devine disponibil o
resurs de care are nevoie, dar care este momentan folosit de alt instruciune. Dup
cum am vzut, o asemenea resurs poate fi fie o component hardware a procesorului,
fie rezultatul altei instruciuni. Ca urmare, n practic se ntmpl rareori ca procesorul
s termine de executat cte o instruciune la fiecare "btaie" a ceasului, deci ctigul
de performan nu este att de mare ct sperm.
O concluzie important care se desprinde de aici este c simpla lungime a
pipeline-ului (adic numrul de stagii) nu este singurul factor care influeneaz
performana procesorului. mprirea corect a instruciunilor n operaii elementare
poate fi la fel de important. Din pcate, aceast alegere nu poate fi fcut ca urmare a
unor consideraii teoretice sau a unor criterii clare, fiind n mare msur o problem
de inspiraie. n practic se poate vedea cum microprocesoarele AMD, care sunt
compatibile cu cele Intel la nivel de limbaj, dar au o implementare diferit pentru
pipeline (care este mult mai scurt), reuesc s obin performane asemntoare, dei
lucreaz la frecvene mult mai mici. O soluie deja folosit de procesoarele actuale
(att Intel, ct i AMD) este existena a dou sau mai multe pipeline-uri; astfel se pot
executa mai multe instruciuni n paralel, atunci cnd dependenele dintre instruciuni
nu introduc perioade de ateptare. Procesoarele care utilizeaz mai multe pipeline-uri
se numesc superscalare.
Lucrul cu segmente de memorie
n condiiile n care spaiul de memorie accesibil microprocesorului a crescut
pn la 4 Go, segmentele de 64 Ko, cu care lucrau procesoarele pe 16 bii, sunt
evident anacronice. Procesoarele pe 32 bii au pstrat conceptul de segment de
memorie, dar ntr-un mod adaptat necesitilor.
Sistemele actuale permit executarea simultan a mai multor programe. O
consecin imediat este c mai multe programe se pot afla simultan n memorie, de
unde apare i riscul ca dou sau mai multe asemenea programe s ncerce s utilizeze
(n scopuri diferite) aceeai adres de memorie. Evident, asemenea situaii sunt de
natur s duc la interferene nedorite ntre programe, cu efecte dintre cele mai grave,
de aceea trebuie evitate prin orice mijloace.

18

Soluia de principiu const n a introduce o separare ntre adresele pe care un


program crede c le acceseaz i adresele utilizate n realitate. Altfel spus, atunci cnd
un proces ncearc s acceseze o locaie aflat la o anumit adres, accesul n
memoria principal se produce la alt adres. n continuare, adresele pe care un proces
crede c le acceseaz vor fi numite adrese virtuale, iar adresele accesate n realitate adrese fizice. Astfel, fiecare proces are la dispoziie un spaiu de adrese (virtuale)
propriu, independent de spaiile de adrese ale celorlalte procese. La prima vedere nu
se ntrevede nici un ctig, ci dimpotriv. Totui, printr-o gestionare atent a
corespondenelor ntre adresele virtuale ale fiecrui proces i adresele fizice accesate
n realitate, se poate obine efectul dorit: mai multe programe acceseaz acelai adrese
(virtuale), fr a se produce suprapuneri n memoria fizic. Avantajul obinut astfel
este c o aplicaie nu mai trebuie s in cont de problema interferenelor, ci se poate
executa ca i cum toat memoria ar fi la dispoziia sa.
S vedem cum se poate folosi lucrul cu segmente pentru a gestiona adresele
virtuale i fizice. Dup cum am artat, adresa unui octet dintr-un segment se compune
din dou pri independente: adresa de nceput (de baz) a segmentului i
deplasamentul octetului n interiorul segmentului (numit i offset). Deci, orice adres
poate fi scris printr-o pereche de forma: (adresa_baza_segment, deplasament).
Aceast pereche este de fapt o adres virtual, deoarece este transformat de procesor
ntr-o adres fizic.
S analizm ce se ntmpl n momentul n care dou programe diferite ncearc
s acceseze aceeai adres virtual. Adresa de baz a unui segmentului este precizat
prin intermediul unui registru de segment. Deci, pentru a evita suprapunerea, este
suficient ca valoarea registrului de segment s fie diferit pentru cele dou programe.
Desigur, gestiunea valorilor regitrilor de segment nu cade n seama programelor, ci
este realizat de sistemul de operare, singurul care are o vedere de ansamblu asupra
tuturor aplicaiilor ce ruleaz pe calculator. n acest mod, programele nu trebuie s
opereze nici o modificare pentru arezolva problema.
Totui, problema nu este nc rezolvat complet, ntruct este necesar stocarea
informaiilor referitoare la valorile regitrilor de segment pentru fiecare program. n
plus, pot aprea i erori de alt natur. De exemplu, orice segment are o anumit
dimensiune. Procesoarele pe 32 bii permit ca fiecare segment s ocupe pn la 4 Go,
dar n practic fiecare segment va avea o dimensiune impus de cantitatea de
informaie (date, instruciuni) pe care o conine. Este deci posibil ca deplasamentul s
fie prea mare, astfel nct adresa fizic rezultat s fie n afara segmentului. Mai mult,
fiecare segment poate fi folosit n general de un singur program; trebuie deci evitat ca
alt program s acceseze respectivul segment. Toate aceste situaii trebuie detectate, iar
programele care ncearc s realizeze un acces incorect trebuie oprite.
Pentru aceasta, fiecrui segment existent n memorie i se asociaz o structur de
date numit descriptor de segment. Principalele informaii coninute de acesta sunt
urmtoarele:
- adresa de nceput a segmentului
- dimensiunea segmentului
- drepturi de acces la segment
Toi descriptorii de segment sunt grupai ntr-un tabel, astfel nct pentru a putea
identifica un segment este suficient s fie cunoscut indicele descriptorului su n tabel.
n acest moment, adresele devin perechi de forma: (indice_descriptor, deplasament).
Cu alte cuvinte, registrul de segment nu va mai conine adresa de baz a segmentului,
ci indicele acestuia n tabloul descriptorilor. Acesta este motivul pentru care regitrii
de segment au rmas la dimensiunea de 16 bii, n timp ce adresele sunt pe 32 bii.
19

Concret, n momentul n care un program ncearc s acceseze o adres de


memorie (dat n forma de mai sus), au loc urmtoarele aciuni:
- se verific n descriptorul segmentului drepturile de acces, pentru a se decide
dac programul are dreptul de a accesa adresa dorit
- se verific dac deplasamentul nu depete dimensiunea segmentului
- dac se produce o eroare la unul din paii anteriori, accesul programului la
adresa de memorie solicitat este oprit
- dac nu s-a produs nici o eroare, se calculeaz adresa fizic i se realizeaz
accesul propriu-zis
Desigur, toate aceste verificri i calcule nu sunt realizate prin software, ci
direct n hardware de ctre microprocesor. Este vorba de o activitate complex, astfel
nct procesorul a fost dotat cu o component specializat, numit unitate de
management al memoriei (Memory Management Unit - MMU).
Paginarea memoriei
Utilizarea segmentrii nu este lipsit de probleme. Deoarece un segment ocup
ntotdeauna o zon continu n memoria fizic, atunci cnd este creat acesta trebuie
plasat ntr-o zon liber suficient de mare. La un moment dat, datorit diverselor
alocri i eliberri de segmente, memoria arat ca un ir de zone ocupate i libere, de
diferite dimensiuni. Experiena arat c n timp se ajunge la apariia unui numr mare
de zone libere de dimensiuni foarte mici, practic inutilizabile. Procesul de formare a
acestor zone libere, care nu pot fi folosite din cauza dimensiunilor prea reduse, poart
numele de fragmentare extern. Este posibil n acest fel ca un segment s nu mai
poat fi plasat n memorie, dei dimensiunea total a zonelor libere este mai mare
dect dimensiunea segmentului respectiv.
O abordare alternativ, n general mai eficient, poart numele de paginare a
memoriei. Ideea este de a stabili o coresponden mai direct ntre adresele virtuale i
adresele fizice dect n cazul segmentrii. Astfel, spaiul de adrese virtuale ale unui
program este mprit n zone de dimensiuni egale (uzual 4-8 Ko), numite pagini
(pages). Similar, memoria fizic este mprit n zone de aceeai lungime, numite
cadre de pagin (page frames). Sistemul de operare construiete n memorie, pentru
fiecare proces, un tabel, numit tabel de paginare, care va conine paginile aparinnd
procesului i cadrele de pagin corespunztoare n memoria fizic. n cazul paginrii,
adresele virtuale sunt valori pe 32 bii, exact ca adresele fizice.
Practic, lucrurile se desfoar astfel:
- De fiecare dat cnd programul ncearc un acces la o adres virtual, MMU
determin pagina din care face parte respectiva adres i o caut n tabelul de
paginare.
- Dac pagina se afl n tabelul de paginare, se determin cadrul de pagin
corespunztor i se calculeaz adresa fizic. Abia n acest moment se realizeaz
accesul propriu-zis la locaia de memorie dorit.
- Dac pagina nu se gsete n tabelul de paginare, avem o ncercare de acces
ilegal la memorie, eroare numit uzual defect de pagin (page fault). La fel ca la
segmentare, n cazul detectrii unei erori, accesul la memorie nu se mai realizeaz.
S lum ca exemplu un tabel de paginare avnd urmtoarea structur:
Adrese virtuale
0
1
2
4
5
Adrese fizice
0
2
3
1
6
Considerm pentru simplitate c dimensiunea unei pagini este de 100 octei. n
acest caz, pagina 0 va conine adresele virtuale 0-99, pagina 1 adresele 100-199,
pagina 2 adresele 200-299 etc. Similar este relaia dintre cadrele de pagin i
adresele fizice.
20

Presupunem c programul ncearc s acceseze adresa 124. Aceasta face parte


din pagina 1, creia i corespunde n tabel cadrul de pagin 2. Astfel, n realitate va fi
accesata adresa fizic 224. Dac programul ncearca s acceseze adresa 367, MMU
observ c pagina 3, din care face parte acea adres, nu apare n tabelul de paginare,
deci este un acces ilegal.
Deoarece o zon de memorie orict de mare poate fi mprit n pagini de
dimensiune fix, ce pot fi rspndite n memorie n orice mod, nu apare fenomenul de
fragmentare extern. n schimb se ntlnete fragmentarea intern: deoarece
dimensiunea paginilor este fix, iar zonele de memorie cu care lucreaz procesele pot
avea orice dimensiune, n general la sfritul unei pagini rmne o zon nefolosit.
Din acest motiv, dimensiunea paginilor de memorie este stabilit ca un compromis
ntre dou cerine contradictorii:
- o dimensiune prea mare a paginii provoac o fragmentare intern puternic
- o dimensiune prea mic a paginii duce la ocuparea unui spaiu prea mare de
ctre tabelele de paginare, micornd memoria care poate fi folosit de aplicaii
Dac dimensiunea paginii este bine aleas, fragmentarea intern este n general
mai redus dect cea extern (aprut n cazul segmentrii).
Exist i posibilitatea de a folosi simultan segmentarea i paginarea memoriei.
Este ns vorba de o tehnic rar folosit n practic, din cauza complexitii sale, astfel
nct nu vom insista asupra ei.

3.3. ntrebri
1. Care sunt prile componente ale unui microprocesor Intel pe 16 bii?
2. Ce nseamn pipeline i ce avantaje prezint aceast tehnic?
3. Care sunt regitrii generali?
4. Enumerai regitrii de segment.
5. Ce nseamn adrese logice i adrese fizice?
6. Ce nseamn offset?
7. Cum se calculeaz adresa fizic din adresa logic la un microprocesor pe 16
bii?
8. Care sunt indicatorii de condiii ai unui microprocesor Intel?
9. Ce nseamn microprocesoare superpipeline? Dar superscalare?
10. Cum obine un microprocesor pe 32 bii adresa fizic din adresa virtual,
dac se folosete segmentarea memoriei?
11. Dar dac se folosete paginarea memoriei?
12. Ce este un defect de pagin?
13. Ce restricii sunt impuse la alegerea dimensiunii paginii de memorie?

21

4. Microprocesoare: funcionare i adresarea datelor


4.1. Funcionarea la nivel de magistral
Dup cum s-a vzut, pe placa de baz a calculatorului PC exist un circuit de
ceas (clock) care genereaz un semnal de o anumit frecven - 14,3 Mhz la PC
original i peste 3 GHz la calculatoarele actuale -, folosit pentru execuia sincronizat
a operaiilor din interiorul micriprocesorului i efectuarea transferurilor ntre diferite
blocuri la nivelul magistralei externe.
n timpul funcionrii, activitatea microprocesorului poate fi descompus n
secvene de microoperaii, care formeaz aa-numiii cicli main. n funcie de natura
operaiei care se execut, putem avea 5 tipuri de cicli main:
1. Citire (read) - atunci cnd se citesc date din memorie sau de la dispozitivele
de I/O
2. Scriere (write) - cnd datele se inscriu in locaii de memorie sau intr-un
dispozitiv de I/O
3. Recunoatere ntrerupere - n cazul generrii unei cereri de ntrerupere pe
care P o identific
4. Oprire (halt) - atunci cnd microprocesorul este oprit pn la primirea unei
cereri de ntrerupere
5. Arbitrare magistral - cnd sistemul de calcul este prevzut cu mai multe
microprocesoare care pot avea acces la o magistral comun
Toate aceste operaii sunt descrise cu lux de amnunte n foile de catalog ale
firmelor ce produc microprocesoare. Fr a le detalia aici, artm doar care este
semnificaia unei diagrame de semnal.

Fig. 4.1.
Dup cum se observ n figura 4.1, semnalul reprezentat are valoarea "0" logic
la t=0, la t=2 ncepe s creasc spre 1 logic, la t=3 deja este "1" logic, se menine 2 ns
i apoi "cade" napoi la "0" logic. Acest mod de reprezentare a semnalelor se numete
diagram de semnal. n figura 4.1 este prezentat diagrama semnalului de ceas
(clock).
n practic exist un mare numr de semnale care intervin n desfurarea
ciclilor main. Pentru fiecare tip de ciclu exist cte o diagram de semnal, iar
distribuia n timp a semnalelor este specific fiecrui tip de ciclu.

4.2. Moduri de adresare la microprocesoarele Intel


Programul care se execut se gsete memorat in segmentul de cod. Dup cum
am vzut ntr-un capitol anterior, cnd se ncarc o instruciune din memorie adresa
acestuia este furnizat de regitrii CS (ca adres de baz) i respectiv IP sau EIP (ca
deplasament). n mod normal, coninutul registrului (E)IP este incrementat pe msur
ce instruciunile se execut, astfel ca totdeauna s fie deja selectat instruciunea care
22

urmeaz. Instruciunile de salt necondiionat sau apel de procedur pot ns modifica


valorile regitrilor (E)IP i eventual CS, modificndu-se astfel ordinea secvenial de
execuie a instruciunilor.
4.2.1. Adresarea datelor
Datele din memorie care formeaz operanzii instruciunilor pot fi adresate n
mai multe moduri. Aceti operanzi pot fi coninui n regitri, n memorie, n
instruciuni sau porturi de I/O. Operaiile care implic date numai din regitri sunt cele
mai rapide, nefiind nevoie de utilizarea magistralei pentru acces la memorie.
Regitrii folosii i modul de adresare (memorie sau registru) sunt codificai n
interiorul instruciunii. n practic exist urmtoarele tipuri de adresare:
1. Adresare imediat
n acest caz operandul apare chiar n instruciune.
mov ax,5
mov eax,5
Aceast instruciune va iniializa registrul (E)AX cu valoarea 5. Evident, a doua
instruciune poate fi folosit numai la microprocesoarele pe 32 bii, care conin
registrul EAX.
2. Adresare direct
Deplasament n interiorul segmentului curent (de obicei n interiorul
segmentului de date) este furnizat de ctre instruciune.
add bx,[200]
Aceast instruciune adun la registrul (E)BX coninutul locaiei de la adresa
efectiv 200 din segmentul de date.
3. Adresare indirect (prin regitri)
La procesoarele pe 16 bii, offsetul este furnizat de unul dintre regitrii BX, SI
sau DI, iar registrul implicit este bineneles DS. n cazul procesoarelor pe 32 bii,
pentru offset poate fi folosit oricare registru general pe 32 bii.
mov al,[bx]
mov al,[ebx]
Coninutul adresei de memorie de la adresa dat de (E)BX este transferat n AL.
Observm c procesoarele pe 32 bii pot lucra i cu regitri de 16 sau 8 bii pentru
date, dar nu i pentru adrese (care au ntotdeauna 32 bii).
4. Adresare bazat sau indexat
Offsetul se obine adunnd la unul din regitrii de baz (BX sau BP) sau index
(SI sau DI) un deplasament constant. Din nou, la procesoarele pe 32 bii se poate
folosi suma a oricare 2 regitri generali.
mov ax,[bx+5]
mov ax,[ebx+5]
La coninutul adresei din (E)BX se adun deplasamentul 5 i se obine offsetul
operandului. Aceste tipuri de adresare se pot folosi cnd avem structuri de date de tip
tablou, care pot fi localizate n diferite locuri din memorie. Constanta va conine
offsetul la care ncepe structura de date, iar deplasamentul va furniza poziia
elementelor n cadrul structurii.
5. Adresare bazat i indexat
Este cea mai complex form de adresare, care combin variantele anterioare,
permind adresarea cu 2 indeci (coninuturile regitrilor de baz i indeci la
procesoarele pe 16 bii, oricare 2 regitri generali la procesoarele pe 32 bii).
mov ax,[bx+si+7]
mov eax,[ebx+ecx+9]
23

Procesoarele pe 32 bii permit i o form extins a ultimelor dou tipuri de


adresare. Mai exact, registrul folosit pentru offset (pentru adresarea bazat sau
indexat), respectiv unul din cei 2 regitri (pentru adresarea bazat i indexat), poate
fi nmulit cu 2, 4, sau 8. n acest mod pot fi accesate mai uor tablourile cu elemente
avnd dimensiunea de 2, 4, sau 8 octei (cum sunt tipurile standard).
mov ax,[ebx*4+5]
mov eax,[ebx+ecx*2+9]
n cele artate anterior, de obicei registrul segment implicit este cel de date,
presupunnd c se adreseaz operanzi de calcul obinuii. Excepia este dat de cazul
cnd se folosete BP, atunci registrul de segment implicit fiind SS. Dac se dorete
folosirea altui registru de segment dect cel implicit, n instruciune se va preciza
explicit despre care registru de segment este vorba, cum ar fi n instruciunea
urmtoare:
mov bx,es:[bp+7]
Dac nu precizam ES, implicit se folosea SS, deoarece registrul de baz este BP.

4.3. Stiva
O zon special de memorie este folosit de programe atunci cnd se execut
subprograme sau se transmit parametrii de la un program la altul.
Aceast zon poart numele de stiv (n englez stack), fiindc funcionarea ei
este asemntoare cu cea a unei stive fizice de obiecte. Modul de funionare al stivei
este numit LIFO (Last Input - First Output). ntr-o stiv, datele au voie s fie depuse
numai prin partea superioar, astfel nct informaia depus ultima dat (Last Input) va
fi disponibil, fiind deasupra stivei, i va putea fi scoas prima (First Output).
Stiva este folosit implicit n mecanismul de apel al procedurilor.

Fig. 4.2.

24

Figura 4.2 ilustreaz un astfel de caz. Atunci cnd s-a ajuns cu pointerul de
instruciuni (E)IP la adresa 1000, se execut un apel la procedura PROC care se
gsete n memorie la adresa 3000. Atunci cnd se termin de executat procedura,
trebuie s ne ntoarcem la prima instruciune de dup instruciunea de apel procedur
(1001 n cazul nostru). Deci, adresa 1001 trebuie s fie memorat undeva pentru ca la
revenirea din procedur s relum programul din acel loc.
Stiva se folosete pentru a memora aceast adres de revenire. Microprocesorul
este proiectat astfel nct, la execuia unui apel de procedur (CALL), s salveze
automat n stiv adresa de memorie care conine instruciunea urmtoare din secven
(de fapt coninutul registrului IP). Cnd se ntlnete n procedur instruciunea
RETURN (revenire din procedur), tot automat microprocesorul ia din vrful stivei
adresa memorat anterior i o ncarc n registrul (E)IP, executnd apoi instruciunea
gsit la aceast adres (adic instruciunea de la adresa 1001).
Putem defini stiva ca un concept abstract de structur de date, asupra crora
opereaz instruciuni special proiectate n acest scop.
O zon de stiv este caracterizat de o adres curent, numit adresa vrfului
stivei, care la microprocesoarele Intel este adresat prin registrul (E)SP (stack pointer
- indicator de stiv). Operaiile de baz cu stiva sunt PUSH (depune un cuvnt n
stiv) i respectiv POP (extrage un cuvnt din stiv).
La microprocesoarele pe 16 bii, cuvintele transferate n stiv sunt de 16 bii (2
octei), deci adresa curent a vrfului stivei se va incrementa sau decrementa cu 2 la
fiecare operaie. Similar, la microprocesoarele pe 32 bii se poate lucra cu operanzi
avnd fie 16, fie 32 bii, n al doilea caz vrful stivei fiind incrementat sau
decrementat cu 4 la fiecare operaie. Figura 4.3 prezint modul de aciune al unei
operaii PUSH.

Fig. 4.3.
Se observ c stiva "crete" n jos pe msur ce se depun date n ea. La fel ca n
cazul oricrui segment, mrimea sa maxim este de 64 Ko la microprocesoarele pe 16
bii i 4 Go la cele pe 32 bii. Pot exista mai multe stive definite la un moment dat, dar
numai una este activ.
Stiva este folosit explicit la salvri i refaceri de date, transmiterea parametrilor
ctre proceduri etc. Implicit se folosete n cazul apelurilor de procedur. De
asemenea, programele care permit definirea i folosirea funciilor recursive folosesc
stiva pentru memorarea valorilor intermediare ale parametrilor i valorilor funciilor.

25

4.4. Procesoare CISC i RISC


Procesoarele Intel din seria x86 fac parte din categoria procesoarelor numite
CISC (Complex Instruction Set Computer - calculator cu set complex de instruciuni).
Acestea sunt procesoare la care setul de instruciuni cuprinde un numr mare de
operaii implementate. Totodat, acestea pot lucra cu mai multe tipuri de operanzi;
pentru unele asemenea tipuri, adresa operanzilor este calculat ntr-un timp relativ
lung i abia dup aceea se poate executa instruciunea propriu-zis. S-a vzut
ncepnd chiar de la calculatoarele mari (mainframe) ale anilor 1950 c execuia
operaiilor simple cu operanzi n regitri consum mai puin timp de calcul. n plus, o
dat cu dezvoltarea software-ului de aplicaii i prin studii statistice efectuate de
companii ca IBM s-a demonstrat c instruciunile complexe din procesoarele CISC
sunt rareori folosite, preferndu-se folosirea a ctorva instruciuni simple n locul
uneia mai complexe. Astfel, 10% din setul de instruciuni al unui procesor CISC st la
baza a peste 90% din totalul codului generat de un compilator ca PASCAL.
Cercetrile s-au ndreptat ctre proiectarea unor procesoare cu instruciuni mai puine,
cu muli regitri i memorie imediat (cache) n care s fie reinute datele temporare,
toate acestea conducnd la o vitez mai mare. Astfel au aprut procesoarele RISC
(Reduced Instruction Set Computer - calculator cu set redus de instruciuni). Acestea
s-au dezvoltat imediat ce tehnologia a permis obinerea de memorie ieftin.
Simplitatea setului de instruciuni, modul de adresare mai simplu care necesit
un singur acces la memoria principal ntr-un singur impuls de ceas, precum i
execuia instruciunilor n structuri de tip pipeline au permis proiectarea unor uniti
de execuie superscalare, care permit execuia mai multor instruciuni simultan.
Aceasta au dus la succesul structurilor de tip RISC, care s-au impus alturi de cele
mai vechi de tip CISC. n ultimii 15 ani nu s-au mai proiectat noi structuri CISC.
Datorit simplitii structurale, necesarul de siliciu este mai mic i astfel a
aprut posibilitatea de integrare pe cip a unor memorii i uniti de execuie multiple.
Toate acestea au fcut ca procesoarele RISC s fie mai performante dect cele de tip
CISC.
Procesoarele noi din seria x86 folosesc n structura lor tehnici RISC, pstrnd
ns vechea structur CISC. Acest set de instruciuni complex face ca software-ul mai
vechi s poat rula i pe procesoarele actuale.
Procesoare reprezentative de tip RISC sunt SPARC, MIP i ALPHA, care ns
nu au reuit s ating succesul familiei x86.

4.5. ntrebri
1. Care sunt ciclii main ai unui procesor?
2. Enumerai modurile de adresare ale microprocesoarelor Intel.
3. Ce este o stiv i cum funcioneaz ea?
4. Care sunt operaiile de baz n lucrul cu stiva?
5. Ce nseamn procesor CISC? Dar RISC?

26

5. Sistemul de ntreruperi
Unul din marile avantaje ale unui calculator fa de orice alt main creat de
om este capacitatea sa de a rspunde la un numr mare de sarcini imprevizibile. Cheia
acestor posibiliti o constituie ceea ce numim ntreruperi.
Cu ajutorul acestora, calculatorul poate s opreasc temporar o sarcin pe care o
execut i s comute pe o alta, ca rspuns la ntreruperea intervenit (cum ar fi de
exemplu apsarea unei taste sau primirea unor date pe place de reea). Acest
mecanism face ca sistemul de calcul s fie foarte flexibil, permind rspunsul imediat
la un eveniment extern, a crui tratare poate fi foarte urgent, prin ntreruperea sarcinii
curente i reluarea acestei sarcini dup ce s-au rezolvat cerinele impuse de
ntrerupere.
Noiunea de ntrerupere presupune suspendarea programului n curs de execuie
i transferul controlului ctre o anumit specializat, numit rutin de tratare a
ntreruperii. Mecanismul dup care se face acest transfer este n esen de tip apel de
procedur, ceea ce nseamn c se revine n programul ntrerupt, din locul n care
acesta a rmas, dup ce s-a terminat rutina de tratare a ntreruperii.

5.1. ntreruperi hardware i software


Clasificarea ntreruperilor se poate face dup mai multe criterii. O posibil
clasificare este dat n figura 5.1.

Fig. 5.1.
ntreruperile software apar n urma execuiei de ctre microprocesor a unor
instruciuni cum ar fi INT, DIV, IDIV, fiind deci cauzate de ctre software.
ntreruperile hardware interne apar ca urmare a unor situaii speciale n care se
poate afla procesorul (cum ar fi execuia pas cu pas n cazul depanrii programelor).
ntreruperile hardware externe sunt provocate de semnale electrice, care n
ultim instan sunt aplicate de ctre dispozitivele periferice pe intrrile INT i NMI
ale microprocesorului.
ntreruperile externe dezactivabile se aplic pe intrarea INT i sunt luate n
considerare numai dac bistabilul IF (Interrupt Flag) din registrul indicatorilor de
condiii are valoarea 1.
ntreruperile externe nedezactivabile au loc la aplicarea unui semnal
corespunztor pe intrarea NMI (Non Maskable Interrupt) i sunt luate n considerare
ntotdeauna. Un exemplu pentru folosirea intrrii NMI este semnalizarea cderii
tensiunii de alimentare.
5.1.1. ntreruperi hardware dezactivabile
Aceste ntreruperi sunt controlate de unul (la PC original) sau mai multe circuite
specializate (la AT i celelalte calculatoare), numite controlere de ntreruperi, de tipul
Intel 8259. Acest circuit are menirea de a culege cereri de ntrerupere de la mai multe
dispozitive, de a stabili o prioritate a cererilor (n cazul n care exist mai multe cereri
27

de ntrerupere simultane) i n final de a transmite un semnal de ntrerupere pe pinul


INT al microprocesorului i un semnal de identificare al dispozitivului periferic care a
fcut cererea.
Figura 5.2 ilustreaz schema de ntreruperi a microprocesorului 80386 folosit
n calculatoarele AT i urmtoarele. Observm modul de legare n cascad a
controlerelor de ntreruperi. La microprocesoarele anterioare (8086, 8088) era prezent
un singur circuit 8259.

Fig. 5.2.
Dac la una din liniile IRQ0-IRQ15 (IRQ = Interrupt Request) se primete o
cerere de ntrerupere de la un dispozitiv periferic (s-a apsat o tast, trebuie s se fac
un ciclu de refresh al memoriei etc.), acest semnal este analizat de controlerul 8259 i
n final acesta va genera o ntrerupere pe linia INT ctre microprocesor. Dac n
microprocesor bistabilul IF are valoarea 1 (adic ntreruperile hardware externe sunt
activate), microprocesorul va trimite napoi controlerului un semnal INTA (Interrupt
Acknowlege - recunoatere ntrerupere), prin care l anun c ntreruperea este
recunoscut i acceptat. n continuare, controlerul de ntrerupere va depune pe
magistrala de date un octet special, numit octet type, care va identifica tipul (nivelul)
ntreruperii. Controlerul de ntrerupere 8259 avnd 8 intrri pentru ntreruperi de la
echipamente, va putea s trimit 8 valori diferite, fiecare indentificnd n mod unic
una din cele 8 intrri. Se mai spune c acest controler poate furniza 8 vectori de
ntrerupere, identificai prin octetul type, iar sistemul de ntreruperi la
microprocesoarele Intel este un sistem vectorizat.
Cum cu un octet (8 bii) se pot efectua 256 combinaii diferite, vor putea exista
256 valori diferite ale octetului type. Deci ntr-un sistem pot exista maximum 256
nivele de ntrerupere diferite. Pentru fiecare nivel (valoare a octetului type) se poate
asocia o procedur (rutin sau subprogram) de deservire a ntreruperii respective. Deci
putem avea maximum 256 proceduri.
Adresele acestor rutine sunt trecute ntr-o aa-numit tabel a vectorilor de
ntreruperi, care se afl n primii 1024 octei ai memoriei RAM (primul Ko). Datorit
faptului c fiecare rutin de ntrerupere se poate afla n alt segment, pentru a identifica
adresa unei rutine trebuie s-i furnizm adresa de segment (2 octei) i adresa
offsetului (nc 2 octei), deci o adres va ocupa 4 octei. Cum sunt 256 ntreruperi
28

posibile, spaiul de memorie ocupat de tabel este 256 4 = 1024 = 1Ko. Se observ
c modul n care sunt memorate adresele (cu 2 octei pentru offset) corespunde
microprocesoarelor pe 16 bii, respectiv modului real al microprocesoarelor pe 32 bii.
De altfel, orice microprocesor pe 32 bii intr n modul real la pornire (adic la
punerea sub tensiune). Astfel, sistemul de ntreruperi funcioneaz n acelai mod
indiferent de tipul procesorului.
n figura 5.3 se d o reprezentare a modului n care este ocupat memoria
sistemului cu tabela vectorilor de ntreruperi. Amplasarea se realizeaz n funcie de
octetul type, care d nivelul de ntrerupere.
Adrese
Octet type
0-3
0
4-7
1
...
...
1020-1023
255
Fig. 5.3.
Am vzut c acest octet poate lua 256 valori diferite.
Valoarea octetului type nmulit cu 4 va furniza adresa din memorie unde se
gsete vectorul de ntrerupere (adresa rutinei de ntrerupere) pentru nivelul furnizat
de octetul type.
Recapitulnd, la apariia unei ntreruperi n microprocesor au loc urmtoarele
aciuni:
- se salveaz n stiv regitrii (E)FLAGS, CS i (E)IP, n aceast ordine
- se terg bistabilii IF i TF (adic se blocheaz execuia altei ntreruperi n
timpul execuiei programului pentru ntreruperea n curs, iar TF blocheaz execuia
pas cu pas a rutinei de ntrerupere)
- se furnizeaz microprocesorului un octet (8 bii n gama 0-255), numit i octet
type, care identific nivelul asociat ntreruperii
- se execut un salt la adresa de nceput a rutinei de tratare a ntreruperii
(folosind tabela vectorilor de ntrerupere), de unde se ncepe execuia rutinei
corespunztoare de tratare a ntreruperii
Fiecare component a calculatorului care poate s aib nevoie de microprocesor
la un moment dat are propriul su nivel de ntrerupere. Tastatura, ceasul intern,
unitile de disc, imprimantele, placa de reea etc., toate acestea au fiecare un nivel de
ntrerupere rezervat. La apsarea unei taste se genereaz ntreruperea de tastatur, la
fiecare 55 milisecunde se genereaz ntreruperea de ceas, a crei rutin de tratare
actualizeaz ceasul intern, discul trimite o ntrerupere cnd este terminat un transfer
iar imprimanta cnd nu are hrtie, placa de reea cnd primete un pachet de date
adresat ei .a.m.d. Deci observm c activitatea microprocesorului se desfoar ntr-o
permanent posibilitate de a fi "ntrerupt" de altcineva, care are mai mare nevoie de
microprocesor dect aplicaia ce ruleaz.
Interesant este c ntreruperile nu au fcut parte din conceptul primelor
calculatoare. La nceput calculatoarele au fost folosite fr acest mecanism. Astzi
este greu de imaginat un calculator fr sistem de ntreruperi implementat n cadrul
su hardware i software.
Conceptul de ntrerupere s-a dovedit att de eficient i util, nct a fost adaptat la
o mare varietate de alte necesiti ale calculatorului. Pe lng ntreruperile hardware,
despre care tocmai am vorbit, exist i ntreruperi care sunt generate chiar n interiorul
CPU, ca urmare a faptului c s-a ntmplat ceva ce nu are sens - de exemplu s-a

29

ncercat o mprire la zero. n acest caz se genereaz o ntrerupere intern, numit i


excepie.
5.1.2. ntreruperi software
Aceast categorie de ntreruperi nu apare pe neateptate, precum cele hardware
descrise anterior. Ideea care st la baza ntreruperilor a fost extins astfel nct acestea
(ntreruperile) s fie utilizate i de ctre programe, pentru a solicita servicii executate
de alte programe din calculator. ntreruperile de acest tip se numesc ntreruperi
software. Dup cum am vzut, atunci cnd se construiete un calculator exist un set
de programe interne integrate ntr-o memorie ROM (Read Only Memory), care
formeaz aa-numitul BIOS. Dac programele de aplicaii au nevoie de funcii oferite
de BIOS, modul de apelare a acestora l constituie ntreruperile software.
Serviciile BIOS sunt puse la dispoziia programului de aplicaie prin execuia
unei instruciuni de ntrerupere software de tipul INT n, unde n reprezint nivelul de
ntrerupere solicitat. ntreruperile software funcioneaz la fel ca i celelalte tipuri de
ntrerupere, cu o singur diferen: ele nu sunt declanate de un eveniment neateptat
sau aleatoriu, ci sunt produse intenionat de ctre program cu un anumit scop.
Sistemele de operare folosesc de asemenea ntreruperi software pentru apelul
unor funcii necesare derulrii programelor de aplicaie sub controlul su direct.
Aceste funcii ale BIOS sau ale sistemului de operare, apelate prin intermediul
ntreruperilor, sunt tratate de ctre procesor ca subprograme care, dup ce se termin,
redau controlul programului apelant. Programul care face apel la o asemenea funcie
nu are nevoie s cunoasc adresa de memorie a rutinei corespunztoare, ci este
suficient s indice numrul ntreruperii alocate acelei funcii i eventual parametrii
auxiliari, necesari funciei. Aceste ntreruperi sunt standardizate de ctre BIOS i
respectiv de ctre sistemul de operare.
Vom mai face cteva observaii asupra modului de funcionare a ntreruperilor
ntr-un calculator.
Ultima instruciune dintr-o rutin de ntreruperi este instruciunea IRET
(Interrupt Return) care are rolul de a restaura n ordine invers ceea ce a fost salvat n
stiv, adic (E)IP, CS i registrul (E)Flags, rednd controlul programului principal.
Dac rutina de ntreruperi lucreaz cu regitrii procesorului i distruge valorile
coninute n acestea, revine n grija programatorului ca aceste valori s fie salvate
explicit n stiv, prin instruciuni de tip PUSH, la inceputul rutinei de tratare a
ntreruperii, iar la sfrit, nainte de terminare, s fie refcui aceti regitri prin
instruciuni POP corespunztoare. Astfel, programul care a fost ntrerupt i reia lucrul
cu valorile care erau n regitrii procesorului la momentul ntreruperii sale.
Dup cum am vzut, imediat ce s-a declanat o ntrerupere indicatorul IF este
trecut pe 0, ceea ce nseamn c ntreruperile hard care pot surveni din acel moment
sunt dezactivate. De aceea este indicat s se utilizeze ct mai repede posibil o
instruciune de tip STI (Set Interrupt) care activeaz din nou sistemul de ntreruperi bineneles, dac programul rutinei de ntrerupere nu execut o poriune n care nu are
voie s fie ntrerupt.
Tabela vectorilor de ntreruperi, dup cum am vzut, este plasat n memoria
RAM (deci cea n care se poate terge i nscrie alt valoare). Aceasta face ca adresele
rezervate n tabel pentru desemnarea rutinelor de tratare a ntreruperilor s poat fi
schimbate chiar de unele programe i eventual utilizatorii s-i scrie propriile
programe pentru tratarea unor ntreruperi. Aceast poart de intrare n sistemul de
operare prin intermediul ntreruperilor este folosit i de unele programe ruvoitoare
cum ar fi viruii, caii troieni etc. De obicei aceste programe "fur" o ntrerupere, adic
30

i introduc n tabela de ntrerupere, n locul adresei normale de pn atunci, propria


lor adres de nceput. La declanarea normal a ntreruperii respective se lanseaz
acest program "pirat", care poate realiza diverse aciuni distructive - ceea ce poate
avea un efect catastrofal asupra integritii datelor n calculator. Pe ct de puternic
este sistemul de ntreruperi n activitatea unui pocesor, pe att de mare poate fi
pericolul folosirii necorespunztoare a acestuia de ctre programe ru intenionate.
Sistemele de operare mai noi (Windows, Linux, OS/2) limiteaz accesul la
partea de hardware tocmai din aceast cauz. Programele de aplicaie nu mai pot
accesa hardware-ul n mod direct, ci numai prin intremediul sistemului de operare,
care blocheaz astfel un eventual apel ru intenionat, asigurnd astfel un mai mare
grad de siguran.

5.2. ntrebri
1. Cum arat clasificarea tipurilor de ntreruperi?
2. Care este rolul circuitului Intel 8259?
3. Ce este un octet type?
4. Ce rol joac tabela vectorilor de ntreruperi?
5. Ce aciuni efectueaz microprocesorul la apariia unei cereri de ntrerupere?

31

6. Memoria
6.1. Tipuri de memorie
Dup cum am vzut la prezentarea arhitecturii von Neumann, memoria
constituie unul din elementele de baz ale structurii unui sistem de calcul, rolul su
fiind acela de a reine n primul rnd programul i datele care se prelucreaz. La
nceput, calculatoarele dispuneau de puin memorie i era nevoie de mult
inventivitate din partea programatorilor pentru ca aceasta s ajung pentru programe,
care tindeau s devin tot mai lungi. Odat ce tehnologia a oferit posibilitatea ca
memoria s poat fi obinut la un pre acceptabil, ea s-a diversificat ncontinuu,
aprnd mai multe tipuri de memorie ntr-un calculator, fiecare din acestea avnd
locul i rolul su bine stabilit. Tehnologic exist dou tipuri principale de memorie:
- memorie RAM
- memorie ROM
A. Memoria RAM
Numele acesteia provine de la denumirea ei n englez: Random Access
Memory. Informaia care se gsete stocat n ea la diferite adrese (instruciuni sau
date) poate fi citit sau nscris cu o nou valoare. Se spune c suport att operaii de
citire (read), ct i operaii de scriere (write). Informaia elementar care se
memoreaz este o informaie binar, putnd deci lua valoarea 0 sau 1, iar circuitul
fizic elementar care poate memora aceast informaie se numete bistabil (are dou
stri stabile: 0 sau 1).
O prim form de implementare fizic este memoria RAM de tip static sau
SRAM (Static RAM), numit astfel deoarece informaia odat nscris se pstreaz
nealterat pn eventual la oprirea calculatorului, cnd se pierde. Bistabilii de tip
SRAM sunt alctuii din doi tranzistori.
Folosind o tehnologie diferit, s-a reuit ca pentru o celul de memorie s se
foloseasc un singur tranzistor (deci densitatea de informaie memorat va fi dubl
fa de cea anterioar), obinndu-se un tip de memorie numit dinamic sau DRAM
(Dynamic RAM). Aceti tranzistori pot s-i piard sarcina electric pe care o
nmagazineaz (deci informaia memorat n ultim instan) i atunci este nevoie de
o operaie de remprosptare periodic (refresh), care se realizeaz cu ajutorul unor
circuite concepute n acest scop (n general la fiecare 2 ms). Memoria de tip DRAM
este considerabil mai lent dect cea SRAM, dar are o densitate de integrare mai mare
(acelai numr de celule de memorie ocup mai puin spaiu) i este mai ieftin, motiv
pentru care este folosit pe scar larg n sistemele de calcul.
Blocurile de memorie RAM au n general o organizare matriceal. Dac la
nceput aveau forma unor circuite integrate distincte, o dat cu evoluia tehnologiei
aceste cipuri au fost plasate pe plcue de memorie cu 30, 72, 162... picioare, iar
capacitatea lor a crescut n timp de la 256Ko, 1Mo, 2Mo, ... pn la 256Mo, 512Mo
sau 1Go i chiar mai mult.
B. Memoria ROM
Aceast memorie nu suport dect citirea datelor din ea (ROM = Read Only
Memory - memorie numai pentru citire). La fel ca i n cazul memoriei RAM,
capacitatea ei a crescut o dat cu evoluia tehnologiei, de la circuite de 1Ko sau 2Ko la
64Ko, 128Ko etc.
Iniial, informaia era nscris ntr-un modul ROM la fabricarea acestuia i nu
mai putea fi schimbat. Avansul tehnologiei a permis realizarea unor circuite n care
informaia se poate terge i rescrie (desigur, nu de ctre procesor, ci cu ajutorul unor
32

dispozitive dedicate, care nu se gsesc n calculator). Spunem c aceste circuite sunt


de tip ROM programabil sau PROM.
Cel mai des folosite sunt circuitele EPROM, la care scrierea informaiei se
realizeaz pe cale electric. Dac tergerea se face cu lumin ultraviolet printr-o
fereastr de cuar plasat deasupra cipului, avem circuite de tip UVEPROM. Dac
tergerea se face electric, avem EEPROM. O variant mai nou a tehnologiei
EEPROM este memoria de tip Flash, care este larg utilizat n diverse dispozitive de
stocare. Un mare avantaj al acesteia din urm l reprezint posibilitatea de a terge sau
nscrie doar o parte a informaiei memorate.
Numrul de tergeri i renscrieri care pot fi aplicate asupra unui asemenea
circuit, indiferent de tehnologia folosit, este limitat (n majoritatea cazurilor n jurul a
50-100). Excepie face memoria Flash, care permite pn la 100000 de tergeri i
renscrieri. Oricum, limitarea nu este deranjant, deoarece memoria ROM se folosete
n calculator pentru memorarea programelor BIOS. Operaia de actualizare a BIOSului poate fi necesar n unele situaii, dar foarte rar; dincolo de acest caz particular,
este chiar de dorit ca BIOS-ul s nu poat fi modificat de programe.

6.2. Memoria video


Una din cele mai importante interfee dintre utilizator i calculator o constituie
monitorul. Dac la nceput ecranul putea afia numai caractere i doar n mod
monocrom, o dat cu dezvoltarea tehnologiei i sistemul video care asigur afiarea a
trecut prin transformri majore, fiind capabil ca pe lng caractere s apar i grafice,
eventual n culori. De altfel, majoritatea sistemelor de operare actuale fac din aceast
interfa grafic modul principal de existen.
Elementele principale ale sistemului de afiare sunt echipamentul de afiare
(monitorul), adaptorul (controlerul) video i memoria video.
Putem s definim ca memorie video zona de memorie accesat simultan de
procesor i de controlerul video, care la ieire este capabil s produc o secven
serial sincron de informaii capabile s comande un dispozitiv de tip CRT sau LCD.
Aceast memorie poate fi vzut ntr-o prim aproximaie ca un registru uria de
deplasare ce conine n el imaginea. Un punct de pe ecran se numete pixel. Acest
punct poate avea anumite caracteristici (atribute) cum ar fi culoarea, strlucirea etc.
Imaginea care trebuie afiat este stocat ntr-un ecran virtual din memoria
video. Controlerul video genereaz o imagine micnd fascicolul de electroni de la
stnga la dreapta i de sus n jos pe ecran, similar cu cititul unei pagini. La sfritul
unei linii orizontale fascicolul este stins i mutat la nceputul liniei urmtoare, baleind
linia, .a.m.d. Aceast baleiere poart numele de rastru.
Prentru fiecare poziie a unui pixel din rastru, datele de afiat sunt citite din
ecranul virtual aflat n memoria video. Aceste date sunt aplicate la intrrile unor
circuite DAC (Digital-Analog Convertor), care le convertesc n nivele de tensiune
pentru cele trei culori primare RGB (Red, Green, Blue) folosite n televiziunea color.
Dup terminarea unui cadru, fascicolul se ntoarce n stnga sus i ncepe un nou
cadru .a.m.d. Un astfel de tip de afiaj se mai numete i afiaj APA (All Points
Addressable).
Pentru ca imaginea s nu aib efect de plpire, care poate fi deranjant i chiar
vtmtor pentru ochi, se impune ca frecvena de remprosptare a ecranului (numrul
de cadre pe secund) s fie mai mare de 70 Hz.
Au existat mai multe tipuri de controlere video:

33

- MDA (Monochrome Dispozitiv Adaptor), construit de IBM n 1981, o dat cu


primul PC. Nu avea posibiliti grafice, putnd afia numai caractere ASCII standard.
- Hercules, care a rezolvat problema mbinrii textului cu grafica pe acelai
ecran. Placa monocrom HGC (Hercules Graphic Card) putea afia 720 348 puncte
monocolor pe ecran.
- CGA (Color Graphic Adaptor), produs de IBM, care putea ajunge la 640 200
puncte cu 16 culori.
- EGA (Enhanced Graphic Adaptor), cu rezoluie de 640 350 puncte.
- VGA (Video Graphic Array), cu 640 480 puncte i 256 culori.
- SVGA (Super Video Graphic Array), cu 1024 768 puncte afiabile.
Toate plcile dintr-o serie pot n general lucra cu programe scrise pentru seriile
anterioare. Mai sus am prezentat caracteristicile modului de funcionare grafic al
acestor plci, dar exist i un mod de funcionare caracter. n acest mod se consider
c memoria conine coduri de caractere ASCII i nu puncte direct afiabile, iar un
circuit special numit generator de caractere livreaz pixeli din codul ASCII citit.
Vom mai reveni la placa de tip APA, insistnd puin i asupra afiajului de
culoare al punctelor. Un monitor color poate afia peste 16 milioane de culori, dar
adaptorul video limiteaz aceast cifr. Dac utilizm pentru fiecare pixel cte un
octet pentru a memora caracteristicile sale de culoare, putem avea 256 (28) culori.
Dac extindem memoria folosit pentru un pixel la 2 octei, atunci sunt posibile 65536
de culori, iar dac pentru fiecare culoare fundamental (RGB) se rezerv un octet
(deci 3 octei pe pixel) depim 16 milioane.
n terminologia calculatoarelor, modul de afiare cu 1 octet rezervat pentru un
pixel se numete pseudo-color, cu 2 octei high color, iar cu 3 octei true color.
Pentru ca din informaia numeric s se obin un nivel de tensiune analogic
corespunztor, n adaptoarele video se utilizeaz convertoarele numeric-analogice
(DAC). Acestea sunt de obicei pe 8 bii i cte unul pentru fiecare culoare
fundamental. Deci am fi n stare s afim peste 16 milioane de culori, dar de obicei
informaia de culoare pentru aplicaii grafice nepretenioase este cuprins pe un octet deci numai 256 culori la un moment dat din cele 16 milioane posibile. Cele 256 culori
alese pentru afiare din domeniul de 16 milioane formeaz aa-numita palet de
culori, iar conversia de la 8 bii la 24 bii se face n adaptorul video printr-o memorie
numit CLUT (Color Look-Up Table - tabel de selecie a culorii). Valoarea pe 8 bii a
octetului este considerat o adres n tabela CLUT, care va seleca cuvntul de 3 octei
corespunztor ce va genera culoarea. Dac se dorete schimbarea paletei, se vor
memora alte valori n tabela CLUT pentru aceeai adres.
n final, trebuie s amintim c plcile grafice actuale pot avea o memorie video
mai mare dect cea alocat n harta memoriei, dar numai o singur pagin se afieaz
la un moment dat. Pagina afiat este selectat cu un registru intern. De asemenea,
plcile cu accelerare video, care domin actualmente piaa, sunt folosite att pentru
grafica n 2 dimensiuni (2D), ct i pentru cea n 3 dimensiuni (3D). Controlerele
video au integrate uniti cu instruciuni grafice speciale pentru prelucrarea i sinteza
imaginilor, n timp ce procesorului i revine numai sarcina de a apela aceste funcii
integrate n controler. Ctigul de vitez este impresionant, deoarece aceste circuite
specializate realizeaz prelucrrile grafice mult mai rapid dect o poate face
procesorul; n plus, sunt eliminate ntrzierile legate de comunicarea ntre procesor i
controlerul video.
Plcile video pot folosi o parte din memoria sistemului sau pot fi dotate cu
memorie proprie, care ajunge n unele cazuri pn la 256 Mo. Dac inem cont de
faptul c sunt rare calculatoarele care au 1 Go de memorie principal, este evident ct
34

de mare este necesarul de memorie al unor aplicaii (n special jocuri). Plcile fr


memorie proprie sunt mai ieftine, dar diferena de performan este mai mult dect
semnificativ. Totui, este bine de reinut c nici mcar aceste cantiti impresionante
de memorie proprie nu sunt suficiente pentru unele aplicaii, astfel nct pn i
plcile cele mai avansate folosesc i o parte din memoria sistemului.

6.3. Memoria cache


Microprocesorul 80386 a fost primul care a depit viteza memoriei RAM. Cu
alte cuvinte, dac pn atunci circuitele de memorie puteau servi cererile procesorului
cu o vitez mai mare dect putea acesta s formuleze cererile de acces, ncepnd cu
80386 situaia s-a inversat: microprocesorul putea executa instruciunile mai rapid
dect putea memoria s-i furnizeze datele ceute. Astfel, procesorul trebuia efectiv s
atepte sosirea datelor din memorie, neputnd trece mai departe. Decalajul s-a adncit
n timp, astfel nct un microprocesor din zilele noastre este de peste 10 ori mai rapid
dect memoria. Urmarea imediat este o penalizare major de perfoman, deoarece
procesorul nu-i poate folosi integral capacitatea de calcul i este chiar foarte departe
de aceast situaie. ntr-adevr, un microprocesor care funcioneaz la nici o zecime
din viteza sa nu este foarte util.
Totui, lucrurile nu stau n ntregime astfel. Tehnologia actual permite
realizarea unor circuite de memorie mai rapide, care pot face nc fa cerinelor
impuse de procesoare. Reamintim c, n afar de circuitele DRAM, utilizate n
sistemele de calcul, exist i memoriile de tip SRAM, care sunt mult mai rapide. De
fapt, tehnologia utilizat la fabricarea circuitelor SRAM este n mare msur aceeai
care se folosete i pentru procesoare. Din pcate, tehnologia SRAM are dou mari
dezavantaje: o densitate de integrare redus (ceea ce nseamn circuite de dimensiuni
mari) i un pre prea ridicat, care o face nerentabil.
Dei circuitele SRAM nu pot fi folosite n locul celor DRAM din motivele
artate, avem posibilitatea de a le utiliza pe scar mai mic, obinnd totui o cretere
de performan notabil. Se pornete de la dou legi determinate empiric, dar a cror
valabilitate este permanent confirmat de practic, i anume principiile (legile)
localitii:
- localitate temporal: dac o locaie de memorie este accesat la un moment
dat, este probabil c va fi accesat din nou n viitorul apropiat
- localitate spaial: dac la un moment dat este accesat o locaie de memorie,
este probabil c n viitorul apropiat vor fi accesate locaiile din apropierea sa
Facem observaia c principiile localitii se aplic att pentru accesul la date (o
variabil este de obicei accesat de mai multe ori n instruciuni consecutive,
tablourile sunt de obicei parcurse secvenial), ct i n ceea ce privete instruciunile
executate (programele constnd n principal din bucle). S-a ajuns astfel la ideea de a
reine coninutul ultimelor locaii accesate ntr-un circuit de memorie separat, foarte
mic, numit memorie intermediar sau cache; atunci cnd se realizeaz un acces la
memorie, mai nti se caut locaia respectiv n cache i abia apoi, dac este cazul, n
memoria principal.
Datorit dimensiunii sale reduse, este posibil ca memoria cache s fie de tip
SRAM, fr a afecta n mod semnificativ preul total. n acest fel, viteza cache-ului
este mult mai mare decat a memoriei principale.
Se observ c microprocesorul i calculatorul pot funciona i n absena cacheului. Folosirea memoriei cache nu aduce nimic n plus din punct de vedere al
funcionalitii, ci doar un spor de performan.
35

Pentru a da o exprimare cantitativ principiilor localitii, vom prezenta mai


nti terminologia folosit. Atunci cnd microprocesorul face un acces la memorie,
caut mai nti dac nu cumva adresa dorit se gsete n memoria cache. Dac
gsete informaia, nu se mai face apel la memoria RAM i se trece mai departe.
Spunem n acest caz c s-a realizat un "hit". Dac informaia nu exist n cache, se
face un apel la memoria principal (am avut un rateu - "miss").
Introducem o mrime numit rata de succes a cache-ului (hit ratio), notat H.
Aceasta exprim procentajul (din numrul total de accese la memorie efectuate n
unitatea de timp) de cazuri n care informaia cutat a fost gsit n cache. Evident,
valoarea H nu este o constant, ci se determin prin msurtori n cazuri practice i
depinde de comportarea programelor care se execut. Similar se definete rata de
insucces M (miss ratio); cele dou marimi se afl n relaia:
M=1-H
Notm cu Tc timpul de acces la cache (altfel spus, timpul total de acces n cazul
cand valoarea cutat se afl n cache) i cu Tm timpul necesar pentru a accesa locaia
cutat n cazul n care aceasta nu se afl n cache. Cu aceste notaii, timpul mediu de
acces la memorie este:
T = Tc H + Tm M
Utilizarea cache-ului este eficient dac acest timp mediu este mai mic dect
timpul de acces la memoria principal n cazul n care nu exist memorie cache (pe
care l notm Tp). Trebuie observat c, n cazul n care locaia cutat nu se afl n
cache, se fac n total doua accese: nti la cache (acces euat), apoi la memoria
principal. Astfel, Tm este mai mare dect Tp. n aceste condiii, este posibil ca T > Tp,
ceea ce ar nsemna ca de fapt cache-ul sa frneze accesul la memorie, n loc de a-l
accelera. n practic ns acest risc nu exist. Deoarece n general Tc este mult mai
mic dect Tp, Tm este doar puin mai mare dect Tp, iar H 90%, ctigul de vitez
adus de cache este n general considerabil.
Pentru exemplificare, considerm un sistem cu urmtoarele caracteristici: H =
90%, Tc = 2ns, Tm = 21 ns, Tp = 20 ns. Aplicnd formula de mai sus obinem:
T = Tc H + Tm M = 2ns 90% + 21ns 10% = 1,8ns + 2,1ns = 3,9ns Tp / Tc
5,13
Timpul mediu de acces la memorie este deci de peste 5 ori mai mic dect n
cazul n care nu ar fi existat cache n sistem. n realitate situaia este i mai favorabil
deoarece, dac relaiile ntre diferiii timpi de acces sunt aproximativ aceleai ca n
exemplul de mai sus, rata de succes a cache-ului ajunge adesea pn la 98% i chiar
mai mult.
S intrm puin n detaliile proiectrii unui cache. n primul rnd, atunci cnd o
locaie din memoria principal este cerut de procesor i nu exist deja n cache, este
adus. Dei procesorul nu are nevoie pe moment dect de locaia respectiv, n cache
este adus un bloc de date de dimensiune mai mare (uzual 16, 32 sau 64 octei), format
din locaii aflate la adrese consecutive n memoria principal, n jurul locaiei
solicitate de procesor. Un asemenea bloc memorat n cache poart denumirea de linie
de cache. Motivul pentru care se procedeaz astfel este evident: n acest mod se ine
cont i de localitatea spaial, nu doar de cea temporal.
n cache se pot afla simultan date care n memoria principal se gsesc la adrese
complet diferite. Din acest motiv, este necesar ca n cache s fie reinute nu doar
valorile locaiilor, ci i adresele la care acestea se afl n memoria principal. Acest
aspect este esenial, deoarece cutarea datelor n cache nu se face ca ntr-o memorie
obinuit, ci dup adresele ocupate n memoria principal. Modul n care sunt
36

memorate aceste adrese are o influen foarte puternic asupra vitezei de regsire a
datelor cutate, deci a timpului de acces la cache.
Strns legat de problema de mai sus este politica de nlocuire. Datorit
capacitii incomparabil a cache-ului fa de memoria principal, n mod inevitabil se
ajunge la ocuparea total a cache-ului. Atunci cnd un nou bloc de date trebuie adus
n cache, va trebui deci eliminat un bloc deja existent. Alegerea blocului care va fi
nlocuit este o problem dificil, deoarece trebuie evitat nlocuirea unui bloc de care
ar putea fi nevoie n viitorul apropiat, altfel performana global este afectat.
Exist n prezent trei tipuri principale de cache, difereniate prin metoda de
memorare a adreselor din memoria principal:
a. Cache cu adresare direct (direct mapped cache)
n acest caz exist o relaie direct ntre adresa din memoria principal unde se
afl o valoare i adresa din cache n care aceasta este memorat. Mai exact, biii cei
mai puin semnificativi ai adresei din memoria principal formeaz adresa din cache.
Ca un exemplu concret, considerm un sistem al crui procesor lucreaz cu
adrese (n memoria principal) de 32 bii, iar cache-ul are o capacitate de 2048 linii,
fiecare linie avnd 32 octei. Se observ c att numrul de linii, ct i dimensiunea
unei linii de cache sunt puteri ale lui 2, ceea ce uureaz operaiile executate de ctre
hardware. O adres de 32 bii din memoria principal este mprit n 3 componente:
- cei mai semnificativi 16 bii formeaz o etichet, care este memorat ca atare
n cache, mpreun cu datele propriu-zise aduse din memoria principal
- urmtorii 11 bii indic adresa liniei din cache care memoreaz datele, din cele
2048 linii existente
- ultimii 5 bii identific octetul n cadrul liniei de cache
Se observ c o anumit adres din memoria principal poate fi memorat ntr-o
singur adres din cache.
Coninutul unei linii de cache este urmtorul:
- un bit care indic dac linia conine date valide
- cmpul etichet, descris mai sus
- datele propriu-zise aduse din memoria principal
Datorit modului de calcul, linia cu adresa N din cache poate memora date
provenite de la orice adres din memoria principal ai crei bii de pe poziiile 5-15
formeaz valoarea N. Din acest motiv, pentru a putea determina n orice moment
adresa corespunztoare din memoria principal, n linia respectiv este memorat i
cmpul etichet.
Cache-ul cu adresare direct permite un acces extrem de rapid, deoarece
conversia ntre cele dou tipuri de adrese (din memoria principal i din cache) este
foarte simpl i poate fi implementat direct n hardware. n schimb, algoritmul are
dezavantajul lipsei de flexibilitate. Pentru exemplul de mai sus, dac un program
acceseaz foarte des mai multe variabile aflate n memoria principal la adrese care
difer printr-un multiplu de 65536 (avnd deci ultimii 16 bii identici), aceste variabile
vor fi memorate la aceeai adres n cache; ca rezultat, se vor nregistra multe ratri n
cache, ceea ce implic multe accese la memoria principal, deci scderea vitezei.
b. Cache asociativ (fully associative cache)
Se bazeaz pe utilizarea unor circuite hardware speciale, numite memorii
asociative. Spre deosebire de memoria obinuit, care permite doar citirea sau scrierea
unei valori ntr-o locaie identificat prin adresa sa, memoria asociativ permite n
plus regsirea unei locaii dup coninutul su.
Intr-un cache asociativ, fiecare linie reine, pe lng datele propriu-zise, adresa
de nceput a acestora n memoria principal. Regsirea se va face pe baza acestei
37

adrese. ntruct memoriile asociative sunt relativ lente, accesul la cache este mai puin
rapid dect n cazul cache-ului cu adresare direct. Pe de alt parte, avantajul este c o
locaie din memoria principal poate fi memorat la orice adres din cache,
eliminndu-se problemele de genul celei prezentate mai sus.
c. Cache parial asociativ (set-associative cache)
n ciuda numelui su, este mai apropiat ca structur de cache-ul cu adresare
direct. Principalul dezavantaj al acestuia, aa cum s-a vzut, l constituie faptul c
mai multe adrese din memoria principal concureaz pentru aceeai adres din cache.
Soluia propus este urmtoarea: fiecare adres din cache conine mai multe linii
(uzual 4, 8 sau 16), fiecare cu propriile date, propriul bit de validare i propriul cmp
etichet. Astfel, un cache asociativ cu n ci (linii) permite memorarea simultan a n
locaii din memoria principal care n cazul cache-ului cu adresare direct ar fi
concurat pentru aceeai adres n cache. Apare o cretere a timpului de acces,
deoarece att la scriere, ct i la citire trebuie verificate toate cele n ci. n schimb,
utilizarea unui numr relativ redus de ci elimin practic total riscul apariiei
conflictelor.
Vom ridica acum o ultim problem. Pn acum s-a discutat n mod implicit
mai mult de citirea datelor din memorie. La modificarea unei valori care se afl deja
n cache trebuie s decidem n care din cele dou memorii (principal i cache) se va
realiza scrierea. Avem de ales ntre dou politici posibile:
- write-back - datele sunt scrise numai n cache; evident, ele vor ajunge i n
memoria principal, dar numai la eliminarea lor din cache
- write-through - datele sunt scrise att n memoria principal, ct i n cache
Ambele politici sunt larg utilizate, fiecare avnd avantaje i dezavantaje.
Politica write-back este mai rapid, n schimb pune probleme majore n sistemele
multiprocesor, deoarece o modificare fcut n cache-ul unui procesor nu ar putea fi
cunoscut de celelalte procesoare. n acest caz sunt necesare protocoale hardware
complexe, prin care fiecare cache "ascult" n permanen magistrala comun, pentru
a detecta modificrile fcute de celelalte procesoare.
Analiznd funcionarea memoriei cache putem formula un principiu mai
general: ntotdeauna cnd avem de accesat o surs de date cu dimensiuni mari i
vitez de acces redus, putem obine un spor semnificativ de perfoman dac
interpunem ntre sursa de date i "beneficiar" (cel care acceseaz datele) o form de
stocare mai mic, dar mai rapid, care s rein ultimele date aduse de la surs.
Principiul este ntr-adevr folosit pe scar larg i n alte situaii, nu doar n cazul
procesorului. n continuare vom prezenta cteva asemenea exemple de materializare a
conceptului de cache, implementate hardware sau software, luate din activitatea
curent a unui utilizator de PC.
Cache-ul de disc. Deoarece memoria principal este mult mai rapid dect
discul, toate sistemele de operare folosesc o zon de memorie drept cache pentru
operaiile cu sistemul de fiiere. Evident, principiile localitii opereaz la fel de
frecvent i n cazul operaiilor cu discul. Exist o singur diferen notabil: deoarece
scopul memorrii pe disc este n primul rnd de a face datele persistente, coninutul
cache-ului este scris n mod periodic pe disc (n general la fiecare 30 de secunde). n
acest fel se evit riscul pierderii informaiilor n cazul eventualelor cderi de tensiune
sau blocri ale sistemului.
DNS. Sistemul DNS (Domain Name System) de pe reeaua Internet este format
dintr-o serie de cache-uri software, rspndite pe anumite servere, care rein
corespondene ntre adrese literale i IP, pentru creterea vitezei de cutare a unor siteuri.
38

Browserele web. Clienii WWW, cum ar fi Internet Explorer, memoreaz ntrun cache software adresele vizitate i pe unde s-a trecut i paginile ncrcate, pentru ca
la o nou ncercare de accesare a acestora s se ia informaia citit din cache n locul
unui apel ctre serverul aflat la distan.

6.4. Memoria virtual


Existena mai multor programe simultan n memorie (pentru a permite execuia
lor n paralel) provoac o cretere foarte mare a necesarului de memorie. Un prim pas
n mbuntirea situaiei a fost fcut, aa cum s-a vzut deja, prin asigurarea
independenei spaiilor de adrese virtuale ale programelor; n acest fel, n cazul
procesoarelor actuale, fiecare program are la dispoziie adrese virtuale pe 32 de bii,
ceea ce este permite un spaiu de adrese de 4 Go, suficient pentru aplicaiile actuale.
n schimb este posibil ca memoria fizic s fie insuficient pentru necesarul tuturor
programelor care se execut n paralel. Pentru a relaxa ct mai mult aceast limitare,
se pornete de la urmtoarele constatri:
- nu toate paginile de memorie sunt necesare la un moment dat
- discul hard are n general o capacitate mult mai mare dect memoria fizic
disponibil, deci poate fi utilizat pentru a reine temporar coninutul unora dintre
paginile de memorie
Discuia care urmeaza este valabil n egal msur att pentru segmentarea
memoriei, ct i pentru paginare. Vom considera cazul paginrii, care este mult mai
larg utilizat de sistemele de operare actuale.
Modul de lucru ar fi deci urmtorul: n orice moment, n memoria fizic se afl
o parte dintre paginile virtuale ale programelor aflate n execuie; paginile care nu au
loc n memoria fizic sunt memorate pe disc ntr-un fiier special, numit fiier de
paginare. Se utilizeaz tot mecanismul de paginare descris anterior, dar uor
modificat:
- Dac pagina din care face parte adresa cutat se gsete n memoria fizic
(adic apare n tabelul de paginare), totul se desfoar n modul descris la
prezentarea paginrii.
- Dac pagina virtual respectiv nu se afl n memoria fizic, se caut pagina
dorit n fiierul de paginare. Bineneles, acest fiier conine i informaiile necesare
pentru a putea fi regsite paginile pe care le stocheaz.
- Dac pagina nu se gsete nici n fiierul de paginare, atunci avem o eroare de
adresare i accesul la memorie este oprit.
- Dac pagina cutat se afl n fiierul de paginare, va fi adus n memoria
fizic. n general memoria fizic este complet ocupat, de aceea o alt pagin aflat n
memoria fizic va fi evacuat i memorat n fiierul de paginare. Abia cnd pagina
dorit a fost adus n memoria fizic i tabelul de paginare al programului a fost
modificat corespunztor, se poate realiza accesul propriu-zis.
n acest mod se pot executa n paralel programe al cror necesar total depete
memoria existent n sistem. Exist n continuare limitarea impus de dimensiunea
discului, dar aceasta este mai puin sever.
Totui, soluia nu are numai pri bune. Accesul la disc este incomparabil mai
lent dect cel la memorie, astfel c pierderea de performan este de multe ori vizibil
chiar pe calculatoarele cele mai puternice. Din acest motiv se caut s se reduc la
minimum accesele la fiierul de paginare. n primul rand, o pagin virtual nu va fi
scris pe disc dect dac nu mai este loc n memoria fizic. Altfel spus, acest

39

mecanism nu este utilizat dect dac este neaprat necesar, ceea ce i-a adus denumirea
de paginare la cerere (demand paging).
Ca o optimizare suplimentar, dac o pagin care trebuie evacuat din memorie
nu a fost modificat de cnd a fost adus ultima dat n memorie, atunci copia sa din
fiierul de paginare este identic, deci scrierea napoi pe disc nu mai este necesar.
Evident, n acest caz este necesar un sprijin suplimentar din partea hardware-ului,
astfel nct n tabelul de paginare, pentru fiecare pagin, s fie memorat i actualizat
n permanen un bit suplimentar care s arate dac pagina a fost modificat de cnd
se afl n memorie. Aceast optimizare este n mod special eficient pentru paginile
de cod, deoarece instruciunile nu sunt n general modificate pe durata execuiei
programelor.
n al doilea rnd, atunci cnd o pagin trebuie adus n memoria fizic i nu mai
este loc, pagina care va fi evacuat nu trebuie aleas la ntmplare. Algoritmul utilizat
pentru a selecta pagina care va fi evacuat pe disc trebuie s respecte o cerin clar:
s minimizeze riscul ca pagina aleas s fie accesat foarte curnd n viitor, deci s
trebuiasc s fie rencrcat n memoria fizic. Deoarece nu se poate prevedea care
pagini vor fi accesate n viitor, exist diveri algoritmi care ncearc s prezic aceasta
pe baza comportrii programelor n trecutul apropiat.

6.5. Ierarhia de memorii


Dac analizm organizarea unui calculator, vedem c "inima" acestuia este o
unitate de prelucrare a informaiilor (localizat n procesor), nconjurat de o serie de
circuite al cror rol este, n ultim instan, de a memora informaiile n diverse forme.
Aceste circuite de memorare sunt organizate pe mai multe nivele, ntr-o structur
ierarhic, n funcie de distana fa de unitatea de prelucrare. Pe msur ce se
deprteaz de procesor, nivelele de memorie au o capacitate mai mare, dar i o vitez
mai mic. Putem distinge, n principiu, patru nivele ale ierarhiei de memorii:
- Nivelul regitrilor procesorului. Acetia au, n mod evident, cel mai mic timp
de acces, aflndu-se e acelai circuit cu unitatea de prelucrare. Este deci de preferat ca
aplicaiile s utilizeze ct mai mult posibil regitrii, pentru a mri performana. Totui,
numrul acestora este redus, astfel nct este practic imposibil ca o aplicaie s se
poat executa exclusiv cu ajutorul regitrilor, fr a face deloc apel la nivelele
urmtoare de memorare. Mai mult, codurile instruciunilor nu pot fi reinute n
regitri.
- Nivelul memoriei cache (numit i memorie imediat). Este singurul nivel care
poate lipsi, fr ca aceasta s implice o schimbare n programele care ruleaz. Att
lucrul cu regitrii procesorului, ct i accesarea nivelelor urmtoare necesit o form
de gestiune prin software; nu este i cazul memoriei cache. La rndul su, memoria
cache poate fi mprit pe nivele: poate exista un modul cache chiar n interiorul
procesorului (numit cache L1), foarte mic i care funcioneaz practic la viteza
procesorului, i un altul pe placa de baz (cache L2), fabricat tot n tehnologie SRAM,
care este puin mai mare dect cache-ul L1 i puin mai lent. Unele implementri pot
lucra chiar cu 3 nivele de cache, dintre care 2 sunt integrate n procesor.
- Nivelul memoriei principale. Dei aici poate fi inclus i memoria ROM, n
practic se are n vedere doar memoria RAM, deoarece prelucrarea informaiei
nseamn implicit modificarea acesteia.
- Nivelul memoriei secundare. Acest nivel are caracteristica de stocare
persistent. Spre deosebire de nivelele anterioare, care sunt volatile, la acest nivel
informaiile se pstreaz i dup ntreruperea alimentrii calculatorului. Tot la nivelul
40

memoriei secundare se gsete memoria virtual. Formele de implementare a


memoriei secundare sunt: discul dur (cel mai folosit), discheta, mediile optice (CD,
DVD), banda magnetic etc.

6.6. ntrebri
1. Care sunt tipurile principale de memorie?
2. Ce tipuri de memorii ROM reinscriptibile cunoatei?
3. Ce este un pixel? Dar rastru?
4. Enunai principiile localitii.
5. Ce este memoria cache?
6. Enumerai tipurile constructive de cache existente.
7. Ce este o linie de cache?
8. Ce nseamn cache write-through? Dar write-back?
9. Cum este folosit conceptul de cache n gestiunea discului dur?
10. Cum funcioneaz mecanismul memoriei virtuale?
11. Ce nseamn paginare la cerere i de ce este folosit?
12. Care sunt nivelele ierarhiei de memorii?

41

7. Sistemul I/O
Teoretic, un sistem format numai din procesor i memorie poate funciona
singur la infinit. Memoria conine instruciunile programului de executat i datele care
trebuie prelucrate, iar procesorul prelucreaz datele pe baza instruciunilor citite din
memorie. Motivul pentru care nu va exista niciodat un calculator cu aceast structur
minimal este simplu: activitile realizate de un asemenea sistem ar fi inutile, pentru
c nimeni nu ar beneficia de rezultatele lor. Comunicarea cu exteriorul (i n principal
cu utilizatorul) nu este deci o simpl opiune; n absena acesteia, existena
calculatorului nu ar avea sens. Echipamentele care realizeaz, n diferite forme,
aceast comuincare se numesc dispozitive de intrare/ieire (I/O) sau periferice.
Diversitatea remarcabil a acestor dispozitive reflect de fapt varietatea sarcinilor pe
care le poate ndeplini un calculator.

7.1. Porturi
Comunicarea ntre procesor i dispozitivele periferice ridic problema conectrii
fizice. Perifericele fiind n numr att de mare i att de diferite ntre ele, este necesar
s existe o standardizare a modului de conectare la procesor, implicit i a modului de
comunicare. n practic, toate componentele calculatorului (procesorul, memoria,
perifericele) sunt conectate ntre ele prin intermediul plcii de baz. De modul n care
este realizat placa de baz depind tipurile de conexiune disponibile.
Un periferic se conecteaz la placa de baz (i indirect la procesor) prin
intermediul unor conectori specializai, numii porturi. Fiecare port respect un
anumit standard de conectare. Exist mai multe asemenea standarde, plcile de baz
putndu-le implementa pe toate sau numai o parte dintre ele. Principalele standarde de
conectare sunt:
Interfa paralel
Permite transmiterea ctre periferic a cte unui octet de date ntr-o operaie de
transfer. Semnalele definite de acest standard sunt de 3 tipuri:
- liniile de date, care permit transmiterea octetului de date de la procesor ctre
periferic
- liniile de control, prin care procesorul transmite anumite comenzi ctre
periferic, permind desfurarea n bune condiii a transferului
- liniile de stare, prin care perifericul transmite procesorului informaii despre
starea sa curent
Modul de lucrul decsris mai sus, numit SPP (Standard Parallel Port), a fost
conceput pentru comunicarea cu imprimantele. n momentul n care a aprut cerina
conectrii i a altor tipuri de dispozitive, standardul nu a mai corespuns, n principal
deoarece nu permitea transferul de date dect ntr-un singur sens. Ca urmare, a fost
propus standardul EPP (Enhanced Parallel Port), care reprezint o extindere a SPP; n
afar de creterea vitezei de transfer, principala sa mbuntire a fost, cum era de
ateptat, posibilitatea ca i perifericul s transmit date ctre procesor. Standardul EPP
permite astfel conectarea unei game largi de periferice, cum ar fi scanerele, discurile
hard i unitile CD externe etc. Pentru perifericele mai performante a fost elaborat i
un standard cu carcateristici superioare EPP, numit ECP (Extended Capabilities Port);
totui, conceptual nu exist diferene majore ntre EPP i ECP. Astzi, imprimantele
folosesc i ele facilitle oferite de modurile EPP i ECP, nemaifiind compatibile cu
mai vechiul SPP.
Interfaa serial
42

Spre deosebire de portul paralel, n cazul portului serial exist o singur linie de
date, deci se poate transmite un singur bit la un moment dat. Din acest motiv i
datorit modului mai sofisticat de gestiune a comunicaiei, viteza interfeei seriale este
sensibil mai mic dect cea a interfeei paralele. n schimb, portul serial a fost
proiectat de la nceput pentru comunicaii bidirecionale.
Portul serial este folosit n general pentru conectarea unor periferice cum ar fi
mouse-ul, modemul, precum i alte periferice relativ lente. n ultimii ani, tendina este
de nlocuire a porturilor seriale cu standardul USB, care este mult mai flexibil i
performant.
USB
Standardul USB folosete tot comunicaia serial, dar a fost proiectat s
exploateze avantajele tehnologiei moderne. Dei iniial a fost destinat perifericelor
lente, o dat cu apariia versiunii 2.0 a standardului viteza de transfer a crescut
sensibil, depind cu mult performanele interfeelor serial i paralel. Practic, astzi
nu exist periferice care s nu aib i variante cu conectare pe portul USB (de multe
ori acesta este singurul standard acceptat).
FireWire (IEEE 1394)
Este o interfa destinat perifericelor de foarte mare vitez, pentru care
performanele standardului nu sunt suficiente. Cel mai adesea este ntlnit la camere
video digitale, care au de transferat volume mari de date ctre calculator. Interfaa
FireWire nu este foarte rspndit, datorit preului mai mare i faptului c standardul
USB ofer suficient performan pentru majoritatea perifericelor.
ATA
Este o interfa de tip paralel pentru conectarea discurilor hard i a unitilor
optice (CD, DVD). Originea sa este standardul IDE, elaborat n anii '80. De-a lungul
timpului caracteristicile sale au evoluat, rata de transfer crescnd spectaculos. n
ultima vreme, dei majoritatea plcilor de baz nc mai sunt prevzute cu porturi
ATA, pierde teren n faa standardului SATA.
SATA
Este un standard derivat din ATA (i destinat aceluiai tip de periferice), dar cu
o interfa de tip serial. Rata de transfer a interfeei este mai mare dect cea a
standardului ATA i va continua s creasc n versiunile viitoare. n plus, standardul
ATA ofer facilitatea numit bus mastering, prin care controlerul de disc s comande
magistrala, degrevnd procesorul de sarcina gestiunii transferului i mrind astfel
performanele.
SCSI
Este cel mai vechi standard pentru discurile hard (dei permite n principiu
conectarea oricrui tip de periferic). Versiunile sale succesive au dus la creterea
continu a performanei, fie prin mrirea limii de band (volumul de date care poate
fi transferat printr-o singur operaie), fie prin creterea frecvenei de lucru.
Controlerele SCSI au folosit dintotdeauna bus mastering, iar tehnologia permite
obinerea unor rate de transfer net superioare standardelor concurente. ns, datorit
preului mare, interfaa SCSI nu este destinat calculatoarelor personale, ci staiilor de
lucru i serverelor.
PCI
Reprezint un standard de conectare destinat plcilor de extensie. A nlocuit
standardul mai vechi ISA, care a fost abandonat de productori dup dou decenii de
utilizare. Frecvena de operare a crescut n timp, ajungnd pn la 133 MHz, la fel i
limea de band. Principalele tipuri de periferice care utilizeaz interfaa PCI sunt
plcile video, plcile de sunet, modemurile interne etc. n ultima vreme, performanele
43

oferite de PCI ncep s fie considerate insuficiente, mai ales pentru plcile grafice. Un
standard derivat din PCI, numit PCI Express, a nceput s fie folosit de plcile de baz
de vrf, dar nlocuirea complet a interfeei PCI nu se ntrevede n viitorul apropiat.
AGP
Este un standard conceput special pentru deservirea plcilor grafice. Deoarece
ntr-un calculator exist mai multe sloturi PCI, perifericele care ocup aceste sloturi
trebuie s mpart ntre ele aceeai cale de comunicare cu procesorul. Plcile grafice
fiind mari consumatoare de resurse, interfaa AGP le ofer o cale de comunicare
privilegiat cu procesorul, pe care nu o mpart cu alte periferice. Dei, la fel ca n
cezul celorlalte standarde, performanele au crescut cu fieare versiune, AGP este
depit de noul standard PCI Express, astfel nct viitorul su este nesigur.
PCMCIA
A fost conceput special pentru sistemele portabile. Datorit miniaturizrii, ntrun laptop nu exist suficient spaiu pentru a dispune de sloturi PCI i, n general, nici
o form de a conecta periferice interne. Standardul PCMCIA permite conectarea de
periferice externe de orice tip, avnd dimensiuni mici. Ca atare, sloturile PCMCIA
reprezint practic singura posibilitate de a extinde funcionalitatea unui laptop.

7.2. ntrebri
1. Ce este un port?
2. Ce standarde au fost elaborate pentru interfaa paralel?
3. Care sunt standardele de interfa pentru lucrul cu discurile dure?
4. Dar pentru plcile grafice?

44

8. Multimedia
Fenomenul de "multimedia PC" poate s aib mai multe interpretri. Aici vom
conveni s numim prin acest termen un set de tehnologii care fac posibil existena
aplicaiilor de tip multimedia, cum ar fi: grafic PC, imagini i animaie 2D i 3D,
video, redare direct sau a imaginilor nregistrate i comprimate, precum i aplicaiile
legate de sunet (nregistrarea i redarea sunetului, precum i sinteza vorbirii). Alturi
de acestea trebuie s amintim i o serie de tehnologii suport pentru multimedia, cum
ar fi CD-ROM i DVD, reele locale i tehnologii de comprimare/decomprimare a
datelor. Acest domeniu s-a dezvoltat o dat cu creterea performanelor
microprocesoarelor, care sunt acum capabile de a prelucra n timp real fluxul de date
dintr-o astfel de aplicaie.
Vom cuta s explicm aceste noiuni fcnd apel la cteva aplicaii multimedia
importante, principiile enunate putnd fi extinse i la celelalte, netrecute n revist
aici.
Unele din cele mai folosite aplicaii multimedia folosite pe calculator sunt
jocurile care solicit animaie, grafic 3D n timp real, redare video, intrri de date din
partea juctorilor i redarea de sunet nregistrat sau sintetizat. Educaia i instruirea
sunt alte aplicaii multimedia care pot solicita aceleai mijloace ca i jocurile.
Prezentrile fcute pe calculator i gsesc utilizarea din ce n ce mai mult n ultimul
timp. Videoconferinele folosesc metode cuprinse n acest capitol. Simulrile,
realitatea virtual i comanda calculatorului cu ajutorul vocii completeaz
multitudinea de aplicaii legate de aceast tehnologie.

8.1. Tehnologia multimedia audio


8.1.1. Elemente de baz ale sunetului digital
Dup cum se tie, sunetul reprezint o oscilaie care variaz continuu n
amplitudine (ceea ce determin nivelul sonor) i/sau n frecven (ceea ce va
determina tonul sunetului). n sistemele analogice, acest sunet este amplificat n
circuite electronice, cu tuburi sau tranzistoare, rezultnd o tensiune sau un curent
variabil, care n final se aplic unui difuzor cu rolul de a-l transforma din nou ntr-un
sunet perceput de ureche. Transformrile pe care le suferea sunetul de-a lungul acestui
lan erau cele aplicate acestor oscilaii electrice.
Dac dorim ca sunetul s fie prelucrat ntr-un calculator, acesta va trebui s
transforme mai nti informaia analogic (variaia unei tensiuni) n informaie digital
(iruri de numere care reprezint variaia tensiunii iniiale). Aceast transformare se
face cu ajutorul unui dispozitiv numit convertor analogic-digital (ADC).
Dup ce sunetul se va prezenta ca o secven digital, calculatorul va putea s
prelucreze aceast informaie dup algoritmul cerut, iar rezultatul obinut va fi
semnalul digital care va fi reconvertit n sunet de un convertor digital-analogic
(DAC).
Dispozitivul numit de noi ADC va transforma semnalul analogic n semnal
digital prin eantionarea valorii semnalului cu o anumit frecven. Totul apare ca i
cum s-ar realiza nite instantanee digitale ("fotografii") ale semnalului analogic cu o
frecven foarte mare. Cu ct vor fi mai multe eantioane ntr-o secund i acestea vor
fi mai precis aproximate, cu att semnalul digital rezultat va reproduce mai fidel
semnalul analogic original.

45

Urechea uman poate sesiza semnale audio n domeniul 20-20000kHz. O


teorem din teoria analizei semnalelor arat c frecvena de eantionare trebuie s fie
mai mare dect dublul frecvenei cele mai mari (deci 40000 Hz n cazul nostru).O alt
problem este pe ci bii reprezentm dimensiunea eantionului. Dac folosim un
octet, adic 256 valori (28 = 256 - cum am folosit la placa grafic pentru a reprezenta
maximum 256 culori pe ecran), vom avea maximum 256 nivele de amplitudine. La
redare se va pierde mult din sunetul original. Dac pentru reprezentarea amplitudinii
unui eantion vom folosi 2 octei (216 = 65536 valori), acest numr mare de nivele va
aproxima cu fidelitate acceptabil semnalul original.
Avnd aceste noiuni despre semnalul digital, putem spune c, de exemplu,
semnalul telefonic digital are o frecven de eantionare de 8000 Hz i folosete un
octet (8 bii) pentru reprezentarea amplitudinii lui, urmrindu-se n primul rnd
nelegerea mesajului i nu chestiuni legate de fidelitatea sa. La nregistrarea digital a
sunetului pe CD se folosesc o frecven de 44100 Hz i 2 octei (16 bii) pentru fiecare
eantion. Dac se nregistreaz semnal stereo, se vor folosi nc 2 octei pentru al
doilea canal. Cunoscnd aceste date se poate calcula rata de date pe minut pentru
fiecare semnal digital prezentat. Dac la semnalul telefonic se ajunge la aproximaia 1
Mo/minut, la cel pentru CD se obin peste 10 Mo/minut.
Dac funciile blocurilor ADC i DAC sunt combinate ntr-un singur circuit,
acesta se va numi codec (Codare-DECodare). Pe lng funcia de conversie, aceste
circuite mai pot i comprima sau decomprima date audio digitale.
n concluzie, sunetele n calculator sunt reprezentate n final ca fiiere i deci se
bucur de toate proprietile i posibilitile de prelucrare specifice acestora:
comprimare, decomprimare, prelucrare numeric etc.
Dac extindem noiunile la domeniul video, unde informaia vizual apare tot ca
un semnal electric oscilant, tot aceea ce s-a spus la sunet rmne valabil, dar cu alte
rate de eantionare
8.1.2. Prelucrri ale sunetului digital. Plci de sunet
Odat ce sunetul a fost convertit n form digital, el poate fi prelucrat pentru a
se crea tot felul de efecte ca reverberaii, ecouri, distorsiuni controlate etc. Calculele
necesare acestora sunt fcute n procesoare specializate numite DSP (Digital Signal
Processor). Tot acestea pot asigura i sinteza sunetului sau a muzicii, precum i
funciile de comprimare i decomprimare.
Cercetrile ntreprinse n domeniul sintezei sunetelor au permis generarea
acestora din nsumarea mai multor semnale sinusoidale cu frecvene diferite. Un
capitol special din matematic se ocup cu analiza armonic a semnalelor; folosind
rezultatele acestor analize s-a reuit sinteza sunetului prin modularea n frecven
(FM).
Toate acestea au dus la apariia plcilor de sunet, care reprezint un element
important al posibilitilor multimedia legate de sunet. Placa de sunet a devenit o
prezen curent n calculatoarele actuale. Prima plac de sunet a fost creat de firma
Creative Labs i poart denumirea de Sound Blaster. Aceste plci se cupleaz normal
pe un conector de extensie al magistralei ISA sau PCI i cuprind unele blocuri deja
amintite. n plus, observm un bloc mixer, care poate accepta intrri analogice de la,
microfon, linie audio sau difuzor PC, pe care le poate controla individual. De
asemenea, blocul MIDI (Musical Instrument Digital Interface) primete comenzi
pentru selectarea unor instrumente sau efecte audio.

46

8.2. Prelucrri digitale video


Dup cum am amintit deja, prelucrarea semnalelor video preluate de camerele
digitale sau semnalul TV urmeaz aceleai principii ca i cele de sunet, dar la o alt
scar. Semnalul video transformat n semnal digital poate fi comprimat pentru a ocupa
un spaiu mai mic la stocare sau n procesul de transmitere. La redare se desfoar
procesele inverse. n plus, aici apar unele elemente noi. Astfel, s-au imaginat metode
specifice de comprimare, care in cont de faptul c n realitate coninutul imaginii de
la un cadru la altul se schimb foarte puin, transmindu-se eventual numai
schimbrile survenite i pstrnd ca baz un cadru iniial. Este ceea ce fac metodele
cunoscute sub numele de MPEG. Pentru imagini statice sunt cunoscute fiierele cu
extensia *.JPG, ce provin din folosirea metodei JPEG de comprimare a imaginilor.
Sateliii de comunicaii destinai transmisiilor TV digitale folosesc de asmenea aceste
tehnici proprii semnalelor digitale.

8.3. Consideraii finale


n general, tehnologia multimedia lucreaz cu un volum mare de date. Ca mediu
ideal de stocare de la nceput n acest domeniu s-a impus CD-ROM, cu capacitatea sa
de peste 600 Mo. n urrma evoluiei tehnologiilor n domeniul stocrii optice a
informaiilor, au aprut standarde noi cum ar fi videodiscurile (DVD) cu capaciti de
4,7 Go sau 9,4 Go, dar standardele nc nu sunt unitare i acceptate de toi
productorii.
De asemenea, s-a pus problema transmisiilor digitale pentru utilizatorii
obinuii. Acestea se reaizeaz n mod curent cu ajutorul echipamentelor numite
modem-uri (Modulation-DEModulation), care folosesc din plin tehnica digital pentru
transmiterea datelor.
Datorit faptului c reelele telefonice curente (numite i reele comutate)
limiteaz viteza de transfer a datelor la valori care nu fac posibile transmisii
multimedia de calitate, atenia s-a ndreptat spre echipamentele cu fibre optice, satelii
sau reele locale rapide, care permit un flux crescut de date. Cei care dispun o legtur
direct la Internet se pot bucura de existena unor posturi de radio digitale care
transmit n reeaua Internet. Se sper c viitorul va aparine aa-numitelor autostrzi
multimedia, pe care vor fi vehiculate filme sau muzic la cerere.

8.4. ntrebri
1. Care sunt cele mai folosite tipuri de aplicaii multimedia?
2. Ce este un convertor analogic-digital? Dar unul digital-analogic?
3. Ce este un codec?
4. Ce nseamn DSP?
5. De ce imaginile, spre deosebire de sunete, trebuie comprimate la stocare?
6. Care sunt mediile de stocare folosite pentru materialul multimedia?

47

9. Sistemul de operare
Pn acum am discutat numai despre implementarea fizic a componentelor
unui calculator. Desigur, buna funcionare a acestora este indispensabil. Programele
nu pot rula pe un calculator ale crui componente nu funcioneaz corect. n acest
sens, prima problem care poate aprea este posibilitatea defectrii unor circuite, caz
n care acestea trebuiesc reparate sau (cel mai adesea) nlocuite. Totui, nu este
suficient ca toate componentele s fie n stare fizic bun pentru ca sistemul de calcul
n ansamblul su s funcioneze corespunztor. Trebuie inut cont i de faptul c
fiecare dispozitiv are propriile specificaii, propriile sarcini pe care le poate ndeplini,
propriul mod de comunicare cu alte dispozitive .a.m.d. Deoarece calculatorul este
format dintr-un numr mare de circuite, n general complexe i foarte diferite ntre ele,
este necesar s existe un control unic asupra tuturor acestora, pentru a le face s
conlucreze n modul dorit de utilizator.
Din punct de vedere hardware, toate componentele calculatorului sunt controlate
de ctre procesor. La rndul su, procesorul realizeaz aciunile specificate prin
programele pe care le execut. Dar, tocmai datorit structurii extrem de complicate a
unui calculator, sarcina gestionrii tuturor componentelor sale nu poate fi lsat n
seama programelor de aplicaii. Pe de o parte, programatorul ar trebui s se
concentreze mai mult asupra acestei gestiuni i mai puin asupra problemei propriuzise pe care i propune s-o rezolve. Pe de alt parte, programele ar deveni astfel mult
mai voluminoase i, implicit, mai expuse la apariia erorilor.
Ca urmare, s-a ajuns la introducerea unui program intermediar ntre nivelul
hardware i programele de aplicaii, care s asigure buna funcionare a sistemului de
calcul. Acest program, numit sistem de operare, deine controlul asupra resurselor
calculatorului i intervine atunci cnd apar situaii nedorite sau neprevzute. Ca o
prim consecin, dei reprezint o component software, sistemul de operare este
strns legat de hardware, deoarece se ocup n principal de gestiunea acestuia.
Putem privi din mai multe unghiuri funciile pe care trebuie s le ndeplineasc
sistemul de operare. Din punct de vedere al utilizatorului, rolul su este exclusiv de a
asigura rularea n bune condiii a programelor de aplicaii. Se desprinde de aici ideea
c sistemul de operare nu este un scop n sine, ci un mijloc pentru atingerea altor
scopuri.
Pentru programatorul de aplicaii, sistemul de operare este n principal un
furnizor de servicii la care poate apela pentru rezolvarea problemelor ntlnite.
Practic, sistemul de operare pune la dispoziia aplicaiilor un set de funcii predefinite,
care fie sunt dificil de scris (i de aceea nu este eficient s fie implementate de fiecare
program n parte), fie pur i simplu nu pot fi lsate n seama aplicaiilor din motive de
siguran n funcionare a sistemului n ansamblul su. Aplicaiile pot folosi aceste
servicii, conformndu-se regulilor impuse de sistemul de operare.
Pentru a ndeplini aceste cerine, proiectantul unui sistem de operare trebuie s
aib n vedere urmtoarele obiective:
- s asigure buna funcionare a componentelor hardware, precum i comunicarea
i cooperarea ntre acestea
- s previn interferenele nedorite ntre diferitele programe de aplicaii, inclusiv
s mpiedice, n msura posibilului, propagarea efectelor erorilor unui program asupra
celorlalte programe

48

9.1. Scurt istoric i evoluie


Primele calculatoare nu aveau sistem de operare. Deoarece tehnologia era abia
la nceputuri, structura primelor calculatoare era foarte simpl. Practic, lucrul la
calculator se desfura astfel:
- programul era introdus n calculator prin intermediul cartelelor sau al benzii
perforate
- calculatorul efectua calculele specificate (facem precizarea c singura utilizare
a calculatoarelor era de a realiza calcule tiinifice)
- rezultatul era afiat la imprimant (care era mult mai simpl dect cele de azi,
lucrnd doar n mod text) sau pe ecran
Datorit acestei structuri att de simple, existena unui sistem de operare pur i
simplu nu era necesar, deoarece toat gestiunea resurselor se reducea la introducerea
instruciunilor i datelor i citirea rezultatelor, iar aceasta cdea n sarcina operatorului
uman. Desigur, un asemenea mod de lucru era extrem de greoi i incomod, mai ales n
ceea ce privete depanarea programelor i corectarea erorilor.
Un mare pas nainte l-a constituit apariia benzii magnetice ca suport de
memorare; acesta a fost primul dispozitiv periferic care permitea stocarea persistent a
datelor i programelor, ntr-un mod suficient de simplu. ntruct o band putea
memora mai multe programe, a aprut necesitatea implementrii unor funcii de
cutare i lansare n execuie a programului dorit, fr intervenia manual a
operatorului. Astfel, calculatoarele au fost dotate cu programe de tip monitor, care
ndeplineau tocmai acest gen de funcii. Programul monitor era primul ncrcat n
memoria calculatorului la pornirea acestuia i era activ pe toat durata funcionrii
sale.
n timp, dispozitivele periferice s-au diversificat, ceea ce a impus perfecionarea
programelor monitor, care au devenit tot mai complexe. Astfel, apariia discului hard
a reprezentat un nou salt, deoarece permitea accesul aleator la date i programe, spre
deosebire de banda magnetic, la care accesul era posibil numai secvenial, adic n
ordinea n care informaiile fuseser stocate. Implicit, modul de memorare a devenit
mult mai complicat, astfel nct au fost necesare programe mai complexe pentru
stocarea i regsirea datelor. Efecte similare au avut apariia tastaturii ca dispozitiv de
intrare i legarea calculatoarelor n reea. n cele din urm, denumirea de program
monitor a devenit nepotrivit datorit complexitii acestor programe, astfel nct au
fost denumite sisteme de operare.
Iniial, un singur program putea rula la un moment dat pe un calculator. Au
existat mai multe sisteme de operare de acest tip, ultimul dintre ele fiind DOS. Fiind
dezvoltat special pentru primele calculatoare personale, care nu se apropiau de puterea
marilor calculatoare, sistemul DOS era deja mai simplu i mai primitiv dect multe
dintre sistemele de operare care l-au precedat.
O dat cu creterea puterii de calcul (i a cerinelor utilizatorilor), a aprut
posibilitatea rulrii mai multor programe n paralel pe acelai calculator. Primele care
au oferit aceast facilitate au fost calculatoarele multiprocesor, apoi au urmat i cele
cu un singur procesor. Au aprut astfel i noi probleme pentru sistemele de operare,
deoarece programele care ruleaz n paralel i disput resursele calculatorului i pot
interfera n mod nedorit. Sistemul de operare trebuie s ia msuri speciale de protecie
pentru a preveni apariia unor asemenea situaii.
n momentul actual exist un mare numr de sisteme de operare, utilizate pe
diferite platforme hardware, mergnd de la calculatoarele personale, folosite de marea
mas a utilizatorilor, pn la supercalculatoare, dedicate n special aplicaiilor
49

tiinifice de foarte mare complexitate. Totui, pentru utilizatorul obinuit, dou


familii de sisteme de operare prezint importan:
a) Unix
Sistemul de operare Unix a fost creat la nceputul anilor '70, de ctre Ken
Thompson i Dennis Ritchie, ambii cercettori la Bell Laboratories. Datorit
concepiei simple i flexibile, Unix a cunoscut un succes rapid n mediile universitare,
apoi i ca produs comercial. Tocmai datorit acestui succes, ncepnd cu anii '80 au
aprut o serie de variante ale sistemului, dezvoltate de un numr mare de firme, care
au cunoscut o evoluie independent. Ca urmare, astzi nu se mai poate vorbi de un
singur sistem de operare Unix, ci de o ntreag familie, care cuprinde, ntre altele: HPUX (dezvoltat de Hewlett-Packard), Solaris (Sun), AIX (IBM), MacOS (Apple). Un
caz aparte l constituie Linux, aprut ca un proiect open-source, la care contribuie
programatori din lumea ntreag.
n ciuda diversitii existente, toate aceste sisteme motenesc principiile de baz
ale versiunii Unix originale. Aceasta reprezint un punct de cotitur n evoluia
sistemelor de operare, prin ideile moderne pe care le-a impus i prin calitatea
proiectrii i implementrii. Astfel se explic att succesul pe care l au n continuare
sistemele din familia Unix, ct i faptul c practic toate celelalte sisteme de operare
existente au preluat i continu s se inspire din structura sistemelor Unix.
b) Windows
Sistemul Windows este un produs al anilor '80. Proiectat iniial de Microsoft ca
un program de tip interfa grafic pentru sistemul DOS, Windows a devenit n cele
din urm un sistem de operare complet. n timp s-a produs o separare a dou linii
principale de sisteme Windows: una pentru utilizatorii casnici (reprezentat de
Windows 95, Windows 98, Windows Millenium) i alta destinat specialitilor
(Windows NT, Windows 2000, Windows XP); n ultima perioad ns, compania
Microsoft face eforturi de unificare a celor dou linii ntr-un singur produs.
Spre deosebire de Unix, care provine din lumea tiinific, sistemele Windows
se axeaz n principal pe promovarea unor modaliti mai simple de utilizare a
calculatorului i mai puin pe maximizarea performanelor sistemelor de calcul.
Avnd n vedere predominana utilizatorilor nespecialiti n informatic, aceast
politic face ca sistemele Windows s domine piaa sistemelor de operare.

9.2. Clasificarea sistemelor de operare


Putem clasifica sistemele de operare dup mai multe criterii. Primul dintre
acestea reiese din discuia anterioar; dup numrul de programe care pot rula
simultan, sistemele de operare pot fi:
- single-tasking - permit rularea uni singur program la un moment dat; singurul
sistem din aceast clas care mai este folosit astzi (dar din ce n ce mai puin) este
DOS
- multitasking - Unix, Windows 9x/NT, OS/2 etc.
O alt clasificare se refer la numrul de utilizatori care pot lucra simultan pe un
calculator:
- sisteme monoutilizator (single-user)
- sisteme multiutilizator (multiuser)
n mod evident, un sistem multiuser este i multitasking. Cele mai cunoscute
sisteme de operare multiuser sunt cele din familia Unix, n timp ce sistemele
Windows nu au aceast facilitate. Trebuie reinut c a da posibilitatea mai multor

50

utilizatori s lucreze simultan pe acelai calculator nu este att o problema de


hardware, ct mai ales una specific sistemului de operare.

9.3. Nucleul sistemului de operare


Datorit multitudinii i diversitii sarcinilor pe care le are de ndeplinit,
sistemul de operare nu poate fi conceput sub forma unui program unitar. Practic,
sistemul de operare const dintr-o mulime de secvene de program, fiecare
ndeplinind o anumit sarcin.
Un argument n favoarea unei asemenea abordri, n afara considerentelor de
fiabilitate i uurin n dezvoltare, l constituie evoluia continu a tehnologiilor
utilizate, n special n ceea ce privete dispozitivele periferice. Dac la un moment dat
se pune problema nlocuirii ntr-un calculator a unui asemenea periferic (de exemplu
mouse) cu unul mai nou, va trebui schimbat secvena de program care se ocup de
gestionarea sa. n cazul n care sistemul de operare ar fi un program unic, acesta ar
trebui nlocuit n intregime, ceea ce este inacceptabil n practic. Asupra acestui
aspect vom reveni ulterior.
Pe de alt parte, exist o serie de operaiuni fundamentale, care trebuie realizate
ntotdeauna n acelai mod, independent de particularitile hardware-ului. Prile de
program care ndeplinesc aceste sarcini fundamentale formeaz nucleul sistemului de
operare, care dirijeaz i controleaz funcionarea sistemului de calcul n ansamblul
su. n continuare, noiunile de sistem de operare i de nucleu al sistemului de operare
se vor confunda n mare msur, deoarece celelalte componente ale sistemului de
operare sunt utilizate de ctre nucleu pentru a-i ndeplini sarcinile.
Nu exist ntotdeauna o delimitare clar ntre nucleu i celelalte componente.
Concepiile diverilor productori de sisteme de operare difer n ceea ce privete
locul unora dintre funcii - n nucleu sau n afara sa. Totui, practic toate sistemele de
operare existente includ n nucleu urmtoarele componente:
- gestiunea proceselor
- gestiunea memoriei
- sistemele de fiiere
Majoritatea activitilor pe care le desfoar sistemul de operare nu pot fi
realizate exclusiv prin software. Este necesar un sprijin, uneori substanial, din partea
componentelor hardware i n special din partea procesorului. Natura exact a acestui
sprijin va fi discutat n continuare.
Principala facilitate oferit de ctre procesor o constituie sistemul de ntreruperi,
care a fost deja prezentat. n general, programele aflate n execuie ruleaz n
majoritatea timpului fr a ine cont de existena sistemului de operare; totui, acesta
din urm trebuie s poat interveni n anumite situaii bine definite, cum ar fi:
- o cerere de ntrerupere venit din partea unui dispozitiv periferic, care poate s
nu aib legatur cu programul aflat n execuie, dar care trebuie tratat imediat (altfel
datele se pot pierde)
- o operaie executat de procesor care s-a terminat anormal (de exemplu o
operaie de mprire la 0), ceea ce indic ncercarea unui program de a efectua o
aciune nepermis
- o cerere explicit adresat de programul de aplicaie, privind efectuarea unui
anumit serviciu de ctre sistemul de operare, serviciu pe care aplicaia nu-l poate
efectua singur
Sistemul de operare va lsa deci orice program s se execute fr interferene
pn la apariia uneia din situaiile descrise mai sus, dar n acest moment trebuie s
51

preia imediat controlul. Soluia este, aa cum am precizat deja, de natur hardware i
este reprezentat de sistemul de ntreruperi. Concret, acesta ofer tocmai posibilitatea
ntreruperii execuiei programului curent n anumite condiii. Fiecreia din situaiile
prezentate mai sus i corespunde unul tipurile de ntrerupere cunoscute:
- ntreruperi hardware (externe)
- excepii (ntreruperi hardware interne)
- ntreruperi software
Dac ntreruperile hardware externe, care se ocup de comunicarea cu
dispozitivele periferice, au fost descrise pe larg, utilitatea excepiilor rmne s fie
explicat. Pentru aceasta ne vom ntoarce la mecanismele de gestiune a memoriei ale
microprocesoarelor pe 32 bii, prezentate anterior. Reamintim c, indiferent dac se
utilizeaz segmentarea sau paginarea, pentru fiecare acces la memorie al unui
program, procesorul realizeaz o serie de verificri, cu scopul de a determina dac
accesul este corect sau nu. n cazul n care este detectat o eroare (lipsa drepturilor de
acces la segment, depirea dimensiunii segmentului, acces la o pagin virtual
inexistent etc.), am artat c ncercarea de acces la memorie este oprit. n realitate,
procesorul nu are prea multe posibiliti de a opri execuia unui program. Ceea ce se
ntmpl n practic este c unitatea de management a memoriei (MMU), care a
detectat eroarea, genereaz o excepie, iar rutina de tratare care se apeleaz prin
mecanismul de ntreruperi va trebui s rezolve problema. Exist mai multe moduri n
care rutina de tratare poate restabili situaia; n majoritatea cazurilor ns, un program
care a realizat un acces ilegal la memorie este terminat forat, deoarece acest tip de
eroare este considerat foarte grav. Subliniem c ntreruperea generat n acest caz este
ntr-adevr de tip excepie, deoarece MMU este o parte component a procesorului.
Excepiile sunt larg utilizate de ctre sistemul de operare, deoarece multe erori
sunt detectate direct de ctre procesor. Evident, rutinele care trateaz situaiile
generatoare de ntreruperi fac parte din sistemul de operare, care poate astfel rezolva
problemele aprute.
9.3.1. Apeluri sistem
Una din sursele ntreruperilor, prezentate mai sus, o constituie solicitrile
formulate n mod explicit de programele de aplicaii ctre sistemul de operare, pentru
efectuarea anumitor servicii. De ce este ns necesar ca aceste servicii s fie
implementate de ctre sistemul de operare i nu pot fi lsate n seama programelor? n
primul rnd, unele operaii uzuale (afiarea, cutarea pe disc etc.) se desfoar
ntotdeauna n acelai mod; deci, n loc de a scrie practic aceeai rutin n fiecare
program, este mai economic de a o scrie o singur dat ca parte a sistemului de
operare, astfel ca toate aplicaiile s o poat utiliza. De altfel, apelul ctre un
asemenea serviciu oferit de sistem nu se deosebete prea mult de apelul ctre o
procedur sau funcie din acelai program.
Pe de alt parte, o serie de aciuni, n special accesele la dispozitivele periferice,
prezint riscuri considerabile pentru ntregul sistem de calcul n cazul n care nu sunt
realizate corect. Nu este deci convenabil de a permite programelor de aplicaii s
realizeze singure aciunile din aceast categorie; se prefer ca activitile de acest tip
s fie ndeplinite numai prin intermediul unor rutine incluse n sistemul de operare.
Pentru a pune n practic o asemenea abordare, trebuie s se poat interzice pur i
simplu realizarea anumitor operaii de ctre programele de aplicaii. Din nou este
necesar un suport hardware. Practic toate procesoarele existente astzi pot funciona
n dou moduri distincte:

52

- modul utilizator (user mode), n care exist anumite restricii pentru procesor,
n principal nu se pot executa instruciunile de acces la periferice (ncercarea de a
executa o asemenea instruciune duce la generarea unei excepii)
- modul supervizor sau nucleu (kernel mode), n care procesorul nu are nici o
limitare
(Facem observaia c, n cazul microprocesoarelor Intel, acest mprire este
valabil doar cnd procesorul se afl n modul protejat. Modul real, destinat pstrrii
compatibilitii cu aplicaiile mai vechi, nu beneficiaz de facilitile hardware
necesare pentru discuia de fa.)
n mod uzual, programele de aplicaii se execut n mod utilizator, iar sistemul
de operare ruleaz n mod nucleu. Se asigur astfel controlul sistemului de operare
asupra operaiilor critice. Dei aplicaiile pierd din performan prin limitrile impuse
de modul utilizator, creterea stabilitii i siguranei n funcionare justific din plin
aceast abordare. n acest moment putem studia ce se ntmpl atunci cnd un
program cere sistemului de operare furnizarea unui anumit serviciu. O asemenea
cerere poart numele de apel sistem (system call) i const din urmtorii pai:
- programul, care ruleaz n modul utilizator al procesorului, depune parametrii
apelului sistem pe care l solicit ntr-o anumit zon de memorie; practic,
mecanismul este similar apelurilor de proceduri
- se genereaz o ntrerupere software, care trece procesorul n modul nucleu
- se identific serviciul cerut i se apeleaz rutina de tratare corespunztoare
- rutina respectiv preia parametrii apelului din zona n care au fost depui, i
verifica i, dac nu sunt erori, realizeaz aciunea cerut; n caz contrar, apelul
eueaz
- la terminarea rutinei, rezultatele obinute sunt la rndul lor depuse ntr-o zon
de memorie cunoscut i accesibil programului de aplicaie
- procesorul revine n modul utilizator i se reia execuia programului din
punctul n care a fost ntrerupt (utiliznd informaiile memorate n acest scop la
apariia ntreruperii); programul poate prelua rezultatele apelului din zona n care au
fost depuse
Se poate observa c execuia unui apel sistem este mare consumatoare de timp.
Din fericire, puterea de calcul a procesoarelor moderne este suficient de mare nct s
reduc n limite acceptabile pierderea de performan datorat apelurilor sistem, iar
creterea fiabilitii sistemului de calcul n ansamblul su reprezint un ctig mult
mai important.

9.4. Drivere
Gestionarea dispozitivelor periferice se confrunt cu desele schimbri suferite
de acestea, ca urmare a progresului tehnologic rapid. Este practic imposibil ca
productorul unui sistem de operare s poat scrie secvenele de program necesare
pentru gestionarea tuturor perifericelor existente pe pia, cu att mai mult cu ct
permanent apar noi modele. Situaia este valabil n principal pentru imprimante, dar
i pentru celelalte tipuri de periferice (plci video, uniti CD, mouse, plci de reea,
plci audio, chipset-urile plcilor de baz etc.), cu excepia partiala a tastaturilor i a
discurilor hard, unde maturitatea tehnologic a condus la o standardizare puternic.
Din acest motiv se prefer ca gestionarea perifericelor s fie lsat n seama unor
module de program, numite drivere, exterioare nucleului, dar care pot coopera cu
acesta. Pentru fiecare dispozitiv periferic existent ntr-un calculator trebuie s existe
un driver, altfel respectivul periferic nu va putea fi folosit. n general sistemele de
53

operare conin drivere pentru modelele de periferice cele mai utilizate; n cazul
celorlalte, driverele trebuie furnizate de producatorii respectivelor dispozitive.
Utilitatea mecanismului driverelor este evident: permite schimbarea uoar a
oricrui periferic, fr a fi necesar reinstalarea ntregului sistem de operare. De
asemenea, depistarea i corectarea erorilor devine mult mai facil. Cu toate acestea, n
mod tradiional, sistemele de operare din familia Unix au o abordare mai puin
flexibil, incluznd driverele n nucleu. Aceast atitudine se justific prin faptul c,
pentru majoritatea sistemelor Unix, productorul este i singurul ofertant de hardware,
deci nu trebuie s fac fa unui numr mare de dispozitive produse de alte firme.
Totui, sistemul Linux i alte sisteme Unix ofer n ultima vreme suport pentru
ncrcarea dinamic a unor module.

9.5. ntrebri
1. Ce este sistemul de operare?
2. Care sunt principalele obiective ale unui sistem de operare?
3. Cum se pot clasifica sistemele de operare?
4. Ce este nucleul sistemului de operare?
5. n ce situaii trebuie s intervin sistemul de operare n execuia aplicaiilor?
6. Care sunt modurile de lucru ale unui procesor?
7. Care sunt paii unui apel sistem?
8. Ce reprezint driverele i care este utilitatea acestora?

54

Anexa A. Reprezentarea datelor n sistemele de calcul


A.1. Reprezentri numerice
Am vzut anterior c numerele sunt reprezentate n calculator sub forma unor
iruri de bii (corespunztori unor cifre n baza 2). n cele ce urmeaz vom prezenta n
detaliu modurile de reprezentare a informaiei folosite n sistemele de calcul.
A.1.2. Scrierea poziional
Scrierea poziional a reprezentat la apariia sa un mare pas nainte n
matematic. Ca o exemplificare a acestei afirmaii, putem considera adunarea a dou
numere naturale oarecare. Dac numerele sunt reprezentate n scriere roman (care nu
este poziional), se observ imediat c operaia este foarte dificil de realizat. n
schimb, adunarea acelorai numere reprezentate n baza 10 (care este o scriere
poziional) este banal. Acest exemplu simplu arat marele avantaj al scrierii
poziionale, i anume c permite descrierea algoritmic a operaiilor aritmetice, ceea
ce o face indispensabil pentru sistemele de calcul.
Un concept fundamental n scrierea poziional l constituie baza de numeraie.
Spunem c lucrm n baza de numeraie d, care este un numr natural supraunitar,
dac avem la dispoziie d simboluri (cifre), avnd asociate respectiv valorile 0, 1, ...,
d-1. Un numr este reprezentat ntr-o baz oarecare d ca un ir de cifre, fiecare poziie
i din ir avnd ataat un factor implicit egal cu di. Concret, un numr natural N va
avea ca reprezentare n baza d irul de cifre an-1an-2...a1a0, ai{0,1,...,d-1},
n 1

i = 0, n 1 , cu proprietatea c N = ai d i . Se demonstreaz c fiecare numr are


i =0

o reprezentare unic pentru o baz de numeraie dat.


S lum ca exemplu numrul 309. (De fapt, corect ar fi fost s spunem "numrul
care are reprezentarea 309 n baza 10", deoarece i atunci cnd scriem un numr, de
fapt folosim o reprezentare a sa. Cum ns un numr este o abstraciune, iar
reprezentarea n baza 10 este cea folosit dintotdeauna de oameni pentru a desemna
numerele, vom folosi n continuare aceeai convenie). Reprezentarea sa n baza 10
este evident, deoarece 309 = 3102 + 0101 + 9100. S considerm acum
reprezentarea aceluiai numr n baza 2. Deoarece 309 = 128 + 027 + 026 + 125 +
124 + 023 + 122 + 021 + 120, reprezentarea sa n baza 2 este 100110101. Pentru a
specifica baza de numeraie n care este scris o reprezentare, se folosete o notaie ca
n exemplul de mai jos:
309(10) = 100110101(2)
Deoarece baza 2 este folosit de calculatoare, iar baza 10 este preferat de
oameni, conversia (n ambele sensuri) ntre aceste dou baze este adesea necesar. O
reprezentare n baza 2 este uor de convertit n baza 10, pur i simplu prin aplicarea
n 1

formulei N (10) = ai 2i , unde ai sunt biii care formeaz reprezentarea n baza 2. De


i =0

exemplu, 1101001(2) = 126 + 125 + 024 + 123 + 022 + 021 + 120 = 105(10). Mai
dificil este conversia n sens invers, care se realizeaz dup urmtorul algoritm:
Se mparte numrul la 2 i se reine restul. Ctul se mparte la rndul su la 2,
iar procesul de repet pn cnd se obine ctul 0. Reprezentarea n baza 2 este irul
resturilor obinute, luate n ordine invers.
Pentru exemplificare considerm din nou numrul 309. Aplicnd algoritmul de
mai sus, avem (pe coloana din dreapta se gsete irul resturilor):

55

Dac se inverseaz irul resturilor se obine 100110101, adic exact


reprezentarea calculat mai sus.
S considerm acum cazul concret al utilizrii scrierii poziionale n sistemele
de calcul. Reamintim c ntr-un calculator operanzii au dimensiuni standardizate, mai
precis octei sau multipli de octet. O consecin imediat este finitudinea reprezentrii;
cu alte cuvinte, nu putem reprezenta n calculator numere orict de mari, deoarece
numrul de bii disponibil pentru reprezentri este finit. n aceste condiii, este
important s determinm domeniul reprezentabil cu ajutorul operanzilor disponibili,
altfel spus, intervalul n care se nscriu numerele cu care putem lucra. n mod evident,
numrul minim reprezentabil este ntotdeauna 0, indiferent de dimensiunea
operanzilor. De asemenea, domeniul numerelor reprezentabile nu prezint "goluri", ci
formeaz un interval: fiind date dou numere naturale x i y care pot fi reprezentate,
orice numr natural aflat ntre x i y va putea fi la rndul su reprezentat. Mai rmne
deci s determinm valoarea maxim a domeniului, valoarea care depinde de numrul
de bii alocat unei reprezentri.
Pentru operanzi de 8 bii, valoarea maxim care poate fi reprezentat este 127 +
126 + 125 + 124 + 123 + 122 + 121 + 120 = 255. Mai general, dac operanzii au n
bii, valoarea maxim care poate fi reprezentat este 12n-1 + 12n-2 + ... + 121 + 120 =
2n-1. Domeniul reprezentabil pe n bii, folosind scrierea poziional, este deci 0 2n1. Revenind la exemplul de mai sus, observmc numrul 309 nu poate fi reprezentat
pe 8 bii, n timp ce pe 16 bii are reprezentarea 0000000100110101 (valorile de 0 de
la stnga fiind, bineneles, nesemnificative).

A.1.3. Reprezentri cu semn


Scrierea poziional nu rezolv toate problemele legate de reprezentarea
numerelor n calculator. De exemplu, dac dorim s lucrm cu numere ntregi, deci cu
semn, scrierea poziional singur nu mai este suficient. Motivul este foarte simplu:
n acest caz, pe lng cifrele bazei de numeraie mai este nevoie i de un simbol
suplimentar (semnul); deoarece biii nu au dect dou valori posibile, asociate cifrelor
bazei 2, nu avem la dispoziie nici un alt simbol.
Este deci necesar s se defineasc o nou reprezentare care, folosind n
continuare iruri de bii, s permit lucrul cu numere cu semn. n acelai timp, dorim
s pstrm avantajele scrierii poziionale, motiv pentru care vom ncerca s derivm
noua reprezentare din scrierea poziional.
n primul rnd, deoarece nu avem la dispoziie un simbol suplimentar, pentru
reprezentarea semnului va fi folosit unul dintre bii, care nu va mai avea semnificaia
obinuit unei cifre din scrierea poziional. Concret, bitul cel mai semnificativ (cel cu
indicele n-1) va indica semnul numrului i va fi numit bit de semn. Prin convenie,
valoarea 1 a bitului de semn indic un numr negativ, iar valoarea 0 un numr pozitiv.
56

Desigur, s-ar fi putut alege i convenia invers; motivul pentru care se prefer forma
aleas are ns avantajul c, n cazul numerelor pozitive, reprezentarea este aceeai ca
n cazul scrierii poziionale (bitul de semn fiind n acest caz un 0 nesemnificativ).
Cea mai natural idee pentru reprezentarea numerelor cu semn este ca bitul cel
mai semnificativ s indice exclusiv semnul, iar ceilali bii s reprezinte modulul
numrului n scriere poziional. Formal, reprezentarea unui numr ntreg N este irul
n2

de bii an-1an-2...a1a0, cu proprietatea c N = ( 1) n1 ai 2i .


a

i =0

Dei intuitiv, varianta de mai sus, numit reprezentare modul-semn, are unele
dezavantaje. Pe de o parte, reprezentarea modul-semn a unui numr este unic, dar cu
excepia numrului 0: se observ imediat c n acest caz, dac biii care formeaz
modulul au toi valoarea 0, n schimb bitul de semn poate fi att 0, ct i 1. Desigur,
aceast redundan poate crea proleme, n special la compararea numerelor.
Mai important, adunarea numerelor reprezentate cu modul i semn nu mai
urmeaz algoritmul clasic, specific scrierii poziionale. Dac pentru numere cu acelai
semn situaia rmne neschimbat, n cazul numerelor cu semne diferite apar
probleme. Considerm ca exemplu numerele 3 i -5. Reprezentrile modul-semn, cu
n=8, ale acestor numere sunt respectiv 00000011 i 10000101. Dac adunm
reprezentrile dup algoritmul clasic obinem:

Rezultatul corespunde valorii -8, ceea ce este evident incorect. Desigur, se poate
gsi un algoritm mai complex, care s realizeze adunarea n mod corect, dar s-ar
pierde din performan, claritate i simplitate. Problema este cu att mai serioas cu
ct adunarea st la baza celoralte operaii aritmetice (scdere, nmulire, mprire),
deci algoritmul prin care este implementat va influena i implementrile acestor
operaii.
O variant propus pentru rezolvarea acestei deficiene este urmtoarea:
- numerele pozitive se reprezint n continuare la fel ca n scrierea poziional,
cu bitul de semn avnd valoarea 0
- pentru un numr negativ se pornete de la reprezentarea modulului su, apoi
fiecare bit este complementat (0 se nlocuiete cu 1 i reciproc), inclusiv bitul de semn
Se obine astfel reprezentarea numit n complement fa de 1. Nu vom insista
asupra acestei reprezentri, care are nc unele puncte slabe. Vom meniona doar c ea
constituie un pas nainte, iar algoritmul de adunare n acest caz este apropiat de cel
clasic.
n final ajungem la soluia care este folosit n sistemele de calcul actuale,
numit reprezentare n complement fa de 2, care preia ideile valoroase de la
variantele anterioare. Formal, reprezentarea n complement fa de 2 a unui numr
ntreg N este irul de bii an-1an-2...a1a0, cu proprietatea c:
n 2
i
pentru an 1 = 0 ( N 0)
ai 2
i =0
N =
n2
2 n 1 + ai 2i pentru an 1 = 1 ( N < 0)

i =0
Dei este mai complicat dect predecesoarele sale, reprezentarea n
complement fa de 2 elimin dezavantajele acestora. Astfel, numrul 0 are o
reprezentare unic (toi biii cu valoarea 0), iar adunarea se face dup acelai algoritm
57

ca la scrierea poziional, indiferent de semnul operanzilor. Ultima proprietate a fost


ndeplinit prin faptul c, pentru orice numr x, dac adunm dup algoritmul clasic
reprezentrile numerelor x i -x, obinem ntotdeauna 0.
Pentru exemplificare, considerm din nou numerele 3 i -5 i n=8.
Reprezentarea n cod complementar fa de 2 a numrului 3 este tot 00000011 (fiind
pozitiv, este la fel ca la scrierea poziional), n schimb pentru numrul -5 obinem
11111011. Adunm cele dou reprezentri dup algoritmul clasic i obinem:

Rezultatul este reprezentarea numrului -2, deci suma a fost calculat corect.
Un aspect interesant, nu lipsit de important practic, este modul de obinere al
reprezentrii numrului -x pornind de la reprezentarea numrului x. Algoritmul este
urmtorul:
- se parcurge irul de bii de la dreapta la stnga
- ct timp biii au valoarea 0, sunt lsai nemodificai
- primul bit ntlnit cu valoarea 1 este de asemenea lsat nemodificat
- dup acest prim bit cu valoarea 1, toi biii care urmeaz (indiferent de
valoarea lor) sunt inversai
Algoritmul funcioneaz la fel, indiferent de semnul lui x. De exemplu, pentru
numrul -5, folosit mai sus, pornim de la reprezentarea numrului 5, care este evident
00000101. Deoarece nu avem nici un bit cu valoarea 0 la extremitatea dreapt, primul
bit este singurul nemodificat; toi ceilali bii sunt inversai, deci se obine 11111011.
Este uor de verificat faptul c, pornind de la reprezentarea lui -5, se obine n acelai
mod reprezentarea numrului 5.
Revenim la problema domeniului reprezentabil pe un numr finit de bii.
Reamintim c, n cazul scrierii poziionale, intervalul numerelor reprezentabile pe n
bii este 0 2n-1, constnd deci din 2n valori diferite consecutive. Dac folosim
reprezentarea n complement fa de 2 (sau oricare alta), intervalul nu poate crete n
dimensiune, din simplul motiv c pe n bii se pot reprezenta maximum 2n valori
diferite (sunt posibile 2n configuraii diferite ale irului de bii). Astfel, intervalul
valorilor reprezentabile este deplasat, incluznd att numere negative, ct i numere
pozitive. Dac analizm reprezentarea n complement fa de 2, observm c numrul
cel mai mic reprezentabil pe n bii corespunde irului 100...00, avnd deci valoarea 2n-1. n acelai timp, cel mai mare numr reprezentabil corespunde irului de bii
011...11, avnd valoarea 2n-1-1. Rezumnd, dac folosim operanzi pe n bii i
reprezentarea n complement fa de 2, putem lucra cu numere n intervalul -2n-1 2n1
-1. De exemplu, pentru n=8 (operanzi pe un octet), putem lucra cu numere cuprinse
ntre -128 i 127.

A.1.4. Reprezentri zecimale


n mod evident, majoritatea aplicaiilor implic efectuarea de calcule cu numere
reale. Pentru aceste aplicaii, reprezentrile discutate pn acum, a cror aplicabilitate
este restrns la numerele naturale sau cel mult ntregi, nu mai sunt suficiente. n
continuare vom aborda reprezentarea numerelor cu zecimale.
ncepem prin a face o observaie important. Datorit caracterului finit al
oricrei reprezentri, nu vom putea lucra cu adevrat cu numere reale, ci doar cu
numere raionale (reamintim c numerele iraionale necesit un numr infinit de
zecimale, indiferent de baza de numeraie folosit); mai mult, nu vom avea la
dispoziie nici mcar toate numerele raionale dintr-un anumit interval, ci doar o parte
58

dintre acestea. Vom vedea de altfel c una dintre caracteristicile importante ale acestor
reprezentri este distana dintre dou numere reprezentabile succesive (care n cazul
numerelor ntregi este, desigur, 1). Totui, n practic vom numi "reale" numerele
reprezentate n acest mod.
Ideea de pornire este una natural: din numrul total de bii disponibil pentru o
reprezentare, unii vor fi folosii pentru partea ntreag, iar restul pentru partea
zecimal. ntlnim astfel aceeai problem ca i la reprezentarea numerelor cu semn:
avem nevoie de un simbol suplimentar (virgula), pe lng cele pentru cifre, simbol de
care ns nu dispunem. Rezolvarea este totui diferit, aa cum vom vedea n
continuare.
ntruct toate reprezentrile se bazeaz, n ultim instan, pe scrierea
poziional, relum problema conversiei ntre bazele 2 i 10, de data aceasta pentru
numere zecimale. Din nou, conversia din baza 2 n baza 10 este imediat. Fie de
exemplu numrul 1010010,1011(2). La fel ca n cazul numerelor naturale, avem:
1010010,1011(2) = 126 + 025 + 124 + 023 + 022 + 121 + 020 + 12-1 + 02-2 +
12-3 + 12-4 = 82,6875(10)
La conversia din baza 10 n baza 2, partea ntreag i partea zecimal trebuie
calculate separat. Algoritmul pentru calculul prii ntregi a fost deja prezentat. Pentru
partea zecimal se procedeaz astfel:
Se nmulete partea zecimal cu 2 i se reine cifra de la partea ntreag (nu
poate fi dect o singur cifr semnificativ, cu valoarea 0 sau 1). Noua parte zecimal
se nmulete la rndul su cu 2, iar procesul se repet pn cnd partea zecimal
devine 0. irul cifrelor obinute la partea ntreag din fiecare nmulire formeaz
rezultatul cutat.
De exemplu, fie numrul 309,3125(10). Partea ntreag, aa cum s-a vzut deja,
se scrie n baza 2 sub forma 100110101. Aplicnd algoritmul prezentat mai sus pentru
partea zecimal, obinem (n stnga este partea ntreag, iar n dreapta partea
zecimal):

irul cifrelor obinute la partea ntreag este 0101, deci 0,3125(10) = 0,0101(2).
Ca urmare, 309,3125(10) = 100110101,0101(2).
O problem care apare n acest caz este posibilitatea ca unui numr finit de
zecimale n baza 10 s-i corespund un numr infinit de zecimale n baza 2 (invers nu
este posibil). ntr-un asemenea caz este evident imposibil s obinem o reprezentare
exact a numrului. Soluia este s calculm attea zecimale n baza 2 cte ncap n
reprezentare, obinnd astfel cea mai bun aproximare pe care o putem memora.
De exemplu, fie numrul 0,3(10). Vom aplica din nou algoritmul de mai sus:

59

Este uor de observat c partea zecimal nu va ajunge niciodat la valoarea 0,


deci numrul de cifre n baza 2 necesar pentru reprezentare este infinit. Dac ne
propunem s reprezentm numrul cu 4 bii la partea zecimal, vom obine
aproximarea 0,0100(2); dac folosim 6 bii, obinem 0,010011(2) etc.
Exist dou forme diferite de reprezentare a numerelor zecimale, care vor fi
prezentate n continuare.

A.1.5. Reprezentri n virgul fix


O prim soluie este ca separarea ntre partea ntreag i partea zecimal a
reprezentrii s se fac ntotdeauna la fel. Cu alte cuvinte, vom avea ntotdeauna n bii
pentru partea ntreag i m bii pentru partea zecimal, valorile pentru n i m
rmnnd n permanen constante. Desigur, numrul de bii alocat unei reprezentri
este n+m.
Aceast abordare poart denumirea de reprezentare n virgul fix, deoarece
poziia virgulei n cadrul numrului nu se modific. Principala consecin este c
virgula nu mai trebuie reprezentat n mod explicit, deoarece poziia sa, fiind mereu
aceeai, este oricum cunoscut. Ca urmare, dispare necesitatea unui simbol
suplimentar pentru virgul, deci reprezentarea pe iruri de bii este posibil.
Este uor de vzut c reprezentarea n virgul fix poate fi considerat o
generalizare a reprezentrilor pentru numere ntregi, discutate anterior. n practic se
pornete de la reprezentarea n complement fa de 2, care este cea mai complet, i se
decide ca un numr de bii s fie rezervai prii ntregi. Astfel, reprezentarea unui
numr N pe n+m bii este irul de bii an-1an-2...a1a0a-1a-2...a-m, cu proprietatea:
n2
i
pentru an 1 = 0 ( N 0)
ai 2
i =m
N =
n2
2 n 1 + ai 2i pentru an 1 = 1 ( N < 0)

i =m
Pentru a determina intervalul numerelor reprezentabile n virgul fix pe n+m
bii, ne folosim de faptul c toate proprietile reprezentrii n complement fa de 2
rmn valabile. Relund raionamentul de mai sus, cel mai mic numr reprezentabil
corespunde irului 100...00, avnd tot valoarea -2n-1. Pe de alt parte, cel mai mare
numr reprezentabil corespunde irului de bii 011...11, care acum are valoarea 2n-1-2m
. Intervalul numerelor reprezentabile n virgul fix pe n+m bii este deci [ -2n-1 , 2n-12-m ]. Reamintim faptul c nu este vorba cu adevrat de un interval n sensul
matematic al termenului, ci doar de o parte dintre numerele raionale din acel interval.
Un alt aspect important, aa cum s-a vzut mai sus, este distana dintre dou
numere reprezentabile succesive. n acest caz, trecerea de la un numr reprezentabil la
urmtorul (cel imediat superior) se face ntotdeauna prin adunarea reprezentrii
00...001, care corespunde numrului 2-m (cel mai mic numr strict pozitiv care poate fi
reprezentat). n concluzie, distana (numit uneori i pas) dintre dou numere
reprezentabile succesive este constant i are valoarea 2-m.
60

A.1.6. Reprezentri n virgul mobil


Reprezentarea n virgul fix are dezavantajul lipsei de flexibilitate. ntr-adevr,
odat fixate valorile pentru n i m, s-au stabilit n mod definitiv att ordinul de mrime
al numerelor reprezentabile (dat de n), ct i precizia reprezentrii (dat de numrul de
zecimale, adic m). Totui, pentru aceeai dimensiune total a unui operand, putem
prefera, de exemplu, ca n unele cazuri s lucrm cu numere mai mici, dar cu o
precizie mai bun; aceasta s-ar putea realiza scznd n i crescnd m, astfel nct suma
lor s rmn aceeai. Din pcate, reprezentarea n virgul fix nu permite asemenea
adaptri, deoarece valorile n i m nu pot fi modificate. Reprezentarea n virgul
mobil vine s corecteze acest neajuns.
Ideea de pornire provine din calculul tiinific, unde se folosete notaia cu
exponent. Mai concret, un numr ca 243,59 poate fi scris sub forma 2,4359102.
Observm c n scrierea tiinific intervin trei elemente:
- mantisa (n cazul de fa 2,4359), care poate fi privit ca fiind "corpul"
numrului
- baza de numeraie (10)
- exponentul (2) la care este ridicat baza de numeraie
Putem deci reprezenta numrul ca o triplet (mantis, baz, exponent). n
practic ns, baza de numeraie este mereu aceeai, astfel nct pentru reprezentarea
numrului sunt suficiente mantisa i exponentul.
Evident, pentru aceeai baz de numeraie pot exista mai multe perechi mantisexponent care s reprezinte acelai numr. De exemplu, numrul 243,59 poate fi scris
i sub forma 24,359101. De fapt, se folosete ntodeauna perechea n care mantisa are
exact o cifr semnificativ nainte de virgul; se spune n acest caz c mantisa este
normalizat. Avantajul acestei notaii este c nu mai apar probleme privind numrul
de bii alocat prii ntregi i respectiv prii zecimale a numrului. Orice variaie n ce
privete ordinul de mrime al numrului sau precizia sa se rezolv exclusiv prin
ajustarea exponentului.
Structura general a unei reprezentri n virgul mobil este urmtoarea (figura
A.1):
- Bitul cel mai semnificativ indic semnul numrului, dup convenia deja
cunoscut (1 - negativ, 0 - pozitiv). Urmtoarele cmpuri determin modulul
numrului.
- Urmtorii bii rein exponentul ntr-o form modificat, numit caracteristic.
- Restul de bii formeaz mantisa.

Fig. A.1.
Pentru simplitate, n continuare vom nota bitul de semn cu S, exponentul cu E,
caracteristica cu C, iar mantisa cu M.
Deoarece numrul poate fi supraunitar sau subunitar, rezult c exponentul
poate fi pozitiv sau negativ. Ca atare, pentru exponentului trebuie folosit o
reprezentare cu semn (separat de bitul de semn al numrului). Totui, reprezentarea n
complement fa de 2, care pare a fi prima alegere, are un dezavantaj: comparaia ntre
numere este relativ greoaie, deoarece se realizeaz n mod diferit n funcie de
semnele celor dou numere. Dei n general aceasta nu constituie o problem, n
61

lucrul cu numere n virgul mobil, comparaia ntre exponeni este o operaie


executat foarte des. Din acest motiv s-a apelat la o reprezentare mai rar folosit,
numit reprezentare n exces. Concret, dac avem n bii pentru exponent, atunci
exponentul poate lua valori ntre -2n-1 + 1 i 2n-1. Apoi, din exponent se obine
caracteristica prin formula C = E + (2n-1 - 1), unde 2n-1 - 1 este o constant numit
exces. Se observ imediat c ntodeauna C 0, deci pentru caracteristic se poate
folosi scrierea poziional, ceea ce permite implementarea uoar a operaiei de
comparare.
n privina mantisei, reamintim c aceasta trebuie s fie normalizat, adic s
aib exact o cifr semnificativ la partea ntreag. n baza 2, singura cifr
semnificativ este 1, deci mantisa este de forma 1,...; deoarece partea ntreag a
mantisei este ntotdeauna la fel, ea nu mai trebuie memorat. Ca urmare, cmpul M va
memora numai biii corespunztori prii zecimale a mantisei.
Exist dou implementri practice ale reprezentrii n virgul mobil, ambele
bazate pe structura prezentat mai sus, definite n standardul IEEE 754:
a) Reprezentarea n simpl precizie, care ocup 32 bii (4 octei), repartizai
astfel:
- bitul de semn
- 8 bii pentru caracteristic
- 23 bii pentru mantis
b) Reprezentarea n dubl precizie, care ocup 64 bii (8 octei):
- bitul de semn
- 12 bii pentru caracteristic
- 51 bii pentru mantis
Cele dou variante sunt similare, diferind doar prin numrul de bii alocai
diferitelor componente.
Pentru a nelege mai bine toate aceste elemente, vom considera numrul
2157,375(10) i vom vedea care sunt paii care trebuie parcuri pentru a obine
reprezentarea sa n virgul mobil, simpl precizie.
- n primul rnd, scriem numrul poziional n baza 2. Aplicnd algoritmii
descrii anterior pentru conversia n baza 2 a prii ntregi i respectiv a prii
zecimale, obinem:
2157,375(10) = 100001101101,011(2)
- Urmeaz scrierea sub form de mantis i exponent, cu mantisa normalizat:
100001101101,011 = 1,00001101101011211
- Cmpul M rezult imediat, fiind format din partea zecimal a mantisei.
Deoarece mantisa are numai 14 bii semnificativi, iar cmpul M are 23 bii, ultimii 9
bii din M primesc valoarea 0 (sunt nesemnificativi):
M = 00001101101011000000000
- Caracteristica se calculeaz din exponent:
E = 11 C = E + (27 - 1) = 11 + 127 = 138
Scris n baza 2, pe 8 bii: C = 10001010
- Bitul de semn are valoarea S = 0, deoarece numrul este pozitiv.
Concatennd irurile de bii corespunztoare celor 3 cmpuri, obinem
reprezentarea n simpl precizie. Deoarece numrul de bii este mare i deci dificil de
controlat, n practic se prefer scrierea n baza 16, mai concis:
01000101000001101101011000000000(2) = 4506D600(16)
Cteva caracteristici ale reprezentrilor n virgul mobil:
a) simpl precizie
- cel mai mic numr nenul reprezentabil (n modul): 1,1754943511038
62

- cel mai mare numr reprezentabil (n modul): 3,4028234661038


b) dubl precizie
- cel mai mic numr nenul reprezentabil (n modul): 2,225073858507201410-308
- cel mai mare numr reprezentabil (n modul): 1,797693134862315810308
O proprietate a reprezentrilor n virgul mobil de care trebuie inut cont este
faptul c distana dintre dou numere reprezentabile succesive nu mai este constant,
ci depinde de valoarea exponentului. Dat fiind un numr oarecare, numrul
reprezentabil imediat superior se obine adunnd la mantis valoarea minim posibil,
adic 00...001; n simpl precizie aceasta corespunde valorii 2-23, iar n dubl precizie
valorii 2-51. Dac vom considera, de exemplu, reprezentarea n simpl precizie,
observm c diferena ntre cele dou numere succesive este E2-23, n timp ce pentru
dubl precizie este E2-51. Rezult de aici nu numai c nu putem reprezenta toate
numerele iraionale din domeniu, dar i c, pentru valori mari ale exponentului, exist
chiar i numere ntregi care nu pot fi reprezentate exact.
adunare, nmulire

A.2. Reprezentri alfanumerice


Informaiile prelucrate de calculator nu se rezum la numere. Textele sunt de
asemenea larg folosite, poate chiar ntr-o msur mai mare, dac privim din punctul
de vedere al unui utilizator obinuit. Este deci natural s se defineasc un mod de
reprezentare pentru caractere.
O reprezentare alfanumeric asociaz fiecrui caracter o valoare unic. Aa cum
am vzut, calculatorul lucreaz cu iruri de bii, organizate n octei; dat fiind c
literele alfabetului latin (mari i mici), mpreun cu cifrele, semnele de punctuaie i
cele matematice, totalizeaz mai puin de 100 de simboluri diferite, este suficient s se
aloce fiecrui caracter o valoare pe un octet. Pentru simplitate, aceste valori ale
octeilor sunt desemnate tot sub form numeric, aceasta fiind mai accesibil i mai
uor de reinut. De exemplu, nu vom spune c unui caracter i este asociat octetul
01101000, ci numrul (codul) 104.
O prim ncercare de standardizare a reprezentrilor alfanumerice a dus la
elaborarea codului EBCDIC (Extended Binary Coded Decimal Interchange Code).
Deoarece ns nu au fost urmate nite principii clare n proiectare, codul EBCDIC nu
s-a impus. n principal nu s-a inut cont de faptul c, dac lucrul cu caractere nu
implic operaii aritmetice sau logice, exist totui unele prelucrri care se aplic
asupra acestora, cum ar fi comparaia, conversii ntre litere mari i mici, conversii
ntre iruri de caractere i tipuri numerice etc.
Mult mai bine definit este codul ASCII (American Standard Code for
Information Interchange), care s-a impus ca standard, fiind folosit pn astzi. n
proiectarea sa au fost avute n vedere cteva aspecte care uureaz prelucrarea
caracterelor:
- Literele mici au coduri consecutive, n conformitate cu ordinea alfabetic. La
fel s-a procedat i n cazul literelor mari. Astfel sunt facilitate att implementarea
comparaiei ntre dou caractere, care se reduce la comparaia ntre dou numere
naturale, ct i operaiile de testare (de exemplu, dac un caracter este liter mare sau
nu).
- Cifrele au de asemenea coduri consecutive. Mai mult, ultimii 4 bii ai codului
unei cifre dau exact valoarea cifrei respective, ceea ce uureaz conversia ntre iruri
de caractere i tipuri numerice.

63

Iniial, codul ASCII prevedea 128 caractere. Aceast prim versiune, care
conine informaiile fundamentale necesare unei reprezentri alfanumerice, este
prezentat n tabelul A.1. Se observ c primele 32 coduri sunt alocate unor caractere
speciale. Acestea nu apar explicit n text, dar influeneaz modul de prezentare
(dispunere n pagin) al acestuia, fiind folosite n special de ctre editoarele de texte.
De exemplu, codul 9 corespunde caracterului "tab", care este folosit pentru alinierea
unor pri din text.
Deoarece oricum se folosea un octet pentru memorarea unui caracter, codul
ASCII a fost extins, ajungnd la 256 caractere. Simbolurile nou introduse sunt n
general cele folosite n limbile unor ri europene, dar care nu se regsesc n alfabetul
englez (de exemplu "", "", "" etc.).
Evident, nici dup aceast extindere codul ASCII nu putea cuprinde simbolurile
tuturor scrierilor folosite n lume. Pentru a rezolva problema a fost elaborat un
standard nou, numit Unicode. Acesta folosete coduri de 2 octei pentru caractere,
ceea ce ridic numrul simbolurilor disponibile la 65536. Bineneles, sunt incluse i
codurile ASCII. Deocamdat Unicode nu s-a impus pe scar larg, fiind folosit mai
ales n aplicaiile care au versiuni ntr-un numr mare de limbi.

64

Cod
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

Caracter
NUL
SOH
STX
ETX
EOT
ENQ
ACK
BEL
BS
HT
LF
VT
FF
CR
SO
SI
DLE
DC1
DC2
DC3
DC4
NAK
SYN
ETB
CAN
EM
SUB
ESC
FS
GS
RS
US

Cod
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63

Caracter
Cod
spaiu
64
!
65
"
66
#
67
$
68
%
69
&
70
'
71
(
72
)
73
*
74
+
75
,
76
77
.
78
/
79
0
80
1
81
2
82
3
83
4
84
5
85
6
86
7
87
8
88
9
89
:
90
;
91
<
92
=
93
>
94
?
95
Tabelul A.1.

65

Caracter
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_

Cod
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127

Caracter
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~


Bibliografie
J. L. Henessy, D. A. Patterson, Computer Architecture - A Quantitative
Approach, Morgan Kaufmann Publishers, 1990.
D. A. Patterson, J. L. Henessy, Organizarea i proiectarea calculatoarelor.
Interfaa hardware/software, Ed. All, 2002.
A. Tanenbaum, Organizarea structurat a calculatoarelor, Ed. Agora, 1999.
A. Tanenbaum, Modern Operating Systems, Prentice Hall, 2001.

66

Cuprins
1. Introducere ............................................................................................................... 1
1.1. Elemente de baz ........................................................................................... 1
1.2. Tipuri de calculatoare .................................................................................... 3
1.3. ntrebri ......................................................................................................... 5
2. Arhitectura sistemelor de calcul ............................................................................. 6
2.1. Arhitectura generalizat von Neumann ......................................................... 6
2.2. Clasificarea arhitecturilor interne .................................................................. 8
2.3. ntrebri ....................................................................................................... 11
3. Arhitectura intern a microprocesoarelor Intel ................................................. 12
3.1. Microprocesoare pe 16 bii.......................................................................... 12
3.2. Microprocesoare pe 32 bii.......................................................................... 16
3.3. ntrebri ....................................................................................................... 21
4. Microprocesoare: funcionare i adresarea datelor............................................ 22
4.1. Funcionarea la nivel de magistral ............................................................. 22
4.2. Moduri de adresare la microprocesoarele Intel ........................................... 22
4.2.1. Adresarea datelor ............................................................................ 23
4.3. Stiva............................................................................................................. 24
4.4. Procesoare CISC i RISC ............................................................................ 26
4.5. ntrebri ....................................................................................................... 26
5. Sistemul de ntreruperi.......................................................................................... 27
5.1. ntreruperi hardware i software.................................................................. 27
5.1.1. ntreruperi hardware dezactivabile.................................................. 27
5.1.2. ntreruperi software......................................................................... 30
5.2. ntrebri ....................................................................................................... 31
6. Memoria.................................................................................................................. 32
6.1. Tipuri de memorie ....................................................................................... 32
6.2. Memoria video............................................................................................. 33
6.3. Memoria cache ............................................................................................ 35
6.4. Memoria virtual ......................................................................................... 39
6.5. Ierarhia de memorii ..................................................................................... 40
6.6. ntrebri ....................................................................................................... 41
7. Sistemul I/O ............................................................................................................ 42
7.1. Porturi .......................................................................................................... 42
7.2. ntrebri ....................................................................................................... 44
8. Multimedia.............................................................................................................. 45
8.1. Tehnologia multimedia audio...................................................................... 45
8.1.1. Elemente de baz ale sunetului digital ............................................ 45
8.1.2. Prelucrri ale sunetului digital. Plci de sunet ................................ 46
8.2. Prelucrri digitale video .............................................................................. 47
8.3. Consideraii finale ....................................................................................... 47
8.4. ntrebri ....................................................................................................... 47
9. Sistemul de operare................................................................................................ 48
9.1. Scurt istoric i evoluie ................................................................................ 49
9.2. Clasificarea sistemelor de operare............................................................... 50
67

9.3. Nucleul sistemului de operare ..................................................................... 51


9.3.1. Apeluri sistem ................................................................................. 52
9.4. Drivere ......................................................................................................... 53
9.5. ntrebri ....................................................................................................... 54
Anexa A. Reprezentarea datelor n sistemele de calcul.......................................... 55
A.1. Reprezentri numerice ................................................................................ 55
A.1.2. Scrierea poziional........................................................................ 55
A.1.3. Reprezentri cu semn ..................................................................... 56
A.1.4. Reprezentri zecimale .................................................................... 58
A.1.5. Reprezentri n virgul fix............................................................ 60
A.1.6. Reprezentri n virgul mobil....................................................... 61
A.2. Reprezentri alfanumerice .......................................................................... 63
Bibliografie ................................................................................................................. 66

68

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