Documente Academic
Documente Profesional
Documente Cultură
Arh So Id PDF
Arh So Id PDF
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:
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.
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.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?
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
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
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
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
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
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
16
17
18
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
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.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.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.
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
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
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
33
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.
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.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.
45
46
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
50
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
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
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
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
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.
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
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
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
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
68