Documente Academic
Documente Profesional
Documente Cultură
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
CUPRINS
CUPRINS................................................................................................................. 1
1. INTRODUCERE N SISTEMELE DE PROCESARE A INFORMAIEI .. 4
1.1. CALCULATORUL DISPOZITIV UNIVERSAL DE CALCUL _____________ 8
1.2. STRUCTURA UNUI SISTEM DE CALCUL. PRINCIPII DE BAZ_________ 15
1.3. EXERCIII I PROBLEME _________________________________________ 23
2. REPREZENTAREA INFORMAIILOR. CONVERSII DE VALORI
NTRE SISTEME DE NUMERAIE. ARITMETIC BINAR. OPERAII
LOGICE ................................................................................................................ 25
2.1. REPREZENTAREA INFORMAIILOR N SISTEMELE DE CALCUL ______ 25
2.1.1. REPREZENTAREA INFORMAIILOR NUMERICE FR SEMN. SISTEME DE
NUMERAIE _____________________________________________________________ 29
2.1.2. REPREZENTAREA NUMERELOR CU SEMN _____________________________ 33
2.1.3. REPREZENTAREA NUMERELOR N VIRGUL FLOTANT. FORMATUL IEEE
754 ______________________________________________________________________ 36
2.1.4. REPREZENTAREA INFORMAIILOR ALFANUMERICE STANDARDUL ASCII
_________________________________________________________________________ 40
2.1.5. REPREZENTAREA INFORMAIILOR MULTIMEDIA______________________ 41
2.2. CODIFICAREA INFORMAIEI _____________________________________ 43
2.2.1. CODURI ZECIMALE__________________________________________________ 43
2.2.2. CODURI PENTRU DETECTAREA I CORECTAREA ERORILOR____________ 44
2.3. OPERAII LOGICE PE BII. FUNCII LOGICE. _______________________ 45
2.3.1. FUNCIA I LOGIC (AND)_____________________________________________ 45
2.3.2. FUNCIA SAU LOGIC (OR)____________________________________________ 46
2.3.3. FUNCIA NOT LOGIC ________________________________________________ 46
2.3.4. FUNCIA SAU EXCLUSIV (XOR)_______________________________________ 46
2.4. EXERCIII I PROBLEME _________________________________________ 47
3. STRUCTURI LOGICE DIGITALE. TRANZISTORI. PORI LOGICE.
STRUCTURI LOGICE COMBINAIONALE. UNITATEA ARITMETICO-
LOGIC................................................................................................................ 50
3.1. TRANZISTORUL _________________________________________________ 50
3.2. PORI LOGICE___________________________________________________ 53
3.2.1. INVERSORUL CMOS _________________________________________________ 53
3.2.2. POARTA NOR (NOT OR) ______________________________________________ 53
3.2.3. POARTA NAND (NOT AND) ___________________________________________ 54
3.3. STRUCTURI LOGICE DIGITALE____________________________________ 56
3.3.1. STRUCTURI LOGICE (CIRCUITE) COMBINAIONALE ___________________ 56
3.3.2. PROIECTAREA UNEI UNITI DE CALCUL ARITMETICO-LOGIC _________ 65
3.4. EXERCIII I PROBLEME _________________________________________ 70
4. ELEMENTE PRIMARE DE MEMORARE. REGITRII. MEMORII.
AUTOMATE CU NUMR FINIT DE STRI .................................................. 78
4.1. STRUCTURI LOGICE SECVENIALE _______________________________ 78
4.1.1. BISTABILUL R-S_____________________________________________________ 79
4.1.2. BISTABILUL DE TIP D (DELAY)._______________________________________ 81
4.1.3. REGITRII. __________________________________________________________ 82
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
2 Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware - Software
4.1.4. MEMORIA __________________________________________________________ 85
4.2. AUTOMATE SECVENIALE I PROGRAMABILE_____________________ 92
4.3. EXERCIII I PROBLEME ________________________________________ 100
5. MODELUL ARHITECTURAL VON NEUMANN. COMPONENTE DE
BAZ. PRINCIPIILE PROCESRII INSTRUCIUNILOR....................... 104
5.1. COMPONENTELE DE BAZ ALE MODELULUI ARHITECTURAL VON
NEUMANN ________________________________________________________ 104
5.2. PRINCIPIILE PROCESRII INSTRUCIUNILOR _____________________ 108
5.2.1. CICLUL INSTRUCIUNII_____________________________________________ 109
5.2.2. TIPURI DE INSTRUCIUNI ___________________________________________ 112
5.2.3. CEASUL PROCESORULUI____________________________________________ 114
5.3. EXERCIII I PROBLEME ________________________________________ 115
6. LC-3 ARHITECTURA SETULUI DE INSTRUCIUNI. CALEA
FLUXULUI DE DATE. ORGANIZAREA MEMORIEI LA LC-3 [Patt03]. 119
6.1. LC-3 ARHITECTURA SETULUI DE INSTRUCIUNI_________________ 119
6.1.1. LC-3 ISA: ORGANIZAREA MEMORIEI I SETUL DE REGITII GENERALI _ 120
6.1.2. LC-3 ISA: FORMATUL INSTRUCIUNII I SETUL DE INSTRUCIUNI _____ 121
6.1.3. LC-3 ISA: APLICAII REZOLVATE ____________________________________ 141
6.2. FLUXUL DE DATE LA LC-3 ISA___________________________________ 145
6.3. EXERCIII I PROBLEME ________________________________________ 148
7. LIMBAJUL DE ASAMBLARE AFERENT ARHITECTURII LC-3.
ASAMBLORUL. ETAPELE GENERRII CODULUI MAIN. TABELA
DE SIMBOLURI................................................................................................. 156
7.1. MOTIVE PENTRU A PROGRAMA N LIMBAJ DE ASAMBLARE _______ 156
7.2. SINTAXA ASAMBLOR LC-3 [Patt03] _______________________________ 158
7.2.1. CORESPONDENA LIMBAJ DE ASAMBLARE LC-3 LIMBAJ MAIN
SPECIFIC LC-3 ISA _______________________________________________________ 162
7.2.2. APELURI SISTEM___________________________________________________ 163
7.3. PROCESUL DE ASAMBLARE ETAPELE GENERRII CODULUI MAIN
___________________________________________________________________ 164
7.3.1. GENERAREA TABELEI DE SIMBOLURI (TS) ___________________________ 165
7.3.2. OBINEREA CODULUI N LIMBAJUL MAIN_________________________ 166
7.3.3. CREAREA LEGTURILOR NTRE MODULE, NCRCAREA I LANSAREA N
EXECUIE ______________________________________________________________ 169
7.4. EXERCIII I PROBLEME ________________________________________ 170
8. NTRERUPERI SOFTWARE LA NIVEL LOW. APELURI DE
SUBRUTINE DIRECTE I INDIRECTE. REVENIRI. SALVAREA I
RESTAURAREA REGITRIILOR. STRATEGIILE CALLER-SAVE
RESPECTIV CALLEE SAVE........................................................................ 177
8.1. NTRERUPERI. DEFINIIE. CLASIFICARE __________________________ 177
8.2. NTRERUPERI SOFTWARE LA NIVEL LOW INSTRUCIUNILE TRAP _ 178
8.2.1. RUTINELE DE TRATARE AFERENTE APELURILOR SISTEM LA LC-3 ISA _ 179
8.2.2. SALVAREA I RESTAUREA REGITRILOR N CAZUL RUTINELOR DE
SERVICIU_______________________________________________________________ 190
8.3. SUBRUTINE ____________________________________________________ 192
8.3.1. MECANISMUL DE APEL SUBRUTINE I REVENIRE ____________________ 193
8.3.2. TRANSFERUL PARAMETRILOR CTRE I DE LA SUBRUTINE___________ 198
8.3.3. SALVAREA I RESTAUREA REGITRILOR N CAZUL SUBRUTINELOR.
RUTINE (FUNCII) DE BIBLIOTEC _______________________________________ 199
8.4. EXERCIII I PROBLEME ________________________________________ 200
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
Introducere n sistemele de procesare a informaiei 3
9. STIVA STRUCTUR. PRINCIPIU DE FUNCIONARE. OPERAII
AFERENTE (PUSH & POP).............................................................................. 208
9.1. STRUCTURA DE DATE DE TIP STIV _____________________________ 208
9.1.1. PRINCIPIU DE FUNCIONARE _______________________________________ 208
9.1.2. IMPLEMENTARE HARDWARE I SOFTWARE. _________________________ 208
9.1.3. OPERAII AFERENTE (PUSH & POP) __________________________________ 211
9.1.4. MODUL DE LUCRU PRIN NTRERUPERI HARDWARE. __________________ 214
9.2. OPERAII ARITMETICE FOLOSIND STIVA _________________________ 222
9.3. CONVERSIA INFORMAIEI DIN FORMAT ASCII N ZECIMAL ________ 225
9.3.1. CONVERSIA DIN ASCII N BINAR ____________________________________ 226
9.3.2. CONVERSIA DIN ZECIMAL N ASCII __________________________________ 230
9.4. EXERCIII I PROBLEME ________________________________________ 233
10. FACILITI ALE MAINII PENTRU IMPLEMENTAREA N
HARDWARE A FUNCIILOR DIN PROGRAMELE DE NIVEL NALT.
STIVA DE DATE AFERENT FUNCIILOR.............................................. 237
10.1. OBINEREA CODULUI OBIECT PENTRU O ARHITECTUR DAT ___ 237
10.1.1. DESCRIEREA COMPONENTELOR UNUI COMPILATOR ________________ 238
10.1.2. ETAPELE PARCURSE PENTRU RECOMPILAREA INSTRUMENTELOR
SIMPLESCALAR 3.0 [Flo05] ________________________________________________ 246
10.2. IMPLEMENTAREA GESTIUNII STIVELOR DE DATE ASOCIATE
FUNCIILOR C _____________________________________________________ 249
10.2.1. SUBPROGRAME. GENERALITI. FUNCII C_________________________ 249
10.2.2. STIVA DE DATE AFERENT FUNCIILOR [Patt03, Vin03] _______________ 256
10.3. EXERCIII I PROBLEME _______________________________________ 260
11. INTRODUCERE N RECURSIVITATE. COMPARAIA DINTRE
RECURSIV I ITERATIV N ALEGEREA ALGORITMULUI DE
REZOLVARE A PROBLEMELOR. AVANTAJE / DEZAVANTAJE........ 265
11.1. SCOP I COMPETENE NECESARE_______________________________ 265
11.2. RECURSIVITATEA _____________________________________________ 265
11.2.1. STIVA DE DATE ASOCIAT UNEI FUNCII [Patt03] ____________________ 266
11.3. IMPLEMENTAREA RECURSIVITII LA NIVELUL STIVEI DE DATE _ 274
11.4. TIPURI DE FUNCII RECURSIVE. ELIMINAREA RECURSIVITII ___ 277
11.5. EXERCIII I PROBLEME _______________________________________ 278
12. POINTERI I TABLOURI. TRANSFERUL PARAMETRILOR PRIN
REFERIN. POINTERI SPRE FUNCII .................................................... 282
12.1. INTRODUCERE ________________________________________________ 282
12.2. SEMNIFICAIE I DECLARARE__________________________________ 284
12.3. ALOCAREA I ACCESAREA DE VARIABILE. LEGTURA DINTRE
NIVELUL HIGH I LOW VZUT PRIN INTERMEDIUL MODURILOR DE
ADRESARE ________________________________________________________ 287
12.4. TRANSFERUL PARAMETRILOR PRIN REFERIN LA APELUL
FUNCIILOR_______________________________________________________ 290
12.5. POINTERI SPRE FUNCII________________________________________ 295
12.6. TABLOURI. RELAIA DINTRE POINTERI I TABLOURI_____________ 302
12.6.1. FUNCII CU PARAMETRI DE TIP TABLOU (VECTOR)__________________ 305
12.7. EXERCIII I PROBLEME _______________________________________ 307
BIBLIOGRAFIE................................................................................ 311
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
1. INTRODUCERE N SISTEMELE DE
PROCESARE A INFORMAIEI
tiina Calculatoarelor constituie unul din cele mai dinamice
domenii ale tiinelor inginereti. Dezvoltarea fr precedent a domeniului
Calculatoare i tehnologia informaiei ca o component fundamental a
societii actuale (societate informaional), aflat ntr-o continu schimbare
i progres, este evident i face parte integrant din realitatea pe care o
trim. Evoluia exploziv a tehnologiilor de nalt performan, coroborat
cu acumulri teoretice i experimentale, au fcut posibil ptrunderea n cele
mai diverse domenii ale vieii sociale, economice, industriale, culturale, a
ceea ce poart n mod generic numele de sistem de calcul / calculator,
tehnic / echipament de calcul. Importana informaiei i a sistemelor de
comunicaii cu infrastructura aferent pentru societate i economie se
accentueaz odat cu valoarea i cantitatea informaiei transmis i stocat
pe aceste sisteme. n acest context apare n mod stringent necesitatea
mbuntirii performanelor sistemelor de calcul actuale att din punct de
vedere cantitativ ct mai ales din punct de vedere calitativ. De asemenea,
prezentul tehnologiei informaiei, ca s nu mai spunem de viitor, centrat pe
Internet i tehnologia World Wide Web, impun ca alturi de performana n
sine, fiabilitatea, disponibilitatea i scalabilitatea s devin criterii eseniale,
ceea ce implic iari necesitatea unei noi viziuni pentru proiectantul de
sisteme de calcul. Criticalitatea n societatea informaional, unde informaia
circul prin cyberspaiu
1
fr constrngeri de distan sau vitez, se
datoreaz n egal msur dependenei sporite de informaie, sistemelor care
o furnizeaz dar i vulnerabilitii crescnde pe fondul unui spectru larg de
ameninri de genul rzboiului i polurii informaionale (rzboi cibernetic,
etc.).
ntr-adevr, calculatoarele au fcut progrese importante iar
microprocesoarele sunt principalele rspunztoare pentru aceast cretere
deosebit a performanei. Performana microprocesoarelor a evoluat n
1
Conform enciclopediei Wikipedia [Wik], termenul de cyberspaiu (Cyberspace)
reprezint o metafor atribuit reelelor de sisteme electronice de calcul care permit
stocarea de date i comunicarea online. Dei n anumite lucrri, cyberspaiul este folosit
cu sensul de Internet, termenul trebuie neles ca i un spaiu care cuprinde, identitile i
obiectele care exist n reelele de calculatoare i sunt folosite de indivizii umani n diverse
scopuri [Chi04].
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
Introducere n sistemele de procesare a informaiei 5
ultimii 10 ani ntr-un ritm exponenial, cu o rat aproximativ de 60% pe an.
Cercettorii susin c progresele arhitecturale au o pondere mai mare dect
cele tehnologice. Tendinele tehnologice se refer la creterea gradului de
integrare al tranzistorilor pe cip, creterea frecvenei ceasului procesorului,
diminuarea timpul de acces la memorie, reducerea costurilor de
implementare hardware la aceeai putere de calcul ori capacitate de
memorare etc. Tendinele arhitecturale urmresc exploatarea i creterea
paralelismului la nivelul instruciunilor att prin tehnici statice ct i
dinamice sau hibride (cazul arhitecturii IA-64, procesorul Intel Itanium), o
ierarhizare a sistemului de memorie prin utilizarea unor arhitecturi evoluate
de memorii tip cache, reducerea latentei cii critice de program, etc.
n cadrul unor prestigioase conferine tiinifice internaionale dedicate
microarhitecturilor avansate de procesare a informaiei (1999-2007) se
agreeaz tot mai mult ideea potrivit creia pentru a continua i n viitor
creterea exponenial a performanei microprocesoarelor, sunt necesare
concepte noi, revoluionare chiar, pentru depirea limitrilor paradigmei
actuale din punct de vedere conceptual. Exist nc o puternic tendin de
specializare ngust care face adesea ca abordarea domeniului s fie una
nchis n tipare preconcepute. Abordri recente, arat ns c sinergia unor
instrumente aparent disjuncte ale tiinei calculatoarelor converge spre
realizri novatoare ale acestui domeniu de cercetare (arhitectura
calculatoarelor i inteligena artificial). Alte posibile soluii constau n
abordri integratoare de gen hardware-software, tehnologie-arhitectur,
algoritmi, concepte, metode.
Cercetrile n domeniul tiinei Calculatoarelor trebuie s aib un
caracter fundamental, i se recomand a se efectua n universiti
ntruct implic investigarea unor aspecte noi, neimplementate n
actualele microprocesoare. Comunitatea academic i industrial
internaional investete bugete importante n cercetarea arhitecturilor
noi de calcul. Astfel de exemplu, programe de cercetare europene de tip
FP6 (HiPEAC - High-Performance Embedded Architecture and
Compilation) sunt finanate de ctre Uniunea Europeana cu fonduri de
milioane de euro. Abordarea cantitativ i calitativ a acestui domeniu
de studiu i cercetare n Romnia reprezint o necesitate formativ dar
i o necesitate legat de meninerea cercetrii tiinifice romneti n
cadrul tendinelor i standardelor actuale de calitate din Europa de
Vest, Japonia i SUA. Consider c mediul universitar este ideal pentru
dezvoltarea unor asemenea cercetri fundamentale cu privire la
tehnologia informaiei, inclusiv prin diseminarea rezultatelor ctre
studenii anilor terminali i celor masteranzi.
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
6 Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware - Software
Aceast lucrare reprezint o introducere axat pe nelegerea
principiilor fundamentale ale tiinei i ingineriei calculatoarelor i este
destinat n primul studenilor din anul I ai studiilor de licen, dar i celor
care doresc s ptrund n tainele calculatoarelor i care vd n acestea nu
doar simple instrumente de lucru. Cartea de fa, bogat n aplicaii practice,
se bazeaz n parte pe structura lucrrilor Introduction to Computing
Systems: from bits & gates to C & beyond [Patt03] i Computer Organisation
and Design: The Hardware/Software Interface [Pat05], cri folosite ca
referin la cursul de Introducting to Computing Systems introdus pentru
prima dat n universitile americane n toamna anului 1995 de ctre
Profesorul Kevin Compton de la Universitatea Michigan. n acest moment
este predat n mai bine de 75 de universiti americane i la cursuri nrudite
de gen: Introduction to Computing for Biomedical Engineers, Computer
Systems and Programming in C, abordarea optim fiind de 2 semestre. De
asemenea, mai sunt folosite drept referine o suit de peste 30 de lucrri
cri i articole tiinifice att din domeniul software (centrate pe limbaje
i tehnici de programare, compilatoare, structuri de date) ct i hardware
(focalizate pe circuite digitale, automate secveniale, microarhitecturi de
procesare) cu scopul de a exemplifica mai bine necesitatea abordrii
integratoare hardware-software a domeniului tiinei i ingineriei
calculatoarelor. Accentul n lucrarea de fa nu este pus pe memorarea
detaliilor tehnice ci pe interfaa dintre ceea ce software-ul necesit i
respectiv ceea ce hardware-ul poate executa. Sunt prezentate noiuni
introductive dar cu caracter fundamental aferente mai multor discipline din
domeniul tiinei calculatoarelor: limbaje de programare, algoritmi i
structuri de date, compilatoare, sisteme de operare, respectiv arhitectura
calculatoarelor, sisteme cu microprocesoare.
U Abordarea bottom-up a crii este axat pe dou componente:
Structura de baz a calculatoarelor folosind simulatorul LC-3
(Little Computer
www.ece.utexas.edu/~ambler/ee306/Software&Doc/LC3WinGuide.pdf)
dezvoltat la Catedra de Calculatoare i Inginerie Electric,
Universitatea din Austin, Texas. Se pornete de la tranzistoare MOS,
pori logice, bistabili, structuri logice (Multiplexoare, Decodificatoare,
Sumatoare, memorii). Se continu cu modelul de execuie von
Neumann, cu arhitectura unui calculator (procesor) simplu LC-3, cu
limbajul de asamblare aferent acestui procesor. Sunt studiate de
asemenea: interfaa cu tastatura i monitorul, apelurile sistem
(ntreruperi software reprezentnd servicii ale sistemului de operare
prin instruciuni dedicate), modurile de adresare pentru instruciunile
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
Introducere n sistemele de procesare a informaiei 7
cu referire la memorie (load / store), mecanismul de apel i revenire
din subrutin.
Exemplificarea la nivelul limbajului C i legtura sau implicaiile
n hardware a structurilor de control, a diverselor tehnici de
alocare a memoriei, lucrul cu stiva, apel de funcii i revenire,
stivele de date aferente funciilor, transmiterea parametrilor n
cazul apelului, recursivitate (care pare magic, dincolo de
nelegere), tablouri i chiar structuri elementare de date. Se va insista,
de asemenea, pe lucrul cu pointeri; pe modul n care C-ul (limbajul,
compilatorul) aloc i acceseaz variabile. Se va exemplifica
artndu-se diferena dintre adresa unei locaii de memorie (p din
declaraia int *p;) i coninutul acesteia (*p din aceeai declaraie).
Se va demonstra ineficiena la nivelul arhitecturii a modului de
adresare indirect memorie (la o adres n memorie se afl adresa
operandului care va fi folosit **cap, n cazul transmiterii de
parametrii unei funcii prin referin).
Aspectul novator al abordrii va consta n prezentarea interfeei
arhitectur (ISA, limbaj de asamblare specific) aplicaie de nivel nalt
(incluznd compilatorul ca i generator de cod pentru respectiva
arhitectur).
U Ce este LC-3 ?
Simulator care descrie funcionarea unei arhitecturi pe 16 bii;
Arhitectura nglobeaz cele mai importante caracteristici ale
procesoarelor Intel 8088 folosit n primul sistem IBM PC n 1981,
Motorola 68000 folosit la Macintosh 1984, sau Intel Pentium III
integrat n sistemele anilor 2000. Simulatorul permite execuia
programelor scrise n limbaj de asamblare LC-3, depanare interactiv
stabilire de puncte de ntrerupere, execuie pas cu pas, vizualizare
coninut regitrii. n urma etapei de asamblare codul surs asamblare
este translatat n limbaj main. De asemenea, poate fi vizualizat i
fiierul care conine tabela de simboluri.
Include porturi de I/O, interfaare cu tastatura i monitorul, apeluri
sistem (ntreruperi software reprezentnd servicii ale sistemului de
operare prin instruciuni), salturi condiionate pe coduri de condiie
=0, 0, set minimal de instruciuni, moduri de adresare pentru
instruciunile cu referire la memorie (load / store) indirect registru,
indexat, mecanism de apel i revenire din subrutin (recursivitatea
determin necesitarea salvrii adresei de revenire n programul apelant
n momentul apelului).
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
8 Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware - Software
Simulatorul arhitecturii LC-3 permite testare / depanare a programelor
scrise n limbaj de asamblare, stabilire de puncte de ntrerupere. De la
adresa http://users.ece.utexas.edu/~ambler/ee306/software&doc.htm
pot fi descrcate n mod gratuit pentru utilizare n scop didactic att
simulatorul LC-3 (LC301.exe), un simulator realizat n Macromedia
Flash Player versiunea 6, care descrie operaiile de citire scriere
dintr-o memorie cu 4 locaii avnd 3 bii fiecare (memory.exe),
precum i ghidul de utilizare al simulatorului LC-3.
1.1. CALCULATORUL DISPOZITIV UNIVERSAL DE
CALCUL
Universalitatea
Un sistem de calcul
2
(calculatorul) trebuie s ofere urmtoarele
funcionaliti:
cum s adune / scad dou numere
cum s nmuleasc / mpart dou numere
cum s ordoneze alfabetic
nu trebuie proiectat sau cumprat un calculator nou pentru fiecare
nou operaie care trebuie rezolvat.
dac este definit un alt set de instruciuni acelai calculator trebuie
s opereze cu ele.
Istoric
Exceptnd abacul (strmoul socotitoarei folosit pentru prima dat,
cu peste 2000 de ani n urm n China), se poate spune c mainile de calcul
au aprut cu mult (300 de ani) naintea calculatoarelor de azi. Acestea pot
fi clasificate n:
Dispozitive analogice (msurarea unor cantiti fizice cum ar fi
tensiune, curent). Maini de adunat, nmulit folosind diverse rigle
2
Conform enciclopediei Wikipedia [Wik], termenul de sistem de calcul reprezint o
combinaie de componente hardware i software. Un sistem de calcul tipic conine o
memorie i un set de stri care definesc legtura dintre intrrile i ieirile sistemului. Pe
parcursul acestei lucrri s-a folosit pentru simplitate n loc de sistem de calcul noiunea de
calculator. Pe lng calculator ns, sisteme de calcul mai pot fi: sisteme dedicate din
aparatele electrocasnice, din automobile, dispozitive PDA (Personal digital assistants), etc.
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
Introducere n sistemele de procesare a informaiei 9
gradate logaritmice. Sunt caracterizate de acuratee sczut (Ex:
ceasul).
Dispozitive digitale (calculeaz manipulnd un set finit de digii
sau caractere).
U Prima main de calcul funcional a fost construit de ctre Blaise
Pascal n anul 1642. Reprezenta o socotitoare mecanic, construit din
roi dinate i o manivel, cu care se puteau efectua adunri i scderi.
U n anul 1674, Gottfried von Leibniz a construit o main de calcul care
pe lng adunri i scderi efectua i nmuliri i mpriri. Cutnd s
simplifice mecanismele de efectuare a calculelor a considerat cel mai
potrivit sistemul binar de numeraie.
U Charles Babbage a proiectat n 1840 prima main analitic de uz
general, care (dac ar fi fost posibil construirea ei) ar fi fost
programabil, avnd patru componente principale: magazia (memoria),
moara (unitatea de calcul), seciunea de intrare (cititorul de cartele) i
seciunea de ieire (perforatorul sau imprimanta).
U n 1854 matematicianul englez George Boole a inventat calculul logic
care folosete numai dou valori (adevrat i fals) cu care se pot efectua
operaii de tip And, Or, Not. Aceste funcii (operatori), numite ulterior
algebr boolean, pot fi uor simulate cu ajutorul unei reele de
comutatoare.
U Konrad Zuse (student german) a creat la sfritul anilor 1930 o serie de
maini de calcul folosind relee electromagnetice.
U Calculatoarele electronice au fost iniial propuse sub forma unui aparat
abstract (descriere matematic) care poate realiza sau simula orice tip
de main mecanic. Forma teoretic a fost introdus de Alan Turing n
1936 la Universitatea Cambridge sub denumirea de maina Turing
universal.
Primele calculatoare construite erau foarte diferite de cele de astzi.
Nu doar ca dimensiuni i capacitate (care depind doar de tehnologie), ci
referitor la structura lor fundamental. Acele calculatoare erau construite
pentru a rezolva o singur problem; nu erau universale. Ele constau dintr-o
colecie de uniti funcionale, care puteau face calcule simple.
Programatorii aveau sarcina de a conecta unitile funcionale ntre ele cu
fire (srme), pe care le inserau manual n tot felul de mufe. De exemplu,
dac vroiau s calculeze (a+b)
2
, programatorii luau o unitate care fcea
adunri i una care fcea nmuliri i le cuplau ca n figura 1.1.
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
10 Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware - Software
Figura 1.1. Implementarea n hardware a expresiei (a+b)
2
. Variabilele devin srme,
iar operaiile sunt executate de uniti funcionale
Ideea de a descrie un program folosind un limbaj (i nu prin conexiuni
ntre uniti funcionale) este mai veche; n 1936 Alan Turing folosise
noiunea de main Turing universal (U) pentru a descrie un calculator
universal, care poate executa orice program. Programele erau stocate n
memoria calculatorului, reprezentate ca iruri de numere. Maina Turing (T)
este un calculator abstractizat
(figurahttp://www.cs.cmu.edu/~mihaib/articles/complex/complex-html.html
- turing 1.2) compus din urmtoarele piese [Bud99]:
Figura 1.2. Maina Turing
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
Introducere n sistemele de procesare a informaiei 11
1.
n caracter din alfabetul nostru; banda este iniial plin
cu spaii, mai puin partea de la nceput, unde este scris irul cu
le de intrare memorie cu acces linear;
2. e poate mica deasupra benzii, la
n
itate de control, care conine un numr finit de reguli. Unitatea
c are moment dat ntr-o stare; strile posibile
t n numr finit. Fiecare regul are forma
scriu pe band litera Y;
m itire/scriere n direcia D.
n pofid aina Turing poate calcula orice poate fi
calculat cu cele mai performante supercomputere. Un algoritm de calcul este
descris de o astfel de main, prin toate strile posibile, i toate aceste reguli,
numi
e c
ma
ime orice algoritm, s ofere ceva care s fie construibil, i s
poat
Din cauza asta logi
Turing este modelul cel m de calcul care poate fi propus; acest
enun
Church. Ace
nainte de a putea analiza orice alt lucru privitor la teoria complexitii.
O band infinit de hrtie cu ptrele; n fiecare ptrel se poate
scrie exact u
date
Un cap de citire-scriere, care s
st ga sau la dreapta;
3. O un
de ontrol este la fiec
sun fixate dinainte, i sunt
urmtoare:
Dac
sunt n starea Q1;
sub capul de citire este litera X;
atunci:
trec n starea Q2;
ut capul de c
a simplitii ei, m
te reguli de tranziie, care indic cum se trece de la o stare la alta.
De exemplu:
if ((stare_veche==Qi)&&(intrare==Ti))
{
ieire=Oj;
stare_nou=Qj;
}
Orice alte modele de calcul care au fost propuse de-a lungul timpului,
au fost dovedite a fi mai puin expresive, sau tot att de expresive ct maina
Turing. Nimeni nu a fost n stare, pn n prezent, s demonstrez
ina Turing are limitri: adic, dispunnd de operaii elementare
capabile s expr
face lucruri pe care maina Turing nu le poate face.
cianul Alonzo Church a emis ipoteza c maina
ai general
, care nu este demonstrabil n sens matematic, se numete Teza lui
sta este un postulat asupra cruia trebuie czut de acord
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
12 Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware - Software
Complexitatea unui model de calcul prin prisma modelului Turing, se
definete prin:
Timpul de calcul pentru un ir dat la intrare, este numrul de mutri
fcut de maina Turing nainte de a intra n starea
terminat;
Spaiul consumat pentru un ir de intrare, este numrul de csue de
t de timpul de
execu
Cnd se spune c maina Turing este la fel de puternic ca orice alt
la fel de repede ca orice alt
mode
mai asemntor cu o memorie RAM obinuit.
i; maina Turing universal [Bud99]
este ech
De fapt i o main
Turin
calculato
sunt pro
Pe
lucruri:
Descrierea oricrei maini Turing (T) este finit, i poate fi fcut
cu alfabetul nostru. Dac am o main Turing, pot enumera strile
ei i regulile de tranziie sub forma unui ir de caractere;
Maina universal (U) primete dou intrri pe band: una este
descrierea mainii de simulat (ce trebuie s calculeze), iar a doua
este intrarea pentru care trebuie s simuleze m ina. Maina
universal apoi urm le m inii simulate,
folosind pro
pe band pe care algoritmul le folosete n timpul execuiei
sale.
Anticipnd puin complexitatea unui algoritm este da
ie al acestuia n situaia cea mai defavorabil. Timpul de execuie al
unui algoritm pentru un anumit set de date de intrare este determinat de
numrul de operaii primitive sau "pai" executai i se calculeaz ca suma
tuturor timpilor de execuie corespunztori (pas = linia i din pseudocod
executat ntr-o durat (presupus) constant de timp ci).
model de calcul, nu nseamn c poate calcula
l de calcul, ci c poate calcula aceleai lucruri.
Se pot imagina tot felul de modificri minore ale mainii Turing, care
o vor face s poat rezolva anumite probleme mai repede. De exemplu,
putem s ne imaginm c maina are dreptul s mute capul la orice csu
dintr-o singur micare, fr s aib nevoie s mearg pas-cu-pas; atunci
banda s-ar comporta
Simulr
Demonstraia faptului c maina Turing este att de puternic nct
ivalent cu orice alt model propus de calcul s-a fcut prin simulare.
maina Turing este att de puternic nct se poate constru
g care s simuleze orice alt maina Turing posibil. Att
arele ct i maina universal Turing pot calcula orice ntruct ele
gramabile.
ntru a nelege cum este posibil aa ceva, trebuie realizate dou
a
a rete regulile de tranziie a
pria ei band n acest scop.
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
Introducere n sistemele de procesare a informaiei 13
Figura 1.3. Maina Turing universal
(model abstract de calcul al unui produs dintre un termen i o sum)
Dezvoltarea dispozitivelor de calcul a fost influenat de cel de-al doilea
rzboi mondial prin ncercrile de calcul a traiectoriilor rachetelor
Collosus i Eniac i respectiv de decodare a codului Enigma folosit de
Germania pentru protecia mesaje
U
lor. Primul calculator digital de
U
e sunt cuplate unitile funcionale, ci este
stocat n memorie, fiind descris folosind un limbaj numit cod-main. n
cod-main, operaiile de executat sunt codificate sub forma unor
numer printr-un
ir de ile
succes, ENIAC (Electronic Numeric Integrator and Computer)
nlocuiete releele electromagnetice cu tuburile electronice. A fost
construit n 1946 de John Mauchly i Presper Eckert de la
Universitatea Pensylvania i coninea 18000 de tuburi electronice i
1500 de relee. Cntrea 20 de tone, avea 20 de regitri, care reinea
fiecare cte un numr zecimal de 10 cifre, era programat prin
intermediul a 6000 de comutatoare i era posibil efectuarea a pn la
500 de adunri sau scderi i 300 de nmuliri pe secund. A fost folosit
de armata american pn n 1952.
n anii '40, matematicianul John von Neumann analizeaz starea de
fapt a calculatoarelor i scrie n 1945 un raport intitulat First Draft of a
Report on the EDVAC (Prima ciorn a unui raport despre EDVAC
Electronic Discrete Variable Automatic Computer), n care sugereaz
o arhitectura revoluionar. n aceast arhitectur, programul nu mai este
reprezentat de felul n car
e numite instruciuni. Programul de executat este descris
instruciuni, care se execut consecutiv. Pe lng unit
funcionale care fac operaii aritmetice, calculatorul mai are o unitate de
control, care citete secvenial instruciunile programului i care trimite
semnale ntre unitile funcionale pentru a executa aceste instruciuni.
Rezultatele intermediare sunt stocate n memorie. Aceast arhitectur se
numete von Neumann.
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
14 Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware - Software
Figura 1.4. Schema simplificat a arhitecturii von Neumann
Marea majoritate a calculatoarelor din ziua de azi sunt bazate pe aceast
arhitectur; noiunea de limbaj-main, i cea nrudit, de limbaj de
programare, folosite pentru descrierea programelor, sunt c
oncepte foarte
ai rapide i
mai ieftine dect cele precedente. A aprut noiunea de familie de
calculatoare: maini care au acelai limbaj de asamblare dar au puteri
(performane) i capaciti diferite. S-a introdus noiunea de
multitasking; aceasta implic existena n memorie a mai multor
programe n acelai timp: cnd unul dintre ele ateapt terminarea unei
operaii de intrare / ieire, un altul poate efectua calcule.
A patra generaie de calculatoare (ncepnd cu 1980) poart
amprenta circuitelor integrate pe scar larg VLSI. Aceast
tehnologie a permis a permis plasarea pe un singur cip a sute de
naturale pentru toi cei care manipuleaz calculatoarele. Von Neumann
propune calculatorul s fie vzut ca sistem de procesare a informaiei
(bazat pe procesor CPU), adic un mecanism care direcioneaz dar
i realizeaz procesarea informaiei.
Apariia tranzistorului, nlocuitorul tuburilor electronice a generat
nceputul celei de-a doua generaii de calculatoare electronice, a
minicalculatoarelor (1955-1965). PDP-1, realizat de firma Digital
Equipment Corporation este un reprezentant al acestor calculatoare. Fa
de cel mai rapid calculator din lume la acea dat, IBM 7090, un
calculator cu tranzistori, PDP-1 era de 2 ori mai rapid si de 9 ori mai
ieftin.
A treia generaie (1965-1980) a debutat prin inventarea de ctre
Robert Noyce a circuitului integrat de siliciu care permitea montarea
pe o singur pastil de siliciu numit cip, de civa centimetri ptrai, a
zeci, apoi mii de tranzistoare. Descoperirea cipului a permis
constructorilor de calculatoare s creeze maini mai mici, m
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
Introducere n sistemele de procesare a informaiei 15
milioane de componente electronice elementare. Datorit preului sczut
al calculatoarelor s-a crea
persoan; a nceput perioada calcu
t posibilitatea achiziionrii acestora de fiecare
latoarelor personale (PC).
Procesoarele anilor 80 erau construite din 10 sau mai multe plci
nt capabile s fac
uman investit n respectivul program aflat n execuie.
Marvin Minski, afirma despre programele de Inteligen
Principiu e problemele ce se doresc a fi rezolvate,
sistem etc., sunt scrise ntr-un limbaj (i ntr-o
limb i
carac ractic, de la problema de
rezolv
loc o e
parcu
electronice, fiecare de dimensiuni 18 (inch) i coninnd 50 sau mai
multe componente electronice integrate. La nivelul anilor 2000
procesoarele sunt integrate pe o singur pastil de siliciu de dimensiune
sub 1 (inch). n cazul microprocesoarelor, gradul de integrare al
tranzistorilor pe cip crete cu cca. 55% pe an. Tehnologia de integrare a
microprocesoarelor a evoluat de la 10 microni (1971) la 0.18 microni
(2001), la 0.13 microni (2003) versiunea Northwood a procesorului
Intel Pentium 4 i 0.09 microni (2004) versiunea Prescott a aceluiai
procesor. Frecvena ceasului crete i ea cu cca. 50% pe an.
1.2. STRUCTURA UNUI SISTEM DE CALCUL.
PRINCIPII DE BAZ
Principiul nti P1: Toate calculatoarele (att cel mai mare resurse
foarte mari, ct i cel mai mic, att cel mai rapid frecven ridicat, ct i
cel mai lent, att cel mai scump ct i cel mai ieftin) su
exact aceleai lucruri dac au suficient timp i suficient memorie.
Inteligena aparent a unui sistem de calcul provine din cantitatea
de inteligen
Artificial din anii
80 c: aceste programe care par inteligente iau decizii la fel de proaste
ca i omul numai c mult mai repede [Min82].
l al doilea P2: Toat
ele de operare, compilatoarele,
uzual engleza). Dar toate sunt rezolvate prin electroni
teristici ale acestora (deplasare, vitez, etc). P
at la tensiunea care antreneaz (direcioneaz) fluxul de electroni au
serie de transformri sistematice (dezvoltate i mbuntite p
rsul a mai bine de 50 de ani).
Viitorul va aduce probabil calculatoare cuantice, bazate pe procesoare
moleculare organice, conform calculabilitii ADN, etc.
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
16 Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware - Software
Nivele de transformare: de la Problem de nivel nalt la Circuit
tronic
Etapele succesive prin care se ajunge de la problema de rezolvat
scris ntr-un mod abstract) pn la tensiunea care antreneaz fluxul de
troni sunt urmtoarele:
1. Problem (High level)
2. Algoritm
elec
(de
elec
4.
5.
7.
1. Pro
2. Alg t de operaii
une
pro ice procedur de calcul
bi
:
U Claritatea operaiile algoritmului i succesiunea executrii lor
trebuie s fie descrise clar, precis, fr ambiguiti, astfel nct s
nilor algoritmului
U
goritm.
U i
e
L
algoritmilor care v
reducer a
calcul de ti i al sistemelor dedicate.
3. Limbaj de programare
Arhitectura Setului de Instruciuni (ISA)
Determinarea optim a microarhitecturii
6. Proiectarea la nivel de circuit logic (combinaional / secvenial)
Implementarea circuitelor folosind tehnologia CMOS
blemele sunt definite n limbaj natural. Dezavantaj ambiguitatea.
oritmul reprezint o succesiune finit i ordona
univoc determinate, efectuate mecanic, care aplicate datelor iniiale ale
i probleme dintr-o clas dat, asigur obinerea soluiei acelei
bleme. Cu alte cuvinte un algoritm este or
ne definit care primete o anumit valoare sau o mulime de valori ca
date de intrare i produce o anumit valoare sau mulime de valori ca
date de ieire. Comportarea unui algoritm poate fi diferit n funcie de
datele de intrare. Proprietile algoritmilor sunt
permit o executare mecanic, automat a aciu
U Generalitatea un algoritm permite, nu rezolvarea unei singure
probleme particulare, ci a unei ntregi clase de probleme.
Finitudinea executarea algoritmului trebuie s cuprind un numr
finit de operaii, chiar dac numrul lor este foarte mare. Aceast
proprietate difereniaz metoda de calcul de al
Ef dintre algoritmii care rezolv ciena o anumit problem,
prezint interes numai algoritmii performani pentru care numrul
raiilor care se execut este cel m op ai mic.
a momentul actual sunt realizate cercetri serioase asupra
izeaz nu numai o mbuntire a performanei ci i o
e puterii consumate, vital mai ales la nivelul dispozitivelor de
p handheld
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
Introducere n sistemele de procesare a informaiei 17
3.
a)
m
artificial.
Pascal dezvoltat pentru nvarea studenilor s programeze
(foarte apropiat de pseudocod).
b) de nivel sczut (low dependente de maina pe care se proceseaz).
Exist cte un astfel de limbaj specific fiecrei familii de procesoare.
Limbajul de asamblare.
4. Dup cum se poate observa i din figura urmtoare (fig. 1.5),
Arhitectura Setului de Instruciuni (ISA) reprezint interfaa dintre
software (programele de aplicaie / sistem de operare) i hardware-ul
care l execut. ISA specific modul de organizare a memoriei (zon de
date statice i dinamice, de cod, de stiv, zon rezervat nucleului
sistemului de operare), setul de regitri, setul de instruciuni, formatul
instruciunii, tipurile de date utilizate i modurile de adresare
(mecanismul prin care calculatorul / procesorul localizeaz operanzii).
Limbajele de programare sunt de dou tipuri:
de nivel nalt (independente de maina pe care se proceseaz
icroarhitectura hardware)
C destinat manipulrii structurilor hardware ale calculatoarelor
(regitrii, memorie, porturi)
Fortran rezolvarea calculelor tiinifice
Cobol rezolvarea problemelor de procesare a datelor specifice
afacerilor (aplicaii economice)
Prolog folosit n aplicaii care necesit proiectarea unui sistem
expert.
LISP utilizat n rezolvarea problemelor de inteligen
Figura 1.5: Interfaa hardware / software
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
18 Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware - Software
Cele mai cunoscute ISA la nivelul anului 2001 sunt:
IA-32 ISA (introdus de Intel Corporation n 1979 i utilizat n
prezent i de AMD)
PowerPC (folosite de IBM i Motorola)
Tr
ISA-ul
(uzua compilatorului. Este
denumit
program
aparin
transformare
ieire). Se disting dou
zis:
ana
prog
e:
. Translatarea
C
a i
binaie de 4 bi .
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
Reprezentarea informaiilor. Conversii de valori ntre sisteme de numeraie. Aritmetic
binar. Operaii logice 33
Hexa imal Zecimal Binar zec
0000 0 0
0001 1 1
0010 2 2
0011 3 3
0100 4 4
0101 5 5
0110 6 6
0111 7 7
1000 8 8
1001 9 9
1010 A 10
1011 B 11
1100 C 12
1101 D 13
1110 E 14
1111 F 15
Tabelul 2.2. Echivalena binar hexazecimal zecimal.
Exemple de conversie binar hexazecimal i invers:
2.1.2 MN
te important s se stabileasc de la nceput
numrul de bii pe care se face reprezentarea.
1011.0011.1100.11
2
=> B3.CC
16
1FD
16
=> 1.1111.1101
2
101.1111.011
2
=> 5.F6
16
33.3
16
=> 11.0011.0011
2
. REPREZENTAREA NUMERELOR CU SE
Pentru reprezentarea numerelor pozitive i negative se aloc un bit
suplimentar, care indic semnul. Exist 3 forme de reprezentare a acestor
numere:
- prin semn i magnitudine (mrime) sau cod direct
- n complement fa de unu sau cod invers
- n complement fa de 2 sau cod complementar
Indiferent de reprezentare, bitul de semn este egal cu 0 dac numrul
este pozitiv i 1 dac numrul este negativ. Pentru evitarea ambiguitilor, la
acest tip de reprezentare es
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
34 Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware - Software
Rep
num
numere pozi
a re
10 2 10 2
129 -> 0000.0000.1000.0001 -129 -> 1000.0000.1000.0001
2
ii
entr
24 | -> 0001.1000 19 -> 0001.0011 |-127 | -> 0111.1111
d
complementar:
se oare.
i la
nt
1
rezentarea prin semn i magnitudine (SM) cod direct:
Se reprezint valoarea absolut a numrului pe n-1 poziii binare (n
rul total de bii ai reprezentrii) i se adaug un bit de semn (0 - pt.
tive i 1 pt. numere negative) pe poziia cea mai semnificativ
prezentrii. De exemplu:
-21
10
-> 1001.0101
2
17 -> 0001.0001 0 -> 0000.0000
(repre i) zentri pe 8 bi
129
10
-> valoarea absolut nu se poate reprezenta pe 7 bii (ca n cele
trei exemple anterioare) => reprezentarea se poate face numai
pe un numr mai mare de bii (minim 9)
10 2 10
(reprezentri pe 16 bii)
Dei aceast form de reprezentare este simpl, ea nu este
avantajoas pentru implementarea operaiilor aritmetice ntruct
unitatea aritmetico-logic ar trebui s in cont de semnul operanzilor.
Reprezentarea n complement fa de 1 (C1) cod invers:
Numerele pozitive se reprezint ca i n cazul anterior, adic n-1 b
p u valoare i 1 bit, egal cu 0 pentru semn. n cazul numerelor negative
se complementeaz fiecare poziie binar a reprezentrii valorii absolute a
umrului, inclusiv bitul de semn. De exemplu: n
|-
10 10 10
-24
10
-> 1110.0111 0001.0011 -127
10
-> 1000.0000
Se observ c -127 + 127 = 1111.1111. Dar x+x=0 = 0000.0000
xR Dezavantaj: Exist dou reprezentri ale numrului 0.
Reprezentarea n complement fa de 2 (C2) - co
Numerele ve int ca i cazu nteri poziti reprez n rile a
Reprezentarea numerelor negative se obine prin adugarea unei unit
eprezentarea n compleme fa de 1. De exemplu: r
|-21
0
| -> 0001.0101 15
10
-> 0000.1111 |-112
10
| -> 0111.0000
-21
10
-> 1110.1010+ C1 0000.1111 C1 -112
10
-> 1000.1111+ C1
1 1
-21
10
-> 1110.1011 C2 0000.1111 C2 -112
10
-> 1001.0000 C2
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
Reprezentarea informaiilor. Conversii de valori ntre sisteme de numeraie. Aritmetic
binar. Operaii logice 35
Reprezentarea n complement fa de 2 este avantajoas deoarece
simplific modul de calcul al operaiilor aritmetice. La operaiile de adunare
i scdere unitatea aritmetic nu trebuie s in cont de semnul operanzilor,
rezultatul generat fiind corect indiferent de semn. Mai mult rezultatul este
corec trict
pozitiv
adunar
:
umere cu semn Numere fr semn
1100.1111 ->207 207
nt fa de 2. Celelalte dou forme s-au folosit la primele
calcu
a reprezentarea n complement fa de 2, dac se trece de la o
rep p u m
extinderea semnului, nct n noua i
semnul numrului s se egula const n i de
semn n fiecare poziie iunii extinse.
t i n cazul n care se consider c reprezentrile sunt numere s
e. Pe baza acestei observaii se poate utiliza aceeai unitate de
e/scdere att pentru numere pozitive ct i pentru numere cu semn.
De exemplu
N
-64+ 1100.0000+ 192+
15 0000.1111 15
-49
0011.0001 -> 49
n ziua de azi toate calculatoarele utilizeaz reprezentarea n
compleme
latoare.
Observaie!!! Reprezentarea n cod complementar a unui numr
pozitiv nu nseamn complementarea numrului, ci reprezentarea sa n
form pozitiv, care este identic n cele trei forme de reprezentare (SM, C1
i C2).
L
rezentare e 8 bii la una pe 16 bii sa ai mare atunci este necesar
n aa fel reprezentare valoarea
pstreze. R copierea valorii bitulu
binar a por De exemplu:
Valoare Reprezentare C2 pe 8 bii Reprezentare C2 pe 16 bii
-6 1111.1010 1111.1111.1111.1010
0 0000.0000 0000.0000.0000.0000
6 0000.0110 0000.0000.0000.0110
Ta
Con
Consid e 8 bii
(a
7
a
6
a )
intervalului [
belul 2.3. Extinderea semnului la reprezentarea pe mai muli bii dect sunt
necesari
ver a n si din bi ar n zecimal a numerelor ntregi cu semn
ernd o valoare reprezentat n cod complementar p
1
a
0
rezult c valoarea corespondent n zecimal aparine
-2
7
, 2
7
-1]. Conversia se realizeaz n urmtorii pai:
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
36 Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware - Software
1. Se e
atunci numrul reprezentat este pozitiv i se poate
tarea n cod complementar a numrului
agnitudinea (valoarea absolut) se determin cu formula:
. n final dac numrul iniial este negativ atunci valorii absolute
ntruct cel mai semnificativ bit este 1 rezult c numrul este negativ.
Se determin reprezentarea n cod complementar a numrului pozitiv care
niial (11000111) fiind negativ
rezult c valoarea ntreag corespondent n zecimal acestuia este 57.
e utilizeaz pentru reprezentarea unor
valori foarte mari, foarte mici sau dac merele au o parte fracionar.
Pentru reprezentarea n virgul rul este adus la o form
norm o parte strict subunitar (mantisa) care
se nm antis prima cifr de
dup
f reprezint partea fracionar a lui N
xamineaz cel mai semnificativ bit.
Dac a
7
=0
trece la determinarea magnitudinii sale (vezi pasul 2).
Dac a
7
=1 atunci numrul reprezentat este negativ. n acest caz
se determin reprezen
pozitiv care are aceeai magnitudine i se calculeaz mrimea
acestuia.
2. M
a
6
2
6
+ a
5
2
5
++ a
0
2
0
(practic se adaug puterile lui 2 acolo unde
coeficienii a
i
sunt 1).
3
determinate la punctul 2 i este prefixat simbolul .
Exemplu:
Se d exprimat n cod complementar numrul: 11000111. S se
determine valoarea lui n zecimal.
are aceeai magnitudine i anume: 00111000+1=00111001. Magnitudinea
acestuia este: 2
5
+ 2
4
+2
3
+2
0
=57. Numrul i
2.1.3. REPREZENTAREA NUMERELOR N VIRGUL
FLOTANT. FORMATUL IEEE 754
Aceast form de codificare s
nu
flotant num
alizat (standard) n care exist
ulete cu o putere a lui 2 (exponentul). La m
virgul este strict diferit de 0.
N
e
=1,f2
unde,
N este numrul reprezentat n virgul mobil
1,f se numete mantis i trebuie s respecte relaia de normalizare:
1 | 1,f | < 2
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
Reprezentarea informaiilor. Conversii de valori ntre sisteme de numeraie. Aritmetic
binar. Operaii logice 37
2 baza sistemului de numeraie
e reprezint exponentul bazei sistemului de numeraie
IEEE (Institute of Electrical and Electronics Engineers) a dezvoltat un
standard pentru reprezentarea numerelor n virgul mobil i operaiile
aritm litarea portabilitii
programe
n 1985. ulte coprocesoare aritmetice, printre care i cele Intel
pentr a
n reprez sesc 3 cmpuri (vezi tabelul 2.4):
- un bit de semn (S) indic semnul numrului
- un r agnitudinea
num
ifre
etice n aceast reprezentare. Scopul era faci
lor ntre diferite calculatoare. Standardul IEEE 754 a fost publicat
Cele mai m
u f milia de microprocesoare 80x86, se conformeaz acestui standard.
entarea standard IEEE se folo
cmp pentru exponent (ca acteristic) indic m
rului
- un cmp pentru mantis (fracie) indic un set de c
semnificative ale numrului
31 30...23 22.0
S Caracteristic Fracie
T
recizie) 32 bii 1 semn + 8
tic + 56 mantis
deplasat. Pentru formatul scurt,
depla iar pentru formatul lung deplasamentul este
1023 xime (255, respectiv 2047) ale
carac
cuprins
reprezentate n precizie dubl este cuprins ntre 2,210
-308
i 1,710
308
.
Muli echivaleaz n mod greit reprezentarea n virgul flotant cu
mulimea numerelor reale din matematic. Exist cteva deosebiri eseniale:
abelul 2.4. Reprezentarea unui numr n virgul mobil simpl precizie
Standardul definete trei formate:
Formatul scurt (simpl p
caracteristic + 23 mantis
Formatul lung (dubl precizie) 64 bii 1 semn + 11
caracteristic + 52 mantis
Formatul temporar (precizie extins) 80 bii 1 semn + 24
caracteris
Caracteristica reprezint exponentul
samentul este 127 (7Fh),
(3FFh). Valorile minime (0) i cele ma
teristicii nu sunt utilizate pentru numerele normalizate, ele avnd
utilizri speciale.
NS = (1)
S
Mantis 2
Caracteristic-127
ND = (1)
S
Mantis 2
Caracteristic-1023
Gama numerelor care pot fi reprezentate n precizie simpl este
ntre aproximativ 2,210
-38
i 3,410
38
, iar cea a numerelor
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
38 Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware - Software
- n virgul flotant se reprezint valori discrete i nu domeniu
continuu de valori (submulimi de numere raionale a mulimii
numerelor reale)
- nu pot fi reprezentate numere foarte mari sau foarte mici; de
- rezoluia absolut de reprezentare variaz cu valoarea reprezentat
poate genera surprize datorit
ilor
Op
astf
re.
unztoare exponentului mai mare.
te, atribuind exponentul comun.
a concomitent cu modificarea
- Adunarea (scderea) exponenilor.
mprirea) mantiselor.
Exe Mr96]:
S re rezint l mobil simpl precizie:
= 01 2
4
001
exponentul = 4
Semn
Carac is e
31 30.23 22.0
exemplu sunt probleme n ceea ce privete reprezentarea valorii
zero i a valorilor +/-
- compararea a dou valori flotante
preciziei de reprezentare i a rotunjir
eraii efectuate n virgul mobil
Adunarea i scderea a dou numere n virgul mobil se efectueaz
el:
- Se compar cei doi exponeni pentru a-l determina pe cel mai ma
- Se aliniaz mantisa numrului cu exponent mai mic, prin deplasarea
virgulei coresp
- Se adun / scad mantisele alinia
- Eventual se normalizeaz mantis
exponentului.
nmulirea i mprirea presupun:
- nmulirea (
- Eventuala normalizare a mantiselor.
mple [
se p e numerele n virgu
a) 25
10
(11001)
2
= 1,10
unde:
mantisa = 1,1
fracia = 1001
ul = 0
ter tica = expon ntul + 127 = 131
0 10000011 100100.0
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
Reprezentarea informaiilor. Conversii de valori ntre sisteme de numeraie. Aritmetic
binar. Operaii logice 39
1
2 2
5 4 3 2 1
5
2
= = b)
0 4
2 1111 , 1 11111 , 0 2 2 2 2
2
= = + + + +
nd :
mant
fraci 1
expon tu
Semnul = 0
Caracteristica = exponentul + 127 = 126
.23 22.0
1 2 3
2 2 2 2 31 + + + +
2 32
u e
isa =
a
1,1111
=
en
111
l = -1
31 30
0 01111110 11110.0
c)
3
2 2
3
3
2 0 , 1 001 , 0 2
2
= = =
0
2 8
1
=
unde:
manti =
fracia = 0
sa 1,0
exponentul = -3
Semnul = 1
Caracteristica = exponentul + 127 = 124
31 30.23 22.0
1 01111100 00000.0
Dac se urm t u e trei numere
exprimate mai sus: 25 - 1/8 rezult se obine:
25 - 1/8 = 1,1001 2
4
1,0 2
-3
=1,1001 2
4
0,0000001 2
4
=1,1000111
31 30.23 22.0
re e acum ad narea a dou din cel
2
4
= 11000,111
2
= 24,875
Reprezentarea n virgul mobil a rezultatului este:
0 10000011 10001110.0
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
40 Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware - Software
2.1.4. EZENTAREA INFORMAIILOR
ALF DARDUL ASCII
b form de text
i even
dimensiunea unui caracter. Cel mai utilizat s entru reprezentarea
informaiilor a n standardul Ame Standard
Coding for Info ation Inte nge). Acest s dard utilizea bii pentru
reprezentarea codurilor alfanumerice (8 bi n varianta extins). Sunt
codificate urm rele tipur date:
- litere ri i mici
- cifre zecimale
- semne de punctua
- coduri de editare i formatare a te
- co erulu
Tabelul 2.5 conine cteva exemple de coduri ASCII:
Litere
REPR
ANUMERICE STAN
Informaiile alfanumerice sunt cele care se prezint su
tual conin o grafic simpl bazat pe forme grafice predefinite de
istem p
SCII ( lfa umerice este A rican
rm rcha tan z 7
i
toa i de
ma
ie
xtului
duri de control al transf i de date
Cifre
A 41h 0 30h
B 42h 1 31h
C 43h 2 32h
.... ...
a 61h 9 39h
b 62h
Coduri de formatare
c 63h spaiu 20h
.... CR- retur 0Dh
Semne de punctuaie
LF linie nou 0Ah
. 2Eh
, 2Ch
Coduri de control al
transferului
Operaii aritmetice
XON- pornire
11h
transmisie
+ 2Bh
transmisie
13h
XOFF- oprire
- 2Dh
Tabelul 2.5. Reprezentarea unui numr restrns de caractere din codul ASCII
Standardul "unicode" extinde codificarea ASCII prin adugarea unui
octet suplimentar. Astfel anumite litere speciale (litere greceti, litere arabe,
litere cu semne speciale, etc.) sau semne grafice sunt reprezentate pe 16 bii.
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
Reprezentarea informaiilor. Conversii de valori ntre sisteme de numeraie. Aritmetic
binar. Operaii logice 41
2.1 AREA MAI
Se spune c o im rul este c
pentru rea formaii multimedia sp sar pentru
memorare este semnificativ mai mare dect pentru alte tipuri de informaie.
De exemp entru m a unei imagini spaiu rie variaz
(funcie de rezoluie) ntre cteva sute de koctei i civa megaoktei (vezi
tabelul 2.
Tip de informaie Detalii Cantitatea ie
.5. REPREZENT INFOR ILOR MULTIMEDIA
agine valoreaz ct 1000 de cuvinte. Adev
reprezenta unor in aiul nece
lu p emorare l de memo
6).
de informa
logic bit 1 semnal bipoziional 1
numeric 1 ntreg 16-32 bii
text 1 pagin ~1 KOctet
audio 10 sec., Fmax=20KHz 400 KOctei
video 10 sec.
Fcadre=50Hz100Hz
Rez.=1000*1000
1,5 GOctei
Tabelul 2.6. Cantitatea de informaie (spaiu necesar pentru stocare)
Informaiile multimedia (imagini i/sau sunete) sunt reprezentate
prin eantioane ale semnalului de intrare. Frecvena de eantionare
trebuie s fie n strict corelaie cu frecvena maxim a semnalului de
intrare. Conform teoremei lui Shanonn frecvena de eantionare trebuie s
fie de cel puin dou ori mai mare dect maximul frecvenei semnalului de
intrare [Nic04]. n caz contrar reprezentarea nu este fidel cu realitatea;
apar frecvene inexistente n semnalul iniial (fenomenul de "aliasing"). n
general, se utilizeaz o frecven a semnalului de eantionare cam de 10 ori
frecvena semnalului de intrare, minim de 5 ori din motive de cost (pentru
costuri reduse) i se poate ajunge chiar i la 100 ori.
Semnalul audio este eantionat n timp cu o frecven cuprins ntre
8kHz i 50KHz [Seb, Gor05], funcie de calitatea reprezentrii. Frecvena de
8KHz este acceptabil pentru convorbiri telefonice (unde limea de band
este limitat la 4 KHz), iar frecvene de 40-50KHz sunt necesare pentru
semnale audio de nalt fidelitate (urechea uman detecteaz semnale de
maxim 16-20kHz). Pentru un eantion se aloc de obicei 8 bii asigurndu-
se astfel o plaj de valori pentru variaia de amplitudine de 256 de valori,
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
42 Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware - Software
sufici
rea iniial. Majoritatea schemelor de compresie sunt cu
pierd erea fidel a semnalului
sonor tip de informaie acest fapt
nu es
b/negru numrul de bii
aloca
esit un spaiu de memorie de: (3
octei/pixel)*(1000 pixeli/linie)*(700 linii/cadru)*(50 cadre/sec.)*10
secunde = 1.050.000.000 octei =1Goctet. Este de remarcat faptul c
calculatoare personale actualele nu dispun de o memorie intern care
de 100 de minute necesit
r video se impune utilizarea
unor metode eficiente de compactare, care s reduc spaiul necesar de
memo
ent pentru majoritatea aplicaiilor uzuale. n aceste condiii pentru
memorarea unui semnal sonor de 10 secunde este nevoie de 80-500Koctei.
Pentru reducerea spaiului de memorare se folosesc diferite tehnici de
compresie, prin care acest spaiu se poate reduce pn la aproximativ o
zecime din valoa
ere de informaie, adic nu garanteaz refac
n urma decompactrii. Dar pentru acest
te un impediment, mai mult chiar, algoritmii de compactare au i un
efect de filtrare a semnalului audio.
n cazul informaiilor video se utilizeaz tot un proces de eantionare
n timp a semnalului video de intrare. n acest mod informaia video este
mprit pe puncte (pixeli), linii i cadre. O imagine are o anumit
rezoluie dimensional i cromatic. Rezoluia dimensional se definete
pe dou direcii:
- orizontal numr de pixeli pe o linie i
- vertical numr de linii pe un cadru
Rezoluia cromatic este determinat de numrul de bii alocai
pentru reprezentarea unui pixel. La imaginile al
i variaz de la 1bit/pixel la 8 bii/pixel (imagini cu nuane de gri). O
rezoluie mai mare nu este necesar deoarece ochiul uman nu percepe mai
multe nuane de gri. Pentru imaginile color se aloc separat bii pentru
cele 3 culori de baz (rou, verde i albastru) sau pentru tripletul culoare /
luminan / intensitate.
Pentru imagini n micare (film) se achiziioneaz cadre (imagini
statice) cu o frecven de eantionare cuprins ntre 10Hz (film de slab
calitate, transmisibil pe o legtur Internet de mic vitez) i 50-70Hz (film
de calitate TV sau chiar mai bun) [Seb, Gor05].
n aceste condiii memorarea unei informaii video de 10 secunde la o
rezoluie i calitate acceptabil nec
s memoreze o astfel de informaie (un film
600 Goctei). De aceea i n cazul informaiilo
rare. Majoritatea metodelor de compactare sunt cu pierdere de
informaie; pentru un factor de compactare mai mare se face un compromis
n ceea ce privete calitatea imaginii.
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
Reprezentarea informaiilor. Conversii de valori ntre sisteme de numeraie. Aritmetic
binar. Operaii logice 43
2.2. CODIFICAREA INFORMAIEI
Se numete cod, un set de simboluri elementare mpreun cu o serie
de reguli potrivit crora se formeaz aceste simboluri [Mr96]. Codificarea
repre teaz prin X={x
1
, x
2
,
, x
n
Y={y
1
, y
2
,
, y ul, atunci
codif e de
simbo
Func
secve ntr-o form
neleas de utilizator.
Obiectivele unui sistem de codificare sunt:
or ntr-o form ct mai simpl
2. facilitarea implementrii operaiilor aritmetice i logice
ECIMALE
vitate conversiile repetate din
zecim
0 -> 0000 , 1 -> 0001 , 2 -> 0010 , ..... 9 -> 1001 ; celelalte
Procesoarele Intel au instruciuni n limbaj de asamblare care suport
opera
zint procesul de stabilire a unui cod. Dac se no
} mulimea datelor n forma accesibil utilizatorului, iar cu
m
} mulimea simbolurilor interpretate de sistemul de calc
icarea reprezint asocierea fiecrui element x X unei secven
i
luri y
j
Y; n acest caz, codul este o funcie bijectiv f : X Y.
invers f
-1
: ia Y X reprezint procesul de decodificare a
nelor de simboluri utilizate de sistemul de calcul
1. reprezentarea informaiil
3. detecia i corecia erorilor (paritate, CRC, suma de control)
4. utilizarea unui spaiu minim de memorare (compactarea
informaiei)
5. protecia mpotriva accesului neautorizat (securitate)
2.2.1. CODURI Z
Pentru anumite aplicaii este important ca datele numerice s se
pstreze n form zecimal. n acest fel pot fi e
al n binar i invers. O posibilitate este utilizarea a 4 bii pentru a
reprezenta cele 10 cifre zecimale (0, 1, ... 9). Reprezentarea poart numele
de codul BCD Binary Coded Decimal. Acest cod este asemntor cu
reprezentarea hexazecimal cu diferena c se utilizeaz numai primele 10
combinaii de bii:
10 2 10 2 10 2 10 2
combinaii sunt nepermise (ex. 1010, ... 1111)
ii aritmetice n reprezentarea BCD. Codurile cifrelor zecimale se
pstreaz fie individual pe cte un octet (forma despachetat), fie cte 2
cifre pe un octet (forma mpachetat).
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
44 Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware - Software
2.2.2. CODURI PENTRU DETECTAREA I CORECTAREA
ERORILOR
transm
emisi
respe
[M
RC) este metoda cea mai folosit
corec
frecv
le erori avnd posibilitatea de a
corecta o eroare ap t la interse i coloanei detectate ca
ectnd paritatea.
Exist mai multe modaliti de detectare a erorilor n cadrul
isiei, bazate n general pe ataarea unor cifre binare de control la
a mesajului prezentat sub form binar; recepia va controla modul de
ctare a corectitudinii mesajului. Cele mai utilizate procedee sunt
r96]:
Codurile de control a paritii: la emisia unei succesiuni de cifre
binare a
1
, a
2
, , a
n
se ataeaz o cifr binar de control a
n+1
aleas
astfel nct numrul total de cifre binare de 1 s fie par sau impar, n
funcie de convenia de paritate stabilit. Are o eficien sczut
ntruct detecteaz numai erorile care au un numr impar de bii
modificai (1, 3, ...).
Detecia bazat pe distan Hamming (d numrul minim de bii
prin care difer doua coduri valide.
Codurile polinomial ciclice (C
pentru detectarea erorilor grupate. naintea transmiterii, informaiei i
se adaug bii de control, iar pe baza acestora, la dac la recepionarea
mesajului se detecteaz erori, atunci acesta trebuie retransmis. O
informaie pe n bii poate fi considerat ca lista coeficienilor binari ai
unui polinom cu n termeni, deci de grad n-1.
Exemplu: 110001 x
5
+ x
4
+ 1
Pentru a calcula biii de control se va efectua un anumit numr de
operaii cu aceste polinoame cu coeficieni binari. Operaiile se vor
efectua modulo 2, adunarea i scderea nu va ine seama de cifra de
transport, deci toate operaiile de adunare i scdere sunt identice cu
operaia XOR. Pentru generarea i verificarea biilor de control att
sursa ct i destinaia mesajului utilizeaz un polinom generator.
Exist i coduri care dup detectarea erorilor ofer posibilitatea
trii unei singure cifre binare detectat incorect. Dintre cele mai
ent utilizate se pot meniona:
Codurile de paritate ncruciat. n acest caz succesiunea de cifre
binare este divizat n secvene binare de aceeai lungime. La emisie,
fiecrei linii i coloane li se ataeaz o cifr de control conform
paritii stabilite. La recepie, prin controlul paritii pe fiecare linie i
coloan, se detecteaz eventuale
ru cia liniei
neresp
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
Reprezentarea informaiilor. Conversii de valori ntre sisteme de numeraie. Aritmetic
binar. Operaii logice 45
Codu i de date
i 3 it
perm estuia (prin complementarea poziiei eronate).
Structura codului Hamming este:
l Hamming 4+3 (ataeaz la emisie pentru fiecare 4 bi
bii de control) asigur detecia poziiei bitului eronat i implic
ite corectarea ac
c
1
c
2
a
3
c
4
a
5
a
6
a
7
unde,
a
3
, a
5
a
7
este mesajul (datele) de transmis
c
1
, c
2
, c
4
reprezint cifrele de control, care se determin astfel:
ing mrete secvena binar
ce ult mai riguros. La recepia
secvenelor binare, la fiecare grup de 7 cifre se procedeaz astfel:
Se ca ele:
+ a + a
fiecare sum cu 2
0
, 2
1
, 2
2
:
n
0
= 2
0
S
0
n
1
= 2
1
S
1
2
sajul
recepionat este corect, n caz contrar aceasta reprezint poziia care
este eronat.
2.3. OPERAII LOGICE PE BII. FUN II LOGICE.
2.3.1. FUNCIA I LOGIC (AN
AND
c
1
= a
3
+ a
5
+ a
7
c
2
= a
3
+ a
6
+ a
7
= a c
4 5
+ a
6
+ a
7
Se observ c transmisia prin codul Hamm
se transmite cu 75%, dar ofer un control m
lculea sum z
S = c + a
0 1 3 5 7
= 2c
1
S
1
= c
2
+ a
3
+ a
6
+ a
7
= 2c
2
S
2
= c
4
+ a
5
+ a
6
+ a
7
= 2c
4
Se pondereaz
n
2
= 2 S
2
Se calculeaz n
0
+ n
1
+ n
2
; dac aceast sum este 0 atunci me
C
D)
A B
0 0 0
0 1 0
1 0 0
1 1 1
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
46 Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware - Software
2.3.2. FUNCIA SAU LOGIC (OR)
OR A B
0 0 0
0 1 1
1 0 1
1 1 1
2.3.3. FUNCIA NOT LOGIC
A NOT
0 1
1 0
2.3.4. FUNCIA SAU EXCLUSIV (XOR)
XOR A B
0 0 0
0 1 1
1 0 1
1 1 0
Regu
Figura 2.1 ncearc s dea o interpretare grafic (bazat pe mulimi i
pe operaiile dintre acestea reuniune, intersecie, diferen) a primei reguli
a lui De Morgan. Cercul mare reprezint mulimea tuturor cazurilor posibile.
lile lui De Morgan
1. NOT (A AND B) = (NOT A) OR (NOT B)
2. NOT (A OR B) = (NOT A) AND (NOT B)
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
Reprezentarea informaiilor. Conversii de valori ntre sisteme de numeraie. Aritmetic
binar. Operaii logice 47
Figura 2.1. Verificarea regulii lui De MORGAN NOT (A AND B) = (NOT A) OR (NOT B)
2.4. EXERCIII I PROBLEME
1. S se converteasc urmtoarele numere din baza 10 n baza 2 i n baza
16:
0, 1, 1243, 256, 2048, 5655, 123.14, 33.125, 25675, 675.625
2. S se converteasc urmtoarele din baza 2 n baza 10 i 16:
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
48 Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware - Software
110100001100, 101.111011, 110011.11
S se exprime n hexazecimal urmtoarele iruri de caractere:
ABCDEF, hello. Artai cum vor fi stocate n memorie aceste iruri
tiind c procesorul Intel folosete convenia little endian.
3. S se converteasc urmtoarele numere din hexazecimal n binar:
AFE, ABC1, 12BD, E000,
4. S se evalueze numrul de bii necesari pentru a reprezenta numere
ntregi n intervalele:
0-100, 0-1000, 300-400, -100 +100
5. S se reprezinte urmtoarele numere n semn i mrime, complement fa
de 1 i complement fa de 2, pe 8 bii:
0, 13, -100, -44, -1, -130
6. S se precizeze domeniul maxim de valori ce se poate reprezenta pe un
octet i pe 2 octei dac se consider reprezentarea numerelor strict pozitive
i respectiv a numerelor cu semn.
7. S se reprezinte urmtoarele numere n virgul flotant simpl precizie:
1, 0.000023, 100000.000001, 13,4
S se comenteze limitrile reprezentrii n virgul flotant: domeniul maxim
de valori, valoarea minim reprezentabil n valoare absolut, pasul minim
ntre dou valori mari consecutive, etc.
8. S se descrie n pseudocod cteva tehnici de compactare a informaiei
(ex: codificarea secvenelor lungi de aceeai valoare, codificarea variaiilor
ntre eantioane consecutive, etc.)
9. Se vor vizualiza date din memoria i registrele calculatorului, folosind un
program de depanare (SPIMSal, TD, LC2, etc.).
10. Se va evalua necesarul de spaiu de memorie pentru diferite tipuri de
aplicaii (aplicaii care prelucreaz informaii numerice, grafic,
alfanumerice sau multimedia).
11. Probleme de conversie dintr-o baza in alta: Scriei un program care
convertete numere ntregi n i din binar, zecimal i hexazecimal.
Programul poate fi scris fie n Java, C++ sau C i vor exista trei argumente
n linia de comand care apeleaz executabilul realizat.
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
Reprezentarea informaiilor. Conversii de valori ntre sisteme de numeraie. Aritmetic
binar. Operaii logice 49
a) Un caracter care simbolizeaz din ce sistem de numeraie se face
conversia: - h pentru hexazecimal, d pentru zecimal sau b pentru binar.
b) Un alt caracter care exprim sistemul de numeraie destinaie: h, d sau b.
c) Un ir de digii (cifrele 09 i eventual literele AF) reprezentnd
numrul supus conversiei
Programul va afia pe ecran (ieirea standard a sistemului) unul din
urmtoarele mesaje:
Dac argumentele sunt date corect, se afieaz un mesaj care conine:
sistemul de numeraie surs, numrul iniial n acest sistem, sistemul de
numeraie destinaie i numrul n sistemul de numeraie final (De
exemplu: 16 n decimal este 10000 n binar).
Altfel, se afieaz un mesaj de ajutor pentru utilizarea parametrilor de
comand ai programului (De exemplu: Folosii java hex [ h | d | b
] [ h | d | b]).
Considernd c programul este scris n java i numit hex.java se dau n
continuare cteva secvene de apel cu rezultatele obinute.
% java hex b d 1010
1010 n binar este 10 n zecimal
% java hex h d 123456
123456 n hexazecimal este 1193046 n zecimal
% java hex d h 12345678
12345678 n zecimal este bc614e n hexazecimal
% java hex a b 123
Folosii java hex [ h | d | b ] [ h | d | b]
% java hex h d bc614e
bc614e n hexazecimal este 12345678 n zecimal
12. Scriei un algoritm eficient din punct de vedere al reprezentrii n
memorie pentru rezolvarea problemei 2
n
cu n foarte mare, n100.
Determinai numrul de digii pe care se reprezint numrul rezultat. Ca i
indicaie, se poate folosi aproximarea grosier 2
10
1000.
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
3. STRUCTURI LOGICE DIGITALE.
TRANZISTORI. PORI LOGICE. STRUCTURI
LOGICE COMBINAIONALE. UNITATEA
ARITMETICO-LOGIC
3.1. TRANZISTORUL
Tranzistorul este un dispozitiv electronic, semiconductor, inventat la
laboratorul de telefonie Bell din New Jersey n decembrie 1947 de ctre
cercettorii n fizic John Bardeen, Walter Houser Brattain, i directorul
celor doi, William Bradford Shockley [Wik]. Pentru invenia lor cei trei au
fost recompensai n 1956 cu premiul Nobel. Descoperirea tranzistorului a
determinat dezvoltarea electronicii, acesta fiind considerat una din cele mai
mari descoperiri ale erei moderne. Tranzistorul poate fi folosit att n
domeniul analogic pentru a amplifica, stabiliza sau modula diverse semnale
electrice ct i n cel digital pentru comutare.
Din punct de vedere al complexitii microprocesoarelor se poate
spune c numrul tranzistorilor integrai ntr-un cip se dubleaz la fiecare 18
luni. Afirmaia aparine lui Gordon Moore i dateaz de la mijlocul anilor
60. Dup cum se poate observa din urmtorul tabel afirmaia este pe deplin
justificat de implementrile comerciale [Katz05].
Anul
lansrii
pe pia
Denumire
procesor
Numr de
tranzistori
ncorporai /
Tehnologia
de integrare
Frecvena
procesorului
Magistrala
de date
1971 Intel 4004 2300 / 10m 108KHz 4-bii
1972 Intel 8008 3500 / 10m 200KHz 8-bii
1974 Intel 8080 6000 / 6m 2MHz 8-bii
1978 Intel 8086 /
8088
29000 / 3m 4.77-10MHz 16-bii.
Implementat
n primul
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
Structuri logice digitale. Tranzistori. Pori logice. Structuri logice combinaionale. Unitatea
aritmetico-logic 51
calculator
personal IBM.
1982 Intel 80286 134000 /
1.5m
12.5-20MHz 16-bii
1985 Intel
80386DX
275,000 /
1m
33MHz 32-bii
1989 Intel
80486DX
1200000 /
0.8m
25-100MHz 32-bii.
Primul
procesor care
ncorporeaz
o memorie de
tip cache.
1993 Intel
Pentium
3100000/
0.5m
60-133MHz 32-bii
1995 Intel
Pentium Pro
5500000 /
0.35m
200MHz 32-bii
1997 Intel
Pentium II
7500000 /
0.35m
233-333MHz 32-bii
2000 Intel
Pentium III
28000000 /
0.18m
733MHz-
1.2GHz
32-bii
2001 Intel
Pentium 4
ver.
Northwood
42000000 /
0.18m
1.6 GHz 32-bii (din
2000 apare
versiunea
Itanium pe 64
de bii)
2003 Intel
Pentium 4
ver.
Northwood
Hyperthread
55000000 /
0.13m
2 3.4 GHz 32-bii
2004 Intel
Pentium 4
ver. Extrem
Edition
Hyperthread
178000000 /
0.09m
2,8 - 3,4GHz 32-bii
Tabelul 3.1 Procesorul Intel tendine tehnologice
Referitor la tabelul 3.1 sunt civa parametri care vor fi nelei mai
bine dup parcurgerea acestui capitol.
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
52 Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware - Software
Dimensiunea tehnologiei de integrare reprezint o caracteristic
important n evaluarea i creterea performanei arhitecturilor de
calcul i implicit al memoriilor de tip cache. Exprim dimensiunea
unei pori logice (diferena n microni dintre ieirea i intrarea unei
pori logice fundamentale NAND). n unele documentaii este
interpretat ca fiind distana dintre dou intrri aferente porii logice.
Ca i corolar al tabelului 3.1 se poate afirma c i frecvena
procesoarelor pare s se dubleze n acelai ritm cu toate c, creterea n
vitez se datoreaz tendinelor tehnologice doar ntr-o proporie de 35%,
restul de 65% rezultnd n urma mbuntirilor arhitecturale [Flo05].
Tranzistorii sunt construite din circuite (n tehnologie) MOS (metal
oxid semiconductor) [Patt03]. Exist dou tipuri de tranzistori (vezi figura
3.1): de tip P (pozitiv) i de tip N (negativ). Au funcii complementare,
astfel nct folosite mpreun se pot realiza circuite CMOS. Tranzistorul are
rol de ntreruptor: nchide circuitul (valoarea tensiunii din A este egal cu
cea din B) sau deschide circuitul (valorile celor dou tensiuni din A i B
difer legtura fiind ntrerupt).
Funcionarea celor dou tipuri de tranzistori este descris n cadrul
figurii 3.1.
Figura 3.1. Tranzistori de tip P i de tip N
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
Structuri logice digitale. Tranzistori. Pori logice. Structuri logice combinaionale. Unitatea
aritmetico-logic 53
3.2. PORI LOGICE
3.2.1. INVERSORUL CMOS
Dac IN = 0 (adic 0 V) atunci tranzistorul de tip P va conduce iar cel
de tip N rmne blocat. Rezult c ieirea OUT va avea 2.9 V (adic 1
Logic).
Dac IN = 1 (adic 2.9 V) atunci tranzistorul de tip N va conduce iar
cel de tip P rmne blocat iar ieirea OUT va avea 0 V (adic 0 Logic).
Se poate astfel observa c OUT = Not (IN); ieirea este inversa
intrrii.
Figura 3.2. Inversorul CMOS
3.2.2. POARTA NOR (NOT OR)
Poarta NOR este realizat din doi tranzistori de tip P legai n serie i
cu
ire n punctul C 2.9V trebuie ca
cei doi tranzistori de tip P s conduc (ambele circuite nchise); deci A=0 I
B=0
doi tranzistori de tip N aezai n paralel (vezi figura 3.3 zona ncadrat
linie punctat). Astfel, pentru a avea la ie
C=1.
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
54 Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware - Software
Pentru a avea la ieire n C 0V este suficient ca mcar unul din cei doi
tranzistori de tip N s conduc (cel puin un circuit nchis); deci A=1 SAU
B=1 C=0. Prin utilizarea unui inversor la ieirea porii NOR, n punctul
D, se obine rezultatul funciei OR aplicat celor dou intrri A i B.
Figura 3.3. Porile NOR i (OR)
3.2.3. POARTA N
Pentru a avea la ieire n C 0V trebuie ca ambii tranzistori de tip N s
conduc (ambele circuite nchise); deci A=1 I B=1 C=0. Prin folosirea
inversorului e rezultatul
func
AND (NOT AND)
Poarta NAND este implementat din doi tranzistori de tip P aezaii n
paralel i doi tranzistori de tip N n serie (vezi figura 3.4 zona ncadrat cu
linie punctat). Astfel, pentru ca la ieirea C s fie 2.9V trebuie ca cel puin
unul din cei doi tranzistori de tip P s conduc (cel puin un circuit nchis);
deci A=0 SAU B=0 C=1.
la ieirea porii NAND, n punctul D, se obin
iei AND aplicat celor dou intrri A i B.
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
Structuri logice digitale. Tranzistori. Pori logice. Structuri logice combinaionale. Unitatea
aritmetico-logic 55
Figura 3.4. Porile NAND i (AND)
ntruct pentru exprimarea funciilor logice de 2 operanzi (AND, OR)
necesari 6 tranzistori i innd cont c la nivelul procesoarelor anilor
[Katz05] erau implementai 178 milioane de astfel de circuite digitale
re, rezult necesitatea unei convenii de reprezentare n vederea
ificrii pro
sunt
2004
prima
simpl cesului de proiectare. Trebuie specificat c porile logice
(AND, OR, NAND, NOR) pot avea mai mult de dou intrri.
3.5. Conve Figura nii de reprezentare a porilor logice
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
56 Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware - Software
Reprezentarea funciilor logice se poate face prin:
Tabel de adevr
Expresie logic
Circuite logice
Se spune despre setul de pori logice (AND, OR, NOT) c este
comp
3.3. STRUCTURI LOGICE DIGITALE
Se cunosc dou tipuri de structuri logice digitale:
1. Structuri de decizie pot realiza o decizie dar nu rein ce fel de
decizie binaionale
1. STRUCTURI LOGICE (CIRCUITE)
Circuitele logice combinaionale (CLC) fac parte din familia
sistemelor automate cu numr finit de stri, fiind un caz particular, acela al
let ntruct cele trei pori logice sunt suficiente pentru reprezentarea
oricrei funcii logice. Fcnd legtura cu legile lui De Morgan:
A OR B = NOT ((NOT A) AND (NOT B))
A AND B = NOT ((NOT A) OR (NOT B))
se poate spune c sunt suficiente fie pori de tipul NAND fie pori de
tipul NOR.
Funciile I-NU (NAND) respectiv SAU-NU (NOR) sunt suficiente
pentru reprezentarea oricrei funcii logice (se mai numete
completitudinea funciilor logice I-NU i respectiv SAU-NU) [Pat03].
a fost (0 sau 1). Se mai numesc structuri logice com
deoarece ieirile acestora sunt strict dependente de combinaia
valorilor de intrare. Nu depind de istoria informaiei ntruct aceste
structuri nu stocheaz nici un fel de informaie. Se cunosc trei astfel de
structuri:
Decodificatorul
Multiplexorul
Sumatorul
2.Structuri de memorare permit stocarea informaiei. Capacitatea
acestora se msoar n bii sau multiplii ai acestora.
3.3.
COMBINAIONALE
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
Structuri logice digitale. Tranzistori. Pori logice. Structuri logice combinaionale. Unitatea
aritmetico-logic 57
automatelor circuitului
de va
[Pop86]. Unul dintre acetia este
(vezi figura 3.6), un altul l
bufferelor (nivelului) de ieire (lungimea
re reprezint aceeai intrare pentru mai multe
pori logice
fr memorie. Lipsa memoriei implic independena
riabila timp i deci lipsa unor stri interne. Depinde exclusiv de
variabilele aplicate la intrare.
Parametrii:
.. Adncimea unui circuit este dat de numrul de circuite aflat pe cea
mai lung ramur care compune circuitul. Ea corespunde timpului de
execuie n cazul cel mai defavorabil.
.. Dimensiunea unui circuit reprezint numrul de elemente
combinaionale coninute n circuit.
O ntrebare fireasc ce se poate pune este urmtoarea: Cine
determin viteza sau frecvena maxim a unui sistem digital ? Rspunsul la
aceast ntrebare este: latena (sau ntrzierea) circuitului. Exist civa
factori care contribuie la aceast laten
timpul de propagare printr-o poart logic
reprezint factorul de ncrcare al
anumitor fire de legtur ca
) i chiar circuitul nsui caracterizat de adncime i dimensiune.
n realitate, cnd semnalul de la intrarea unei pori se schimb (din 0 n 1
sau din 1 n 0) semnalul de ieire nu se va schimba instantaneu (vezi figura
3.6).
Figura 3.6. ntrzierea semnalului printr-o poart logic
Timpul de propagare printr-o poart logic reprezint diferena n timp
dintre momentele n care este modificat semnalul pe intrarea porii logice i
respectiv momentul n care este sesizat modificarea semnalului la ieirea
porii logice. Se disting dou tipuri de ntrzieri prin poarta logic T
PHL
(timp de propagare din nivel logic High n nivel logic Low) i respectiv
T
PLH
(vezi variaz n
func
figura anterioar). Valoarea timpului de ntrziere
ie de poarta logic folosit precum i n funcie de familia de circuite
logice folosite. n general, cu ct preul per cip este mai mare cu att acesta
va fi mai rapid. La nivelul anului 2004, timpul de ntrziere printr-o poart
logic era cuprins n intervalul 1.5-4ns.
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
58 Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware - Software
3.3.1.1. DECODIFICATORUL
Figura 3.7. Decodificatorul - reprezentare cu pori logice
n
ttern de bii. Utilitatea sa se
va
p
mo
tat la ieire.
n general au n intrri i 2 ieiri. Decodificatorul furnizeaz la o
singur ieire 1 iar la restul 0. Ieirea i va avea valoarea logic 1 dac
numrul reprezentat n binar pe intrare este chiar 1. Funcia
decodificatorului este de interpretare a unui pa
regsete n faza de decodificare a instruciunilor (vezi modelul von
Neumann) cnd cmpul opcode parte component a oricrei instruciuni
specifica ce operaie trebuie efectuat (adunare / scdere / nmulire /
m rire / acces la memorie / ramificaie a programului). Decodificatorul
este utilizat i pentru identificarea regitrilor surs / destinaie sau a
durilor de adresare n cazul instruciunilor cu referire la memorie tot pe
baza pattern-urilor de bii din corpul instruciunilor. De asemenea, este
folosit la selecia adreselor de memorie.
3.3.1.2. MULTIPLEXORUL
Are rolul de a selecta o intrare i de a o conecta la ieire. Semnalul de
selecie (codificarea binar a acestuia) determin care dintre intrri va fi
onec c
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
Structuri logice digitale. Tranzistori. Pori logice. Structuri logice combinaionale. Unitatea
aritmetico-logic 59
Figura 3.8. Multiplexor 4:1 - reprezentare cu pori logice
n general, un MUX const din 2
n
intrri, n linii de selecie i o
ingur ieire. Multiplexorul este utilizat n proiectarea procesoarelor
pipeline n cel puin trei ipostaze:
La selec are
secvenial lui
at (se face / nu se face).
La selecia operanzilor unei instruciuni: pot fi instruciuni cu 2
regitri surs, pot fi instruciuni aritmetico-logice cu un registru surs i o
valoarea imediat, poate fi un calcul de adres dintre un registru index i
un deplasament (mod de adresare indexat), poate fi calculul adresei
destinaie n cazul unei ramificaii de program (registru + valoare
imediat). Pentru detalii vezi subcapitolul 6.2.
Scrierea rezultatului instruciunilor n setul de regitri generali ai
procesorului, n faza store results de procesare (vezi modelul von
Neumann) poate fi fcut prin instruciuni aritmetico-logice sau
instruciuni de tip load. Selecia se va face tot intermediul unui
multiplexor 2:1 comandat cu un bit din opcod-ul instruciunii.
3.3.1.3. SUMATORUL
Efectueaz numere
binare avnd un numr egal de bii. Orice sumator pe mai muli bii este
const
arele elementare pe un bit pot fi:
s
ia adresei urmtoarei instruciuni dintre PC+4 (o proces
, instruciunea fiind codificat pe 4 octei cazul procesoru
MIPS R3000 [Flo03]) i PC+adresa_relativ (identificarea unei
ramificaii n program) n funcie de bitul rezult
b
a
dx x f ) (
i y=b
ez cu
mentele elem
e egale
n
a b
h
= . Rezult astfel un set de puncte
elementare (x
i
= a + i*h, cu i = 0, ,n.) n care se va calcula valoarea
funciei. Pe un segment elementar [x
i
, x
i+1
] trapezul este determinat de
extremitile segmentului pe axa Ox punctele (x
i
,0) i (x
i+1
,0) i de
valoarea funciei f(x) n extremiti punctele (x
i
,f(x
i
)) i (x
i+1
,f(x
i+1
)).
Reamintind c aria unui trapez (dreptunghic n cazul nostru) este egal cu
semi-suma bazelor nmulit cu nlimea trapezului rezult:
) _ autor de notata (
2
) ( ) (
2
) ( ) (
) (
1
0
1
1
0
1
n I
x f x f
h
x f x f
h dx x f
n
i
i i
n
i
i i
b
a
=
+
=
+
=
+
=
+
Pentru a calcula integrala definit dintr-o anumit funcie (n exemplul
nostru am considerat
2
1
1
x +
i respectiv
x + 1
1
) cu o precizie de 10
-7
se vor
urma paii algoritmului.
Pasul 1: Se alege o valoare iniial pentru n (numrul de diviziuni). Cu ct n
este mai mare va avea loc o divizare mai fin a intervalului [a,b]
o apropiere mai mare de valoarea real a integralei.
Pasul 2: Se calculeaz I_n (valoarea integralei pentru n subintervale).
Pasul 3: Se calculeaz I_2n (valoarea integralei pentru 2*n subintervale).
Pasul 4: Dac |I_n - I_2n|<10
-7
, algoritmul se ntrerupe i valoarea integralei,
cu precizia solicitat, este I_2n, altfel se dubleaz n, se pstreaz
ultima valoare a integralei I_n = I_2n i se reia pasul 3.
n continuare se construiete o funcie care calculeaz valoarea lui I_n
numit integrala_trapez [Neg97]. Se impun ns unele observaii:
Funcia f(x) trebuie s figureze printre parametrii funciei
integrala_trapez deoarece calculul integralei definite poate fi aplicat
oricrei funcii. De asemenea, limitele de integrare i numrul de
diviziuni n care se mparte intervalul trebuie transmii ca i parametrii.
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
298 Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware Software
Funcia integrala_trapez returneaz valoarea aproximativ a integralei i
se va apela printr-o expresie de atribuire de genul: i_n =
integrala_trapez(a,b,n,f); n exemplul nostru s-a considerat f fiind funcia
arctan_deriv (derivata funciei arctgx).
ntruct funcia f(x) returneaz o valoare flotant n dubl precizie rezult
c i integrala (funcia integrala_trapez) va returna acelai tip de dat.
Aadar, prototipul funciei integrala_trapez este urmtorul: double
integrala_trapez(double, double, long , double (* )(double));
Evident c, naintea apelului funciei integrala_trapez funcia f(x)
trebuie s fie definit sau s fie prezent prototipul ei.
Construcia sintactic double (*p)(double) din antetul funciei
integrala_trapez se interpreteaz astfel:
*p semnific faptul c p este un pointer.
(*p)(double) nseamn c p este un pointer spre o funcie cu
parametru de tip double.
double (*p)(double) specific faptul c p este un pointer spre o
funcie care returneaz o valoare flotant n dubl precizie.
Este necesar includerea lui *p ntre paranteze rotunde, deoarece
construcia double *p(double); este corect din punct de vedere sintactic,
dar nseamn altceva, parantezele rotunde fiind prioritare operatorului
unar *. n acest caz, se declar p ca o funcie cu parametru double i care
returneaz un pointer spre o valoare flotant n dubl precizie. Astfel de
declaraii se ntlnesc des n aplicaii cu structuri de date cu legturi (sau
autoreferire) liste, arbori, etc.
n momentul definirii funciei integrala_trapez, necunoscndu-se
numele concret al funciei f(x), ci doar pointerul spre ea, n apelurile f(a),
f(a+h), etc, se va nlocui numele funciei f(x) prin *p astfel: (*p)(a),
(*p)(a+h), etc.
#define a 0.0 /* captul stng al intervalului pe care se
calculeaz integrala */
#define b 1.0 /* captul drept al intervalului */
#define N 10 /* numrul de subdiviziuni al intervalului [a,b]
utilizat in calculul integralei */
#define EPSILON 1e-7/* precizia de calcul a integralei */
#include <math.h>
#include <stdio.h>
#include <conio.h>
double arctan_deriv(double); /* 1/(1+x_patrat) */
double integrala_trapez(double, double, long , double (* )(double));
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
Pointeri i tablouri. Transferul parametrilor prin referin. Pointeri spre funcii 299
void main(void) /* calculeaza integrala din arctan_deriv(x)=1/(1+x*x)
in intervalul [a,b] cu o eroare mai mica decat
EPSILON */
{
clrscr();
long n = N;
double i_n, i_2n, vabs;
i_n = integrala_trapez(a,b,n,arctan_deriv);
do{
n = 2*n;
i_2n =integrala_trapez(a,b,n,arctan_deriv);
if((vabs=i_n - i_2n)<0)
vabs = - vabs;
i_n = i_2n;
}while(vabs>=EPSILON);
printf("Valoarea integralei este: %.10g\n",i_2n);
printf("Integrala se obtine cu precizia %g dupa %ld
iteratii!\n",EPSILON,n);
getch();
}
double integrala_trapez(double x, double y, long m, double (*p)(double))
{ /* calculul integralei prin metoda trapezelor - divizarea intervalului
[a,b] in m subintervale si calculul ariei folosind formula trapezului
dreptunghic */
double h,s;
int i;
h = (y-x)/m;
for(i=1,s=0.0;i<m;i++)
s+=(*p)(x+i*h);
s+=((*p)(x)+(*p)(y))/2;
s=s*h;
return s;
}
double arctan_deriv(double x)
{
return 1/(1+x*x);
// return 1/(x+1);
}
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
300 Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware Software
n ciuda multiplelor avantaje la nivelul limbajului high, pointerii
introduc un nivel de indirectare (acces suplimentar la memorie) iar la
nivel low, apelurile de funcii indirect prin pointer genereaz salturi /
apeluri indirecte, foarte dificil de prezis, cu implicaii defavorabile
asupra performanei globale de procesare [Flo05].
n continuare este ilustrat un exemplu care justific afirmaia c
funciile de bibliotec determin la nivelul procesorului salturi /
apeluri indirecte (new, qsort, scan, printf). Este vorba de programul de
test qsort[.c,.s], preluat din help-ul oferit de mediul BorlandC i care
sorteaz un tablou de iruri de caractere prin intermediul funciei de
bibliotec qsort care primete ca parametri adresa tabloului, numrul de
elemente, dimensiunea fiecrui element i o funcie de comparare de dou
iruri de caractere. Practic o surs a celor 11 apeluri indirecte o constituie i
apelul indirect prin pointer la funcia de comparare pas realizat n
cadrul funciei qsort (precompilate) [Flo05].
n continuare se exemplific pe baza descrierii funciei din fiierul
...\BorlandC\Crtl\Clib\qsort.cas.
Nume funcie qsort sorteaz un tablou de elemente pe baza
metodei de sortare rapid "selecia elementului median din trei", prin apelul
repetat al unui pointer la o funcie definit de utilizator ((*fcmp)()).
Utilizare void qsort(void *base, int nelem, int width, int
(*fcmp)());
Prototipul funciei se afl n stdlib.h.
*fcmp funcie de comparare care accept dou argumente:
elem1 i elem2, adresele a dou elemente ale tabloului
de sortat. Rezultatul returnat este urmtorul:
Dac elementele sunt n relaia fcmp returneaz
*elem1 < *elem2 Un ntreg
negativ (elem1
se va afla n
tabloul sortat
naintea lui
elem2)
*elem1 == *elem2 0
*elem1 > *elem2 Un ntreg
pozitiv (>0)
Qsort nu returneaz nimic.
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
Pointeri i tablouri. Transferul parametrilor prin referin. Pointeri spre funcii 301
n continuare se vor prezenta comparativ, exemplificndu-se la nivel
de instruciune, secvene din codul surs .c (de nivel nalt) versus .s
(asamblare) al aplicaiei qsort.[c,s].
******************Secven de cod din qsort.c******************
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char list[5][4] = { "cat", "car", "cab",
"cap", "can"};
int sort_function( const void *a,
const void *b)
{
return( strcmp((char *)a,(char *)b));
}
int main(void)
{
int x;
qsort((void *)list, 5,
sizeof(list[0]), sort_function);
for (x = 0; x < 5; x++)
printf("%s\n", list[x]);
return 0;
}
*******************Secven de cod din qsort.s********************
.globl list
.data
.align 2
list:
.ascii "cat\000" # stocarea n zona de date a adreselor de mesaje:
elementele de tablou care vor fi sortate.
.ascii "car\000"
.ascii "cab\000"
.ascii "cap\000"
.ascii "can\000"
...
.text
.align 2
.globl main
.align 2
.globl sort_function__FPCvT0 # adresa funciei de sortare
.text
.ent main
main:
subu $sp,$sp,32 # alocare spaiu pe stiv
sw $31,28($sp) # salvare # adresa de revenire n programul apelant -
$31 (sistemul de operare)
sw $fp,24($sp)
move $fp,$sp
jal __main
la $4, list # pregtire parametrii de apel $4 adresa tabloului de
sortat
li $5,0x00000005 # $5 <- 5 = numrul de elemente al tabloului
li $6,0x00000004 # $6 <-4 = dimensiunea n octei a fiecrui element de
tablou
la $7,sort_function__FPCvT0 # $7 <- adresa funciei folosit de ctre qsort n apelul su
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
302 Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware Software
jal qsort # la apelul unei funcii primii 4 parametrii de apel sunt
salvai n regitrii $4 $7 restul, dac e
# cazul sunt depui pe stiv [Flor03]. Funcia qsort este
precompilat.
sw $0,16($fp)
...
$L36:
move $sp,$fp # sp not trusted here
lw $31,28($sp)
lw $fp,24($sp)
addu $sp,$sp,32
j $31
.end main
.ent sort_function__FPCvT0
sort_function__FPCvT0:
subu $sp,$sp,24
sw $31,20($sp)
sw $fp,16($sp)
move $fp,$sp
sw $4,24($fp) # salvare pe stiv a parametrilor de apel n cadrul rutinei
apelate indirect prin qsort adresa i
sw $5,28($fp) # numrul de elemente al tabloului
lw $4,24($fp)
lw $5,28($fp)
jal strcmp # apel funcie de bibliotec pentru compararea a dou
iruri de caractere
move $3,$2
move $2,$3
...
$L41:
move $sp,$fp
lw $31,20($sp)
lw $fp,16($sp)
addu $sp,$sp,24
j $31
.end sort_function__FPCvT0
Codul asamblare nu prezint nici un apel indirect de funcii de
bibliotec (jal qsort, jal strcmp). La analiza codului obiect ns (dup link-
editarea sursei cu bibliotecile n cauz) au rezultat 11 apeluri statice
indirecte care au generat 61 apeluri dinamice indirecte.
12.6. TABLOURI. RELAIA DINTRE POINTERI I
TABLOURI
Tabloul unidimensional reprezint o zon contigu de memorie care
stocheaz elemente de acelai tip i este alocat static n zona (segmentul la
procesoarele Intel) de date, fapt ce implic necesitatea cunoaterii numrului
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
Pointeri i tablouri. Transferul parametrilor prin referin. Pointeri spre funcii 303
de elemente al tabloului n momentul compilrii. Spaiul alocat pentru
tablou este egal cu produsul dintre numrul de elemente i dimensiunea
tipului de dat corespunztor fiecrui element component. Datorit faptului
c n C/C++ numele tabloului reine chiar adresa primului element, indicii
tabloului vor ncepe de la zero (spre deosebire de limbajul Pascal unde
indicii ncep de la unu). Exemple de tablouri: lista numerelor de telefon,
alfabetul, etc. Expresia a[4] refer al 5-lea element al tabloului a.
n C, exista o strnsa legatura ntre pointeri si tablouri. Cnd se
foloseste numele unui tablou (fr indici), el reprezint un pointer ctre
primul element al tabloului. Astfel, n C se pot transmite tablouri ca
parametri n funcii (se transmite adresa de nceput a tabloului). Alt avantaj
al tratrii unitare pointer-tablou este aplicarea aritmeticii pointerilor pentru
accesarea elementelor unui tablou. Identitatea pointer-tablou se observ cel
mai bine n operaiile cu iruri de caractere, unde irul de caractere este un
tablou de caractere sau un pointer la caracter.
n continuare sunt prezentate aspecte ale echivalenei pointer tablou.
Se consider declaraiile:
char cuvant[5];
char *tablou_ptr;
De exemplu atribuirea tablou_ptr = cuvant este corect din punct de
vedere sintactic ntruct tablou_ptr pointeaz la cuvant[0], deci spre
nceputul zonei de memorie unde este stocat tabloul de caractere
(echivalent de asemenea cu tablou_ptr=&cuvant[0];). Pornind de la
declaraiile de mai sus, n tabelul urmtor, pe fiecare linie, expresiile date
sunt echivalente:
Echivalene pointer tablou
tablou_ptr cuvant &cuvant[0]
(tablou_ptr + n) cuvant + n &cuvant[n]
*tablou_ptr *cuvant cuvant[0]
*(tablou_ptr + n) *(cuvant + n) cuvant[n]
Pentru a accesa elementele tabloului cuvant[5] (irul de caractere), se
incrementeaz valoarea pointerului, astfel dac tablou_ptr=cuvant; atunci
*(tablou_ptr++) va returna valoarea lui cuvant[0], dup care tablou_ptr va
indica spre cuvant[1]. Trebuie avut n vedere c expresia *(tablou_ptr++)
este diferit de (*tablou_ptr)++, care va incrementa valoarea spre care
indic tablou_ptr, returnnd astfel caracterul de cod ASCII (tablou[0]+1).
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
304 Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware Software
Exist ns i diferene ntre pointeri i tablouri. Dac un pointer poate
fi incrementat, el indicnd spre alt locaie, nu acelai lucru se poate face cu
un tablou (adresa sa este cunoscut la compilare i nu se poate modifica pe
parcursul execuiei programului). Astfel, este posibil expresia
tablou_ptr=tablou_ptr+1, dar cuvant va fi tot timpul un pointer constant pe
durata execuiei programului.
Aplicaie 3: Relaia dintre pointeri i tablouri.
#include <stdio.h>
void main(void)
{
int t[4]={0, 1, 2, 3};
int *p=&t[1]; /* se declar p de tip pointer la int i apoi se
iniializeaz cu adresa lui t[1] al doilea
element al tabloului t */
printf("%d\n", *p++); /* Operatorul unar * are prioritate n faa
operatorului de postincrementare ++ => se
afiseaza valoarea lui t[1] i adresa lui p este
incrementat pentru a indica pe urmtorul
element al tabloului, adica pe t[2] */
printf("%d\n", *++p); /* Este incrementat adresa, deci p va pointa pe
t[3] => se va afisa valoarea lui t[3] */
printf("%d\n", ++*p); /* afiseaza valoarea incrementata a lui t[3].
Incrementarea are loc asupra continutului
locatiei de memorie si nu asupra adresei */
}
Aplicaie 4: Echivalena C LC-3 n cazul aplicaiilor cu tablouri.
int main()
{
int x, grid[10];
x=grid[3]+1;
grid[6]=5;
}
, x=grid[3]+1;
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
Pointeri i tablouri. Transferul parametrilor prin referin. Pointeri spre funcii
305
ADD R0, R6, #4 ; Adresa de baz a tabloului (numele acestuia) de pe
stiva de date aferent funciei main() este scris n R0
ADD R1, R0, #3 ; Se calculeaz adresa elementului grid[3] i se depune
n R1
LDR R2, R1, #0 ; Se introduce n R2 valoarea elementului grid[3]
ADD R2,R2,#1; Se incrementeaz valoarea lui R2 (grid[3] + 1);
STR R2,R6,#3; Se introduce noua valoare a lui R2 n locaia
corespunztoare lui x pe stiva de date aferent
funciei main (x=grid[3]+1);
; grid[6]=5;
AND R2,R2,#0; Iniializare R2=0
ADD R2,R2,#5; R2=5
ADD R0,R6,#4 ; Adresa de baz a tabloului (numele acestuia) de pe
stiva de date aferent funciei main() este scris n R0
ADD R1,R0,#6 ; Se calculeaz adresa elementului grid[6] i se depune
n R1
STR R2,R1,#0 ; Se scrie valoarea 5 din R2 la locaia grid[6]
12.6.1. FUNCII CU PARAMETRI DE TIP TABLOU
(VECTOR)
ntruct transmiterea tablourilor (vectorilor) ca parametrii funciilor
este un lucru extrem de util n aplicaii, exist dou posibiliti de a-l realiza
[Patt03]:
a) transferul fiecrui element al vectorului (dezavantajos din punct de
vedere al spaiului ocupat pe stiva de date aferent funciei apelate,
dar i din punct de vedere al timpului de execuie mai ales n
cazul tablourilor cu numr foarte mare de elemente).
b) transmiterea unei referine la tablou (numele acestuia).
n cazul apelurilor de funcie n care parametrul efectiv este numele
unui tablou, apelul se face prin referin. n acest caz, se transfer valoarea
numelui tabloului, adic adresa primului su element. Dispunnd de adresa
de nceput a tabloului utilizat ca parametru, funcia apelat poate modifica
elementele tabloului respectiv.
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
306 Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware Software
n continuare se prezint un exemplu de funcie avnd ca parametru un
tablou. Programul principal citete de la tastatur un tablou de numere
ntregi i apeleaz o funcie care, avnd ca argument numele respectivului
tablou, deteremin media aritmetic a elementelor din tablou.
#include <stdio.h>
#define MAX_NUMS 10
int Average(int input_values[]);
int main()
{
int index; /* Variabil contor folosit n bucla for */
int mean; /* media aritmetic a numerelor */
int numbers[MAX_NUMS]; /* Declaraia iniial a tabloului de numere */
/* Introducerea numerelor de la tastatur */
printf("Enter %d numbers.\n", MAX_NUMS);
for (index = 0; index < MAX_NUMS; index++) {
printf("Input number %d : ", index);
scanf("%d", &numbers[index]);
}
mean = Average(numbers);
printf("The average of these numbers is %d\n", mean);
}
int Average(int inputValues[])
{
int index;
int sum = 0;
for (index = 0; index < MAX_NUMS; index++) {
sum = sum + inputValues[index];
}
return (sum / MAX_NUMS);
}
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
Pointeri i tablouri. Transferul parametrilor prin referin. Pointeri spre funcii
307
Figura 12.4. Imaginea zonei de activare imediat dup apelul funciei Average()
12.7. EXERCIII I PROBLEME
1. Ce tiprete urmtoarea secven:
int m[7]={3,6,4,2,8,9,0}, *p, *q; p=&m[3]; q=++p-2;
cout<<*q<< <<*(p+2)<< <<*p<< <<p-q;
a. 4 0 8 2 b. 2 2 3 2 c. 8 4 3 0 d. 4 0 8 2 e. 2 4 3 4
2. Fie declaraiile int x[10],*p; Care din urmtoarele atribuiri este corect ?
a. x=p; b. x[10]=p; c. p=x[10]; d. p=*x[10]; e. p=x;
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
308 Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware Software
3. Cunoscnd codul ASCII a literei A=65, ce afieaz secvena:
int x=2; char c=A; c=c+x; cout<<c;
a. 67 b. C c. nici o variant corect d. c e. eroare: n C
nu se poate aduna un caracter cu un numr.
4. Fie declaraiile void f(int a, float &b){a++;b=b+1;} Ce va afia
urmtorul program:
void main() {int x=1; float y=1.1; f(x,y); cout<<x<< <<y;}
a. 2 2.1 b. 1 2.1 c. apel eronat d. sintax greit e. 1 1.1
5. Ce va afia programul urmtor:
#include<stdio.h>
void main(void)
{
int *p,*q;
p = new (int);
q = new (int);
*p = 7;
*q = *p;
if(p==q)
(*p)++;
else
(*q)++;
printf("%d , %d",*p,*q);
}
Care este rezultatul afiat de programul anterior dac instruciunea if se
nlocuiete cu if (*p== *q)?
6. Se consider urmtoarea secven de cod:
#include<stdio.h>
int z,t,*p;
void main(void)
{
z = 7;
p = &z;
p++;
*p = 19;
*--p = 24;
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
Pointeri i tablouri. Transferul parametrilor prin referin. Pointeri spre funcii
309
printf("z= %d p= 0x%x continutul locatiei spre care pointeaza p
(*p)=%d t=%d",z,p,*p,t);
}
Considernd c registrul R5 (pointerul spre nceputul zonei de date globale
are valoarea x4000) s se ilustreze coninutul locaiilor x4000, x4001, x4002
i x4003 dup execuia fiecrei instruciuni din program. Determinai ce se
afieaz pe ecran la finalul execuiei programului ?
Adres memorie Coninut
x4000
x4001
x4002
x4003
7. Ce afieaz urmtoarele secvene de cod C++:
a)
#include<iostream.h>
void main()
{
char v[]={'a','b','c','\0'};
char *p=&v[0];
while (*p)
{
cout<<p<<" ";
p++;
}
}
b)
#include<iostream.h>
int a=1,c=8,*p;
void main()
{
p=&a;
a=*p++;
cout<<a<<' '<<*p<<endl;
a=(*p)++;
cout<<a<<' '<<*p;
}
Ce va afia programul n cazul secvenei b dac declaraiile variabilelor se
fac local funciei main() i nu global ? Ce modificri trebuiesc aduse
programului pentru a afia acelai lucru ca n cazul iniial (cu declaraiile
globale). Indicaie: pe un sistem cu procesor Intel, organizarea memoriei
presupune c stiva de date aferent funciilor crete (n coninut i
capacitate) de la adrese mari spre adrese mici (variabilele succesive sunt
stocate la adrese care descresc).
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
310 Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware Software
8. Translatai din C n limbaj de asamblare LC-3 codul surs al funciei
main() de mai jos.
main()
{
int a[5], i;
i=4;
while(i>=0){
a[i]=i;
i--;
}
}
9. n secvena de cod urmtoare funcia main() apeleaz funcia triple().
Care este necesarul minim de memorie pentru zona de activare aferent
funciei triple ? Dar pentru zona de activare aferent funciei main ?
main()
{
int array[3];
array[0]=1;
array[1]=2;
array[2]=3;
triple(array);
}
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
BIBLIOGRAFIE
[Ack89] Ackoff, R. L., From Data to Wisdom, Journal of Applies Systems
Analysis, Volume 16, 1989 p 3-9.
[Aho86] Aho A., Sethi R., Ullman J. Compilers, Principles,Techniques
and Tools, Adison Wesley Publishing Comp. 1986.
[Bel04] Bellinger G., Castro D., Mills A., Data, Information, Knowledge,
and Wisdom, 2004, HTUhttp://www.systems-thinking.org/dikw/dikw.htmUTH.
[Bud99] TBudiuT M., Teoria complexitii, HTUhttp://www.cs.cmu.edu/~mihaib/UTH
[Chi04] Chitoc M., Internetul ca agent de socializare al Generaiei M,
HTUhttp://www.ris.uvt.ro/numarul52006/mariuschitosca.pdfUTH.
[Clc04] Circuite logice combinaionale, 2004, HTUhttp://cid2004.3x.ro/UTH
[Cor90] Cormen, T. H., Leiserson, C. E., Rivest, R. L. Introduction to
Algorithms. McGraw-Hill, New York, 1990.
[Fil97] Filipescu V., Garaiman D., Circuite electronice digitale. ndrumar
de laborator, Reprografia Universitii din Craiova, 1997.
[Flo03] Florea A, Vinan L. Simularea i optimizarea arhitecturilor de
calcul n aplicaii practice, Editura MatrixROM, Bucureti, 2003.
[Flo05] Florea A. Predicia dinamic a valorilor n microprocesoarele
generaiei urmtoare, Editura MatrixROM, Bucureti, 2005.
[Gol97] Golomety A. Proiectarea Translatoarelor, Editura Universitii
"Lucian Blaga", Sibiu, 1997.
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
312 Introducere n tiina i ingineria calculatoarelor. Interfaa Hardware Software
[Gor05] Gorgan D., Sebestyen-Pal Gh., Computer Design, Editura
albastra, Cluj-Napoca,. ISBN 973-650-123-X, 2005.
[Katz05] Katz R. H., Borriello G., Contemporary Logic Design (2nd
Edition), Prentice Hall, T2005.T
[LC-3] Little Computer v.3.
HTUwww.ece.utexas.edu/~ambler/ee306/Software&Doc/LC3WinGuide.pdfUTTH.
[Lica06] Lica D. .a. Fundamentele programrii, Editura L&S Soft,
Bucureti, 2006.
[Log06] Logoftu D. Bazele programrii n C. Aplicaii, Editura Polirom,
Iai, 2006.
[Lun05] Lungu V., Procesoare INTEL, Programare n limbaj de
asamblare, Ediia a II-a, Editura Teora, Bucureti, 2005.
[Mr96] Mranu Radu Sisteme de calcul, Manual pentru licee de
informatic, cls. IX-a, Editura Didactic i Pedagogic, Bucureti, 1996.
[Min82] Minsky M., Why People Think Computers Can't, AI Magazine,
vol. 3, no. 4, Fall 1982,
HTUhttp://web.media.mit.edu/~minsky/papers/ComputersCantThink.txtUTH.
[Mus97] Musc Gh., Programare n limbaj de asamblare, Editura Teora,
Bucureti, 1997.
[Neg97] Negrescu L. Limbajul C. Manual pentru clasa a XI-a, Editura
Computer Libris Agora, 1997.
[Nic04] Niculae C.M., Componente fundamentale, 2004,
HTUhttp://fpce9.fizica.unibuc.ro/telecom/componente_fundamentale.htmUTH
[Pal07] Palsetia D., Digital Systems Organization and Design, 2007,
HTUhttp://www.cis.upenn.edu/~palsetia/cit595s07/UTH
[Pat05] Patterson D., Hennessy J. Computer Organisation and Design: The
Hardware/Software Interface, Third Edition, Elsevier, 2005, ISBN: 1-
55860-604.
U
s
i
n
g
j
u
s
t
f
o
r
s
t
u
d
y
i
n
g
a
n
d
n
o
n
-
c
o
m
e
r
c
i
a
l
p
u
r
p
o
s
e
s
Bibliografie
313
[Patt03] Patt Y., Patel S. Introduction to Computing Systems: from bits &
gates to C & beyond, McGraw-Hill Higher Education, 2P
nd
P edition, 2003.
[Pop86] Pop V. Analiza i sinteza dispozitivelor numerice. Curs
litografiat, Institutul Politehnic Timioara, 1986, vol. I i II.
[Sch95] Schildt H. C++ manual complet, McGraw-Hill Higher
Education, 1995.
[Seb] Sebestyen-Pal Gh., Arhitectura calculatoarelor,
HTUhttp://users.utcluj.ro/~sebestyen/_Word_docs/Cursuri/UTH
[Sha48] Shannon C.E., A Mathematical Theory of Communication, Bell
System Technical Journal, vol. 27, pp. 379-423, 623-656, July, October,
1948.
[Sto98] Stoilescu D. Culegere de C / C++. Fie de probleme, Editura
Radial, Galai, 1998.
[Vin00] Vinan N. L., Florea A. Microarhitecturi de procesare a
informaiei, Editura Tehnic, Bucureti, ISBN 973-31-1551-7, 2000.
[Vin03] Vinan L. Organizarea i proiectarea microarhitecturilor, 2003,
HTUhttp://webspace.ulbsibiu.ro/lucian.vintan/html/Organizarea.pdfUTH.
[Wik] HTUhttp://en.wikipedia.org/wiki/UTH
[Zah04] Zaharia M.H., Leon F. Limbajul C de la Zero la Student,
Editura Politehnium Iasi, 2004.