Sunteți pe pagina 1din 454

Arhitectura sistemelor de calcul

Curs
Dr
agulici Dumitru Daniel
Facultatea de matematic
a si informatic
a,
Universitatea Bucuresti

2014

Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei

2 Aritmetica sistemelor de calcul


Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea

numerelor n matematic
a
numerelor n calculator
numerelor naturale ca ntregi f
ar
a semn
numerelor ntregi n complement fat
a de 2
numerelor reale n virgul
a mobil
a

3 Logica pentru calculatoare


Algebre booleene
Functii booleene
Particularizare la cazul B2

4 Circuite logice
Circuite logice, Sisteme digitale
0-DS (Circuite combinationale, Functii booleene)
1-DS (Memorii)
2-DS (Automate finite)

Bibliografie:

John L. Hennessy, David A. Patterson:


Organizarea si proiectarea calculatoarelor - interfata hardware/software,
Ed. All, 2002

Adrian Atanasiu:
Arhitectura calculatorului,
Ed. InfoData, 2006

Materialele de laborator (pentru limbajul MIPS)

Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei

2 Aritmetica sistemelor de calcul


Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea

numerelor n matematic
a
numerelor n calculator
numerelor naturale ca ntregi f
ar
a semn
numerelor ntregi n complement fat
a de 2
numerelor reale n virgul
a mobil
a

3 Logica pentru calculatoare


Algebre booleene
Functii booleene
Particularizare la cazul B2

4 Circuite logice
Circuite logice, Sisteme digitale
0-DS (Circuite combinationale, Functii booleene)
1-DS (Memorii)
2-DS (Automate finite)

Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei

2 Aritmetica sistemelor de calcul


Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea

numerelor n matematic
a
numerelor n calculator
numerelor naturale ca ntregi f
ar
a semn
numerelor ntregi n complement fat
a de 2
numerelor reale n virgul
a mobil
a

3 Logica pentru calculatoare


Algebre booleene
Functii booleene
Particularizare la cazul B2

4 Circuite logice
Circuite logice, Sisteme digitale
0-DS (Circuite combinationale, Functii booleene)
1-DS (Memorii)
2-DS (Automate finite)

Conceptul de performanta
Performanta poate avea mai multe acceptiuni:
(1) la un PC, suntem interesati de timpul de r
aspuns al unui program:
este timpul fizic scurs ntre momentul c
and lans
am cererea si momentul c
and
primim rezultatul; el trebuie s
a fie c
at mai mic;
(2) la un centru de calcul, suntem interesati de productivitate (throughput):
num
arul de sarcini executate n unitatea de timp; el trebuie s
a fie c
at mai mare.
Obs: (1) = (2) dar (2) =
6
(1).
De exemplu, centrul de calcul poate avea calculatoare lente dar multe; atunci
pe fiecare calculator vom avea timpi de r
aspuns mari, dar num
arul de sarcini
executate n unitatea de timp n centrul de calcul va fi tot mare.
Ambele acceptiuni ale performantei necesit
a abord
ari complexe, asa c
a pentru
simplitate trebuie s
a ne limit
am la una din ele.
In cele ce urmeaz
a, performanta se va referi la timpul de r
aspuns.
El priveste rularea unui program cu niste date si depinde de mai multi factori:
codul programului, datele cu care se ruleaz
a, promptitudinea cu care utilizatorul
introduce datele c
and sunt cerute, sistemul de operare, nc
arcarea sistemului
(activitatea concomitent
a a altor utilizatori), arhitectura hardware, etc.

Conceptul de performanta
(P) si a descrie dependenta
ei descresc
atoare n raport cu timpul de r
aspuns (T ), adopt
am formula:

Pentru a da o dimensiune numeric


a performantei

P=

1
(1)
T

Deja putem s
a compar
am performantele sau s
a calcul
am un raport al
performantelor unui program cu niste date fixate, pe dou
a masini X si

def

PX > PY TX < TY ,

Y:

PX
def TY
= n
= n (2)
PY
TX

(am notat cu PX , PY , TX , TY , performantele respectiv timpii de


r
aspuns, pe masinile X si Y ).

Conceptul de performanta
Timpul de r
aspuns (al unui program cu niste date) are urm
atoarele
componente:
(1) Timpul consumat cu executarea unor operatii din program;
(2) Timpul consumat cu executarea unor operatii din sistemul de operare, dar
legate de programul nostru (ex: apeluri sistem cerute de program);
(3) Timpul consumat de program n asteaptarea unor evenimente/resurse (ex:
programul este adormit n scanf() astept
and ca utilizatorul s
a introduc
a date
de la consol
a);
(4) Timpul n care programul este suspendat de sistemul de operare, pentru a
executa operatii adminstrative si sarcini legate de alte programe (care ruleaz
a
n paralel cu al nostru).
Not
am (1) + (2) = Timpul CPU
Deci timpul CPU este timpul consumat de program cu executarea unor operatii
(calcule), fie ele din program sau din sistemul de operare dar legate de
program. El este inclus n timpul de r
aspuns, iar ceea ce r
am
ane este timpul
consumat de program n asteptare, fie c
a asteapt
a un eveniment/resurs
a, fie c
a
este suspendat de sistemul de operare pentru a executa operatii adminstrative
si sarcini legate de alte programe.

Conceptul de performanta
Pe anumite sisteme exist
a comenzi cu ajutorul c
arora se pot m
asura si afisa
diferite componente ale timpului de r
aspuns pentru o anumit
a cerere. De
exemplu, n Linux comanda:

time cmd
afisaz
a diferite componente ale timpului de r
aspuns obtinute la executarea
comenzii cmd . De exemplu, poate afisa:

real
user
sys

2m39.000s
1m30.700s
0m12.900s

(timpul de r
aspuns)
(timpul utilizator, (1))
(timpul sistem, (2))

Astfel, putem calcula procentajul timpului CPU din timpul de r


aspuns:
90.7s + 12.9s
= 65%
159s
Deci > 1/3 din timpul de r
aspuns a fost consumat n asteptare, ceea ce ne
spune ceva despre mediul n care a fost rulat programul - resurse greu
disponibile, grad mare de nc
arcare a sistemului, etc.

Conceptul de performanta

Distingem ntre:
performanta sistemului = timpul de r
aspuns pe un sistem nenc
arcat;
performanta CPU = timpul CPU.
In cele ce urmeaz
a restr
angem si mai mult domeniul abord
arii si vom considera
c
a performant
a nseamn
a performanta CPU (deci n formula (1) este vorba
de timpul CPU).

Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei

2 Aritmetica sistemelor de calcul


Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea

numerelor n matematic
a
numerelor n calculator
numerelor naturale ca ntregi f
ar
a semn
numerelor ntregi n complement fat
a de 2
numerelor reale n virgul
a mobil
a

3 Logica pentru calculatoare


Algebre booleene
Functii booleene
Particularizare la cazul B2

4 Circuite logice
Circuite logice, Sisteme digitale
0-DS (Circuite combinationale, Functii booleene)
1-DS (Memorii)
2-DS (Automate finite)

Masurarea performantei
Timpul (CPU) se poate m
asura n:
secunde (s)
cicli de ceas (c)
Leg
atura dintre cele dou
a este dat
a de peroada de ceas (durata ciclului) D
(m
asurat
a n secunde (s), nanosecunde (ns), etc.) sau frecventa F (m
asurat
a
n herzi (Hz), megaherzi (MHz), etc.), dup
a formula:

F =

1
D

C
and m
asur
am n cicli nu mai conteaz
a fizica circuitelor (durata ciclului) ci
doar mp
artirea programului n operatii masina (logica programului) si a
operatiilor masin
a n ciclii (logica circuitelor) - avem astfel posibilitatea s
a
compar
am d.p.v. logic o gam
a mai larg
a de masini.

Masurarea performantei
O m
arime care ne d
a indicatii asupra performantei este num
arul total de cicli
executati C .
El depinde de program, de date si de mp
artirea instructiunilor n cicli (am
presupus programul scris n limbaj masin
a); nu depinde de durata ciclului.
Performanta este cu at
at mai mare cu c
at C este mai mic.
Dac
a presupunem programul scris ntr-un limbaj de nivel nalt, conteaz
a si
mp
artirea codului surs
a n instructiuni masin
a - deci intervine si performanta
compilatorului.
Atunci putem calcula timpul CPU

dup
a formula:

C
(3)
F
Aceast
a formul
a arat
a c
a putem reduce timpul T (deci m
ari performanta)
reduc
and num
arul de cicli executatiC sau/si durata ciclului D .
T =C D =

Este dificil ns
a de redus simultan ambii factori - de obicei reducera unuia
atrage cresterea celuilalt.

Masurarea performantei
Pentru exemplificare, s
a consider
am urm
atorul model simplificat de circuit, care
execut
a c
ate o operatie la fiecare ciclu:
zW
}| {

H
CK


El este construit prin conectarea altor circuite mai simple, n serie, n paralel,
etc. (a se vedea capitolul de circuite logice), are o anumit
a l
atime w , dat
a de
num
arul de intr
ari si de conect
ari n paralel, si o anumit
a naltime H , dat
a de
num
arul de niveluri de conectare n serie; W este cu at
at mai mare cu c
at
datele de prelucrat au o dimensiune mai mare (mai multi biti), iar H este cu
at
at mai mare cu c
at operatia este mai complex
a.
La fiecare tact de ceas (CK ), datele de intrare sunt prelucrate prin circuit si
transformate n niste date de iesire, care la urm
atorul tact vor fi preluate ca
date intrare de un circuit conectat n continuare. Aceast
a prelucrare necesit
a
un anumit timp, iar D trebuie s
a fie acest timp - altfel, dac
a urm
atorul
tact vine prea devreme (nainte ca iesirile s
a fie stabile), vor fi culese (si trimise
mai departe) niste date eronate.

Masurarea performantei
Cresterea D nu este influientat
a de W , deoarece intr
arile sunt procesate n
paralel, ci de H (lungimea traseelor ce trebuie parcurse); n capitolul de
circuite logice vom vedea, de exemplu, c
a o adunare pe 32 biti se face la fel de
repede ca o adunare pe 64 biti (deoarece bitii operanzilor sunt procesati n
paralel), dar o adunare se face mai repede dec
at o nmultire.
S
a consider
am acum c
a circuitul desenat mai sus execut
a o operatie pe
parcursul mai multor cicli - deci sunt necesare mai multe treceri prin el pentru a
se efectua toate prelucr
arile necesare.
Intruc
at efectuarea unei anumite operatii necesit
a o anumit
a cantitate de
prelucr
ari (care depinde de natura matematic
a a operatiei), proiectantul
circuitului va avea de ales ntre dou
a variante:
- va mp
arti prelucrarea n etape putine, realizate c
ate una la ficare ciclu, dar
atunci la fiecare etap
a trebuie f
acute calcule multe, deci H va fi mare si astfel
D va fi mare; atunci, la executarea programului vom avea C mic si D mare;
- va mp
arti prelucrarea n etape multe si atunci la fiecare etap
a trebuie f
acute
calcule putine, deci H si D vor fi mici; atunci, la executarea programului vom
avea C mare si D mic.

Exercitiu rezolvat

Exercitiu rezolvat:
Un program (cu niste date fixate) dureaz
a pe masina A, av
and frecventa
400 MHz , 10 secunde. Dorim o masina B pe care rularea sa dureze
secunde. Proiectantul spune c
a poate creste frecventa, dar programul va
necesita de 1.2 ori mai multi cicli. Care va fi frecventa masinii B ?

Explicatie: proiectantul doreste reducerea duratei ciclului prin micsorarea


naltimii circuitelor (H din desenul anterior); atunci instructiunile vor necesita
mai multe cicluri pentru a fi executate, factorul mediu de multiplicare fiind
1.2.

Exercitiu rezolvat
Rezolvare:
Din enunt ni se dau:

FA = 400 MHz (frecventa masinii A, n MHz );


TA = 10 s (timpul pe masina A, n secunde s );
TB = 6 s (timpul pe masina B , n secunde s );
CB /CA = 1.2 (raportul numerelor de cicluri pe masinile A, B );
Se cere:

FB =? (frecventa masinii B , n MHz ).


Vom avea:

(3)

ip

(3) 1.2FA TA ip 1.2400 MHz10 s


=
TB
6s

A
FB = TCBB = 1.2C
=
TB
= 800 MHz

Comentariu:

desi s-a dublat frecventa, performanta (raportul timpilor) nu


s-a dublat; deci, performanta se obtine greu.

Exercitiu rezolvat
Sfat:
In redactarea rezolv
arilor, la efectuarea calculelor, mentionati la fiecare pas si
unit
atile de m
asur
a; utilitatea este urm
atoarea:

unele unitati de masura pot contine multipli care trebuie luati n


considerare (de exemplu, 1 Mega = 106 );

avem posibilitatea sa ne verificam corectitudinea aplicarii formulelor (de


exemplu, dac
a ne astept
am s
a obtinem secunde si rezult
a cicli, nu este
bine).

Conventie:
In cele ce urmeaz
a, m
arimea fizic
a va fi notat
a cu liter
a mare iar unitatea de
m
asur
a cu liter
a mic
a, pe c
at posibil acceasi liter
a.
De exemplu, C = 10 c nseamn
a c
a num
arul total de cicli executati este
10 (cicli).

Masurarea performantei
Alte dou
a m
arimi care ne dau indicatii asupra performantei sunt num
arul total
de instructiuni executate I si num
arul mediu ce cicli per instructiune
executati (engl: cycles per instruction) CPI , calculat dup
a formula:

CPI =

C
(4)
I

depinde de program si de date; nu depinde de mp


artirea instructiunilor n
cicli si nici de durata ciclului.
Performanta este cu at
at mai mare cu c
at I este mai mic.

CPI

depinde de program, de date si de mp


artirea instructiunilor n cicli; nu
depinde de durata ciclului.
Performanta este cu at
at mai mare cu c
at CPI este mai mic.

Masurarea performantei

CPI

ne permite s
a compar
am dou
a implement
ari hardware diferite ale unui
acelasi set de instructiuni.
De exemplu, s
a presupunem c
a avem de implementat o list
a ce contine
instructiunile + (adunare) si (nmultire).
Presupunem c
a avem dou
a implement
ari, n care num
arul de cicli necesari
fiec
arei instructiuni este dat de tabelul:
Implementare 1
Implementare 2

Nr. cicli
10 c
12 c

Nr. cicli
100 c
70 c

Se pune problema care implementare este mai bun


a. R
aspunsul depinde de
procentajul cu care sunt executate fiecare dintre cele dou
a instructiuni.
Daca pentru categoria de programe si de date avute n vedere, la rulare se
execut
a n medie > 93.75% + si restul , este preferabil
a prima
implementare; dac
a se execut
a n medie < 93.75% + si restul , este
preferabil
a a doua implementare (exercitiu !).
Num
arul mediu de cicli per instructiune calculat tin
and cont de ponderea
aparitiei fiec
arui tip de instructiuni este tocmai CPI . Asasar, cu c
at CPI
este mai mic, performanta este mai mare (pentru categoria de programe si de
date vizat
a).

Masurarea performantei
Din formulele

(3) si (4) obtinem ecuatia elementara a performantei:


T = I CPI D =

I CPI
(5)
F

Ea leag
a cei trei factori cheie ai performantei: num
arul de instructiuni
executate I , num
arul mediu de cicli pe instructiune executati CPI si durata
ciclului D (sau frecventa F ).
Exist
a interdependente ntre factori; de exemplu, sc
aderea CPI poate atrage
cresterea D (deoarece la fiecare ciclu se vor executa operatii mai multe si/sau
mai complexe).
Acesti factori trebuie considerati simultan atunci c
and analiz
am un sistem,
altfel putem trage concluzii eronate privind performanta - a se vedea urm
atorul
exercitiu rezolvat.

Masurarea performantei

Ne punem problema cum putem m


asura

folosind formulele (3) sau (5).

este greu de m
asurat - el depinde de program, de date si de arhitectur
a
(mp
artirea instructiunilor n cicli).

este mai usor de m


asurat - depinde doar de program si de date; unele
procesoare au chiar contoare hardware care num
ar
a instructiunile executate ele se folosesc la simul
ari.

CPI

este ns
a greu de m
asurat - el depinde de program, de date si de
arhitectur
a (mp
artirea instructiunilor n cicli).

Masurarea performantei
Uneori poate fi suficient
a o aproximare a lui C , obtinut
a urm
arind executia
programului pe clase de instructiuni. Mai exact:
Consider
am n clase de instructiuni.
De exemplu: clasa instructiunilor de salt (din care face parte goto), clasa
instructiunilor aritmetice aditive (din care fac parte adunarea, sc
aderea), clasa
instructiunilor aritmetice multiplicative (din care fac parte nmultirea,
mp
artirea).
Pentru fiecare clasa

k {1, . . . , n} notam cu CPIk

media numerelor

de cicli necesitati de instructiunile din clasa k .


De exemplu, CPIaditive este media dintre num
arul de cicli necesitati de o
adunare si num
arul de cicli necesitati de o sc
adere.
Not
am deci c
a la calcularea lui CPIk se ia c
ate un singur exemplar din fiecare
instructiune a clasei k , f
ar
a ponderi/procentaje.
Pentru un program si niste date considerate, not
am cu Ik num
arul de
instructiuni executate din clasa k , k {1, . . . , n}.

Masurarea performantei
Atunci pentru programul, datele si arhitectura considerate, vom avea:

C'

n
X

(CPIk Ik ) (6)

k=1
Valorile n si CPIk , k {1, . . . , n}, depind doar de arhitectur
apentru o masin
a dat
a ele sunt fixate si pot fi comunicate prin documentatia
masinii.
Valorile Ik ,
arhitectur
a.

k {1, . . . , n}, depind de program si de date, nu si de

Astfel, pe o masin
a dat
a, dac
a vrem s
a afl
am (cu aproximatie) num
arul de cicli
C consumati la rularea unui anumit program cu anumite date, este suficient sa
afl
am valorile Ik , k {1, . . . , n}, iar acestea sunt mai usor de aflat,
deoarece instructiunile se num
ar
a mai usor dec
at ciclii.

Masurarea performantei
Valoarea

calculat
a cu formula (6) este ns
a doar una aproximativ
a.

De exemplu, presupunem c
a pe o masin
a dat
a avem:
Clasa
aditive
multiplicative

Rezult
a

Instructiuni
adunare
sc
adere
nmultire
mp
artire

Nr. de cicli necesitati


1
3
10
30

CPIaditive = 2, CPImultiplicative = 20.

Consider
am un program si niste date a.. la rulare se execut
a o adunare si o
nmultire.
Valoarea exact
a a lui C este: 1 + 10 = 11.
Valoarea lui C calculat
a cu formula (6) este: 2 + 20 = 22.
Consider
am acum un program si niste date a.. la rulare se execut
a o sc
adere si
o mp
artire.
Valoarea exact
a a lui C este: 3 + 30 = 33.
Valoarea lui C calculat
a cu formula (6) este tot: 2 + 20 = 22.

Masurarea performantei

Intr-adev
ar, cu formula (6) am considerat de fiecare dat
a c
a se execut
ao
instructiune aditiv
a si o instructiune multiplicativ
a, nesesiz
and c
a la primul
program se execut
a cele mai rapide instructiuni din cele dou
a clase, iar la al
doilea program cele mai lente.
Valoarea lui C calculat
a cu formula (6) se apropie de valoarea exact
a cu at
at
mai mult cu c
at din fiecare clas
a instructiunile se execut
a cu ponderi mai
apropiate (cam tot at
atea adun
ari c
ate sc
aderi, cam tot at
atea nmultiri c
ate
mp
artiri).

Exercitiu rezolvat
Exercitiu rezolvat:
Pe o masin
a dat
a, avem urm
atoarele clase de instructiuni si
clasa

A
B
C

CPI

asociate:

CPIclasa
1
2
3

Consider
am dou
a programe si niste date, pentru care s-au m
asurat:
Program
programul
programul

Nr. de instructiuni executate din fiecare clas


a

1
2

A
2
4

B
1
1

Se cer: a) Care program execut


a mai multe instructiuni ?
b) Care program este mai rapid ?
c) C
at este CPI pentru fiecare program ?

C
2
1

Exercitiu rezolvat

Rezolvare:
a) Not
am:

Ikp = numarul de instructiuni executate de programul p {1, 2} din


clasa k {A, B, C };
p
I = numarul total de instructiuni executate de programul p {1, 2}.
Avem:

I 1 = IA1 + IB1 + IC1 = 2i + 1i + 2i = 5i


I 2 = IA2 + IB2 + IC2 = 4i + 1i + 1i = 6i
1
2
Comentariu: am obtinut I < I , ceea ce pare s
a arate c
a programul 1 este
mai performant.

Exercitiu rezolvat
b) Not
am:

C p = numarul total de cicli executati de programul p {1, 2}.


Folosind formula (6), avem:

C 1 = CPIA IA1 + CPIB IB1 + CPIC IC1


= 1 ci 2i + 2 ci 1i + 3 ci 2i = 10c
C 2 = CPIA IA2 + CPIB IB2 + CPIC IC2
= 1 ci 4i + 2 ci 1i + 3 ci 1i = 9c
Comentariu:
1
2
Am obtinut C > C , ceea ce pare s
a arate c
a programul 2 este mai
performant, n contradictie cu a).
Dintre m
arimile I si C , cea care m
asoar
a realist durata executiei este C ,
deoarece foloseste aceeasi unitate de m
asur
a, ciclul (instructiunile nu dureaz
a
toate la fel de mult). Deci r
aspunsul corect este cel dat de b).
Explicatia erorii de la a): programul 1 execut
a instructiuni mai putine, dar mai
lungi (execut
a dou
a din clasa C , care dureaz
a n medie c
ate 3 cicli).

Exercitiu rezolvat
c) Not
am:

CPI p = numarul mediu de cicli pe instructiune executati de programul


p {1, 2}.
Folosind formula (4), avem:

CPI 1 =
CPI 2 =

C1
I1
C2
I2

=
=

c
10c
5i = 2 i (sau 2cpi ).
9c
c
6i = 1.5 i (sau 1.5cpi ).

Comentariu:
1
2
Am obtinut CPI > CPI , ceea ce pare s
a arate c
a programul 2 este
mai performant, ca la b) (si n contradictie cu a)).
Intruc
at am v
azut c
a b) ofer
a r
aspunsul corect, rezult
a c
a, cel putin n acest
caz, m
arimea CPI descrie performanta mai bine dec
at m
arimea I .
R
aspunsul de la c) era de asteptat, deoarece programul 2 este mai rapid desi
execut
a mai multe instructiuni si de aceea trebuie ca instructiunile executate de
el s
a fie mai rapide.
Oricum, acest exercitiu ilustreaz
a ce am spus mai devreme, c
a factorii care
influienteaz
a performanta trebuie considerati simultan atunci c
and analiz
am un
sistem, altfel putem trage concluzii eronate privind performanta.

Masurarea performantei
O alt
a m
arime care ne d
a indicatii asupra performantei este frecventa de
executare a instructiunilor:

FI =
Intruc
at de obicei valorile lui

FI

I
(7)
T

(m
asurate n instructiuni pe secund
a) sunt

mari, se obisnuieste introducerea nc


a unui factor
obtin
andu-se m
arimea:

MIPS =

106 la numitor,

I
(8)
T 106

m
asurat
a n milioane de instructiuni pe secund
a (millions instructions per
second).

FI si MIPS depind de program, de date, de mpartirea instructiunilor n


cicli si de durata ciclului.
Performanta este cu at
at mai mare cu c
at FI si MIPS sunt mai mari.

Masurarea performantei

Ca si n cazul altor m
arimi discutate mai devreme, FI si MIPS trebuie
considerate mpreun
a cu ceilalti factori atunci c
and analiz
am un sistem, altfel
putem trage concluzii eronate privind performanta - a se vedea urm
atorul
exercitiu rezolvat.

Exercitiu rezolvat
Exercitiu rezolvat:
Pe o masin
a dat
a, av
and frecventa de
de instructiuni si CPI asociate:
clasa

A
B
C

500 MHz , avem urmatoarele clase


CPIclasa
1
2
3

Consider
am dou
a programe si niste date, pentru care s-au m
asurat:
Program
programul
programul

Nr. de instructiuni executate din fiecare clas


a

1
2

A
5
10

B
1
1

C
1
1

Se cer: a) Care sunt timpii CPU pentru cele dou


a programe ?
b) Care sunt valorile MIPS pentru cele dou
a programe ?

Exercitiu rezolvat
Rezolvare:
Situatia seam
an
a cu cea din exercitiul precedent si atunci la fel ca acolo putem
afla num
arul total de cicli executati. Acum stim n plus si frecventa, iar aceasta
ne va permite ca din num
arul de cicli s
a afl
am timpii CPU.
Not
am:

Ikp = numarul de instructiuni executate de programul p {1, 2} din


clasa k {A, B, C };
p
I = numarul total de instructiuni executate de programul p {1, 2}.
C p = numarul total de cicli executati de programul p {1, 2}.
T p = timpul CPU consumat de programul p {1, 2}.
MIPS p = valoarea MIPS pentru programul p {1, 2}.

Exercitiu rezolvat
a) Folosind formula (6), avem:

C 1 = CPIA IA1 + CPIB IB1 + CPIC IC1


= 1 ci 5i + 2 ci 1i + 3 ci 1i = 10c
C 2 = CPIA IA2 + CPIB IB2 + CPIC IC2
= 1 ci 10i + 2 ci 1i + 3 ci 1i = 15c
Atunci, folosind formula (3), avem:
1

T 1 = CF = 50010c
MHz =
= 2 2 108 s
T 2 = CF = 50015c
MHz =
1

10c
500106 Hz
15c
500106
2

c
s

10c
500106

c
s

= 3 108 s

Comentariu: am obtinut T < T , ceea ce pare s


a arate c
a programul 1
este mai performant. M
arimea T m
asoar
a realist performanta, deoarece
foloseste acelasi etalon pentru ambele programe (toate secundele sunt la fel de
lungi).

Exercitiu rezolvat
b) Avem:

I 1 = IA1 + IB1 + IC1 = 5i + 1i + 1i = 7i


I 2 = IA2 + IB2 + IC2 = 10i + 1i + 1i = 12i
Atunci, folosind formula (8), avem:

I1
T 1 106 mips
I2
T 2 106 mips

7i
= 2108
106 mips = 350 mips
= 31012i
8 106 mips = 400 mips
1
2
Comentariu: am obtinut MIPS < MIPS , ceea ce pare s
a arate c
a
programul 2 este mai performant, n contradictie cu a).

MIPS 1 =
MIPS 2 =

Am v
azut ns
a c
a r
aspunsul corect este cel dat de a). Explicatia erorii de la b)
const
a n faptul c
a programul 2 execut
a instructiuni rapide (deci execut
a multe
instructiuni pe secund
a), dar foarte multe (si astfel necesit
a multe secunde, mai
multe dec
at programul 1).
Asadar, un MIPS mare nu nseamn
a neap
arat un timp mai scurt.
Deci, parametrii performantei trebuie analizati mpreun
a, nu izolat.

Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei

2 Aritmetica sistemelor de calcul


Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea

numerelor n matematic
a
numerelor n calculator
numerelor naturale ca ntregi f
ar
a semn
numerelor ntregi n complement fat
a de 2
numerelor reale n virgul
a mobil
a

3 Logica pentru calculatoare


Algebre booleene
Functii booleene
Particularizare la cazul B2

4 Circuite logice
Circuite logice, Sisteme digitale
0-DS (Circuite combinationale, Functii booleene)
1-DS (Memorii)
2-DS (Automate finite)

Numerele si operatiile cu ele sunt concepte matematice.


Pentru a comunica numerele si a efectua usor operatiie cu ele, transcriem
numerele prin niste reprezent
ari simbolice si operatiile cu numere prin algoritmi
de calcul cu aceste reprezent
ari.
Modul uzual de reprezentare a numerelor n matematic
a este prin scriere
pozitional
a, ca sir de cifre ntr-o anumit
a baz
a de enumeratie, de regul
a baza
10. Algoritmii de calcul cu aceste reprezent
ari opereaz
a cifr
a cu cifr
a,
propag
and un transport sau lu
and un mprumut.
Modul de reprezentare a numerelor n calculator si algoritmii de calcul cu aceste
reprezent
ari seam
an
a cu cele folosite n matematic
a, dar nu sunt identice. De
exemplu, n matematic
a putem folosi usor oric
ate simboluri ajut
atoare: virgula,
semnul -, etc. In calculator, pentru a stoca informatii se folosesc biti, iar un
bit stocheaz
a o informatie bivalent
a; odat
a ce am fixat semnificatia ei, de
exemplu cifra 0 si respectiv cifra 1, nu mai avem la dispozitie o alt
a valoare de
bit care s
a nsemne virgul
a sau - - totul trebuie s
a fie doar sir de cifre (binare).
In prima sectiune vom descrie pe scurt modul de reprezentare si algoritmii de
calcul cu reprezent
ari folosite n matematic
a, iar n urm
atoarele sectiuni le vom
detalia pe cele folosite n calculator.

Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei

2 Aritmetica sistemelor de calcul


Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea

numerelor n matematic
a
numerelor n calculator
numerelor naturale ca ntregi f
ar
a semn
numerelor ntregi n complement fat
a de 2
numerelor reale n virgul
a mobil
a

3 Logica pentru calculatoare


Algebre booleene
Functii booleene
Particularizare la cazul B2

4 Circuite logice
Circuite logice, Sisteme digitale
0-DS (Circuite combinationale, Functii booleene)
1-DS (Memorii)
2-DS (Automate finite)

Reprezentarea numerelor ntr-o baza

Modul de reprezentare a numerelor ntr-o anumit


a baz
a si algoritmii de calcul
cu aceste reprezent
ari sunt cunoscute din scoal
a/liceu, nu le vom descrie cu
toate detaliile ci doar vom reaminti c
ateva notiuni si algoritmi, evidentiind
anumite idei.
La baza scrierii pozitionale ntr-o baz
a se afl
a scrierea polinomial
a n puterile
succesive ale bazei.
De exemplu, reprezentarea 1100 n baza 2 nseamn
a num
arul care se calculeaz
a
1 23 + 1 22 + 0 21 + 0 20 , adic
a 12.

Reprezentarea numerelor ntr-o baza


C
and definim modul de reprezentare si de calcul cu numerele ntr-o baz
a b,
interfer
a dou
a limbaje:
- limbajul matematic combinat cu cel natural, n care vorbim (este limbajul
gazd
a a discursului);
- limbajul reprezent
arilor n baza b, despre care vorbim (este limbajul obiect al
discursului).
Mai spunem c
a primul este metalimbaj pentru al doilea.
C
and ne afl
am n metalimbaj si vrem s
a comunic
am numere sau operatii cu ele,
trebuie s
a folosim tot reprezent
ari si algoritmi cu aceste reprezent
ari, deoarece
nu putem comunica direct niste idei ci doar prin niste formaliz
ari ale lor. In
acest scop, folosim reprezent
arile si algoritmii din baza 10 (se presupun
cunoscuti).
Deci, n final, metalimbajul si limbajul sunt limbaje de acelasi tip: cel al
reprezent
arilor pozitionale ntr-o baz
a, doar c
a metalimbajul este n baza 10 iar
limbajul n baza b.
In metalimbaj vom scrie reprezent
ari si algoritmi cu reprezent
ari dar ne vom
g
andi la numere si operatii cu numere, n limbaj vom scrie reprezent
ari si
algoritmi cu reprezent
ari si ne vom g
andi chiar la ele (reprezentarea pozitional
a
n baza b este un sir finit de simboluri, numite cifre ale bazei b).

Reprezentarea numerelor ntr-o baza


Anumite sintagme pot ap
area la fel si n metalimbaj si n limbaj, iar dac
a nu se
deduce din context unde ne afl
am, pot ap
area confuzii. De exemplu, scrierea
1 1 0 0 poate fi considerat
a n metalimbaj (baza 10) si nseamn
a num
arul o
mie o sut
a, sau n limbajul bazei 2 si nsemn
a sirul 1 1 0 0, prin care se
reprezint
a num
arul doisprezece.
De aceea, c
and este pericol de confuzie, vom folosi scrieri diferite. Mai exact:
- o scriere de forma 12 este n metalimbaj si nseamn
a num
arul doisprezece;
- o scriere de forma (12)2 este tot n metalimbaj si nseamn
a c
a num
arului
doisprezece ii aplic
am procedeul de conversie n baza doi ((.)2 este de fapt o
functie bijectiv
a de la numere/reprezent
ari zecimale la reprezent
ari binare);
a reprezentarea (sirul de
- o scriere de forma 11002 este n limbaj si nseamn
cifre binare) 1 1 0 0, prin care se reprezint
a num
arul doisprezece.
Dac
a nu este pericol de confuzie, putem folosi notatii simplificate. De exemplu,
dac
a din context este clar
a baza, putem scrie doar 1100, iar dac
a este clar si
nivelul (metalimbaj/limbaj), putem scrie doar 1100.
In restul acestei sectiuni vom descrie (reaminti) regulile de conversie a
numerelor dintr-o baz
a n alta si algoritmii de calcul cu numerele reprezentate
ntr-o anumit
a baz
a.

baza 10 baza b; numere ntregi

Trecerea din baza 10 ntr-o baz


a b:
Cazul numerelor ntregi:
Fie x Z/ si b N
I , b 2, baza.
Consider
am x si b scrise n baza 10; facem calculele n baza 10.
Regul
a:
- mp
artim cu rest pe |x| la b, apoi c
atul la b, etc., p
an
a obtinem c
atul 0;
- lu
am resturile n ordine invers
a si le nlocuim cu cifre ale bazei b;
- dac
a x < 0, punem n fat
a .
Observatie: dac
a am continua procedeul dup
a ce am obtinut c
atul 0, am obtine
noi c
aturi si resturi 0, care ar genera cifre 0 n st
anga reprezent
arii, iar acestea
nu schimb
a semantica reprezent
arii (nu afecteaz
a valoarea reprezentat
a).

baza 10 baza b; numere ntregi


Calculele se pot redacta astfel (C0, C1, ..., Cn sunt cifre ale bazei b):
x
.
.
.
rest0
C0

|
b
|-------| cat0 |
b
.
|-------.
| cat1
.
.
Obtinem reprezentarea:
rest1
.
C1
.
cat(n-1) |
b
.
|-------.
| 0
.
restn
Cn
<======= citim

-----------Cn ... C1 C0

baza 10 baza b; numere ntregi


Exemplu: (4235)16 = ?
4235
32
--103
96
-==75
64
-11
B

| 16
|----| 264 | 16
16 |------ | 16 | 16
104
16 |----96
-- | 1 | 16
-0
0 |----==8
0
- | 0
8
1
1

<=======

Deci: (4235)16 = 108B

baza 10 baza b; numere ntregi

Dac
a b are (n baza 10) doar o cifr
a, atunci catk si restk se pot calcula
mintal, iar calculele se pot redacta mai simplu:
x
cat0
cat1

| rest0
| rest1
|
.
.
.
cat(n-1) | restn
0
|

C0
C1

Cn

/\
||
||
||
||
||
|| citim

Obtinem reprezentarea:

-----------Cn ... C1 C0

baza 10 baza b; numere ntregi


Exemplu: (105)2 = ?
105
52
26
13
6
3
1
0

|
|
|
|
|
|
|
|

1
0
0
1
0
1
1

/\
||
||
||
||
||
||

(pentru b < 10 cifrele bazei b sunt aceleasi ca n baza 10 si nu este nevoie s


a le
mai scriem o dat
a n dreapta).
Deci: (105)2 = 1101001

baza 10 baza b; numere reale

Cazul numerelor reale (fractionare):


Fie x R
I si b N
I , b 2, baza.
Consider
am x si b scrise n baza 10; facem calculele n baza 10.
Regul
a:
- partea ntreag
a a lui |x| se reprezint
a ca la numere ntregi;
- partea fractionar
a a lui |x| se nmulteste cu b si se ia partea ntreag
a, apoi
partea fractionar
a r
amas
a se nmulteste cu b si se ia partea ntreag
a, etc., p
an
a
|
obtinem o parte fractionar
a 0 sau care a mai fost nt
alnit
a (dac
a x R
I \Q
procedeul continu
a la infinit, nu este algoritm);
- lu
am p
artile ntregi obtinute n ordine direct
a si le nlocuim cu cifre ale
bazei b;
- dac
a x < 0, punem n fat
a .

baza 10 baza b; numere reale


Observatii:
- regula nu o contrazice pe cea pentru numere ntregi ci o completeaz
a
(afirm
a ceva si pentru partea fractionar
a, care la numere ntregi lipseste);
cifrele produse de cele dou
a p
arti ale regulii (pentru partea ntreg
a, respectiv
fractionar
a) nu se suprapun, deoarece se afl
a n p
arti diferite ale virgulei;
- cu partea ntreag
a facem mp
artiri succesive la b si obtinem cifre de la
virgul
a spre st
anga; cu partea fractionar
a facem nmultiri succesive cu b si
obtinem cifre de la virgul
a spre dreapta; per total, cifrele se obtin de la virgul
a
spre extremit
ati;
- fiecare din p
artile fractionare obtinute reprezint
a un num
ar real din
intervalul [0, 1); c
and o nmultim cu b, obtinem un num
ar real din intervalul
[0, b); lu
and apoi partea ntreag
a, obtinem un num
ar ntreg din multimea
{0, . . . , b 1}, care corespunde unei cifre n baza b - aceasta este urm
atoarea
zecimal
a (n baza b); cu partea fractionar
a r
amas
a continu
am procedeul;

baza 10 baza b; numere reale

- p
an
a c
and se aplic
a procedeul:
dac
a la un moment dat nt
alnim o parte fractionar
a 0, nmultind cu b
obtinem o nou
a parte ntreag
a (i.e. o nou
a zecimal
a) 0 si o nou
a parte
fractionar
a 0, etc., deci continu
and vom obtine noi zecimale 0 nesemnificative;
de aceea ne putem opri si conchidem c
a am obtinut o fractie zecimal
a finit
a;
dac
a la un moment dat obtinem o parte fractionar
a care a mai fost
nt
alnit
a, continu
and procedeul vom obtine aceeasi succesiune de zecimale ca
dup
a prima nt
alnire; de aceea ne putem opri si conchidem c
a am obtinut o
fractie zecimal
a periodic
a (simpl
a sau mixt
a); perioada este succesiunea de
zecimale generate dupa prima nt
alnire;

baza 10 baza b; numere reale


ntruc
at partile fractionare generate de procedeu reprezint
a numere reale
din intervalul [0, 1) si exist
a o infinitate de asemenea numere distincte, este
posibil ca prin continuarea procedeului s
a nu obtinem nici o dat
a o parte
fractionar
a 0 sau care a mai fost nt
alnit
a; atunci procedeul nu se termin
a (nu
este algoritm); acest lucru se nt
ampl
a ns
a doar n cazul numerelor irationale;
|, atunci
mai exact: dac
ax Q
n orice baz
a b reprezentarea lui x va fi o
|,
fractie zecimal
a finit
a, periodic
a simpl
a sau periodic
a mixt
a; dac
a x R
I \Q
atunci n orice baza b reprezentarea lui x va fi o fractie zecimal
a infinit
a
neperiodic
a;
deci, dac
a ntr-o aplicatie se va cere reprezentati 7.8 n baza 2, vom sti
c
a procedeul se termin
a (si obtinem o fractie zecimal
a finit
a, periodic
a simpl
a
sau periodic
a mixt
a), deoarece n baza surs
a (adic
a 10) num
arul s-a reprezentat

printr-o fractie zecimal


a finit
a, deci este rational; nu vom cere reprezentati 2
n baza 2;
atentie ns
a c
a un acelasi num
ar rational poate avea ntr-o baz
ao
reprezentare prin fractie zecimal
a finit
a, n alta prin fractie zecimal
a periodic
a
simpl
a, n alta prin fractie zecimal
a periodic
a mixt
a.

baza 10 baza b; numere reale


Exemplu: (7.8)2 = ?
7
3
1
0

|
|
|
|

1
1
1

/\
||
||

2 * 0.8 = 1.6 || citim


||
2 * 0.6 = 1.2 ||
||
2 * 0.2 = 0.4 ||
||
2 * 0.4 = 0.8 \/
2 * 0.8
stop, am reintalnit 0.8

Deci: (7.8)2 = 111.(1100)

baza 10 baza b; numere reale


Dac
a b are (n baza 10) doar o cifr
a, atunci nmultirea unei p
arti fractionare cu
b se poate face mintal, iar calculele se pot redacta mai simplu:
parte_fractionara_0
parte_fractionara_1
.
.
.

|
|
|
|
|

zecimala_1
zecimala_2

In cazul exemplului de mai sus vom avea:


0.8
0.6
0.2
0.4
0.8

|
|
|
|
|

1
1
0
0

||
||
||
\/

|| citim
||
||
||
\/

baza 10 baza b; numere reale

Exemplu: (7.8)5 = ?
7
1
0

|
|
|

2
1

0.8
0

|
|

4
stop, am intalnit partea fractionara 0

Deci: (7.8)5 = 12.4


Observ
am c
a 7.8 se reprezint
a n baza 2 prin fractie zecimal
a periodic
a, iar n
baza 5 (si n baza 10) prin fractie zecimal
a finit
a.

baza 10 baza b; numere reale

Dac
a num
arul x este dat (n baza surs
a, 10) printr-o fractie zecimal
a periodic
a
(simpl
a sau mixt
a), nu putem efectua direct calculele regulii de conversie,
deoarece nu stim s
a nmultim fractii zecimale infinite.
Regula de conversie se bazeaz
a ns
a pe propriet
ati matematice, care nu depind
de modul de reprezentare a numerelor; de aceea, o putem aplica, dar vom alege
alte reprezent
ari, convenabile - anume prin fractii ordinare.

baza 10 baza b; numere reale

Exemplu: (4.(3))2 = ?
4
2
1
0

|
|
|
|

0
0
1

2 * 0.(3) = 2 * (3/9) = 2 * (1/3) = (2/3) = 0 + (2/3)


2 * (2/3) = 4/3 = 1 + (1/3)
2 * (1/3) stop, am reintalnit 1/3

Deci: (4.(3))2 = 100.(01)

baza b baza 10
Trecerea dintr-o baz
a b n baza 10 (b N
I , b 2):
Regul
a:
- nlocuim cifrele cu numerele pe care le reprezint
a (scrise n baza 10) si
scrierea pozitional
a cu scriere polinomial
a n puterile succesive ale lui b (scris
tot n baza 10);
- facem calculele n baza 10.

Exemple:
3
2
1
0
(1101)1
2 = 1 2 + 1 2 + 0 2 + 1 2 = 13
2
1
0
(A2C )1
16 = 10 16 + 2 16 + 12 16 = 2604
1
0
1
(12.4)1
=7+
5 = 15 +25 +45

4
5

39
5

= 7.8

Observatii:
- n primul exemplu, n st
anga primului =, 0 si 1 nseamn
a cifre (n baza 2),
iar n dreapta numere (n baza 10); n al doilea exemplu confuzia ntre cifre si
numere este mai mic
a;
- n ultimul exemplu vedem c
a pentru cifrele p
artii fractionare exponentii scad
n continuare, la valori negative.

baza b baza 10
Dac
a reprezentarea n baza b de la care pornim este o fractie zecimal
a
periodic
a (simpl
a sau mixt
a), scrierea polinomial
a rezultat
a este infinit
a.
O asemenea sum
a se poate calcula folosind instrumentul matematic al seriilor.
Putem evita folosirea seriilor dac
a nlocuim fractia zecimal
a surs
a cu o fractie
ordinar
a (n baza b).
Regula de trecere de la fractie zecimal
a la fractie ordinar
a n baza b este la fel
ca n baza 10, cu diferenta c
a 9 se nlocuieste cu b 1.

Exemplu:
(10.1(011))1
2 = (10 +
2+

10
14

38
14

19
7

10111 1
)2
1110

= (10)1
2 +

1
(1011)1
2 (1)2

(1110)1
2

=2+

111
14

= 2.(714285)

Observatie: am folosit si faptul c


a functiile de forma (.)b si (.)1
au propriet
ati
b
de morfism (comut
a cu operatiile aritmetice).

baza b1 baza b2

Trecerea dintr-o baz


a b1 ntr-o baz
a b2 (b1 , b2 N
I , b1 , b2 2):
Problema este de aceeasi natur
a ca n cazul trecerilor baza 10 baza b si
baza b baza 10 de mai nainte, deci am putea s
a aplic
am regulile de acolo.
Dar, dac
a proced
am ca la trecerea baza 10 baza b, va trebui s
a facem
calculele n baza b1 , iar dac
a proced
am ca la trecerea baza b baza 10, va
trebui s
a facem calculele n baza b2 .
Dac
a vrem s
a facem calculele doar n baza 10, vom trece prin baza 10
compun
and cele dou
a reguli.
Regul
a:
baza b1 baza 10 baza b2

baza b1 baza b2
Trecerea baza b1 baza b2 se poate face mai simplu, f
ar
a a mai trece prin
baza 10, dac
a una din baze este putere a celeilalte:
Trecerea b k b (b, k N
I b 2, k 1)
Regul
a:
- nlocuim fiecare cifr
a a bazei b k cu c
ate un grup de k cifre ale bazei b;
- elimin
am 0-le extreme (din st
anga p
artii ntregi si din dreapta p
artii
fractionare);
Trecerea b b k (b, k N
I b 2, k 1)
Regul
a:
- grup
am c
ate k cifre, de la virgul
a spre st
anga si spre dreapta, complet
and
eventual cu 0-uri grupurile extreme (pentru a avea grupuri de k cifre); aceste
0-uri se pun la st
anga n grupul aflat cel mai la st
anga al p
artii ntregi si la
dreapta n grupul aflat cel mai la dreapta al p
artii fractionare;
- nlocuim fiecare grup de k cifre ale bazei b cu c
ate o cifr
a a bazei b k .

baza b1 baza b2

Observatii:
- pentru a aplica regulile de mai nainte, este necesar s
a stim cele 2k
k
corespondente posibile ntre o cifr
a a bazei b si un grup de k cifre ale bazei b;
acestea se pot determina aplic
and trecerea prin baza 10 (baza bk baza 10
baza b) si se pot retine ntr-un tabel (cu 2k linii);
- explicatia intuitiv
a a acestor reguli este urm
atoarea: dac
a n scrierea
am c
ate
polinomial
a n puterile succesive ale lui b, cu coeficienti 0, b 1, grup
k termeni consecutivi si d
am factor comun puterea lui b cea mai mic
a, obtinem
o scriere polinomial
a n puterile succesive ale lui b k , cu coeficienti 0, b k 1;
din unicitatea acestor scrieri rezult
a c
a ele dau reprezent
arile n bazele b si b k .

baza b1 baza b2
Exemplu:

S
a se converteasc
a 1A.C 16 n baza 2 si 11011.1012 n baza 16.

Avem 16 = 24 , iar grupurile posibile de 4 cifre binare si cifrele hexa


corespunz
atoare reprezint
a numerele 0, 15 si sunt cuprinse n tabelul:
Zec
0
1
2
3

Bin
0000
0001
0010
0011

Hex
0
1
2
3

Zec
4
5
6
7

Bin
0100
0101
0110
0111

Hex
4
5
6
7

Zec
8
9
10
11

Bin
1000
1001
1010
1011

Hex
8
9
A
B

Zec
12
13
14
15

Bin
1100
1101
1110
1111

Atunci avem:
1A.C 16 |{z}
1 |{z}
A . |{z}
C 0001
00011010.1100

11010.112
| {z } 1010
| {z } . 1100
| {z }
11011.1012 |{z}
1 1011
101 0001
1 |{z}
B . |{z}
A 1B.A16
| {z } . |{z}
| {z } 1011
| {z } . 1010
| {z } |{z}

Hex
C
D
E
F

baza b1 baza b2

Observatie: metodele de mai sus nu se pot aplica pentru a trece direct din baza
8 n baza 16 sau invers, deoarece 16 este multiplu al lui 8, dar nu putere a lui
8. Putem ns
a proceda n doi pasi, trec
and prin baza 2, de exemplu:
baza 8 baza 2 baza 16

Operatii aritmetice ntr-o baza b

Operatiile aritmetice cu numerele scrise ntr-o baz


a b 2 oarecare se fac dup
a
reguli asem
an
atoare ca n baza 10, dar transportul si mprumutul trebuie s
a se
fac
a la b, nu la 10.
Pentru calculele de o cifr
a n baza b putem trece numerele n baza 10, facem
calculele acolo, apoi trecem rezultatele n baza b; ntruc
at toate calculele de o
cifr
a n baza b posibile sunt n num
ar de b 2 , este suficient s
a le facem pe toate
o singur
a dat
a si s
a retinem rezultatele ntr-o tabl
a a operatiei respective n
baza b.

Operatii aritmetice ntr-o baza b


Exemplu: In baza 2, sa se adune:

1011 + 110

Tabla adun
arii n baza 2 este:
+
0
1

0
0
1

1
1
10

De exemplu: 1 + 1 = 1 + 1 = 2 = 10.
Atunci, avem:
1 0 1 1 +
1 1 0
--------1 0 0 0 1
Pe pozitia unit
atilor am avut 1 + 0 = 1, f
ar
a transport; pe urm
atoarea pozitie
am avut 1 + 1 = 10 (adic
a num
arul 2), s-a p
astrat 0 si s-a propagat 1; pe
urm
atoarea pozitie am avut 0 + 1 + 1 (ultimul 1 provenit din transport) = 10,
s-a p
astrat 0 si s-a propagat 1; etc.

Operatii aritmetice ntr-o baza b

Exemplu: In baza 16, sa se scada:

BA - 9B

Avem:
B A 9 B
----1 F
Pe pozitia unit
atilor avem A B = 10 11 < 0; de aceea, mprumut
am 1 de
pe pozitia urm
atoare si atunci calculul este 1 16 + 10 11 = 15 = F . Pe
pozitia urm
atoare avem B 1 9 (acel 1 a fost cedat la mprumut)
= 11 1 9 = 1 = 1.

Operatii aritmetice ntr-o baza b


Exemplu: In baza 2, sa se nmulteasca:

110.11 x 1.001

Avem:
1 1 0.1 1 x
1.0 0 1
----------1 1 0 1 1
1 1 0 1 1
----------------1 1 1.1 0 0 1 1
Inmultirea ntr-o baz
a oarecare se face tot dup
a reguli asem
an
atoare ca n baza
10, dar pentru baza 2 aceste reguli se pot simplifica, deoarece singurele cifre
sunt 0 si 1, care desemneaz
a respectiv numerele 0 si 1, care sunt factor
anulator, respectiv element neutru, la nmultire; nmultirea cu un 0 presupune
scrierea unui r
and de 0-uri, care nu conteaz
a la adunare si se pot omite, iar
nmultirea cu un 1 revine la a scrie o copie a denmultitului; asadar, pentru a
face nmultirea, este suficient s
a parcurgem nmultitorul de la dreapta spre
st
anga si pentru fiecare 1 nt
alnit s
a mai scriem o copie a denmultitului, cu
cifra unit
atilor aliniat
a la acel 1, iar n final s
a adun
am r
andurile scrise - ceea ce
am f
acut mai sus; n final, num
arul de zecimale ale produsului este suma
numerelor de zecimale ale factorilor, la fel ca n cazul bazei 10.

Operatii aritmetice ntr-o baza b


Exemplu: In baza 2, sa se mparta:

10000.01 : 11

Avem:
1 0 0 0 0.0 1 | 1 1
1 1
|--------| 1 0 1.0 1(1 0)
= = 1 0 0
1 1
----= = 1 0 1
1 1
----= 1 0 0
1 1
----= = 1 0

Operatii aritmetice ntr-o baza b

C
and facem o mp
artire, trebuie s
a urm
arim dac
a c
atul rezult
a ca o fractie
zecimal
a finit
a sau se formeaz
a o perioad
a. Pentru aceasta, dup
a ce la
demp
artit am trecut de virgul
a si am cobor
at ultima cifr
a nenul
a, retinem
resturile succesive obtinute ntr-o list
a; dac
a la un moment dat un rest este 0,
ne oprim, a rezultat o fractie zecimal
a finit
a; dac
a la un moment dat un rest se
repet
a, ne oprim, a rezultat o fractie zecimal
a periodic
a, iar perioada ncepe cu
cifra generat
a la prima aparitie a restului care s-a repetat.
In exemplul nostru, dup
a ce la demp
artit am trecut de virgul
a si am cobor
at
ultima cifr
a nenul
a, am obtinut succesiv urm
atoarele resturi: 10, 1, 10
(repetitie).

Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei

2 Aritmetica sistemelor de calcul


Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea

numerelor n matematic
a
numerelor n calculator
numerelor naturale ca ntregi f
ar
a semn
numerelor ntregi n complement fat
a de 2
numerelor reale n virgul
a mobil
a

3 Logica pentru calculatoare


Algebre booleene
Functii booleene
Particularizare la cazul B2

4 Circuite logice
Circuite logice, Sisteme digitale
0-DS (Circuite combinationale, Functii booleene)
1-DS (Memorii)
2-DS (Automate finite)

Reprezentarea n calculator
Fie M N
I , Z/, R
I o multime de numere pe care dorim s
a le reprezent
am n
calculator.
Consider
am o locatie de n biti: bn1 . . . b0 (de obicei n este multiplu de 8).
Not
am Cn = {cn1 . . . c0 |ci {0, 1}}, multimea configuratiilor de 0, 1 pe n
pozitii.
O reprezentare este o functie [.]n : M Cn bijectiv
a.
Observatii:
- M, n si [.]n trebuie alese a.. [.]n s
a fie bijectiv
a, deoarece noi reprezent
am
numerele n calculator, oper
am asupra lor cu calculatorul, dar la sf
arsit dorim s
a
putem interpreta rezultatul (s
a afl
am ce num
ar are reprezentarea respectiv
a),
ori aceasta nseamn
a s
a aplic
am [.]1
n ;
- [.]n nu poate fi (.)2 (reprezentarea binar
a folosit
a n matematic
a), deoarece
avem valori de biti pentru a desemna doar 0 si 1, nu si , ., etc.; deci, trebuie
facut
a o alt
a codificare;
- n plus, regula de reprezentare prin care este definit
a [.]n trebuie aleas
a a.. s
a
permit
a o implementare usoar
a si eficient
a a unor operatii hardware pe Cn prin
care s
a traducem operatiile aritmetice pe M.

Reprezentarea n calculator

Consider
am urm
atoarele operatii hardware la nivel de bit:
a
0
0
1
1

b
0
1
0
1

a|b (or)
0
1
1
1

a&b (and)
0
0
0
1

a b (xor)
0
1
1
0

a
0
1

a (not)
1
0

Reprezentarea n calculator
Pe Cn putem considera mai multe operatii hardware (lor le corespund
instructiuni n limbajul masin
a sau de asamblare), de exemplu:
- Operatii logice binare pe biti:
| (or),
& (and),
a
(xor), etc.; ele se efectueaz
aplic
and bit cu bit operatiile logice respective, conform tabelului anterior.
Exemplu (n = 8):

11000101
01000110
01000100


&

- Operatii aritmetice binare:


+ (adunare),
(sc
adere), etc.; ele se efectueaz
a
aplic
and algoritmii de calcul cu reprezent
arile binare ale numerelor naturale
folositi n matematic
a (ilustrati n sectiunea precedent
a); un transport din
pozitia bn1 se pierde, iar un mprumut cerut la aceast
a pozitie se primeste
automat (din afar
a).
11000101
+
00001011

01000110
01000110
00001011
11000101
(n primul caz am avut un transport din pozitia 7, care s-a pierdut, iar n al
doilea caz s-a cerut un mprumut la pozitia 6, cererea s-a transmis la pozitia 7,
unde mprumutul s-a primit automat din afar
a, iar c
and acesta s-a transmis
la pozitia 6, unde a fost generat
a cererea, a lasat n urm
a un 1 pe pozitia 7).
Exemplu (n = 8):

Reprezentarea n calculator

- operatii logice unare: 


a de 1),
 (complement fat
a de 2);
(complement fat

a neg
and fiecare bit ci , conform tabelului anterior;
cn1 . . . c0 se efectueaz

 cn1 . . . c0 se efectueaz
a neg
and fiecare bit ci si apoi adun
and 1 aritmetic (cu
eventuala propagare a transportului);
Exemplu (n = 8):

01001100
10110011

01001100
10110100

Observatie:
 cn1 . . . c0 se poate obtine mai simplu astfel:
- dac
a cn1 = . . . = c0 = 0, nu se schimb
a nimic;
- altfel, dac
a k = min{i {0, . . . n 1}|ci = 1}, atunci bitii cn1 , . . . , ck+1 se
neag
a iar bitii ck , . . . , c0 se las
a neschimbati.

Reprezentarea n calculator
Se constat
a c
a operatiile hardware pe Cn considerate nu sunt independente
logic (se pot exprima unele prin altele):
Teorem
a: Pentru orice , Cn avem:

=(
+1
)

=
+ (
 )=
+ (( 
+ 1)
)
(am notat prin 1 configuratia 0 . . . 01 Cn ).
Exemplu: ntr-un exemplu anterior am calculat c
a 00001011
01000110 =
11000101; s
a verific
am c
a obtinem acelasi rezultat si cu formula pentru
din
teorem
a:
Dac
a = 00001011 si = 01000110, atunci:

= 10111001
(
+ 1 = 10111001
+ 00000001 = 10111010
)

+ (( 

)

+
1)
=
00001011

+ 10111010 = 11000101

Reprezentarea n calculator

De aceea,
+ si
, desi exist
a ca instructiuni diferite n limbajul masin
a sau de
asamblare, intern sunt realizate cu un acelasi circuit, numit sumator.
La fel, exist
a instructiuni masin
a pentru aplicarea algoritmilor de nmultire si
mp
artire, care intern sunt realizate prin combinatii de aceleasi c
ateva circuite
simple (de exemplu, nmultirea = adunare repetat
a, mp
artirea = sc
adere
repetat
a).
Operatiile din limbajele de nivel nalt sunt traduse de compilator prin
combinatii de operatii implementate hardware. Cu c
at limbajul este de nivel
mai jos (i.e. mai apropiat de hardware), cu at
at combinatia este mai simpl
a.
De exemplu, n limbajul C exist
a operatorii |, &, ^, ..., iar ei pot fi tradusi prin
c
ate o singur
a operatie
|,
&,
, ... (de aceea am notat asa).

Reprezentarea n calculator

In continuare, vom studia algoritmii de reprezentare [.]n pentru diverse tipuri de


numere.
Pentru un num
ar oarecare x, vom nota (x)n2 reprezentarea lui x n baza 2
folosit
a n matematic
a (a se vedea sectiunea anterioar
a), completat
a cu cifre
semnificative 0 p
an
a la n pozitii.

Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei

2 Aritmetica sistemelor de calcul


Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea

numerelor n matematic
a
numerelor n calculator
numerelor naturale ca ntregi f
ar
a semn
numerelor ntregi n complement fat
a de 2
numerelor reale n virgul
a mobil
a

3 Logica pentru calculatoare


Algebre booleene
Functii booleene
Particularizare la cazul B2

4 Circuite logice
Circuite logice, Sisteme digitale
0-DS (Circuite combinationale, Functii booleene)
1-DS (Memorii)
2-DS (Automate finite)

Reprezentarea ca ntreg fara semn


In limbajul C, reprezentarea ca ntreg f
ar
a semn se foloseste n cazul tipurilor
ntregi nsotite de unsigned:
unsigned char, unsigned short, unsigned int,
unsigned long, unsigned long long
Reprezentarea ca ntreg f
ar
a semn pe n pozitii se defineste astfel:
M := {0, . . . , 2n 1} N
I
[.]n := [.]un : {0, . . . , 2n 1} Cn , [x]un = (x)n2 .

Exemplu: In limbajul C (versiunea compilatorului TC++ 1.00) avem:


unsigned short x, y, z;
/* n = 16, M = {0, . . . , 65535} */
scanf{"%hu%hu", &x, &y};
/* aplic
a [.]u16 */
z = x + y;
/* compilatorul traduce + prin
+ */
printf{"%hu", z};
/* aplic
a [.]u16 1 */

Reprezentarea ca ntreg fara semn

Din modul cum se fac operatiile implementate hardware discutat mai devreme,
rezult
a c
a operatiile cu numerele naturale reprezentate astfel se fac mod 2n ,
mai exact:
Teorem
a:
u u 1
Dac
a op = +, , . . . atunci: [[x]un
op [y ]n ]n
= (x op y ) mod 2n
(mod 2n se calculeaz
a a.. s
a produc
a un rezultat {0, . . . , 2n 1}).
u u 1
In particular, dac
a x op y M, atunci: [[x]un
op [y ]n ]n
= x op y .
Asadar, dac
a reprezent
am x si y si aplic
am
op din calculator, obt
inem
reprezentarea lui x op y din matematic
a modulo 2n ; dac
a nu avem dep
asire,
este chiar x op y din matematic
a.

Reprezentarea ca ntreg fara semn

In particular, vom avea:


Dac
a x, y , x y M, atunci: [[x]un
[y ]un ]un 1 = x y ,
u
adic
a: [[x]n
+ (
[y ]un )]un 1 = x y
sau: [[x]n
+ ((
+ 1)]1
n = x y
[y ]n )
De asemenea, vom avea:
Dac
a x M, atunci: [
[x]un ]un 1 = x + 2n ,
u
adic
a: [(
+ 1]un 1 = x + 2n .
[x]n )

Reprezentarea ca ntreg fara semn


Exemplu: In limbajul C consideram declaratiile:
unsigned char x,y,z;

/* n = 8, M = {0, ..., 255} */

1) Secventa de cod: x = 200; y = 200; z = x + y; printf("%d",z);


afisaz
a: 144
400
-------------------|
0
| 255
----[----------][----------]--0
255|
|
-------144

<-----|
0 [----------] 255
|
------>

Intuitiv, ne imagin
am c
a intervalul [0,...,255] se multiplic
a de-a lungul axei
reale, determin
am punctul aflat la distanta 400 de origine, apoi m
asur
am
deplasamentul acestui punct fat
a de nceputul intervalului n care se afl
a,
obtin
and rezultatul 144 (desenul din st
anga).
Sau, ne imagin
am c
a valoarea 400 se nf
asoar
a parcurg
and circular intervalul
[0,...,255] si ce r
am
ane n interval este rezultatul 144 (desenul din dreapta).

Reprezentarea ca ntreg fara semn

2) Secventa de cod: x = 255; ++x; face ca x s


a devin
a0
Secventa de cod: x = 0; --x; face ca x s
a devin
a 255
3) Secventa de cod: for(x = 0; x < 256; ++x); este un ciclu infinit.
Intr-adev
ar, x primeste succesiv valorile 0, 1, 2, ..., 255, 0, 1, ..., deci vom
avea mereu x < 256.
De notat c
a la efectuarea testului x < 256 operanzii sunt convertiti la tipul
int, iar comparatia se face n cadrul tipului int.

Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei

2 Aritmetica sistemelor de calcul


Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea

numerelor n matematic
a
numerelor n calculator
numerelor naturale ca ntregi f
ar
a semn
numerelor ntregi n complement fat
a de 2
numerelor reale n virgul
a mobil
a

3 Logica pentru calculatoare


Algebre booleene
Functii booleene
Particularizare la cazul B2

4 Circuite logice
Circuite logice, Sisteme digitale
0-DS (Circuite combinationale, Functii booleene)
1-DS (Memorii)
2-DS (Automate finite)

Reprezentarea n complement fata de 2

In limbajul C, reprezentarea n complement fat


a de 2 se foloseste n cazul
tipurilor ntregi ne-nsotite de unsigned:
char, signed char, short, signed short, int, signed int,
long, signed long, long long, signed long long
Reprezentarea n complement fat
a de 2 pe n pozitii se defineste astfel:
M := {2n1 , . . . , 2n1 1} Z/
(x)n2 ,
(2 + x)n2 ,
(aceast
a functie s.n.codul complementar fat
a de 2).

[.]n :=

[.]sn

: {2

n1

,...,2

n1

1} Cn ,

[x]sn

x 0
x <0

Observatie: compact, putem scrie: x M, [x]sn = ((2n + x) mod 2n )n2 .

Reprezentarea n complement fata de 2


Exemplu: In limbajul C, pentru tipul char avem:

n = 8,

M = {128, . . . , 127}.
Ilustr
am modul de reprezentare a c
atorva valori:
127:
126:
...
1:
0:
-1:
-2:
...
-127:
-128:

01111111 = (127)n2
01111110 = (126)n2

-128
-1 0
127
--[-------][-------]-\
\
|
\
|\
|
\
| \
|
n
00000001 = (1)2
\
| \
|
\
|
\
|
00000000 = (0)n2
\
|
\
|
11111111 = (255)n2 = (256 1)n2
\ |
\ |
n
n
\|
\|
11111110 = (254)2 = (256 2)2
\
\
|\
|\
n
n
| \
| \
10000001 = (129)2 = (256 127)2
| \
| \
n
n
|
\
|
\
10000000 = (128)2 = (256 128)2
|
\ |
\
|
\ |
\
Deci, intervalul {0, . . . , 127} este l
asat pe loc, intervalul
|
\|
\
|
\
\
{128, . . . , 1} este mapat n intervalul {128, . . . , 255},
|
|\
\
apoi numerele naturale rezultate sunt reprezentate ca ntregi --[-------][-------]-0
127 128
255
f
ar
a semn.

Reprezentarea n complement fata de 2


Operatiile aritmetice se fac tot mod 2n , dar translatat (deplasamentul se
m
asoar
a fat
a de nceputul intervalului {2n1 , . . . , 2n1 1}).

Exemplu: In limbajul C, avem:


char x, y, z;
/* n = 8, M = {-128, ..., 127} */
x = -100; y = -100; z = x + y;
printf("%d", (int)z); /* afisaza: 56 */
distanta 184
distanta 184
------------------------------------|
v
|
v
--[------------|----|-------][------------|----|-------]--384
-200^
-129 -128
0
56
127
| suma matematica 200 |
-----------------------

Ne putem imagina c
a intervalul {128, . . . , 127} este parcurs circular:
<-----------|
[------------|------------]
-128|
0
|127
------------->

In particular: 128 1 produce 127, 127 + 1 produce 128.

Reprezentarea n complement fata de 2

Teorem
a:
(1) Dac
a [x]sn = cn1 . . . c0 , atunci: x 0 cn1 = 0
(cn1 s.n. bitul de semn)
s
(2) Dac
a x, x M, atunci [x]sn =
[x]sn = (
+1
[x]n )
s
s
s
(3) Dac
a x, y , x y M, atunci [x y ]n = [x]n
+(
[y ]sn ) = [x]sn
+((
+1)
[y ]n )

(4) Dac
a x {2p1 , 2p1 1}, [x]sp = cp1 . . . c0 si p < q, atunci:
[x]sq = cp1 . . . cp1 cp1 . . . c0 (se extinde bitul de semn).
{z
}
|
q p ori

Reprezentarea n complement fata de 2


Exemplu:

Fie x = 32, y = 41. Calculati z = x y folosind reprezentarea n


complement fat
a de 2 pe 8 biti.
Avem n = 8, deci M = {128, . . . , 127}.
Deoarece x, y 0, avem [x]s8 = (x)82 , [y ]s8 = (y )82 .
Pentru (x)82 observ
am c
a 32 = 25 , iar pentru (y )82 aplic
am regula de conversie
baza 10 baza 2 din prima sectiune: 41 | 1
20 | 0
Atunci:
10 | 0
s
[y ]8 = 00101001
5 | 1
s

[y
]
=
11010110
s8
2 | 0
1
+(
[y ]8 s) = 11010111
1 | 1
[x]8 = 00100000
0 |
s
x
+(1
+(
[y ]8 )) = 11110111
8
Avem 11110111 = (247)2 (aplic
and regulile de conversie baza 2 baza 10 din
prima sectiune) = [z]s8 ; deoarece bitul 7 (de semn) din [z]s8 este 1, nseamn
a c
a
z < 0, deci [z]s8 s-a obtinut cu al doilea caz al definitiei; asadar
[z]s8 = (256 + z)82 = (247)82 , de unde (aplic
and inversa functiei (.)82 ) rezult
a c
a
256 + z = 247, adic
a z = 9.
Putem verifica, efectu
and sc
aderea n baza 10, c
a 32 41 = 9.

Reprezentarea n complement fata de 2

s
Observatie: Dac
a efectu
am
[x]sn , adic
a (
+1, pentru x = 2n1 , vom
[x]n )
obtine tot [x]sn , ceea ce, cu punctul (2) din teorema anterioar
a, pare s
a nsemne
c
a (2n1 ) = 2n1 (deoarece au aceeasi reprezentare).

De exemplu, pentru n = 8 vom obtine c


a (128) = 128.
Intr-adev
ar, avem succesiv:

+1
01111111
[128]s = 10000000
10000000 = [128]s .
8

Totusi, nu exist
a nici o contradictie aritmetic
a sau cu bijectivitatea lui [.]sn ,
deoarece formula de la punctul (2) din teorema anterioar
a se aplic
a doar dac
a
x, x M, iar n acest caz x 6 M.

Reprezentarea n complement fata de 2


Exemplu: In limbajul C (TC++ 1.00) consideram secventa de cod:
char x; /*
short y; /*
x = -127;/*
y = x;
/*

p = 8 */
q = 16 */
se reprezinta -127 ca intreg cu semn pe 8 biti */
se extinde reprezentarea din x de la 8 biti la 16 biti,
prin propagarea bitului de semn */

Verificati c
a valoarea reprezentat
a n y este tot 127 (punctul (4) din teorema
anterioar
a).
Avem: [127]s8 = (256 127)82 (deoarece 127 < 0) = (129)82 = 10000001.
Prin propagarea bitului de semn la 16 biti, obtinem: 1111111110000001 =
16
16
((216 1) (27 1) + 1)16
2 = (65535 127 + 1)2 = (65409)2
Aceasta este reprezentarea ca ntreg cu semn a unui num
ar z < 0, deoarece
bitul 15 (de semn) este 1.
16
Atunci [z]s16 = (65536 + z)16
2 = (65409)2 , deci 65536 + z = 65409, deci
z = 127.

Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei

2 Aritmetica sistemelor de calcul


Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea

numerelor n matematic
a
numerelor n calculator
numerelor naturale ca ntregi f
ar
a semn
numerelor ntregi n complement fat
a de 2
numerelor reale n virgul
a mobil
a

3 Logica pentru calculatoare


Algebre booleene
Functii booleene
Particularizare la cazul B2

4 Circuite logice
Circuite logice, Sisteme digitale
0-DS (Circuite combinationale, Functii booleene)
1-DS (Memorii)
2-DS (Automate finite)

Notatia stiintifica

Notatia stiintific
a si aritmetica sistemelor de calcul n virgula mobil
a folosesc
un mod de reprezentare a unei aproximatii a unui num
ar real care s
a suporte un
domeniu larg de valori. Numerele sunt, n general, reprezentate aproximativ
printr-o valoare cu un num
ar fixat de cifre semnificative care este scalat
a cu
ajutorul unui exponent:

a be
a este mantisa (engl: mantissa, significand, coefficient), b este baza de
enumeratie n care sunt scrise numerele si baza scal
arii (de obicei 2, 10 sau 16),
e este exponentul; semnul + se poate omite.

Notatia stiintifica
Scalarea cu ajutorul exponentului permite acoperirea unui domeniu larg de
valori, at
at foarte mici c
at si foarte mari, cu aceeasi precizie relativ
a. De
exemplu cu 9 cifre semnificative putem descrie, n functie de exponentii folositi,
at
at distante n astronomie cu precizie de 1 an lumin
a, c
at si distante n fizica
atomic
a cu precizie de 1 femtometru (1015 metri) - ambele precizii fiind
acceptabile n domeniul respectiv.
Faptul c
a se retine un num
ar fix de cifre pentru mantis
a si exponent face ca
multimea numerelor reale reprezentabile s
a fie de fapt o multime finit
a de
numere rationale, dintr-un interval fixat.
Mai mult, folosirea scal
arii face ca aceste numere s
a nu fie uniform spatiate n
intervalul respectiv: valorile mici, apropiate de 0, sunt reprezentate cu pasi mici
(ex. 1 femtometru), n timp ce valorile mari, apropiate de extremele
intervalului, sunt reprezentate cu pasi mari (ex. 1 an lumin
a).
Denumirea de virgul
a mobil
a se refer
a la faptul c
a virgula (engl: radix point),
numit
a n functie de baz
a si virgul
a zecimal
a (engl: decimal point), virgul
a
binar
a (engl: binary point), etc., poate fi mutat
a oriunde n raport cu cifrele
semnificative, modific
and corespunz
ator exponentul:

0.123 102 = 1.230 101 = 12.30 100 = 123.0 101

Notatia stiintifica

In informatic
a, termenul de virgul
a mobil
a (engl: floating point) denumeste
aritmetica sistemelor de calcul ce foloseste reprezent
ari ale numerelor pentru
care virgula binar
a nu este fixat
a.
O reprezentare n virgul
a mobil
a este notatie stiintific
a dac
a are o singur
a cifr
a
n st
anga virgulei si este notatie stiintific
a normalizat
a dac
a n plus acea cifr
a
este nenul
a (i.e nu are 0-uri la nceput).

1.230 101 este n notatie stiintifica normalizata, dar


0.123 102 , 12.30 100 , 123.0 101 nu sunt.
De exemplu

Constat
am c
a notatia stiintific
a normalizat
a pentru un num
ar real nenul este
unic
a.

Formatul intern n virgula mobila


Reprezentarea n calculator a numerelor reale n virgul
a mobil
a este
reglementat
a prin standardul IEEE 754, adoptat initial n 1985 (IEEE
754-1985) si reactualizat n 2008 (IEEE 754-2008). Mai nou, este folosit
standardul ISO/IEC/IEEE 60559:2011.
Pentru reprezentare (formatul intern) se aleg dou
a dimensiuni n si k ,
2 k n 2 si se folosesc locatii de n biti bn1 . . .
compuse din urm
atoarele c
ampuri:
bn1 (1 bit, cel mai semnificativ): semnul;

b0

bn2 . . . bnk1 (urmatorii k biti): caracteristica;


bnk2 . . . b0 (ultimii nk1 biti, cei mai putin semnificativi): fractia:

bn1 bn2 . . . bnk1 bnk2 . . . b0


|{z}
|
{z
}|
{z
}

semn (1 bit) caracteristic


a (k biti)

fractie (n k 1 biti)

Formatul intern n virgula mobila


Multimea valorilor reprezentabile n acest format este specificat
a prin
intermediul a trei parametri ntregi (baza de enumeratie si de scalare este
ntotdeauna 2):
p = n k : num
arul de cifre ale mantisei (precizia);

Emin = 2k1 + 2: exponentul minim;


k1
Emax = 2
1: exponentul maxim.

Pentru numerele reale nenule reprezentabile, exponentul E trebuie sa se afle n


intervalul de numere ntregi Emin E Emax , dar se doreste
reprezentarea lui ca ntreg f
ar
a semn, nu prin complement fat
a de doi; de
aceea, se mai consider
a parametrul:

k1

bias = 2
iar n c
ampul de

1: bias (sau polarizare);

k biti se reprezinta, ca ntreg fara semn, valoarea


c = E + bias (avem 1 c 2k 2); aceasta s.n.
caracteristic
a (sau exponent biasat sau exponent polarizat).

Formatul intern n virgula mobila


Constat
am c
a n c
ampul caracteristic
a al formatului pot fi stocate si valorile

c = 0 (reprezentata cu toti bitii 0) si c = 2k 1 (reprezentata cu toti


bitii 1), care nu pot fi produse de expresiile E + bias ; ele sunt folosite
pentru a codifica valori speciale, ca 0, , numere denormalizate
mici, valori invalide NaN (Not A Number).
In ceea ce priveste mantisa, numerele vor fi mai nt
ai scalate a.. mantisa s
a
aib
a n st
anga virgulei doar o cifr
a (1 n cazul numerelor normalizate si 0 n
cazul numerelor denormalizate), iar n ultimii n k 1 biti ai formatului
va fi stocat
a fractia, care este partea mantisei din dreapta virgulei (cifra din
st
anga put
andu-se deduce din context). In unele texte, prin mantis
a este
denumit
a de fapt fractia.
Se mai spune c
a aceast
a reprezentare este semn si modul (engl: sign and
magnitude) deoarece semnul are un bit separat de restul num
arului.

Formatul intern n virgula mobila


Valorile reprezentabile n formatul specificat de

n si k (sau de p , Emin ,

Emax ) si modul lor de reprezentare (codare) sunt urmatoarele:


Numerele de forma

(1)s 2E 1.c1 . . . cp1 2 , unde

s {0, 1},
Emin E Emax este un numar ntreg,
c1 , . . . , cp1 {0, 1}
(numere reale nenule normalizate).
Ele sunt reprezentate astfel:
bn1 = s , semnul;

bn2 . . . bnk1 = E + bias , exponentul biasat,


reprezentat ca ntreg f
ar
a semn; sirul de biti prin care se reprezint
a variaz
a

0 . . . 01 (valoarea 1) la 1 . . . 10 (valoarea 2k 2);


bnk2 . . . b0 = c1 . . . cp1 , fractia (se omite deci c0 = 1).
de la

Formatul intern n virgula mobila

Numerele de forma

(1)s 2Emin 0.c1 . . . cp1 2 , unde

s {0, 1},
c1 , . . . , cp1 {0, 1} si cel putin unul dintre ci

este

(numere reale nenule denormalizate mici).


Ele sunt reprezentate astfel:
bn1 = s , semnul;

bn2 . . . bnk1 = 0, reprezentat prin sirul de biti 0 . . . 0;


bnk2 . . . b0 = c1 . . . cp1 , fractia (se omite deci c0 = 0).

Formatul intern n virgula mobila


Numerele de forma

0 = (1)s 2Emin 0.0 . . . 02 , unde

s {0, 1}.
Ele sunt reprezentate astfel:
bn1 = s , semnul;

bn2 . . . bnk1 = 0, reprezentat prin sirul de biti 0 . . . 0;


bnk2 . . . b0 = 0 . . . 0, fractia.
Not
am c
a numerele de forma 0 se reprezin
a cu toti bitii 0, mai putin
eventual bitul de semn bn1 .
Desi reprezent
arile lui +0 si 0 sunt diferite (prin bitul de semn), semnul
are relevant
a n anumite circumstante, cum ar fi mp
artirea la 0 (mp
artirea
1.0/ + 0 produce +, mpartirea 1.0/ 0 produce ), iar n
altele nu.

Formatul intern n virgula mobila


Valorile

Ele sunt reprezentate astfel:


bn1 = s , semnul (0 =

+, 1 = );
bn2 . . . bnk1 = 2 1, reprezentat prin sirul de biti 1 . . . 1;
bnk2 . . . b0 = 0 . . . 0, fractia nula.
k

Valori NaN (Not A Number) - sunt entit


ati simbolice codificate n format
de virgul
a mobil
a ce semnific
a ideea de valoare invalid
a.
Ele sunt reprezentate astfel:
bn1 este oarecare;

bn2 . . . bnk1 = 2k 1, reprezentat prin sirul de biti 1 . . . 1;


bnk2 . . . b0 este o fractie nenula (cel putin unul dintre
bnk2 , . . . , b0 este 1).

Formatul intern n virgula mobila


NaN :
Signaling NaN (sNaN ): semnaleaza (declansaza) exceptia de

Exist
a dou
a feluri de

operatie invalid
a de fiecare dat
a c
and apare ca operand ntr-o operatie;
manifestarea exceptiei poate diferi de la o implementare la alta si poate fi de
ignorare sau poate consta n setarea unor flag-uri si/sau executarea unui trap
(ntrerupere) care lanseaz
a o rutin
a ce primeste NaN -ul ca parametru;

Quiet NaN (qNaN ): se propaga prin aproape toate operatiile


aritmetice f
ar
a a semnala (declansa) exceptii, iar rezultatul operatiilor va fi tot
un qNaN , anume unul dintre qNaN -urile date ca operand; ele sunt utile
atunci c
and nu vrem s
a detect
am/trat
am o eroare chiar la momentul aparitiei
ei ci la un moment ulterior.
Standardul IEEE 754 cere a fi implementat cel putin un sNaN si cel putin un
qNaN ; bitul de semn si bitii de fractie pot diferi de la o implementare la alta
- de exemplu n ei se poate codifica motivul erorii (n cazul sNaN -urilor el va
fi transmis astfel rutinei de tratare a exceptiei, iar n cazul qNaN -urilor el se
va propaga prin operatiile aritmetice p
an
a la locul trat
arii).

Formatul intern n virgula mobila


Aplic
and invers regulile de mai sus, putem determinara valoarea v reprezentat
a
printr-un sir de biti bn1 . . . b0 n formatul specificat de n si k . Not
am:
s = numarul 0 sau 1 stocat n bitul bn1 (semnul);
c = numarul natural reprezentat ca ntreg fara semn n bitii
bn2 . . . bnk1 (caracteristica);
f = sirul de p 1 cifre binare stocat n bitii bnk2 . . . b0 (fractia).
k
Dac
a c = 2 1 (reprezentat ca 1 . . . 1) si f 6= 0 . . . 0, atunci
v este un NaN (indiferent de s ).
k
Dac
a c = 2 1 (reprezentat ca 1 . . . 1) si f = 0 . . . 0, atunci
s
v = (1) .
k
Dac
a 0 < c < 2 1, atunci
s
c2k1 +1
v = (1) 2
1.f 2 (numar nenul normalizat).
Dac
a c = 0 (reprezentat ca 0 . . . 0) si f 6= 0 . . . 0, atunci
k1
v = (1)s 22 +2 0.f 2 (numar nenul denormalizat).
Dac
a c = 0 (reprezentat ca 0 . . . 0) si f = 0 . . . 0, atunci
v = (1)s 0 (zero).

Formatul intern n virgula mobila


Din aceste reguli deducem c
a multimea numerelor reprezentabile este inclus
a n
intervalul:

k1

[22

n+k

(2nk 1), +22

k1

n+k

(2nk 1)]

Nu toate numerele reale din acest interval pot fi ns


a reprezentate, deoarece se
retin doar un numar finit de zecimale n baza 2. Numerele sunt reprezentate cu
un anumit pas, care creste cu c
at ne apropiem de capetele intervalului.
Operatiile aritmetice n virgul
a mobil
a rotunjesc (si deci altereaz
a) rezultatul
a.. s
a fie una dintre valorile reprezentabile. De aceea, pasul reprezent
arii
influienteaz
a precizia calculelor.
Intruc
at multimea valorilor reprezentabile este simetric
a fat
a de 0 (dac
a un
num
ar x este reprezentabil, atunci si x este reprezentabil, reprezentarea
diferind doar n bitul de semn), vom analiza doar intervalul:

[0, 22

k1

n+k

(2nk 1)]

Formatul intern n virgula mobila


Cel mai mic num
ar nenul reprezentabil este:
k1

22

+2

|0.0 .{z
. . 01}2 = 22

k1

n+k+3

n k cifre ale mantisei

reprezentat:

0 0| .{z
. . 0} 0| . .{z. 0 1}
|{z}

s (1 bit) c (k biti) f(n k 1 biti)


Cel mai mare num
ar nenul reprezentabil este:
k1

22

1.1
. . . 1}2 = 22
| {z

k1

n+k

(2nk 1),

n k cifre ale mantisei

reprezentat:

0 1| . .{z. 1 0} 1| .{z
. . 1}
|{z}

s (1 bit) c (k biti) f(n k 1 biti)

Formatul intern n virgula mobila


k1

Numerele din intervalul


reprezentate.
Numerele din intervalul
reprezentate cu pasul
Pentru orice

[2 , 2

i+1

(0, 22
[22
k1

k1

n+k+3

n+k+3

n+k+3

sunt prea mici pentru a fi

k1

, 22

+3

sunt

i 2k1 + 3, 2k1 2, numerele din intervalul


] sunt reprezentate cu pasul 2in+k+1 .
k1

k1

[22 1 , 22
2k1 n+k
sunt reprezentate cu pasul 2
.

Numerele din intervalul

n+k

(2nk 1)]

Formatul intern n virgula mobila


Ilustrare grafica:
0 0
. . 0} 0
. . 0} = 0
|{z}
| .{z
| .{z
s(1) c(k)
f(n-k-1)

...

(numere nereprezentabile)
k1
2k1 +2
0.0 . . . 012 = 22 +2 2n+k+1
0
. . 0} 0
| . .{z. 0 1} = 2
|{z} 0
| .{z
k1

s(1) c(k)
f(n-k-1)
= 22
(cel mai mic num
ar nenul reprezentabil)

...

n+k+3

k1

pas 22 n+k+3
k1
. . 1} = 22 +2 0.1 . . . 12
0 0
. . 0} 1
| .{z
|{z}
| .{z
s(1)

c(k)

f(n-k-1)

k1

= 22 +2 (2nk1 1) 2n+k+1
k1
= 22 n+k+3 (2nk1 1)

k1

pas 22 n+k+3
k1
. . 0} = 22 +2 1.0 . . . 02
0 0
. 0 1} 0
| .{z
|{z}
| . .{z
s(1) c(k)
f(n-k-1)

...

k1

pas 22

n+k+3

= 22

k1

+2

Formatul intern n virgula mobila


0 0
. 0 1} 1
. . 1} = 22
|{z}
| . .{z
| .{z
s(1)

c(k)

f(n-k-1)

k1

+2

1.1 . . . 12

2k1 +2

=2
(2nk 1) 2n+k+1
2k1 n+k+3
=2
(2nk 1)

k1

pas 22 n+k+3
k1
k1
. . 0} = 22 +2 10.0 . . . 02 = 22 +3 1.0 . . . 02
0 0
| .{z
|{z}
| . . .{z0 1 0} 0
s(1)

...

c(k)

f(n-k-1)

= 22

k1

+3

k1

pas 22 n+k+4
k1
0 0
. . 1} = 22 +3 1.1 . . . 12
| .{z
|{z}
| . . .{z0 1 0} 1
s(1)

c(k)

f(n-k-1)

k1

= 22 +3 (2nk 1) 2n+k+1
k1
= 22 n+k+4 (2nk 1)

k1

pas 22 n+k+4
k1
k1
0 0
. . 0} = 22 +3 10.0 . . . 02 = 22 +4 1.0 . . . 02
|{z}
| . . .{z0 1 1} 0
| .{z
s(1)

c(k)

f(n-k-1)

= 22

k1

+4

Formatul intern n virgula mobila

...
k1

0 1
. . 0} = 22
|{z}
| . . .{z1 0 1} 0
| .{z
s(1)
c(k)
f(n-k-1)

...

1.0 . . . 02

k1

= 22

k1

pas 22 n+k1
k1
k1
. . 1} = 22 2 1.1 . . . 12 = 22 2 (2nk 1)2n+k+1
0 1
|{z}
| . . .{z1 0 1} 1
| .{z
k1

s(1)
c(k)
f(n-k-1)
= 22 n+k1 (2nk 1)
2k1 n+k1
pas 2
k1
k1
k1
0 1
. 1 0} 0
. . 0} = 22 2 10.0 . . . 02 = 22 1 1.0 . . . 02 = 22 1
|{z}
| . .{z
| .{z

s(1)

...

c(k)

f(n-k-1)

k1

pas 22 n+k
k1
k1
0 1
. 1 0} 1
. . 1} = 22 1 1.1 . . . 12 = 22 1 (2nk 1) 2n+k+1
| .{z
|{z}
| . .{z
k1

s(1) c(k)
f(n-k-1)
= 22 n+k (2nk 1)
(cel mai mare num
ar nenul reprezentabil)

Formatul intern n virgula mobila


Observatie:
Proiectantii standardului IEEE 754 au dorit o reprezentare a virgulei mobile
care s
a poat
a fi prelucrat
a usor de comparatiile pentru ntregi, n special pentru
sortare.
Plasarea semnului n bitul cel mai semnificativ permite efectuarea rapid
aa
testelor < 0, > 0, = 0.
Plasarea caracteristicii naintea fractiei si faptul c
a ea este un num
ar natural
(indiferent dac
a exponentul este pozitiv sau negativ) ce creste odat
a cu
exponentul permite sortarea numerelor n virgul
a mobil
a cu ajutorul circuitelor
de comparare pentru ntregi, deoareace numerele cu exponenti mai mari par
mai mari dec
at numerele cu exponenti mai mici.
Asadar, reprezentarea IEEE 754 poate fi prelucrat
a cu ajutorul circuitelor de
comparare pentru ntregi, acceler
and sortarea numerelor n virgul
a mobil
a.
Dealtfel, pe ilustrarea grafic
a de mai nainte se poate observa c
a sirurile de biti
cresc n ordine lexicografic
a odat
a cu cresterea numerelor reale reprezentate,
ceea ce corespunde cresterii interpret
arilor acestor siruri ca ntregi f
ar
a semn.

Formatul intern n virgula mobila

Pe aceeasi ilustrare grafic


a se mai poate constata c
a succesorul lexicografic al
sirului de biti prin care s-a reprezentat cel mai mare num
ar nenul reprezentabil:

0 |1 . .{z
. 1 0} 1| .{z
. . 1}
|{z}
s(1)

c(k)

f(n-k-1)

este sirul de biti prin care se reprezint


a

+:

. . 0}
0 1| .{z
. . 1} 0| .{z
|{z}
s(1)

c(k)

f(n-k-1)

ceea ce exprim
a ideea c
a

+ > orice numar.

Formatele single si double


Proiectarea unui sistem de reprezentare n virgul
a mobil
a presupune o bun
a
alegere a valorilor n (dimensiunea formatului), k (dimensiunea c
ampului
caracteristic
a) si p 1 (dimensiunea c
ampului fractie). Reamintim c
ap
este num
arul de cifre semnificative considerate (prima este implicit
a, restul sunt
stocate n c
ampul fractie). Avem

n = 1 + k + (p 1) = k + p .

In general n este un multiplu al dimensiunii cuv


antului de memorie (word) (ex:
32 biti, 64 biti) si atunci pentru k si p trebuie g
asit un compromis, deoarece
un bit ad
augat la unul dintre c
ampuri trebuie luat de la cel
alalt.
Cresterea lui p determin
a cresterea preciziei numerelor, n timp ce cresterea lui

k determina largirea domeniului de numere care pot fi reprezentate.


Principiile de proiectare ale seturilor de instructiuni hardware ne nvat
a c
ao
proiectare bun
a are nevoie de compromisuri bune.
Dou
a formate n virgul
a mobil
a descrise n standardul IEEE 754, care se g
aseste
practic n orice calculator conceput dupa anul 1980, sunt single si double (lor
le corespund n limbajul C tipurile float si respectiv double).

Formatele single si double


Formatul single (precizie simpla): n = 32, k = 8, p = 24

Emin = 126, Emax = 127, bias = 127


104
Intervalul de numere 0 reprezentabile este: [0, 2
(224 1)]

Rezult
a:

Cel mai mic num


ar nenul reprezentabil este:

2126 0.0
. . 01}2 = 2149 ,
| .{z
24 cifre ale mantisei

reprezentat:

0 0| .{z
. . 0} 0| . .{z. 0 1}
|{z}

s (1 bit) c (8 biti) f(23 biti)


Cel mai mare num
ar nenul reprezentabil este:

2127 1.1
. . . 1}2 = 2104 (224 1),
| {z
24 cifre ale mantisei

reprezentat:

0 1| . .{z. 1 0} 1| .{z
. . 1}
|{z}

s (1 bit) c (8 biti) f(23 biti)

Formatele single si double

Numerele din intervalul


reprezentate.
Numerele din intervalul

149

(0, 2149 )

sunt prea mici pentru a fi

[2149 , 2125 ]

sunt reprezentate cu pasul

i 125, 126, numerele din intervalul [2i , 2i+1 ]


i23
sunt reprezentate cu pasul 2
.
127
Numerele din intervalul [2
, 2104 (224 1)] sunt reprezentate
104
cu pasul 2
.

Pentru orice

Formatele single si double


Ilustrare grafica:
. . 0} = 0
0 0
. . 0} 0
| .{z
|{z}
| .{z
s(1) c(8)
f(23)

...

(numere nereprezentabile)

126
0 0
. . 0} 0
0.0 . . . 012
|{z}
| .{z
| . .{z. 0 1} = 2
s(1) c(8)
f(23)
(cel mai mic num
ar nenul reprezentabil)

...

= 2126 223

= 2149

pas 2149

. . 1} = 2126 0.1 . . . 12 = 2126 (223 1) 223


0 0
. . 0} 1
| .{z
|{z}
| .{z
s(1) c(8)
f(23)
= 2149 (223 1)
pas 2149
. . 0} = 2126 1.0 . . . 02
0 0
. 0 1} 0
| .{z
|{z}
| . .{z
s(1) c(8)
f(23)

...

pas 2149

= 2126

Formatele single si double


0 0
. 0 1} 1
. . 1} = 2126 1.1 . . . 12 = 2126 (224 1) 223
|{z}
| . .{z
| .{z
s(1) c(8)
f(23)
= 2149 (224 1)
pas 2149
. . 0} = 2126 10.0 . . . 02 = 2125 1.0 . . . 02 = 2125
0 0
| .{z
|{z}
| . . .{z0 1 0} 0
s(1) c(8)
f(23)

...

pas 2148

0 0
. . 1} = 2125 1.1 . . . 12 = 2125 (224 1) 223
|{z}
| . . .{z0 1 0} 1
| .{z
s(1) c(8)
f(23)
= 2148 (224 1)
pas 2148
. . 0} = 2125 10.0 . . . 02 = 2124 1.0 . . . 02 = 2124
0 0
| .{z
|{z}
| . . .{z0 1 1} 0
s(1) c(8)
f(23)

Formatele single si double

...
0 1
. . 0} = 2126 1.0 . . . 02
|{z}
| . . .{z1 0 1} 0
| .{z
s(1)
c(8)
f(23)

...

= 2126

pas 2103

. . 1} = 2126 1.1 . . . 12 = 2126 (224 1) 223


0 1
| .{z
|{z}
| . . .{z1 0 1} 1
s(1)
c(8)
f(23)
= 2103 (224 1)
pas 2103
0 1
. 1 0} 0
. . 0} = 2126 10.0 . . . 02
|{z}
| . .{z
| .{z
s(1)
c(8)
f(23)

...

= 2127 1.0 . . . 02

= 2127

pas 2104

0 1
. 1 0} 1
. . 1} = 2127 1.1 . . . 12 = 2127 (224 1) 223
|{z}
| . .{z
| .{z
s(1)
c(8)
f(23)
= 2104 (224 1)
(cel mai mare num
ar nenul reprezentabil)

Formatele single si double


Formatul double (precizie dubla): n = 64, k = 11, p = 53

Emin = 1022, Emax = 1023, bias = 1023


971
Intervalul de numere 0 reprezentabile este: [0, 2
(253 1)]
Rezult
a:

Cel mai mic num


ar nenul reprezentabil este

21022 0.0
. . 01}2 = 21074 ,
| .{z
53 cifre ale mantisei

reprezentat:

0 0| .{z
. . 0} 0| . .{z. 0 1}
|{z}

s (1 bit) c (11 biti) f(52 biti)


Cel mai mare num
ar nenul reprezentabil este

21023 1.1
. . . 1}2 = 2971 (253 1),
| {z
53 cifre ale mantisei

reprezentat:

0 1| . .{z. 1 0} 1| .{z
. . 1}
|{z}

s (1 bit) c (11 biti) f(52 biti)

Formatele single si double

Numerele din intervalul


reprezentate.
Numerele din intervalul

1074

(0, 21074 )

sunt prea mici pentru a fi

[21074 , 21021 ]

sunt reprezentate cu pasul

i 1021, 1022, numerele din intervalul [2i , 2i+1 ]


i52
sunt reprezentate cu pasul 2
.
1023
Numerele din intervalul [2
, 2971 (253 1)] sunt reprezentate
971
cu pasul 2
.

Pentru orice

Formatele single si double


Ilustrare grafica:
. . 0} = 0
0 0
. . 0} 0
| .{z
|{z}
| .{z
s(1) c(11)
f(52)

...

(numere nereprezentabile)

1022
0 0
. . 0} 0
0.0 . . . 012
|{z}
| .{z
| . .{z. 0 1} = 2
s(1) c(11)
f(52)
(cel mai mic num
ar nenul reprezentabil)

...

= 21022 252

= 21074

pas 21074

. . 1} = 21022 0.1 . . . 12 = 21022 (252 1) 252


0 0
. . 0} 1
| .{z
|{z}
| .{z
s(1) c(11) f(52)
= 21074 (252 1)
pas 21074
. . 0} = 21022 1.0 . . . 02
0 0
. 0 1} 0
| .{z
|{z}
| . .{z
s(1) c(11)
f(52)

...

pas 21074

= 21022

Formatele single si double


0 0
. 0 1} 1
. . 1} = 21022 1.1 . . . 12 = 21022 (253 1) 252
|{z}
| . .{z
| .{z
s(1) c(11)
f(52)
= 21074 (253 1)
pas 21074
. . 0} = 21022 10.0 . . . 02 = 21021 1.0 . . . 02 = 21021
0 0
| .{z
|{z}
| . . .{z0 1 0} 0
s(1)
c(11)
f(52)

...

pas 21073

0 0
. . 1} = 21021 1.1 . . . 12 = 21021 (253 1) 252
|{z}
| . . .{z0 1 0} 1
| .{z
s(1)
c(11)
f(52)
= 21073 (253 1)
pas 21073
. . 0} = 21021 10.0 . . . 02 = 21020 1.0 . . . 02 = 21020
0 0
| .{z
|{z}
| . . .{z0 1 1} 0
s(1)
c(11)
f(52)

Formatele single si double

...
. . 0} = 21022 1.0 . . . 02
0 1
| .{z
|{z}
| . . .{z1 0 1} 0
s(1) c(11)
f(52)

= 21022

...

pas 2970
0
. . 1} = 21022 1.1 . . . 12 = 21022 (253 1) 252
|{z} 1
| . . .{z1 0 1} 1
| .{z
s(1) c(11)
f(52)
= 2970 (253 1)
970
pas 2
. . 0} = 21022 10.0 . . . 02 = 21023 1.0 . . . 02 = 21023
0
. 1 0} 0
| .{z
|{z} 1
| . .{z
s(1)

...

c(11)

f(52)

pas 2971
0 1
. 1 0} 1
. . 1} = 21023 1.1 . . . 12 = 21023 (253 1) 252
|{z}
| . .{z
| .{z
s(1) c(11)
f(52)
= 2971 (253 1)
(cel mai mare num
ar nenul reprezentabil)
Formatul double are ca avantaj fat
a de formatul single at
at domeniul mai mare
al exponentului c
at, mai ales, precizia mai mare, datorat
a mantisei mai mari.

Formatele single si double


Exemplu:

S
a se reprezinte n format single si double num
arul real
x = 4.75.

Reprezent
am x n baza 2:
4 : 2 = 2 rest 0
2 : 2 = 1 rest 0
1 : 2 = 0 rest 1

0.75 2 = 1.5
0.5 2 = 1.0

deci (4)2 = 100

deci (0.75)2 = 0.11

Rezult
a (x)2 = 100.11
In notatia stiintific
a normalizat
a (n baza 2) avem: x = 1.0011 22
Deci:
semnul =
exponentul = 2
mantisa = 1.0011
In formatul single, deoarece 126 2 127, vom avea:
s = 1
c = (2 + 127)2 = (129)2 = 10000001
f = 00110000000000000000000

Formatele single si double


Deci reprezentarea binar
a a lui x ca single este:

11000000100110000000000000000000
Determin
am si reprezentarea hexa a lui x ca single:

1100
|{z} 0000
|{z} 1001
|{z} 1000
|{z} 0000
|{z} 0000
|{z} 0000
|{z} 0000
|{z}
C

deci reprezentarea hexa este:

C0980000

Formatele single si double


In formatul double, deoarece 1022 2 1023, vom avea:
s = 1
c = (2 + 1023)2 = (1025)2 = 10000000001
f = 0011000000000000000000000000000000000000000000000000
Deci reprezentarea binar
a a lui x ca double este:

11000000000100110000000000000000
00000000000000000000000000000000
Determin
am si reprezentarea hexa a lui x ca double:

1100
|{z} 0000
|{z} 0001
|{z} 0011
|{z} 0000
|{z} 0000
|{z} 0000
|{z} 0000
|{z}
C

0000
|{z} 0000
|{z} 0000
|{z} 0000
|{z} 0000
|{z} 0000
|{z} 0000
|{z} 0000
|{z}
0

deci reprezentarea hexa este:

C013000000000000

Formatele single si double


Exemplu:

S
a se determine valoarea x reprezentat
a de urm
atorul format
single:

11000000101000000000000000000000
Identific
am valorile c
ampurilor componente:

1 10000001
|
{z
}
|{z}
| {z } 01000000000000000000000
s

Deci:
s = 1
c = 10000001 = (27 + 1)2 = (129)2
f = 01000000000000000000000
Intruc
at 0 < c < 28 1 = 255, rezult
a (pentru single bias = 127):
x = (1)1 2129127 1.010000000000000000000002 =
= 22 (20 + 22 ) = 4 (1 + 0.25) = 4 1.25 = 5

Formatele single si double


Observatie:
Reprezent
arile single si double sunt date multioctet si se supun acelorasi
conventii de ordonare a octetilor n memorie ca si celelalte date.
Reamintim: conventia de ordonare este fixat
a hardware pentru fiecare
arhitectur
a si poate fi little endian (datele sunt reprezentate cu partea low la
adresa mai mic
a) sau big endian (datele sunt reprezentate cu partea low la
adresa mai mare); arhitectura Intel foloseste conventia little endian.
C
and ilustr
am grafic continutul memoriei obisnuim s
a desen
am octetii cu
adresele cresc
and spre dreapta si atunci, ntr-o arhitectur
a care foloseste
conventia little endian, locatiile ce contin cele dou
a reprezent
ari din primul
exemplu de mai devreme vor fi desenate astfel (un octet = dou
a cifre hexa):
Locatia ce contine reprezentarea single C0980000 va fi desenat
a 00 00 98 C0
Locatia ce contine reprezentarea double C013000000000000 va fi desenat
a
00 00 00 00 00 00 13 C0
In cazul registrilor se obisnuieste s
a se deseneze bitii si octetii cu semnificatia
cresc
and spre st
anga (asa cum se scriu numerele n matematic
a). Astfel, un
registru de 32 biti ce contine reprezentarea single C0980000 va fi desenat tot
C0980000

Reglementari IEEE 754

Standardul IEEE 754 contine reglement


ari referitoare la:
(1) Operatiile cu numere n virgul
a mobil
a.
(2) Rotunjire si Controlul preciziei rotunjrii.
(3) Infinit-uri, Nan-uri, zero-uri cu semn.
(4) Exceptii.
(5) Trap-uri.
Prezent
am n continuare c
ateva reglement
ari importante:

Reglementari IEEE 754


(1) Operatiile implementate cu numere n virgul
a mobil
a sunt:
- operatii aritmetice: adunare, sc
adere, nmultire, mp
artire, aflare rest
(reminder);
- extragere r
ad
acin
a p
atrat
a;
- rotunjirea la un ntreag reprezentat n virgul
a mobil
a;
- conversie ntre diferite formate de virgul
a mobil
a;
- conversie ntre formate de virgul
a mobil
a si formate de ntregi;
- conversie binar zecimal;
- comparatii;
- n unele implement
ari se poate considera operatie si copierea f
ar
a schimbarea
formatului.
Cu exceptia conversiei binar zecimal, care este supus
a unor constr
angeri mai
slabe, toate operatiile sunt efectuate ca si c
and ar produce mai nt
ai un rezultat
intermediar exact (cu precizie infinit
a si domeniu nelimitat), iar apoi l-ar rotunji.
Exist
a totodat
a particularit
ati legate de 0, si Nan-uri si exceptii cauzate
de operanzi si rezultate exceptate.

Reglementari IEEE 754


Operatii aritmetice: adunare, sc
adere, nmultire, mp
artire, aflare rest
(reminder):
Se pot aplica unor operanzi de aceeasi dimensiune a formatului, iar n unele
implement
ari si unor operanzi de dimensiuni diferite; formatul destinatiei
trebuie s
a fie de dimensiune cu cel al operanzilor (indiferent de controlul
preciziei rotunjirii); rezultatele se rotunjesc.
Dac
a y 6= 0, restul (reminder) r = x REM y este definit (indiferent de modul de
rotunjire) prin relatia matematic
a r = x y n, unde n este ntregul cel mai
apropiat de valoarea exact
a x/y ; dac
a exist
a doi ntregi n a.. |n x/y | = 21 ,
atunci se alege n par. Astfel, restul este ntotdeauna exact. Dac
a r = 0,
semnul s
au va fi cel al lui x.
Controlul preciziei rotunjirii nu se aplic
a operatiei reminder.
Extragere r
ad
acin
a p
atrat
a:
Este implementat
a pentru toate formatele de virgul
a mobil
a suportate.
Dimensiunea formatului destinatie trebuie s
a fie cea a operandului.
Rezultatul este definit
si are semn pozitiv pentru orice operand 0, cu
exceptia faptului c
a 0 va fi 0; rezultatul se rotunjeste.

Reglementari IEEE 754


Conversie ntre diferite formate de virgul
a mobil
a:
Sunt implementate conversii ntre toate formatele de virgul
a mobil
a suportate.
Dac
a conversia este spre un format cu precizie mai mic
a, rezultatul se
rotunjeste; dac
a este spre un format cu precizie mai mare, rezultatul este exact.
Conversie ntre formate de virgul
a mobil
a si formate de ntregi:
Sunt implementate conversii ntre toate formatele de virgul
a mobil
a si toate
formatele de ntregi suportate.
Conversia c
atre ntreg se efectueaz
a prin rotunjire.
Conversia ntre ntregii reprezentati n virgul
a mobil
a si formatele de ntregi va
fi exact
a, n afara cazurilor c
and se semnaleaz
a o exceptie (ex. overflow).
Rotunjirea unui num
ar n virgul
a mobil
a la o valoare ntreag
a
reprezentat
a n virgul
a mobil
a, n acelasi format.
Se folosesc regulile uzuale de rotunjire, cu mentiunea c
a atunci c
and se aplic
a
rotunjirea la cel mai apropiat (Round to Nearest), dac
a operandul nerotunjit
se afl
a exact la jum
atatea distantei ntre doi ntregi consecutivi, rezultatul
rotunjit este par.

Reglementari IEEE 754


Conversie binar zecimal:
Este implementat
a ntre cel putin unul dintre formatele de stringuri zecimale si
toate formatele de baz
a de virgul
a mobil
a suportate, pentru numere din
intervalele urm
atoare (valorile stringurilor zecimale sunt M 10N ):
Format Zecimal Binar Binar Zecimal
MaxM
MaxN
MaxM
MaxN
Single
109 1
99
109 1
53
Double 1017 1
999
1017 1
340
La intrare sunt ad
augate/eliminate zerouri la M pentru a minimiza N; dac
a
M > MaxM, anumite implement
ari pot modifica cifrele semnificative dincolo de
a 9-a pentru single, respectiv a 17-a pentru double, de obicei prin nlocuire cu
0. Conversiile vor fi corect rotunjite pentru operanzi n intervalele urm
atoare:
Format Zecimal Binar Binar Zecimal
MaxM
MaxN
MaxM
MaxN
Single
109 1
13
109 1
13
Double 1017 1
27
1017 1
27
Conversiile sunt monotone (cresterea valorii surs
a nu va produce descresterea
valorii destinatie), iar c
and se aplic
a rotunjirea la cel mai apropiat (Round to
Nearest) si se respect
a precizia stringurilor zecimale de 9, respectiv 17 cifre,
conversia binar zecimal binar este identitatea.

Reglementari IEEE 754


Comparatii:
Sunt implementate comparatii ntre toate formatele de virgul
a mobil
a suportate
(chiar si dac
a formatele operanzilor difer
a).
Ele sunt ntotdeauna exacte si nu produc overflow/underflow.
Dou
a valori se pot afla n 4 relatii mutual exclusive: mai mic, egal, mai mare,
neordonat; ultima apare c
and m
acar un operand este NaN; un NaN este
neordonat cu orice, inclusiv cu sine.
Comparatiile vor ignora semnul lui 0 (deci +0 = 0).
Rezultatul unei comparatii poate fi furnizat, n functie de implementare:
- printr-un cod conditional ce identific
a una din cele 4 relatii;
- ca un r
aspuns true/false la un predicat ce numeste o anumit
a comparatie; n
acest caz, dac
a operanzii sunt neordonati iar predicatul nu testeaz
a si
neordonarea, se semnaleaz
a exceptia operatie invalid
a.
C
and sunt implementate predicate, trebuie implementate cel putin urm
atoarele
(notatia este conventional
a, ? nseman
a neordonat): = (egal), ? <>
(neordonat sau diferit), > (mai mare), >= (mai mare sau egal), < (mai mic),
<= (mai mic sau egal); de asemenea, trebuie implementat un mod de negare a
predicatelor, de exemplu: NOT (>). Se mai pot implementa: ? (neordonat),
<> (diferit), ? >= (neordonat sau mai mare sau egal), etc.

Reglementari IEEE 754


De exemplu (cu am notat un NaN):
1 < 2 true
2 < 1 false
1 < 1 false
1 < false + exceptia operatie invalid
a
= false
? <> true
<> false + exceptia operatie invalid
a
? true
Observatie: Negatia lui x = y este NOT (x = y ) si este echivalent
a cu
x? <> y ; pentru alte predicate, negatia nu este echivalent
a cu predicatul
inversat; de exemplu, negatia lui x < y este NOT (x < y ) si nu este echivalent
a
cu x? >= y , deoarece ultima nu semnaleaz
a exceptia operatie invalid
a dac
ax
si y sunt neordonati. Aplic
and negatia NOT unui predicat, se inverseaz
a
r
aspunsurile sale true/false, dar se semnaleaz
a n aceleasi cazuri exceptia
operatie invalid
a.

Reglementari IEEE 754

(2) Rotunjirea si Controlul preciziei rotunjirii:


Rotunjirea ia un num
ar considerat ca av
and precizie infinit
a si, dac
a este
necesar, l modific
a pentru a se potrivi formatului destinatie, semnal
and
totodat
a exceptia inexact.
Cu exceptia conversiei binar zecimal, care este supus
a unor constr
angeri mai
slabe, toate operatiile sunt efectuate ca si c
and ar produce mai nt
ai un rezultat
intermediar exact (cu precizie infinit
a si domeniu nelimitat), iar apoi l-ar rotunji
ntr-unul din modurile descrise mai jos.
Modurile de rotunjire afecteaz
a toate operatiile aritmetice, cu exceptia
comparatiilor si restului (reminder). Ele pot afecta semnele sumelor nule si
afecteaz
a limitele dincolo de care se poate semnala overflow/underflow (a se
vedea mai jos).

Reglementari IEEE 754


Moduri de rotunjire:
Modul de rotunjire implicit:
Rotunjirea la cel mai apropiat (Round to Nearest): Rezultatul furnizat
este valoarea reprezentabil
a cea mai apropiat
a de valoarea exact
a.
Dac
a exist
a dou
a valori reprezentabile ntre care se afl
a valoarea exact
a si ele
sunt egal dep
artate de aceasta, va fi furnizat
a aceea dintre ele care are bitul cel
mai putin semnificativ (i.e. ultima zecimal
a a c
ampului fractie) egal cu 0.
Dac
a valoarea exact
a are modulul 2Emax (2 2p ), ea se rotunjeste la cu
acelasi semn.
Moduri de rotunjire dirijate (Directed Roundings) selectabile de c
atre
utilizator:
Rotunjirea c
atre + (rounding toward +): Rezultatul furnizat este cea
mai apropiat
a valoarea reprezentabil
a (inclusiv +) valoarea exact
a.
Rotunjirea c
atre (rounding toward ): Rezultatul furnizat este cea
mai apropiat
a valoarea reprezentabil
a (inclusiv ) valoarea exact
a.
Rotunjirea c
atre 0 (rounding toward 0): Rezultatul furnizat este cea mai
apropiat
a valoarea reprezentabil
a n modul dec
at valoarea exact
a.

Reglementari IEEE 754


Precizia rotunjirii:
In mod normal, rezultatul furnizat este rotunjit conform preciziei locatiei
destinatie.
Unele sisteme ns
a sunt construite a.. s
a funizeze rezultate doar n locatii de
anumite formate, mari (de exemplu doar double). In asemenea sisteme se
permite utilizatorului (care poate fi un compilator al unui limbaj de nivel nalt)
s
a poat
a specifica ca rezultatul s
a fie rotunjit conform unui format mai mic (de
exemplu single), chiar dac
a el va fi stocat ntr-o locatie de format mare
(double). Operanzii trebuie s
a fie ns
a tot de formatul mic (de exemplu nu se
permit operatii care combin
a operanzi double pentru a produce un rezultat
single, cu o singur
a rotunjire).
Controlul preciziei rotunjirii are ca scop s
a permit
a sistemelor care au doar
destinatii de format mare s
a emuleze, n absenta overflow/underflow, precizia
sistemelor cu destinatii de format mic.

Reglementari IEEE 754

(3) Infinit-uri, Nan-uri, zero-uri cu semn.


Infinit-urile au proprietatea: < orice num
ar finit < +.
Aritmetica lui este mereu exact
a si nu semnaleaz
a exceptii, n afar
a de
operatie invalid
a pentru .
Exceptiile legate de sunt semnalate doar c
and:
- este obtinut din operanzi finiti prin overflow sau mp
artire la 0, cu
trapul respectiv dezactivat;
- este un operand invalid.

Reglementari IEEE 754


Toate operatiile vor suporta sNaN-uri si qNaN-uri.
In toate operatiile prezentate mai devreme, prezenta unui operand sNaN
semnaleaz
a exceptia operatie invalid
a.
Orice operatie care implic
a un sNaN sau operatie invalid
a, dac
a nu apare un
trap si trebuie furnizat un rezultat n virgul
a mobil
a, va furniza un rezultat
qNaN.
Orice operatie care implic
a unul sau doi operanzi NaN, nici unul nefiind sNaN,
nu va semnala exceptii, iar dac
a trebuie furnizat un rezultat n virgul
a mobil
a,
va furniza ca rezultat unul dintre qNaN-urile de intrare (conversiile de format ar
putea mpiedica ns
a furnizarea aceluiasi NaN).
In operatiile ce nu furnizeaz
a un rezultat n virgul
a mobil
a (anume comparatiile
si conversiile spre formate ce nu au NaN-uri), qNaN-urile au efecte similare cu
sNaN-urile.

Reglementari IEEE 754


Nu se impune o anumit
a semnificatie semnului unui NaN.
Altfel, semnul unui produs sau c
at este xor-ul semnelor operanzilor.
Semnul unei sume, sau diferente x y privite ca x + (y ), difer
a de cel mult
unul din semnele operanzilor.
Semnul rezultatului operatiei de rotunjire a unui num
ar n virgul
a mobil
a la o
valoare ntreag
a este semnul operandului.
Aceste reguli se aplic
a chiar si dac
a operanzii sau rezultatele sunt zero sau
infiniti.
C
and suma a doi operanzi de semne contrare sau diferenta a doi operanzi de
acelasi semn este zero, semnul sumei/diferentei va fi + n toate modurile de
rotunjire, n afar
a de rotunjirea c
atre , c
and semnul va fi .
Rezultatul operatiei x + x = x (x) va avea acelasi semn ca x, chiar si
atunci c
and x este zero.

Orice r
ad
acin
a p
atrat
a valid
a va avea semnul +, mai putin 0, care va fi 0.

Reglementari IEEE 754

(4) Exceptii:
Semnalarea unei exceptii const
a n setarea unui flag de stare si/sau
executarea unui trap. Se recomand
a ca fiec
arei exceptii s
a i fie asociat un trap
sub controlul utilizatorului. R
aspunsul implicit la o exceptie trebuie s
a fie ns
a
continuarea f
ar
a trap.
Pentru fiecare tip de exceptie trebuie s
a existe un flag de stare care trebuie
setat de fiecare dat
a c
and apare exceptia respectiv
a si nu se execut
a nici un
trap. Flag-ul poate fi resetat doar la cererea utilizatorului. Utilizatorul trebuie
s
a poat
a testa sau modifica flagurile de stare individual si eventual s
a poata
salva/restaura toate flagurile odat
a.
Singurele exceptii care pot coincide sunt inexact cu overflow si inexact cu
underflow.

Reglementari IEEE 754


Exist
a cinci tipuri de exceptii:
Exceptia operatie invalid
a:
Este semnalat
a dac
a un operand este invalid pentru operatia ce trebuie
efectuat
a.
C
and exceptia apare f
ar
a trap iar destinatia are un format de virgul
a mobil
a,
rezultatul va fi un qNaN.
Operatii invalide sunt:
- orice operatie asupra unui sNaN;
- adunarea/sc
aderea/sc
aderea n modul a infiniturilor, de exemplu:
(+) + ();
- nmultirea 0 ;
- mp
artirea 0/0 sau /;
- aflarea restului (reminder) x REM y , c
and y este zero sau x este infinit;
- r
ad
acina p
atrat
a a unui operand < zero;
- conversia unui num
ar n virgul
a mobil
a binar la un format ntreg sau zecimal
c
and un overflow, infinit sau NaN prent
ampin
a o reprezentare fidel
a n acel
format iar aceasta nu poate fi semnalat
a altfel;
- comparatia prin intermediul unor predicate ce implic
a < sau > f
ar
a ?, c
and
operanzii sunt neordonati.

Reglementari IEEE 754

Exceptia mp
artire la zero:
Este semnalat
a dac
a demp
artitul (divident) este un num
ar finit nenul, iar
mp
artitorul (divizor) este zero.
Dac
a nu se execut
a trap, rezultatul este un cu semn adecvat (a se vedea
operatiile aritmetice, mai sus).

Reglementari IEEE 754


Exceptia overflow (dep
asire superioar
a):
Este semnalat
a dac
a cel mai mare num
ar finit reprezentabil conform formatului
destinatiei este excedat n modul de ceea ce ar fi trebuit s
a fie rezultatul n
virgul
a mobil
a rotunjit, cu domeniul exponentului nem
arginit.
Dac
a nu se execut
a trap, rezultatul este determinat de modul de rotunjire si de
semnul rezultatului intermediar, dup
a cum urmeaz
a:
- rotunjirea la cel mai apropiat (Round to Nearest) duce toate situatiile de
overflow c
atre cu semnul rezultatului intermediar;
- rotunjirea c
atre 0 (rounding toward 0) duce toate situatiile de overflow c
atre
cel mai mare num
ar finit reprezentabil conform formatului, cu semnul
rezultatului intermediar;
- rotunjirea c
atre (rounding toward ) duce toate situatiile de overflow
pozitiv c
atre cel mai mare num
ar finit reprezentabil conform formatului, si duce
toate situatiile de overflow negativ c
atre ;
- rotunjirea c
atre + (rounding toward +) duce toate situatiile de overflow
negativ c
atre cel mai negativ num
ar finit reprezentabil conform formatului, si
duce toate situatiile de overflow pozitiv c
atre +.

Reglementari IEEE 754


Overflow-urile cu trap, n toate operatiile n afara conversiilor, vor furniza
handler-ului asociat trap-ului rezultatul obtinut prin mp
artirea rezultatului
exact la 2 si apoi rotunjire, unde (bias adjust) este 192 pentru single si
1536 pentru double ( este ales a.. valorile cu overflow/underflow s
a fie
translatate c
at mai aproape de mijlocului domeniului exponentului si astfel,
dac
a se doreste, s
a poat
a fi folosite n operatii scalate ulterioare, cu risc mai
mic de a cauza alte exceptii).
Overflow-urile cu trap n conversii dinspre un format n virgul
a mobil
a vor
furniza handler-ului asociat trap-ului un rezultat n acelasi format sau ntr-unul
mai larg, eventual cu bias-ul exponentului ajustat, dar rotunjit conform preciziei
destinatiei.
Overflow-urile cu trap n conversii de la zecimal la virgul
a mobil
a vor furniza
handler-ului asociat trap-ului un rezultat n cel mai larg format suportat,
eventual cu bias-ul exponentului ajustat, dar rotunjit conform preciziei
destinatiei; dac
a rezultatul este situat mult n afara domeniului pentru a putea
fi ajustat bias-ul, va fi furnizat n loc un qNaN.

Reglementari IEEE 754


Exceptia underflow (dep
asire inferioar
a):
La underflow contribuie dou
a evenimente corelate:
- producerea unui rezultat nenul foarte mic, ntre 2Emin , care, fiind at
at de
mic, poate cauza ulterior alte exceptii, ca overflow la mp
artire;
- pierdea accentuat
a a acuratetei n timpul aproxim
arii unor numere at
at de
mici prin numere denormalizate.
Modul de detectare a acestor evenimente este dependent de implementare, dar
trebuie s
a se fac
a la fel pentru toate operatiile.
Micimea valorii (tininess) poate fi detectat
a:
- dup
a rotunjire: c
and un rezultat nenul calculat ca si c
and domeniul
exponentului ar fi nem
arginit s-ar situa strict ntre 2Emin ;
- naintea rotunjirii: c
and un rezultat nenul calculat ca si c
and at
at domeniul
exponentului c
at si precizia ar fi nem
arginite s-ar situa strict ntre 2Emin .
Pierderea acuratetei (loss of accuracy) poate fi detectat
a:
- ca o pierdere la denormalizare: c
and rezultatul furnizat difer
a de ceea ce s-ar
fi calculat dac
a domeniul exponentului ar fi nem
arginit;
- ca un rezultat inexact: c
and rezultatul furnizat difer
a de ceea ce s-ar fi
calculat dac
a at
at domeniul exponentului c
at si precizia ar fi nem
arginite
(aceasta este conditia numit
a inexact n cazul exceptiei inexact, a se
vedea mai jos).

Reglementari IEEE 754


Dac
a un trap pentru undeflow nu este implementat sau nu este activat (cazul
implicit), exceptia underflow va fi semnalat
a (prin intermediul flag-ului de
underflow) doar dac
a au fost detectate at
at micimea c
at si pierderea acuratetei.
Metoda de detectare nu afecteaz
a rezultatul furnizat, care poate fi zero, num
ar
denormalizat, sau 2Emin .
Dac
a este implementat si activat un trap pentru underflow, exceptia underflow
va fi semnalat
a c
and a fost detectat
a micimea, indiferent de pierderea
acuratetei.
Underflow-urile cu trap n cazul tuturor operatiilor mai putin conversia vor
furniza handler-ului asociat trap-ului rezultatul obtinut prin nmultirea
rezultatului exact cu 2 si apoi rotunjire ( este ca mai devreme).
Underflow-urile cu trap n cazul conversiilor vor fi tratate analog ca n cazul
overflow-urilor.

Reglementari IEEE 754

Observatie: din cele de mai sus rezult


a ca factorul cel mai important care
determin
a aparitia overflow/underflow este situarea exponentului sub Emin
(underflow), respectiv deasupra lui Emax (overflow).

Exceptia inexact:
Este semnalat
a dac
a rezultatul rotunjit al unei operatii este inexact sau
efecueaz
a overflow f
ar
a trap.
Rezultatul rotunjit sau av
and overflow este furnizat destinatiei sau, dac
a se
efectueaz
a trap la inexact, handler-ului asociat trap-ului.

Reglementari IEEE 754

(5) Trap-uri:
Utilizatorul poate solicita un trap (ntrerupere software) n cazul oric
areia
dintre cele cinci exceptii de mai sus, prin specificarea unei subrutine handler
asociat
a lui.
De asemenea, poate solicita ca un asemenea handler s
a fie dezactivat, salvat,
restaurat, si poate testa dac
a handler-ul este activat sau nu.
Dac
a este semnalat
a o exceptie cu trap-ul dezactivat, ea este tratat
a asa cum
am prezentat n sectiunea exceptii.
Dac
a este semnalat
a o exceptie cu trap-ul activat, executia programului n care
a ap
arut exceptia este suspendat
a iar handler-ul este apelat, furniz
andu-i-se (de
exemplu ca parametru) un rezultat asa cum am prezentat n sectiunea
exceptii.

Reglementari IEEE 754


Un handler de trap trebuie s
a aib
a capabilit
atile unei subrutine ce poate
returna o valoare spre a fi folosit
a n locul rezultatului operatiei exceptat; acest
rezultat este nedefinit, n afara cazului c
and este furnizat de handler-ul de trap.
De asemenea, flag(-urile) corespunz
atoare exceptiilor semnalate cu trap activat
pot avea valori nedefinite, n afara cazului c
and ele sunt setate/resetate de
handler.
Se recomand
a ca un handler de trap s
a poat
a determina:
- ce exceptie / exceptii au ap
arut n aceast
a operatie;
- tipul operatiei efectuate;
- formatul destinatiei;
- n cazul exceptiilor overflow, underflow si inexact, rezultatul corect
rotunjit, inclusiv informatia c
a s-ar putea s
a nu se potriveasc
a n formatul
destinatiei;
- n cazul exceptiilor operatie invalid
a si mp
artire la zero, valorile
operandului.
Dac
a sunt activate, trap-urile asociate exceptiilor overflow si underflow au
prioritate (precedent
a) asupra unui trap separat asociat exceptiei inexact.

Implementarea operatiilor n virgula mobila

In continuare prezent
am detalii referitoare la modul de implementare a unor
operatii n virgul
a mobil
a, mai exact adunarea si nmultirea, pentru a ndeplini
reglement
arile din standardul IEEE 754.

Adunarea n virgula mobila


Algoritmul de adunare n virgul
a mobil
a:
(1) Se compar
a exponentii celor dou
a numere.
Se deplaseaz
a spre dreapta cifrele mantisei num
arului cu exponent mai mic
(deci se deplaseaz
a spre st
anga virgula sa) p
an
a c
and exponentii celor
dou
a numere devin egali.
(2) Se adun
a mantisele. Adunarea mantiselor determin
a si semnul sumei.
(3) Se normalizeaz
a suma, fie deplas
and dreapta si increment
and exponentul,
fie deplas
and st
anga si decrement
and exponentul.
Se testeaz
a dac
a n urma normaliz
arii sumei s-a produs
overflow/underflow (exponentul sumei este n afara domeniului
corespunz
ator formatului).
Dac
a da, se semnaleaz
a exceptie.
Dac
a nu, se trece la (4).
(4) Se rotunjeste suma, conform formatului.
(5) Se testeaz
a dac
a suma rotunjit
a este normalizat
a (de exemplu, dac
a la
rotunjire se adun
a un 1 la un sir de biti 1, rezultatul poate s
a nu fie
normalizat).
Dac
a da, stop.
Dac
a nu, se reia pasul (3).

Adunarea n virgula mobila

Circuit logic pentru adunarea n virgul


a mobil
a:

TODO (H&P, Fig. 4.45, p.262)

Adunarea n virgula mobila


Exemplu: Fie x = 0.5, y = 0.4375. Calculati x + y aplicand algoritmul de
adunare n virgul
a mobil
a pentru formatul single.
Nu este nevoie s
a determin
am formatul intern (ca single) al celor dou
a numere.
Putem opera pe reprezentarea lor matematic
a n baza 2 n notatie stiintific
a,
dar vom tine cont de parametrii formatului single: n = 32, k = 8, p = 24,
Emin = 126, Emax = bias = 127.
Reprezent
am x, y n baza 2:
artile lor fractionare, avem:
P
artile lor ntregi sunt 0; pentru p
0.5 2 = 1.0
0.4375 2 = 0.875
0.875 2 = 1.75
0.75 2 = 1.5
0.5 2 = 1.0
Deci (x)2 = 0.1, (y )2 = 0.0111.
In notatie stiintific
a normalizat
a, avem: x = 1.0 21 , y = 1.11 22 .
Deoarece exponentii 1 si 2 sunt n intervalul {126, . . . , 127} iar fractiile 0
si 11 ncap pe 23 biti, numerele x si y se vor reprezenta ca single n form
a
normalizat
a, cu s, c, f deduse din notatia stiintific
a normalizat
a de mai sus (nu
mai scriem reprezent
arile respective).

Adunarea n virgula mobila


Aplic
am pasii algoritmului de adunare n virgul
a mobil
a descris mai devreme:
(1) Avem 2 < 1, deci se deplaseaz
a spre dreapta cifrele mantisei lui y p
an
a
ce exponentul s
au l egaleaz
a pe cel al lui x: y = 0.111 21 .
(2) Se adun
a mantisele: 1.0 0.111 = 0.001, deci suma x + y = 0.001 21 .
(3) Se normalizeaz
a suma, verific
and dac
a se produce overflow/underflow:
Avem 0.001 21 = 1.0 24 si cum 126 4 127, nu avem
overflow/underflow.
(4) Se rotunjeste suma, conform formatului single (23 zecimale binare):
Intruc
at fractia 0 ncape pe 23 biti, rotunjirea nu produce nici o modificare a
bitilor.
(5) Suma rezultat
a este deja normalizat
a, deci nu se impune nc
a o normalizare.
In final, am obtinut suma 1.0 24 = 1 20 24 = 24 =

1
16

= 0.0625.

Putem verifica, efectu


and adunarea (sc
aderea) n baza 10, c
a 0.5 0.4375 = 0.0625.

Inmultirea n virgula mobila

Algoritmul de nmultire n virgul


a mobil
a:
(1) Se adun
a exponentii celor dou
a numere, obtin
andu-se exponentul
produsului.
Alternativ, se adun
a exponentii biasati, sc
az
and o dat
a biasul, obtin
andu-se
exponentul biasat al produsului.
(2) Se nmultesc mantisele.
(3) Se normalizeaz
a produsul, dac
a este necesar, prin deplasare dreapta si
increment
and exponentul.
Se testeaz
a dac
a n urma normaliz
arii produsului s-a produs
overflow/underflow (exponentul produsului este n afara domeniului
corespunz
ator formatului).
Dac
a da, se semnaleaz
a exceptie.
Dac
a nu, se trece la (4).
(4) Se rotunjeste produsul, conform formatului.
Se testeaz
a dac
a produsul rotunjit este normalizat.
Dac
a da, se trece la (5).
Dac
a nu, se reia pasul (3).
(5) Se stabileste semnul produsului ca fiind pozitiv, dac
a operanzii au acelasi
semn si negativ, dac
a operanzii au semn contrar (se face xor ntre bitii
de semn ai reprezent
arile operanzilor).
Stop.

Inmultirea n virgula mobila

Exemplu: Fie x = 0.5, y = 0.4375. Calculati x y aplicand algoritmul de


nmultire n virgul
a mobil
a pentru formatul single.
Ca n exemplul precedent, nu este nevoie s
a determin
am formatul intern (ca
single) al celor dou
a numere, ci putem opera pe reprezentarea lor matematic
a
n baza 2 n notatie stiintific
a, tin
and cont de parametrii formatului single:
n = 32, k = 8, p = 24, Emin = 126, Emax = bias = 127.
Am v
azut n exemplul precedent c
a, n notatie stiintific
a normalizat
a, avem:
a ambele numere se vor reprezenta ca
x = 1.0 21 , y = 1.11 22 si c
single n form
a normalizat
a, cu s, c, f deduse din aceast
a notatie (deoarece
exponentii 1 si 2 sunt n intervalul {126, . . . , 127} iar fractiile 0 si 11
ncap pe 23 biti).

Inmultirea n virgula mobila


Aplic
am pasii algoritmului de nmultire n virgul
a mobil
a descris mai devreme:
(1) Se adun
a exponentii, obtin
andu-se exponentul produsului:
1 + (2) = 3.
Alternativ, se adun
a exponentii biasati (caracteristicile), sc
az
and o dat
a biasul,
obtin
andu-se exponentul biasat (caracteristica) al produsului:
(1 + 127) + (2 + 127) 127 = 124.
(2) Se nmultesc mantisele:
1.0 0 x
1.1 1
----1 0 0
1 0 0
1 0 0
--------1.1 1 0 0

Deci produsul f
ar
a semn este (deocamdat
a): 1.11 23
(3) Se normalizeaz
a produsul, verific
and dac
a se produce overflow/underflow:
Produsul este deja normalizat si, deoarece exponentul s
au se ncadreaz
a n
domeniul 126 3 127 (sau exponentul s
au biasat se ncadreaz
a n
domeniul 1 124 254), nu avem overflow/underflow.

Inmultirea n virgula mobila

(4) Se rotunjeste produsul, conform formatului single (23 zecimale binare) si se


verific
a dac
a dup
a rotunjire este normalizat:
Intruc
at fractia 11 ncape pe 23 biti, rotunjirea nu produce modific
ari, iar
produsul este, n continuare, normalizat.
(5) Se stabileste semnul produsului ca fiind negativ, deoarece semnele
operanzilor difer
a.
In final, se obtine produsul
1.11 23 = (1 20 + 1 21 + 1 22 ) 23 = (1 +
7
74 18 = 32
= 0.21875.

1
2

+ 14 )

1
8

Putem verifica, efectu


and nmultirea n baza 10, c
a 0.5 (0.4375) = 0.21875.

Alte operatii n virgula mobila


Am v
azut c
a algoritmul de adunare poate efectua (n functie de semnul celui
de-al doilea operand) si sc
aderea.
Inmultirea se face n general mai lent dec
at adunarea si sc
aderea, dar exist
a
multe procedee de a ad
auga hardware pentru a o face mai rapid
a.
Este ns
a greu de conceput o mp
artire n virgul
a mobil
a rapid
a si exact
a.
O tehnic
a se bazeaz
a pe iteratia lui Newton, unde mp
artirea este transformat
a
n aflarea zeroului unei functii, pentru a determina valoarea invers
a 1/x, care
apoi este nmultit
a cu cel
alalt operand.
Tehnicile iterative ns
a nu pot fi rotunjite corect dac
a nu se calculeaz
a mai
multi biti suplimentari.
Pe de alt
a parte, tehnica mp
artirii SRT (Sweenez, Robertson, Tocher) ncearc
a
s
a estimeze n fiecare pas mai multi biti ai c
atului, utiliz
and un tabel de c
autare
pe baza celor mai semnificativi biti ai demp
artitului si restului; pasilor urm
atori
le revine sarcina corect
arii estim
arilor gresite.

Aritmetica precisa
Asa cum am mai spus, standardul IEEE 754 cere ca toate operatiile, cu
exceptia conversiei binar zecimal, s
a fie efectuate ca si c
and ar produce mai
nt
ai un rezultat intermediar exact (cu precizie infinit
a si domeniu nelimitat),
iar apoi l-ar rotunji.
De aceea, pentru o rotunjire corect
a, hardware-ul trebuie s
a includ
a n calcul
biti suplimentari. In algoritmii de adunare si nmultire descrisi mai devreme nu
am precizat num
arul de biti pe care poate s
a-l ocupe o reprezentare
intermediar
a, dar n mod evident, dac
a fiecare rezultat intermediar ar fi
trunchiat la num
arul fixat de biti pe care trebuie s
a-l ocupe reprezentarea
final
a, rotunjirea nu ar mai avea sens, iar rezultatul final ar fi alterat prea tare.
Din acest motiv, hardware-ul foloseste n timpul calculelor intermediare trei biti
suplimentari, ad
augati n partea cea mai putin semnificativ
a a fractiei:
- bitul de gard
a, l vom nota b1 ;
- bitul de rotunjire, l vom nota b2 ;
- bitul de colectare (sticky bit), l vom nota b3 .
Reprezent
arile rezultatelor intermediare vor avea deci bitii bn . . . b0 b1 b2 b3 .
C
and se deplaseaz
a la dreapta mantisele, bitii de gard
a si rotunjire vor p
astra
primele zecimale care au iesit din c
ampul fractie al formatului, iar bitul de
colectare va fi setat cu 1 d.d. exist
a zecimale nenule la dreapta bitului de rotunjire.

Aritmetica precisa
Exemplu:

Fie x = 1.1001 2 = 1.5625, y = 1.0001 23 = 8.5. Calculati


x + y aplic
and algoritmul de adunare n virgul
a mobil
a pentru formatul de
virgul
a mobil
a descris de parametrii: n = 8, k = 3, p = 5 (deci fractia are 4
zecimale binare), Emin = 22 + 2 = 2, Emax = bias = 22 1 = 3.
Se va efectua calculul at
at n cazul c
and sunt prezenti cei trei biti suplimentari
(deci reprezent
arile intermediare au fractia de 7 biti) c
at si n cazul c
and
acestia nu sunt prezenti (deci reprezent
arile intermediare au fractia de 4 biti).
Deoarece exponentii 1 si 3 sunt n intervalul {2, . . . , 3} iar fractiile 1001 si
0001 ncap pe 4 biti, numerele x si y se vor reprezenta n form
a normalizat
a, cu
s, c, f deduse din notatia stiintific
a normalizat
a dat
a n enunt.
Avem 1 < 3, deci se deplaseaz
a spre dreapta mantisa lui x.
In cazul c
and folosim bitii suplimentari, mantisa lui x va deveni 0.0001101 (zecimalele pierdute n dreapta bitului de rotunjire sunt 01, de aceea bitul de colectare
a devenit 1), deci vom avea de adunat 0.0001101 + 1.0001000 = 1.0010101,
deci rezultatul intermediar este 1.0010101 23 .
El este normalizat si, deoarece 2 3 3, nu se produce overflow/underflow.
Aplic
and rotunjirea round to nearest conform formatului dat (4 zecimale),
obtinem rezultatul intermediar 1.0011 23 . Aceasta este normalizat.
Deci, rezultatul final este: x + y = 1.0011 23 = 9.5

Aritmetica precisa

In cazul c
and nu folosim bitii suplimentari, prin deplasarea la dreapta mantisa
lui x va deveni 0.0001, deci vom avea de adunat 0.0001 + 1.0001 = 1.0010,
deci rezultatul intermediar este 1.0010 23 .
El este normalizat si, deoarece 2 3 3, nu se produce overflow/underflow.
De asemenea, nu avem ce rotunji.
Astfel, rezultatul final este: x + y = 1.0010 23 = 9.
Rezultatul exact, obtinut efectu
and adunarea n baza 10, este:
x + y = 1.5625 + 8.5 = 10.0625.

Aritmetica precisa

Observatii:
Adunarea are nevoie doar de un bit suplimentar (bitul de gard
a), dar
nmultirea poate avea nevoie de doi (bitul de gard
a si cel de rotunjire).
Un produs binar poate avea n fat
a un bit 0, prin urmare pasul de normalizare
poate deplasa produsul spre st
anga cu un bit. Aceasta deplaseaz
a bitul de
gard
a n pozitia celui mai putin semnificativ bit al produsului (ultimul bit al
fractiei), l
as
and bitul de rotunjire s
a ajute corecta rotunjire a produsului.
Bitul de colectare permite calculatorului s
a fac
a diferenta, atunci c
and face
rotunjirea, ntre 0.10 . . . 00 (aflat la jum
atatea distantei ntre 0 si 1 si care
astfel, cu regula round to nearest, s-ar rotunji la ntregul par 0) si 0.10 . . . 01
(care, cu regula round to nearest s-ar rotunji la ntregul 1).
Bitul de colectare poate fi setat, de exemplu, n timpul adun
arii, c
and num
arul
cu exponent mai mic este delasat spre dreapta (a se vedea exemplul anterior).

Aritmetica precisa

Precizia virgulei mobile este m


asurat
a n mod obisnuit prin num
arul de biti
eronati, din ultimii biti semnificativi ai mantisei (bitii cei mai putin semnificativi
ai fractiei); m
asura s.n. num
arul de unit
ati din ultimele pozitii sau ulp (units
in the last place). Dac
a un num
ar este mai mic cu 2 n bitii cei mai putin
semnificativi, se va spune c
a este mai putin cu 2 ulpi.
Dac
a nu se semnaleaz
a exceptii (operatie invalid
a, overflow, underflow),
standardul IEEE 754 garanteaz
a c
a num
arul folosit de calculator este cu o
precizie de p
an
a la o jum
atate de ulp.

Inadvertente si capcane
Diferenta dintre precizia limitat
a a aritmeticii calculatoarelor si precizia
nelimitat
a a aritmeticii din matematic
a conduce la mai multe inadvertente si
capcane aritmetice, la care trebuie s
a fim atenti atunci c
and scriem programe.
Una din inadvertente este c
a adunarea numerelor reale din matematic
a este
asociativ
a, n timp ce adunarea n virgul
a mobil
a din calculator nu este.
De exemplu, consider
am urm
atoarea secvent
a de cod n limbajul C:
float x,y,z,r1,r2; /* float se implementeaza prin single */
x = -1.5e38; y = 1.5e38; z = 1.0;
r1 = x + (y + z);
r2 = (x + y) + z;
printf("%f
%f", r1, r2); /* afisaza: 0.000000
1.000000 */
Intr-adev
ar, la adunarea y + z, adic
a 1.5e38 + 1.0, diferenta ntre operanzi
este at
at de mare nc
at la deplasarea spre dreapta a operandului mai mic 1,
pentru aducere la acelasi exponent cu operandul mai mare 1.5e38, toti bitii
nenuli ai mantisei au iesit din c
ampul fractie al reprezent
arii single, a.. s-a
adunat de fapt 1.5e38 + 0.
Numerele pozitive < cel mai mic num
ar pozitiv denormalizat reprezentabil sunt
prea mici pentru a putea fi reprezentate iar c
and se obtin dintr-un calcul si nu
apare underflow se asimileaz
a cu 0 (asemenea numere care n matematic
a sunt
nenule dar n calculator se asimileaz
a cu 0 s.n. zerouri ale masinii).

Inadvertente si capcane
Exemplu:

Ilustr
am alte c
ateva fenomene legate de aparitia, propagarea,
amplificarea erorilor la efectuarea operatiilor n virgul
a mobil
a, consider
and
urm
atoarea secvent
a de cod n limbajul C:
float x,y,z;
x = 1 / -3e38; printf("%f\n", x);
/* afisaza: -0.000000 */
x = 3e38; y = 3e38; z = x + y; printf("%f\n", z);
/* afisaza: inf (+infinit) */
x = (1 / -3e38) * (3e38 + 3e38); printf("%f\n", x);
/* afisaza: -2.000000 */
/* adica: (-0) * (+infinit) == -2; semnul vine de la -0 */
x = 3e38; y = 1e-30; z = x + y; printf("%g\n", z);
/* afisaza: 3e+38 (== x) */
x = 1e-38 * (1 / 1e-38) - 1; printf("%g\n", x);
/* afisaza: -1.11022e-16 */
/* deci !=0 dar foarte mic */
Atentie deci la erorile de calcul si zerourile masinii.

Inadvertente si capcane
Din cauza erorilor de calcul care apar prin pierderea ultimelor zecimale, se
recomand
a ca n programele cu multe operatii n virgul
a mobil
a s
a se
nlocuiasc
a testele de forma x == 0 cu teste de forma fabs(x) < eps, unde
eps este un numar real strict pozitiv foarte mic, convenabil ales, de exemplu
0.00001.
De exemplu, dac
a program
am metoda lui Gauss de rezolvare a unui sistem de
ecuatii liniare (algoritmul presupune multiple nmultiri si mp
artiri la elemente
nenule din matricea sistemului alese ca pivot, n urma c
arora matricea cap
at
a0
sub diagonal
a), elemente care matematic ar trebui s
a fie 0 n calculator sunt
numere nenule cu modul foarte mic - deci dac
a am c
auta pivotii nenuli dup
a
conditia a[i][j] != 0, am risca s
a alegem drept pivot un numar care
matematic (dac
a am face calculele exact) ar trebui s
a fie 0.
In general, efectele negative ale erorilor de calcul n virgul
a mobil
a sunt foarte
mari dac
a pe baza rezultatelor calculelor aritmetice se iau decizii logice.

Inadvertente si capcane

Concluzie: operatiile aritmetice din calculator au alte propriet


ati dec
at cele din
matematic
a, astfel nc
at algoritmii din matematic
a trebuie modificati pentru a
fi corecti si cu operatiile din calculator.

Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei

2 Aritmetica sistemelor de calcul


Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea

numerelor n matematic
a
numerelor n calculator
numerelor naturale ca ntregi f
ar
a semn
numerelor ntregi n complement fat
a de 2
numerelor reale n virgul
a mobil
a

3 Logica pentru calculatoare


Algebre booleene
Functii booleene
Particularizare la cazul B2

4 Circuite logice
Circuite logice, Sisteme digitale
0-DS (Circuite combinationale, Functii booleene)
1-DS (Memorii)
2-DS (Automate finite)

Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei

2 Aritmetica sistemelor de calcul


Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea

numerelor n matematic
a
numerelor n calculator
numerelor naturale ca ntregi f
ar
a semn
numerelor ntregi n complement fat
a de 2
numerelor reale n virgul
a mobil
a

3 Logica pentru calculatoare


Algebre booleene
Functii booleene
Particularizare la cazul B2

4 Circuite logice
Circuite logice, Sisteme digitale
0-DS (Circuite combinationale, Functii booleene)
1-DS (Memorii)
2-DS (Automate finite)

Sistemele de calcul n general se bazeaz


a pe logica clasic
a (Aristotel).
Corespondentul algebric al acestei logici este constituit din algebrele si functiile
booleene. O deosebit
a important
a o vor avea algebra cu dou
a elemente B2 si
functiile booleene corespunz
atoare acestui caz.
Notiunea de algebr
a boolean
a are mai multe definitii echivalente. O vom
introduce progresiv.

Inversa unei relatii binare

Def: Fie R o relatie binar


a pe o multme A. Relatia invers
a lui R este relatia
binar
a R 1 pe A definit
a astfel:
d

xR 1 y yRx
Th: R 1 1 = R
Dac
a A este finit
a, putem reprezenta grafic o relatie binar
a R pe A printr-o
diagram
a n care: elementele lui A sunt reprezentate prin puncte, iar faptul c
a
xRy este reprezentat printr-o s
ageat
a de la punctul x la punctul y .
In acest caz, reprezentarea lui R 1 se obtine invers
and sensul s
agetilor.
TODO: desen pentru R si R 1 .

Multimi ordonate

Def: Fie A o multime. O relatie binar


a pe A s.n. relatie de ordine
(partial
a), dac
a satisface axiomele:
reflexivitate: x x
antisimetrie: dac
a x y si y x, atunci x = y
tranzitivitate: dac
a x y si y z, atunci x z
In acest caz, perechea hA, i s.n. multime (partial) ordonat
a.
Inversa relatiei se noteaz
a .
Dou
a elemente x, y A sunt comparabile dac
a x y sau y x; altfel, sunt
incomparabile.
Vom nota cu x < y (sau y > x) faptul c
a x y si x 6= y .
Th: este relatie de ordine este relatie de ordine
(multimile ordonate hA, i si hA, i se zic duale un celeilalte).

Multimi ordonate
Dac
a E este o notiune sau proprietate formulat
a pentru o anumit
a multime
ordonat
a, vom nota cu E op notiunea/proprietatea analoag
a formulat
a pentru
duala acesteia (practic, se nlocuieste n E relatia de ordine cu inversa ei). E op
s.n. duala lui E .

Evident, avem E op op = E , iar E si E op sunt duale una alteia.


Principul dualit
atii pentru multimi ordonate afirma ca daca P este o
proprietate formulata pentru o anumita multime ordonata si consideram
duala ei P op , atunci:
P este adevarata P op este adevarata
In general, notiunile legate de ordine se definesc n perechi de notiuni
duale. Pentru ele sunt formulate proprietati duale.

Multimi ordonate
O relatie de ordine pe o multime finit
a A se poate reprezenta grafic printr-o
diagram
a Hasse, astfel: elementele multimii A sunt reprezentate prin puncte,
iar faptul c
a x < y si nu exist
a z A a.. x < z < y se reprezint
a printr-o linie
ce uneste punctele x si y , y fiind situat mai sus ca x.
x
z
Exemplu:
\ / \
y
t
\ /
u
Aceast
a diagram
a arat
a c
a elementele aflate n relatie sunt: u u, y , t, x, z;
y y , x, z; t t, z; x x; z z; observ
am c
a nu este nevoie s
a evidentiem
prin s
ageti toate perechile de elemente aflate n relatie (n general, avem a b
d.d. a = b sau exist
a un lant ascendent de la a la b).
Diagrama Hasse asociat
a relatei inverse este desenul r
asturnat:
u
/ \
y
t
/ \ /
x
z

Multimi ordonate
Def: Relatia de ordine R pe multimea A este total
a dac
a satisface n plus
axioma:
pentru orice x, y A, avem x y sau y x
(i.e. oricare dou
a elemente sunt comparabile).
In acest caz, perechea hA, i s.n. multime total ordonat
a (sau liniar
ordonat
a).
Th: este relatie de ordine total
a este relatie de ordine total
a.
Diagrama Hasse a unei relatii de ordine totale pe o multime finit
a este un lant
descendent:
x
|
y
|
z

Multimi ordonate

Def: Fie hA, i o multime ordonat


a.
Un element z A este majorant/minorant pentru o submultime M A
dac
a x M (x z) / x M (z x).
Un element z A este element maximal/element minimal pentru o
submultime M A dac
a z M si x M (z, x comparabile x z) /
z M si x M (z, x comparabile z x).
Un element z A este maxim/minim pentru o submultime M A dac
a
z M si x M (x z) / z M si x M (z x).
Un element z A este supremum/infimum pentru o submultime M A
dac
a z este majorant pentru M si x A (x majorant pentru M z x) / z
este minorant pentru M si x A (x minorant pentru M x z).

Multimi ordonate

Th: Fie hA, i o multime ordonat


a si M A.

Dac
a x, y A sunt maxime pentru M, atunci x = y ; cu alte cuvinte,
maximul lui M, dac
a exist
a, este unic; el se noteaz
a max M si se mai numeste
cel mai mare element al lui M, sau ultimul element al lui M.
Dac
a x, y A sunt minime pentru M, atunci x = y ; cu alte cuvinte, minimul
lui M, dac
a exist
a, este unic; el se noteaz
a min M si se mai numeste cel mai
mic element al lui M, sau primul element al lui M.
max M, dac
a exist
a, este si element maximal pentru M, iar M nu mai are alte
elemente maximale.
min M, dac
a exist
a, este si element minimal pentru M, iar M nu mai are alte
elemente minimale.
Dac
a x, y A sunt supremumuri pentru M, atunci x = y ; cu alte cuvinte,
supremumul lui M, dac
a exist
a, este unic; el se noteaz
a sup M.
Dac
a x, y A sunt infimumuri pentru M, atunci x = y ; cu alte cuvinte,
infimumul lui M, dac
a exist
a, este unic; el se noteaz
a inf M.
Dac
a exist
a max M, atunci exist
a si sup M si sup M = max M.
Dac
a exist
a min M, atunci exist
a si inf M si inf M = min M.
Dac
a x, y A, x y , atunci x este singurul element minimal, minimul si
infimumul multimii {x, y }, iar y este singurul element maximal, maximul si
supremumul multimii {x, y }.

Multimi ordonate
Observatii:
Un majorant/minorant al lui M nu este neap
arat element al lui M; M poate
avea 0 sau mai multi majoranti / minoranti.
Dac
a z A este majorant/minorant al lui M si z M, atunci
z = max M/ min M si M nu are alti majoranti / minoranti.
In particular, dac
a exist
a z = sup M/ inf M si z M, atunci
z = max M/ min M (si M nu are alti majoranti / minoranti).
Un element maximal/minimal al lui M este un element al lui M care este mai
mare / mai mic dec
at toate elementele lui M cu care este comparabil (dar nu
este neap
arat comparabil cu toate); M poate avea 0 sau mai multe elemente
maximale / minimale.
max M/min M este un element al lui M comparabil si mai mare / comparabil
si mai mic dec
at toate elementele lui M; M poate avea 0 sau cel mult un max
/ min.
sup M/inf M este cel mai mic majorant / cel mai mare minorant al lui M; M
poate avea 0 sau cel mult un sup / inf; max / min sunt notiuni mai tari dec
at
sup / inf.
Notiunile minorant/majorant, element minimal/element maximal,
minim/maxim, infimum/supremum, sunt respectiv duale.

Multimi ordonate
Exemplu: Fie multimea ordonat
a urm
atoare:
t
|
z
p
/\
/
/ \ /
x
y
|\ /|\
| \/ | \
| /\ | c
|/ \|
a
b
\
/
\ /
\/
u
Submultimea {x, y } are majorantii z, t, minorantii a, b, u, elementele
maximale si minimale x, y , nu are min sau max, are sup = z si nu are inf.
Submultimea {z, x, y , c} are majorantii z, t, nu are minoranti, are sup = max = z
(si singurul element maximal), elementele minimale x, c, nu are min sau inf.

Latici

Exemplu: Fie multimea ordonat


a hIR, i.
Pentru M = (0, 1) R
I , avem: 1 = sup M (deoarece majorantii lui M sunt
elementele multimii [1, ) iar 1 = min[1, )), dar 6 max M.
Pentru M = (0, 1] R
I , avem: 1 = sup M = max M (majorantii lui M sunt
tot elementele multimii [1, )).

Latici
Def: S.n. latice Ore o multime ordonat
a hA, i a.. x, y A,


inf{x, y }
sup{x, y }

Exemplu: Multimea ordonat


a urm
atoare este o latice Ore:
1
/ \
a
b
\ /
0
Observ
am c
a 0 = inf{a, b}, dar 6 min{a, b}, 1 = sup{a, b}, dar 6 max{a, b}.
Def: S.n. latice Dedekind o algebr
a hA, , i de tip (2, 2), care satisface
axiomele:
asociativitate: (x y ) z = x (y z), (x y ) z = x (y z)
comutativitate: x y = y x, x y = y x
absorbtie: x (x y ) = x, x (x y ) = x
Operatiile si s.n. disjunctie, respectiv conjunctie.
Th: Intr-o latice Dedekind, pentru orice dou
a elemente x, y , avem:
x y = y x y = x.

Latici
Cele dou
a notiuni de latice definite mai devreme sunt echivalente, mai exact:
d

Daca A = hA, i este o latice Ore, atunci (A) = hA, , i, unde:


d

x, y A, x y = sup{x, y }, x y = inf{x, y }
este o latice Dedekind.
Daca A = hA, , i este o latice Dedekind, atunci (A) := hA, i, unde:
d

x, y A, x y x y = y ( x y = x)
este o latice Ore.
Transform
arile si sunt inverse una alteia:
A latice Ore, ((A)) = A;
A latice Dedekind, ((A)) = A.
In cele ce urmeaz
a, prin latice vom ntelege o latice Dedekind, dar av
and n
vedere echivalenta de mai sus, pe o latice vom considera automat at
at
operatiile , , c
at si relatia de ordine . Am putea evidentia toate aceste
componente n notatia ei scriind: hA, , , i. C
and operatiile si relatia de
ordine se subnteleg din contex, vom desemna ns
a laticea doar prin A
(multimea subiacent
a).

Latici
Th: hA, , i este o latice hA, , i este o latice
(cele dou
a latici se zic duale un celeilalte).
Dac
a E este o notiune sau proprietate formulat
a pentru o anumit
a latice, duala
ei E op se obtine interschimb
and peste tot si (aceste operatii sunt duale
una celeilalte).
Principul dualit
atii pentru latici rezult
a din principul dualit
atii pentru multimi
ordonate si afirm
a c
a dac
a P este o proprietate formulat
a pentru o anumit
a
latice si consider
am duala ei P op , atunci:
P este adev
arat
a P op este adev
arat
a

Asa cum am v
azut deja, n general notiunile / propriet
atile legate de latici se
dau n perechi de notiuni / propriet
ati duale.
De exemplu, avem notiunile de majorant / minorant, max / min, etc.; de
asemenea, avem c
ate dou
a legi de asociativitate, comutativitate, absorbtie.

Latici

Th: Orice latice satisface:


idempotent
a: x x = x, x x = x
Def: O latice A se zice complet
a, dac
a M A, sup M, inf M A.
Th: Orice latice finit
a este complet
a.

Latici distributive, marginite, complementate


Th: In orice latice A, urm
atoarele propriet
ati sunt echivalente:
x, y , z A, x (y z) = (x y ) (x z)
x, y , z A, x (y z) = (x y ) (x z)
Def: O latice se zice distributiv
a, daca satisface axioma:
distributivitate: x (y z) = (x y ) (x z), x (y z) = (x y ) (x z)
(conform th. anterioare, e suficient s
a cerem doar una dintre cele dou
a relatii).
Def: S.n. latice m
arginit
a (sau latice cu prim si ultim element) o algebr
a
hA, , , 0, 1i de tip (2, 2, 0, 0) (asadar 0, 1 sunt elemente distinse din A), a..:
hA, , i este latice.
0 = min A, 1 = max A.
Observatii:
Conditia 0 = min A se poate nlocui cu una dintre identit
atile
x A (0 x = x), x A (0 x = 0); conditia 1 = max A se poate nlocui cu
una dintre identit
atile x A (1 x = 1), x A (1 x = x).
O latice m
arginit
a este n mod necesar nevid
a (deoarece trebuie s
a contin
a
cel putin pe 0 si 1), dar nu trebuie neap
arat ca 0 6= 1; dac
a 0 = 1, atunci A se
reduce la un singur element (deoarece x A (0 x 1 = 0)).
O notiune/proprietate referitoare la latici m
arginite se dualizeaz
a
interschimb
and cu si 0 cu 1; principiul dualit
atii se p
astreaz
a.

Latici distributive, marginite, complementate


Def: Fie hA, , , 0, 1i o latice m
arginit
a.
Dac
a x A, s.n. complement al lui x orice y A a.. x y = 1 si x y = 0.
Un element x A, se zice. complementat, dac
a are cel putin un
complement.
Laticea m
arginit
a A se zice complementat
a, dac
a orice element al s
au este
complementat.
Th: Intr-o latice m
arginit
a si distributiv
a orice element poate avea cel mult un
complement.
Observatii:
Numai o latice m
arginit
a poate fi complementat
a.
In orice latice m
arginit
a, 0 are ca unic complement pe 1, 1 are ca unic
complement pe 0, iar 0 si 1 sunt singurele elemente comparabile cu un
complement al lor.
Dac
a o latice complementat
a nu este si distributiv
a, un element poate avea
mai multe complemente.
Dac
a o latice complementat
a este si distributiv
a, adic
a este o algebr
a
boolean
a, orice element x are un complement unic, notat x; n acest caz,
corespondenta x 7 x se poate ad
auga signaturii algebrei booleene, ca o
operatie unar
a (a se vedea mai jos).

Algebre booleene
Def: S.n. algebr
a boolean
a o algebr
a hA, , , , 0, 1i de tip (2, 2, 1, 0, 0) care
este latice distributiv
a, m
arginit
a si complementat
a (cuv
antul m
arginit
a este
redundant). Cu alte cuvinte, ea satisface axiomele:
asociativitate: (x y ) z = x (y z), (x y ) z = x (y z)
comutativitate: x y = y x, x y = y x
absorbtie:
x (x y ) = x, x (x y ) = x
distributivitate: x (y z) = (x y ) (x z), x (y z) = (x y ) (x z)
m
arginire:
0 = min A, 1 = max A
(sau, echivalent, 0 x = x, 0 x = 0, 1 x = 1, 1 x = x)
complementare: x x = 1, x x = 0
Observatii:
O algebr
a boolean
a este nevid
a, deoarece contine 0, 1, dar nu trebuie
neap
arat ca 0 6= 1; dac
a 0 = 1, atunci algebra boolean
a se reduce la un singur element (algebra singleton B1 ); dac
a algebra are 2 elemente, atunci n mod
necesar 0 6= 1; exist
a algebra boolean
a cu numai dou
a elemente, 0 si 1, notat
a B2 .
Singurele algebre booleene total ordonate sunt B1 si B2 ; ambele sunt complete.
O notiune/proprietate referitoare la algebre booleene se dualizeaz
a
interschimb
and cu , 0 cu 1 si l
as
and intact. Astfel, unele
notiuni/propriet
ati, de exemplu cele formulate doar n termenii lui , vor fi
propriile lor duale (vor fi autoduale). Principiul dualit
atii se p
astreaz
a.

Algebre booleene

Def: In orice algebr


a boolean
a se definesc operatiile derivate:
d
implicatia: x y = x y
d
diferenta: x y = x y
d
echivalenta: x y = (x y ) (y x)
d

disjunctia exclusiv
a (xor): x 4 y = (x y ) (x y ) = (x y ) (y x)
Observatie: Operatiile si 4 sunt duale una alteia; fiecare dintre operatiile
si este duala celeilalte compuse cu permutarea operanzilor (x y se
interschimb
a cu y x).

Algebre booleene
Th: In orice algebr
a boolean
a au loc urm
atoarele propriet
ati:
x y = y x, x y = y x
(x y ) z = x (y z), (x 4 y ) 4 z = x 4 (y 4 z)
( si 4 sunt asociative)
x y = y x, x 4 y = y 4 x
( si 4 sunt comutative)
0 4 x = x, 1 x = x
1 4 x = x, 0 x = x
x y = x y, x y = x y
x 4 y = x y, x y = x 4 y
x = x (legea dublei negatii)
x (x y ) = x y , x (x y ) = x y (absorbtia boolean
a)
x y = x y , x y = x y (legile lui de Morgan)
(n prezenta legii dublei negatii, acestea se pot formula echivalent:
x y = x y, x y = x y)
x y = 1 si x y = 0 implic
a y = x (unicitatea complementului)
x y = 0 d.d. x = y = 0, x y = 1 d.d. x = y = 1
Observatie: Constat
am c
a, n baza principiului dualit
atii, propriet
atile apar n
perechi de propriet
ati duale. Legea dublei negatii este autodual
a, de aceea
apare singur
a.

Algebre booleene
Exemplu: Dac
a M este o multime, multimea P(M) a p
artilor lui M este o
algebr
a boolean
a complet
a, cu operatiile:
= (reuniunea)
= (intersectia)
= C (complementara unei submultimi)
0 = (multimea vid
a)
1 = M (multimea total
a)
Rezult
a c
a avem relatia de ordine:
= (incluziunea)
si urm
atoarele operatii derivate:
= \ (diferenta de multimi)
4 = 4 (diferenta simetric
a de multimi).
Exemplu: Algebra boolean
a cu dou
a elemente B2 = {0, 1} are operatiile date
de urm
atoarele tabele:
x y x y x y
x x
0 0
0
0
0 1
0 1
1
0
1 0
1 0
1
0
Relatia de ordine este: 0 1. 1 1
1
1
Aceast
a algebr
a este important
a n cele ce urmeaz
a si vom reveni asupra ei mai
t
arziu.

Inele booleene
Def: S.n. inel unitar o algebr
a hA, +, , , 0, 1i de tip (2, 2, 1, 0, 0, ) a..:
hA, +, , 0i este grup abelian, adic
a satisface:
(x + y ) + z = x + (y + z)
x +0=0+x =x
x + (x) = (x) + x = 0
x +y =y +x
hA, , 1i este semigrup unitar (monoid), adic
a satisface:
(x y ) z = x (y z)
x 1=1x =x
operatia este distributiv
a fat
a de operatia +, adic
a satisface:
x (y + z) = x y + x z, (y + z) x = y x + z x
(n notatie, am presupus c
a are precedent
a mai mare dec
at + si am omis
parantezele inutile).
Inelul unitar este comutativ, dac
a este comutativ
a:
x y =y x
Def: S.n. inel boolean un inel unitar hA, +, , , 0, 1i a.. operatia este
idempotent
a, adic
a satisface:
x x =x

Inele booleene

Th: Orice inel boolean satisface:


x +x =0
x y = y x (adic
a inelul boolean este comutativ)
Exemplu: Inelul claselor de resturi modulo 2, hZ/2 , +, , ,
0,
1i, este inel
boolean.

Inele booleene

Notiunile de algebr
a boolean
a si inel boolean sunt echivalente, mai exact:
Daca A = hA, , , , 0, 1i este o algebru a boolean
a, atunci
d

(A) = hA, +, , , 0, 1i, unde:


d

x, y A, x + y = x 4 y = (x y ) (x y ), x y = x y si x A, x = x
este un inel boolean.
Daca A = hA, +, , , 0, 1i este un inel boolean, atunci
d

(A) = hA, , , , 0, 1i, unde:


d

x, y A, x y = x + y + x y , x y = x y si x, y A, x = x + 1
este o algebr
a boolean
a.
Transform
arile si sunt inverse una alteia:
A algebr
a boolean
a, ((A)) = A;
A inel boolean, ((A)) = A.

Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei

2 Aritmetica sistemelor de calcul


Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea

numerelor n matematic
a
numerelor n calculator
numerelor naturale ca ntregi f
ar
a semn
numerelor ntregi n complement fat
a de 2
numerelor reale n virgul
a mobil
a

3 Logica pentru calculatoare


Algebre booleene
Functii booleene
Particularizare la cazul B2

4 Circuite logice
Circuite logice, Sisteme digitale
0-DS (Circuite combinationale, Functii booleene)
1-DS (Memorii)
2-DS (Automate finite)

Functii booleene

a boolean
a si n N
I , n 1.
Fie hB, , , , 0, 1i o algebr
n

Fie B B multimea functiilor definite pe B n cu valori n B.


n
Printre elementele lui B B se afl
a:
functiile constante: fa : B n B, fa (x1 , . . . , xn ) = a, a B;
functiile proiectie: i : B n B, i (x1 , . . . , xn ) = xi , 1 i n.
n

Th: B B devine algebr


a boolean
a cu operatiile definite astfel:
d
(f g )(x1 , . . . , xn ) = f (x1 , . . . , xn ) g (x1 , . . . , xn )
d

(f g )(x1 , . . . , xn ) = f (x1 , . . . , xn ) g (x1 , . . . , xn )


d

f (x1 , . . . , xn ) = f (x1 , . . . , xn )
d

0(x1 , . . . , xn ) = 0
d

1(x1 , . . . , xn ) = 1

Functii booleene
Bn

Def: Functiile booleene din B se definesc recursiv astfel:


n
(i) Dac
a f B B este o functie constant
a sau functie proiectie, atunci f este
functie boolean
a.
n
(ii) Dac
a f , g B B sunt functii booleene, atunci f g , f g sunt functii
n
a.
booleene; dac
a f B B este functie boolean
a, atunci f este functie boolean
n
(iii) Toate functiile booleene din B B se obtin aplic
and de un num
ar finit de ori
(i) si (ii).
Observatii:
n
n
Multimea functiilor booleene din B B este cea mai mic
a submultime F B B a..:
(1) F contine functiile constante (n particular functia constant
a 0 si functia
constant
a 1) si functiile proiectie.
a f , g F , atunci f g , f g F ,
(2)F este nchis
a la operatiile , , : dac
dac
a f F , atunci f F .
n
O submultime a lui B B ce satisface (1), (2) se zice nchis
a boolean; deci,
n
n
multimea functiilor booleene din B B este cea mai mic
a submultime a lui B B
nchis
a boolean.
n
Intr-o alt
a terminologie, multimea functiilor booleene din B B este subalgebra
Bn
boolean
a a lui B generat
a de functiile constante si functiile proiectie.
n
O functie din B B este functie boolean
a d.d. se poate scrie ca o expresie
algebric
a boolean
a (termen boolean) de functii constante si functii proiectie.

Functii booleene

Exemplu: Dac
a a, b, c B si n 4, atunci
(fa fb 4 ) fc
este o functie boolean
a.
Aplic
and propriet
atile de calcul ntr-o algebr
a boolean
a, putem exprima o
functie boolean
a prin mai multe expresii echivalente. Am dori ca printre ele s
a
existe si o form
a (expresie) standard, n care s
a putem exprima n mod unic
orice functie boolean
a.
Teorema urm
atoare afirm
a c
a exist
a chiar dou
a (duale una celeilalte): forma
normal
a disjunctiv
a si forma normal
a conjunctiv
a.

Functii booleene
n

Th: Pentru f B B sunt echivalente:


(1) f este functie boolean
a.
(2) x1 , . . . , xn B, W
f (x1 , . . . , xn ) =
(f (1 , . . . , n ) x11 xnn )
1 ,...,n {0,1}

(forma normal
a disjunctiv
a, FND)
(3) x1 , . . . , xn B, f (x1 , . . . , xn ) =

(f (1 , . . . , n ) x11 xnn )

1 ,...,n {0,1}

(forma normal
a conjunctiv
a, FNC)
unde am notat: xi0 = xi , xi1 = xi , 1 i n.
Observatii:
a functia
Dac
a interschimb
am i cu i , 1 i n si tinem cont c
{0, 1}n {0, 1}n , (1 , . . . , n ) 7 (1 , . . . , n ) este o bijectie, (3) poate fi
nlocuit cu:
V
(3) x1 , . . . , xn B, f (x1 , . . . , xn ) =
(f (1 , . . . , n ) x11 xnn )
1 ,...,n {0,1}

Scrierea n FND, FNC, este unic


a, abstractie f
ac
and de o permutare a
factorilor/termenilor pe baza asociativit
atii si comutativit
atii lui /.
Consecint
a: Orice functie boolean
a : B n B este unic determinat
a de
n
n
valorile ei pe {0, 1} ( B ).

Functii booleene

Th: Dac
a f : B n B, n 1, este o functie boolean
a si 1 i n, atunci:
x1 , . . . , xn B, f (x1 , . . . , xn ) =
(xi f (x1 , . . . , xi1 , 1, xi+1 , . . . , xn )) (xi f (x1 , . . . , xi1 , 0, xi+1 , . . . , xn ))

Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei

2 Aritmetica sistemelor de calcul


Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea

numerelor n matematic
a
numerelor n calculator
numerelor naturale ca ntregi f
ar
a semn
numerelor ntregi n complement fat
a de 2
numerelor reale n virgul
a mobil
a

3 Logica pentru calculatoare


Algebre booleene
Functii booleene
Particularizare la cazul B2

4 Circuite logice
Circuite logice, Sisteme digitale
0-DS (Circuite combinationale, Functii booleene)
1-DS (Memorii)
2-DS (Automate finite)

Algebra booleana B2
Algebra boolean
a cu dou
a elemente B2 are o deosebit
a important
a n
informatic
a.
Multe dintre notiunile si propriet
atile referitoare la algebre si functii booleene n
general, pe care le-am prezentat mai devreme, n cazul B2 cap
at
a o form
a mai
simpl
a, pe care o vom prezenta n continuare.
Vom folosi notatii din aritmetic
a pentru unele dintre operatiile booleene, care
s
a ne permit
a operarea mai usoar
a cu formulele de calcul:
disjunctia va fi notat
a + (n loc de );
conjunctia va fi notat
a sau juxtapunere (n loc de );
disjunctia exclusiv
a (xor) va fi notat
a (n loc de 4).
De asemenea, vom folosi uneori terminologia din aritmetic
a, spun
and: sum
a,
produs, etc., n loc de: disjunctie, conjunctie, etc..
Vom considera urm
atoarea precedent
a ntre operatii, n baza c
areia vom putea
omite o parte din paranteze: +, < <

Algebra booleana B2
Reamintim c
ateva dintre formulele anterioare, scrise cu noile notatii:
Axiomele prin care se defineste o algebr
a boolean
a hA, +, , , 0, 1i sunt:
asociativitate:
comutativitate:
absorbtie:
distributivitate:
m
arginire:
complementare:

(x + y ) + z = x + (y + z), (xy )z = x(y z)


x + y = y + x, xy = y x
x + xy = x, x(x + y ) = x
x(y + z) = xy + xz, x + y z = (x + y )(x + z)
0 + x = x, 0x = 0, 1 + x = 1, 1x = x
x + x = 1, xx = 0

Operatiile derivate sunt:


d

implicatia: x y = x + y
d
diferenta: x y = xy
d
echivalenta: x y = (x y )(y x)
d

disjunctia exclusiv
a (xor): x y = xy + xy = (x y ) + (y x)

Algebra booleana B2

Alte propriet
ati valabile n algebre booleene:
x + x = x, xx = x (idempotenta, valabil
a n orice latice)
x y = y x, x y = y x
(x y ) z = x (y z), (x y ) z = x (y z)
( si sunt asociative)
x y = y x, x y = y x ( si sunt comutative)
0 x = x, 1 x = x, 1 x = x, 0 x = x
x y = x y, x y = x y, x y = x y, x y = x y
x = x (legea dublei negatii)
a)
x + xy = x + y , x(x + y ) = xy (absorbtia boolean
x + y = x y , xy = x + y sau x + y = xy , x y = x + y (legile lui de Morgan)
x + y = 1 si xy = 0 implic
a y = x (unicitatea complementului)
x + y = 0 d.d. x = y = 0, xy = 1 d.d. x = y = 1

Algebra booleana B2
Algebra boolean
a hB2 , +, , , 0, 1i este caracterizat
a prin urm
atoarele:
Multimea subiacent
a se reduce la cele dou
a elemente distinse, minim si
maxim, iar acestea sunt diferite ntre ele: B2 = {0, 1}, 0 6= 1. De obicei,
elementele 0/1 au semnificatia valorilor de adev
ar din logica clasic
a
fals/adev
arat (false/true); de aceea, terminologia legat
a de aceast
a algebr
a
este preluat
a din logic
a: 0 si 1 sunt valori de adev
ar, operatiile +, , s.n.
respectiv sau, si, not (or, and, not), tabelele prin care sunt
definite ele s.n. tabele de adev
ar, etc.. Alteori, elementele 0/1 pot semnifica
valorile unor biti, numerele 0/1, cifrele binare, etc.
Operatiile si relatia de ordine pe B2 sunt definite astfel:
x
0
0
1
1

y
0
1
0
1

x +y
0
1
1
1

xy
0
0
0
1

x y
1
1
0
1

Operatia 0-ar
a 0 este elementul 0,
Operatia 0-ar
a 1 este elementul 1,
Relatia de ordine este: 0 1.

x y
0
0
1
0

x y
1
0
0
1

x y
0
1
1
0

x
0
1

x
1
0

Algebra booleana B2

Singurele functii constante : B2 n B2 , n 1, sunt:


d
functia constant
a 0: 0(x1 , . . . , xn ) = 0
d

functia constant
a 1: 1(x1 , . . . , xn ) = 1
n
Acestea sunt elementele 0, respectiv 1, ale algebrei booleene B2 B2 si astfel
n
orice expresie algebric
a boolean
a de functii din B2 B2 se poate transforma
ntr-una echivalent
a f
ara aceste elemente.
a (i.e. se poate
Th: Orice functie f : B2 n B2 , n 1, este functie boolean
scrie ca o expresie algebric
a boolean
a de functii constante si functii proiectie).
Astfel, n cazul B2 putem elimina (i), (ii), (iii) din definitia functiilor booleene si
s
a numim functie boolean
a orice functie : B2 n B2 , n 1.

Algebra booleana B2

In cele ce urmeaz
a, vom folosi ns
a o definitie mai general
a:
Def: S.n. functie boolean
a orice functie f : B2 n B2 k , n, k 1.
Dac
a k = 1, f se mai numeste functie boolean
a scalar
a.
Dac
a k > 1, f se mai numeste functie boolean
a vectorial
a.
Componentele unei functii booleene vectoriale f : B2 n B2 k sunt functiile
d
fi = i f : B2 n B2 , unde i : B2 k B2 este functia proiectie, 1 i k.
Observatie: O functie boolean
a vectorial
a f : B2 n B2 k se poate asimila cu
sistemul componentelor sale: f = (f1 , . . . , fk ) (pe elemente: f (x1 , . . . , xn ) =
(f1 (x1 , . . . , xn ), . . . , fk (x1 , . . . , xn ))), iar componentele fi : B2 n B2 sunt
functii booleene scalare.

Algebra booleana B2
O functie boolean
a poate fi dat
a n mai multe feluri:
Informal (dar suficient de precis):
Fie functia boolean
a care asociaz
a unui sistem de trei biti bitul majoritar.
Printr-o formul
a, de exemplu o expresie algebric
a boolean
a:
Fie f : B2 3 B2 4 , f (x, y , z) = (z(y z + xy ), x + z, z xy , y )
Printr-un tabel (daca functia este definit
a pe B2 n , tabelul are 2n linii):
Fie f : B2 3 B2 2 , dat
a prin tabelul:
x y z f1 (x, y , z) f2 (x, y , z)
0 0 0
1
1
0 0 1
0
1
0 1 0
0
0
0 1 1
0
0
1 0 0
1
1
1 0 1
0
0
1 1 0
1
1
1 1 1
0
0

Algebra booleana B2

C
and descriem o functie boolean
a printr-un tabel, trebuie s
a fix
am o ordine a
semnificatiilor variabilelor si o ordine de amplasare a coloanelor acestora, n
concordant
a cu semnificatia; n exemplul anterior, ordinea semnificatiilor
variabilelor este: x > y > z (x este mai semnificativ dec
at y , care este mai
semnificativ dec
at z), iar coloanele variabilelor au fost amplasate n ordinea
descresc
atoare a semnificatiilor, de la st
anga la dreapta:
x

f1 (x, y , z)

f2 (x, y , z)

De asemenea, este bine s


a gener
am sistemele de valori ale variabilelor pe linii
dup
a o anumit
a regul
a; n exemplul anterior, aceste sisteme de valori au fost
generate n ordine lexicografic
a, de sus n jos.

Algebra booleana B2
C
and proced
am astfel, tabelul are urm
atoarele propriet
ati:
Pe prima coloan
a, cea a variabilei celei mai semnificative, valorile alterneaz
a
cu o perioad
a mare: avem jum
atate 0, apoi jum
atate 1; pe coloana a doua, cea
a variabilei urm
atoare ca semnificatie, perioada se njum
at
ateste: un sfert 0,
apoi un sfert 1, apoi un sfert 0, apoi un sfert 1; pe coloana variabilei urm
atoare
ca semnificatie, perioada se njum
at
ateste iar: o optime 0, apoi o optime 1,
etc..
Pe fiecare linie, sistemul valorilor variabilelor constituie transcrierea n baza 2
a num
arului de ordine al liniei, num
ar
and de la 0, de sus n jos; de exemplu,
sistemul valorilor variabilelor de pe linia 3 este 011 (transcrierea binar
a a lui 3):
x y z f1 (x, y , z) f2 (x, y , z)
0 0 0 0
1
1
1 0 0 1
0
1
2 0 1 0
0
0
3 0 1 1
0
0
4 1 0 0
1
1
5 1 0 1
0
0
6 1 1 0
1
1
7 1 1 1
0
0
Ambele propriet
ati vor avea semnificatie si se vor dovedi utile la realizarea
circuitelor logice.

Algebra booleana B2
Observatie:
Dac
a am fixat ordinea semnificatiilor variabilelor, cea de amplasare a coloanelor
acestora si regula dup
a care gener
am sistemele de valori ale variabilelor pe linii,
pentru a descrie o functie boolean
a scalar
a f : B2 n B2 , n 1, este suficient
s
a d
am sistemul de valori din coloana functiei (deoarece putem deduce pentru
ce valori ale variabilelor corespunde o anumit
a valoare a functiei).
Un asemenea sistem de valori este transcrierea n baza 2 a unui num
ar ntreg
n
de la 0 la 22 1, iar acest num
ar este unic determinat de f .
In exemplul de mai sus, f1 poate fi descris
a de sistemul de 8 valori (octetul)
10001010 (de exemplu, bitul 3 (num
ar
and de la st
anga si de la 0) este 0 si este
valoarea f1 (x, y , z) corespunz
atoare liniei 3 din tabel, care corespunde valorilor
variabilelor ce transcriu n baza 2 num
arul 3: x = 0, y = 1, z = 1). Acest octet
este transcrierea n baza 2 a num
arului 81 (tin
and cont c
a bitul scris n st
anga
este cel de rang 0, care corespunde unit
atilor).
Astfel, functiile booleene scalare de n variabile, n 1, sunt n corespondent
a
n
bijectiv
a cu numerele 0, . . . , 22 1, ceea ce ne permite s
a mut
am studiul
acestor functii ntr-un cadru aritmetic.
n
In particular, num
arul functiilor booleene scalare de n variabile, n 1, este 22 .
n

Num
arul functiilor booleene f : B2 n B2 k , n, k 1, este (22 )k .

Algebra booleana B2
Pentru a trece de la un mod de descriere a unei functii booleene la altul, putem
proceda astfel:
Trecerea de la tabel la formul
a (expresie):
Pentru fiecare component
a a functiei, din tabel se poate obtine FND sau FNC
(vom vedea mai t
arziu).
Trecerea de la formul
a (expresie) la tabel:
De la st
anga la dreapta, asociem coloane variabilelor n ordinea descresc
atoare
a semnificatiei, apoi subexpresiilor din formul
a, n ordinea cresc
atoare a
agreg
arii lor din alte subexpresii, p
an
a obtinem coloane corespunz
atoare
componentelor functiei.
Proced
and astfel, putem completa tabelul pe coloane de la st
anga la dreapta,
fiecare nou
a coloan
a obtin
andu-se din niste coloane deja completate, folosind o
singur
a operatie boolean
a.

Algebra booleana B2
Astfel, pentru functia din exemplul anterior:
f : B2 3 B2 4 , f (x, y , z) = (z(y z + xy ), x + z, z xy , y )
|
{z
} | {z } | {z } |{z}
avem:
f1
f2
f3
f4
x y = f4
0
0
0
0
0
1
0
1
1
0
1
0
1
1
1
1

z
0
1
0
1
0
1
0
1

y
1
1
0
0
1
1
0
0

z
1
0
1
0
1
0
1
0

xy y z y z y z + xy f1
0
1
0
0
0
0
0
1
1
1
0
0
1
1
0
0
1
0
0
0
1
1
0
1
0
1
0
1
1
1
0
0
1
1
0
0
1
0
0
0

f2 xy xy
0 0 1
1 0 1
0 0 1
1 0 1
1 0 1
1 0 1
1 1 0
1 1 0

De exemplu, coloana a 9-a (y z + xy ) s-a calculat din coloanele a 8-a


(y z) si a 6-a (xy ) folosind operatia +.

f3
1
0
1
0
1
0
0
1

Algebra booleana B2
Sfat:
La completarea unei coloane, n loc s
a urm
arim pe fiecare linie valorile surs
a
pentru a calcula valoarea rezultat
a, se poate dovedi mai util s
a deducem o
regul
a de aranjare a valorilor din coloana rezultat
a din regulile de aranjare a
valorilor n coloanele surs
a si s
a complet
am noua coloan
a direct.
De exemplu, observ
am c
a n coloana y alterneaz
a doi de 0, doi de 1, ...; atunci
deducem c
a n coloana y alterneaz
a doi de 1, doi de 0, ... si putem completa
coloana y direct, f
ar
a a mai privi la fiecare linie n coloana y .
In cazul coloanei xy , observ
am c
a x ncepe cu 4 linii 0, care este element
anulator la conjunctie, deci si coloana xy ncepe tot cu 4 linii 0; apoi x are 4
linii 1, care este element neutru la conjunctie, deci urm
atoarele 4 linii din
coloana xy se copiaz
a din coloana y , unde deja am v
azut c
a ultimile 4 linii
alterneaz
a doi de 1, doi de 0.

Algebra booleana B2
In cazul B2 , teorema si observatiile referitoare la FND si FNC se simplific
a,
deoarece orice functie f : B2 n B2 , n 1, este functie boolean
a si pentru
orice 1 , . . . , n {0, 1} = B2 , f (1 , . . . , n ) poate fi doar 0 sau 1:
Th: Pentru orice functie f : B2 n B2 , n 1, (i.e. orice functie boolean
a
scalar
a) avem:
P
(2) x1 , . . . , xn B2 , f (x1 , . . . , xn ) =
x11 xnn
1 ,...,n {0,1}

f (1 ,...,n )=1

(forma normal
a disjunctiv
a, FND)Q
(3) x1 , . . . , xn B2 , f (x1 , . . . , xn ) =

(x11 + + xnn )

1 ,...,n {0,1}

f (1 ,...,n )=0

(forma normal
a conjunctiv
a, FNC) Q
(3) x1 , . . . , xn B2 , f (x1 , . . . , xn ) =

(x11 + + xnn )

1 ,...,n {0,1}

f (1 ,...,n )=0

(forma normal
a conjunctiv
a, FNC)
unde am notat: xi0 = xi , xi1 = xi , 1 i n.
Scrierea n FND, FNC, este unic
a, abstractie f
ac
and de o permutare a
factorilor/termenilor pe baza asociativit
atii si comutativit
atii lui /+.
Pentru realizarea circuitelor logice ne va fi mai util
a FNC dat
a de (3), de
aceea, n cele ce urmeaz
a, pe aceasta o vom numi FNC.

Algebra booleana B2
Pentru a determina FND si FNC pentru o functie boolean
a scalar
a
f : B2 n B2 , n 1, putem proceda astfel:
Dac
a functia este dat
a printr-un tabel:
Determinarea FND:
- Consider
am liniile tabelului corespunz
atoare valorii f (1 , . . . , n ) = 1;
- Pentru fiecare linie de forma 1 , . . . , n , 1(= f ), consider
am produsul
(conjunctia) x11 xnn (deci, pentru orice 1 i n, xi apare negat
dac
a i = 0 si nenegat dac
a i = 1);
- Consider
am suma (disjunctia) produselor.
Determinarea FNC:
- Consider
am liniile tabelului corespunz
atoare valorii f (1 , . . . , n ) = 0;
- Pentru fiecare linie de forma 1 , . . . , n , 0(= f ), consider
am suma (disjunctia)
a i = 1 si
x11 + + xnn (deci, pentru orice 1 i n, xi apare negat dac
nenegat dac
a i = 0);
- Consider
am produsul (conjunctia) sumelor.

Algebra booleana B2
Exemplu:
x
0
0
0
0
1
1
1
1

Determinati FND, FNC, pentru f : B2 3 B2 , dat


a prin tabelul:
y
0
0
1
1
0
0
1
1

z
0
1
0
1
0
1
0
1

f (x, y , z)
0
1
1
0
1
0
1
1

Numerot
and liniile tabelului de sus n jos de la 0 la 7, liniile corespunz
atoare
valorii f = 1 sunt: 1, 2, 4, 6, 7, iar cele corespunz
atoare valorii f = 0 sunt: 0,
3, 5. Rezult
a:
FND: f (x, y , z) = x y z + x y z + x y z + x y z + x y z
FNC: f (x, y , z) = (x + y + z)(x + y + z)(x + y + z)

Algebra booleana B2
Constat
am c
a sistemul de neg
ari/neneg
ari de deasupra unui produs/sume
transcrie sistemul de valori 0 si 1 ale variabilelor din linia corespunz
atoare
produsului/sumei respective, care la r
andul lui transcrie n baza 2 num
arul de
ordine al liniei; diferenta este c
a la FND se pune la 0, iar la FNC se pune la 1:
x y z f (x, y , z)
0 0 0 0
0
1
2
4
6
7
1 0 0 1
1
FND: x y z + x y z + x y z + x y z + x y z
2 0 1 0
1
0
3
5
3 0 1 1
0
FNC: (x + y + z)(x + y + z)(x + y + z)
4 1 0 0
1
5 1 0 1
0
1
6 1 1 0
7 1 1 1
1
Astfel, n cazul FND, sistemul
de deasupra produsului x y z transcrie
sistemul de valori ale variabilelor din linia corespunz
atoare, 100 ( = 0), care
transcrie n baza 2 num
arul liniei, 4.
Similar, n cazul FNC, sistemul
de deasupra sumei x + y + z transcrie
sistemul de valori ale variabilelor din linia corespunz
atoare, 011 ( = 1), care
transcrie n baza 2 num
arul liniei, 3.

Algebra booleana B2

Astfel, dac
a o functie boolean
a scalar
a f : B2 n B2 , n 1, este descris
a
printr-un tabel construit cu respectarea conventiilor anterioare privind ordinea
semnificatiilor variabilelor, cea de amplasare a coloanelor acestora si regula
dup
a care gener
am sistemele de valori ale variabilelor pe linii, putem determina
FND si FNC ale functiei mai repede, f
ar
a s
a urm
arim pe fiecare linie valorile
variabilelor, astfel:
FND: scriem at
atea produse x1 xn , cu + ntre ele, c
ate linii din tabel
contin f = 1, apoi transcriem numerele de ordine ale acestor linii prin sisteme
de si deaspra lor ( = 0).
FNC: scriem at
atea sume (x1 + + xn ), cu ntre ele, c
ate linii din tabel
contin f = 0, apoi transcriem numerele de ordine ale acestor linii prin sisteme
de si deaspra lor ( = 1).

Algebra booleana B2

Observatie:
Pentru o functie boolean
a scalar
a, num
arul de produse ale FND nu trebuie s
a
coincid
a neap
arat cu num
arul de sume ale FNC (n exemplul precedent, FND
avea 5 produse, FNC avea 3 sume); astfel, FND si FNC nu sunt neap
arat la fel
de complexe.
In practic
a, putem prefera pe cea mai simpl
a dintre ele (urm
arim coloana
valorilor functiei si determin
am care valoare apare mai rar: 0 sau 1).
Pentru realizarea circuitelor logice ns
a, va avea o deosebit
a important
a FND.

Algebra booleana B2
Dac
a functia este dat
a printr-o formul
a (expresie):
Determinarea FND:
- Aplic
and propriet
atile de calcul ntr-o algebr
a boolean
a (de exemplu legile de
distributivitate), transform
am expresia prin care este dat
a functia a.. s
a fie o
sum
a (disjunctie) de produse (conjunctii) de variabile cu/f
ar
a .
- La fiecare produs, nmultim (conjug
am) c
ate un factor de forma (t + t),
pentru fiecare variabil
a t care lipseste din produsul respectiv (n fapt, am
nmultit niste 1, care nu afecteaz
a valoarea produsului).
- Desfacem parantezele, folosind distributivitatea lui fat
a de + (si alte
propriet
ati de calcul ntr-o algebr
a boolean
a), a.. expresia s
a devin
a din nou o
sum
a de produse; acum toate produsele vor contine toate variabilele, dar unele
produse pot s
a se repete.
- Elimin
am produsele duplicat, folosind idempotenta lui + (si alte propriet
ati de
calcul ntr-o algebr
a boolean
a).

Algebra booleana B2
Determinarea FNC:
- Aplic
and propriet
atile de calcul ntr-o algebr
a boolean
a (de exemplu legile de
distributivitate), transform
am expresia prin care este dat
a functia a.. s
a fie un
produs (conjunctie) de sume (disjunctii) de variabile cu/f
ar
a .
- La fiecare sum
a, adun
am (disjungem) c
ate un termen de forma tt, pentru
fiecare variabil
a t care lipseste din suma respectiv
a (n fapt, am adunat niste 0,
care nu afecteaz
a valoarea sumei).
- Folosind distributivitatea lui + fat
a de (si alte propriet
ati de calcul ntr-o
algebr
a boolean
a), transform
am expresia a.. s
a devin
a din nou un produs de
sume; acum toate sumele vor contine toate variabilele, dar unele sume pot s
a
se repete.
- Elimin
am sumele duplicat, folosind idempotenta lui (si alte propriet
ati de
calcul ntr-o algebr
a boolean
a).

Algebra booleana B2

Observatie:
Dac
a functia este dat
a printr-o formul
a (expresie), o alt
a metod
a de a
determina FND, FNC, este ca din formul
a s
a obtinem tabelul de valori si apoi
s
a proced
am ca atunci c
and functia este dat
a prin tabel.

Algebra booleana B2
Exemplu:

Determinati FND, FNC pentru f : B2 3 B2 ,


f (x, y , z) = xy x + z:

FND:
f (x, y , z) =
(aducem f la forma unei sume de produse)
xy x + xy x + z = (x + y )x + xy x + z = x + xy + z = x + y + z =
x y +z =x y +z =
(nmultim cu (t + t) pentru fiecare variabil
a t lips
a)
xy (z + z) + (x + x)(y + y )z =
(desfacem parantezele si rescriem ca sum
a de produse)
xy z + xy z + xy z + xy z + xy z + x y z =
(elimin
am produsele duplicat)
xy z + xy z + xy z + xy z + x y z

Algebra booleana B2
FNC:
f (x, y , z) = x y + z = (am calculat deja)
(aducem f la forma unui produs de sume)
(x + z)(y + z) =
a t lips
a)
(adun
am cu t t pentru fiecare variabil
(x + y y + z)(x x + y + z) =
(rescriem ca produs de sume)
(x + y + z)(x + y + z)(x + y + z)(x + y + z) =
(elimin
am sumele duplicat)
(x + y + z)(x + y + z)(x + y + z)
Exercitiu: obtineti FND, FNC, pentru aceast
a functie construind tabelul si apoi
folosind acest tabel (trebuie s
a rezulte aceleasi expresii pentru FND, FNC,
abstractie f
ac
and de o permutare a factorilor/termenilor pe baza asociativit
atii
si comutativit
atii lui /+).

Algebra booleana B2

Teorema precedent
a si exemplele anterioare ne ofer
a si o regul
a dup
a care
recunoastem dac
a o formul
a (expresie) este o FND sau FNC:
O expresie algebric
a boolean
a n variabilele x1 , . . . , xn este o FND, dac
a:
este o sum
a de produse unice (care nu se repet
a) de variabile cu/f
ar
a ;
fiecare produs contine toate variabilele x1 , . . . , xn .
Exemple:
Expresia x + y z n variabilele x, y , z nu este o FND
(desi este o sum
a de produse, nu toate produsele contin toate
variabilele x, y , z).
Expresia xy z + x y z n variabilele x, y , z este o FND
(produsele contin toate variabilele x, y , z, chiar dac
a nu sunt toate cele
23 = 8 produse posibile n aceste variabile).

Algebra booleana B2

O expresie algebric
a boolean
a n variabilele x1 , . . . , xn este o FNC, dac
a:
este un produs de sume unice (care nu se repet
a) de variabile cu/f
ar
a ;
fiecare sum
a contine toate variabilele x1 , . . . , xn .
Exemple:
Expresia x(y + z) n variabilele x, y , z nu este o FNC
(desi este un produs de sume, nu toate sumele contin toate
variabilele x, y , z).
Expresia (x + y + z)(x + y + z) n variabilele x, y , z este o FNC
(sumele contin toate variabilele x, y , z, chiar dac
a nu sunt toate cele 23 = 8
sume posibile n aceste variabile).

Algebra booleana B2
Observatie:
O expresie algebric
a boolean
a n variabilele x1 , . . . , xn care este o sum
a de
produse de variabile cu/f
ar
a si care contine toate cele 2n produse posibile este
FND a functiei constante 1 (corespunde unui tabel care are 1 n toata coloana
valorilor functiei).
Astfel, dac
a ea apare ca factor ntr-un produs, se poate elimina.
De exemplu, avem:
xz +xz +zxy +zxy +zxy +zx y = x(z +z)+z(xy +xy +xy +x y ) = x 1+z 1 = x +z
Similar, o expresie algebric
a boolean
a n variabilele x1 , . . . , xn care este un
produs de sume de variabile cu/f
ar
a si care contine toate cele 2n sume
posibile este FNC a functiei constante 0 (corespunde unui tabel care are 0 n
toata coloana valorilor functiei).
Astfel, dac
a ea apare ca termen ntr-o sum
a, se poate elimina.

Algebra booleana B2

Reamintim, cu noile notatii, si teorema care d


a o descriere recursiv
a a functiilor
booleene scalare, prin functii care au cu o variabil
a mai putin:
Th: Dac
a f : B2 n B2 , n 1, este o functie boolean
a scalar
a si 1 i n,
atunci:
x1 , . . . , xn B2 ,
f (x1 , . . . , xn ) = xi f (x1 , . . . , xi1 , 1, xi+1 , . . . , xn )+xi f (x1 , . . . , xi1 , 0, xi+1 , . . . , xn )

Algebra booleana B2

Dac
a not
am variabilele unei functii booleene n ordinea descresc
atoare a
semnificatiei cu xn1 , ..., x0 , n 1, si folosim teorema anterioar
a pentru i = 0:
f (xn1 , . . . , x0 ) = f (xn1 , . . . , x1 , 0)x0 + f (xn1 , . . . , x1 , 1)x0
putem descrie o functie boolean
a f = (f1 , . . . , fp ) : B2 n B2 p , n, p 1,
printr-un tabel mai compact, av
and doar 2n1 linii, ns
a valorile din tabel nu
vor mai fi doar 0 si 1, ci si x0 sau x0 .
In acest scop, scriem valorile componentelor functiei pentru valori succesive ale
variabilei celei mai putin semnificative x0 pe aceeasi linie (conform regulilor de
organizare a tabelului de valori descrise mai devreme, ele apar pe linii succesive
n tabelul extins) iar n niste coloane separate (care vor fi coloanele rezultat)
vom exprima unitar aceste valori ca functii de x0 , folosind formula de recurent
a
de mai sus.

Algebra booleana B2
Mai exact, fiecare
xn1

an1
n
2 linii
a

n1

pereche de linii succesive:

x1 x0 f1
fp
..
..
.
.

a1
0
b1
bp
c1
cp

a1
1
..
..
.
.
se nlocuieste cu:
x0
}|
{
z
xn1
x1
0
1
f1
fp

.
.
.
.

..
..
..
..

n1
an1
a1 b1 bp c1 cp d1
dp
2
linii

..
..
..
..

.
.
.
.
unde pentru orice 1 i p, avem di = bi x0 + ci x0 , adic
a avem corespondenta:
bi ci di
0
0
0
0
1 x0
1
0 x0
1
1
1

Algebra booleana B2
Exemplu: Pentru functia boolean
a
x y
0 0
0 0
0 1
0 1
1 0
1 0
1 1
1 1
vom avea tabelul compact:

f : B2 3 B2 2 dat
a prin tabelul extins:
z f1 f2
0
0
0
1
0
0
0
1
1
1
0
1
0
1
0
1
0
1
0
0
1
1
0
1
z
}|

z
x
0
0
1
1

y
0
1
0
1

0
00
11
10
01

{
1
00
10
01
10

f1
0
1
z
z

f2
0
z
z
z

Acest tabel ne arat


a, de exemplu, c
a pentru orice z {0, 1} avem:
f1 (0, 0, z) = 0, f2 (0, 1, z) = z

Algebra booleana B2
Din teorema referitoare la FND si formula de recurent
a pentru functii booleene
scalare n cazul general, deducem o regul
a dup
a care putem obtine o scriere a
functiei ca sum
a de produse (disjunctie de conjunctii), pornind de la tabelul
compact:
Dac
a f : B2 n B2 este o functie boolean
a scalar
a, n 1, atunci pentru orice
xn1 , . . . , x0 B2 avem:
f (xn1
, . . . , x0 ) =
P
n1
x00 =
f (n1 , . . . , 0 )xn1
n1 ,...,0 B2
P
n1
xn1
x11 (f (n1 , . . . , 1 , 0)x0 + f (n1 , . . . , 1 , 1)x0 ) =
n1 ,...,1 B2
P
n1
xn1
x11 E (n1 , . . . , 1 )
n1 ,...,1 B2
unde E (n1 , . . . , 1 ) = f (n1 , . . . , 1 , 0)x0 + f (n1 , . . . , 1 , 1)x0 este
valoarea care apare n coloana rezultat din tabelul compact al lui f , pe linia
corespunz
atoare valorilor n1 , . . ., 1 ale variabilelor xn1 , . . ., x1 ; ntruc
at f
ia valori n B2 , E (n1 , . . . , 1 ) poate fi doar 0, 1, x0 sau x0 .

Algebra booleana B2
Rezult
a urm
atoarea regul
a de a obtine scrierea functiei ca sum
a de produse
pornind de la tabelul compact (dac
a functia este vectorial
a, regula se aplic
a
pentru fiecare component
a n parte):
- Consider
am liniile tabelului corespunz
atoare valorii E (n1 , . . . , 1 ) 6= 0.
- Pentru fiecare linie de forma n1 , . . . , 1 , E (unde E poate fi 1, x0 sau x0 ),
n1
consider
am produsul (conjunctia) xn1
x11 E .
Deci, pentru orice n 1 i 1, xi apare negat dac
a i = 0 si nenegat dac
a
i = 1, ca la FND, iar E se copiaz
a ca atare din tabel; dac
a E = 1, se poate
omite.
- Consider
am suma (disjunctia) produselor.
Exemplu: Pentru functia f : B2 3 B2 2 din exemplul precedent, avem:
f1 (x, y , z) = xy + xy z + xy z
f2 (x, y , z) = xy z + xy z + xy z
Aceste scrieri nu sunt neap
arat FND, de exemplu termenul xy nu contine toate
variabilele.

Algebra booleana B2
Scrierea ca sum
a de produse se poate simplifica n continuare, folosind
proprietatea mentionat
a mai devreme, c
a suma tuturor produselor cu/f
ar
a
formate cu niste variabile date este egal
a cu 1.
Mai exact, dac
a n notatiile precedente E (n1 , . . . , 1 ) are o aceeasi valoare y
pentru niste ik , . . ., i1 fixate (n 1 ik > > i1 1, k 1) si toate
valorile posibile 0 sau 1 ale celorlalte i (n 1 i 1), atunci n scrierea:
P
n1
f (xn1 , . . . , x0 ) =
x11 E (n1 , . . . , 1 )
xn1
n1 ,...,1 B2
putem da factor comun si nlocui:
P
i +1 i
i 1
i1 +1 i1 i1 1
n1
k
k
xik +1
xn1
xik k xik 1
xi1 +1
xi1 xi1 1 x11 y =
i B2
i6=ik ,...,i1
P
i
i +1 i 1
i
i1 +1 i1 1
n1
k
k
xik 1
xi1 +1
xi1 1 x11 )xik k xi1 1 y =
(
xn1
xik +1
i B2
i6=ik ,...,i1
i

1 xik k xi1 1 y = xik k xi1 1 y


Dac
a E (n1 , . . . , 1 ) are o aceeasi valoare y pentru toate valorile posibile 0
sau 1 ale tuturor i (n 1 i 1), atunci:
P
n1
f (xn1 , . . . , x0 ) =
xn1
x11 y = y
n1 ,...,1 B2

Algebra booleana B2

Exemplu: Pentru functia f : B2 3 B2 2 din exemplele precedente, avem:


f2 (x, y , z) = y z + xy z
deoarece avem aceeasi valoare f2 (= E ) = z pentru y = 1 si toate valorile
posibile 0 sau 1 ale lui x.
Aceasta corespunde urm
atorului calcul prin care simplific
am formula obtinut
a
anterior:
f2 (x, y , z) = xy z + xy z + xy z = (x + x)y z + xy z = 1 y z + xy z = y z + xy z

Algebra booleana B2
Asadar, dac
a n tabelul compact un grup de linii contine aceleasi valori ntr-o
coloan
a rezultat (a unei componente a functiei) si n niste coloane ale
variabilelor, iar n celelalte coloane ale variabilelor sunt parcurse toate
combinatiile posibile de 0 sau 1, acel grup de linii furnizeaz
a un singur termen
n scrierea ca sum
a de produse a componentei respective a functiei, iar acest
termen contine doar variabilele cu valoare comun
a (cu / f
ar
a ) si valoarea
comun
a rezultat:
xn1
xik
fj

xi1

x1
..
..
.
.

ik
i1

..
..
(*)
.
.

ik
i1
y
..
..
.
.
Grupul de 2nk linii (*) de mai sus nu sunt neap
arat consecutive n tabel si
contin aceleasi valori n coloanele variabilelor xik , . . ., xi1 si n coloana rezultat
fj , iar n coloanele celorlalte n k variabile sunt parcurse toate cele 2nk
combinatii posibile de 0 sau 1; acest grup de linii furnizeaz
a un singur termen,
i
i
xik k xi1 1 y , n scrierea ca sum
a de produse a componentei fj .

Algebra booleana B2
Exemplu: Pentru functia boolean
a f : B2 3 B2 4 , n variabilele x, y , z, dat
a
prin tabelul compact (am numerotat liniile):
0
1
2
3

x
0
0
1
1

y
0
1
0
1

f1
z
z
0
z

f2
0
z
z
1

f3
1
z
z
z

f4
z
z
z
z

avem:
f1 (x, y , z) = x z + xy z
(liniile 0, 1 au furnizat un singur termen, x z, deoarece n coloana rezultat f1
si n coloana variabilei x avem aceleasi valori, iar n coloana variabilei r
amase
y sunt parcurse toate cele 2 combinatii posibile de 0 sau 1)
f2 (x, y , z) = xy z + xy z + xy
(liniile 1, 2 nu pot furniza un singur termen, c
aci desi n coloana rezultat f2
avem aceeasi valoare z, n coloanele variabilelor r
amase x, y nu sunt
parcurse toate cele 4 combinatii posibile de 0 sau 1)

Algebra booleana B2
f3 (x, y , z) = x y + y z + xy z
(liniile 1, 3 au furnizat un singur termen)
f4 (x, y , z) = z
(toate cele 4 linii au furnizat un singur termen, z, deoarece n coloana
amase x, y
rezultat f4 avem aceeasi valoare z, iar n coloanele variabilelor r
sunt parcurse toate cele 4 combinatii posibile de 0 sau 1).
Observ
am c
a n cazul unui tabel compact cu 4 linii numerotate ca mai sus,
formula unei componente se simplifica dac
a valoarea ei se repet
a n liniile:
0 si 1 (dispare variabila a doua),
2 si 3 (dispare variabila a doua),
0 si 2 (dispare prima variabil
a),
1 si 3 (dispare prima variabil
a),
0, 1, 2, 3 (dispar ambele variabile);
nu se simplific
a dac
a valoarea se repet
a doar n liniile 0 si 3 sau 1 si 2.

Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei

2 Aritmetica sistemelor de calcul


Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea

numerelor n matematic
a
numerelor n calculator
numerelor naturale ca ntregi f
ar
a semn
numerelor ntregi n complement fat
a de 2
numerelor reale n virgul
a mobil
a

3 Logica pentru calculatoare


Algebre booleene
Functii booleene
Particularizare la cazul B2

4 Circuite logice
Circuite logice, Sisteme digitale
0-DS (Circuite combinationale, Functii booleene)
1-DS (Memorii)
2-DS (Automate finite)

Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei

2 Aritmetica sistemelor de calcul


Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea

numerelor n matematic
a
numerelor n calculator
numerelor naturale ca ntregi f
ar
a semn
numerelor ntregi n complement fat
a de 2
numerelor reale n virgul
a mobil
a

3 Logica pentru calculatoare


Algebre booleene
Functii booleene
Particularizare la cazul B2

4 Circuite logice
Circuite logice, Sisteme digitale
0-DS (Circuite combinationale, Functii booleene)
1-DS (Memorii)
2-DS (Automate finite)

Circuite logice

Circuitele logice sunt dispozitive tehnice care permit efectuarea automat


aa
calculelor logice.
Ele sunt construite pornind de la niste circuite elementare (porti), care
and de un num
ar finit
implementeaz
a operatiile booleene: +, , , etc. si efectu
de ori diverse operatii de combinare (legare): legare n serie, legare n paralel,
nchiderea prin ciclu, etc., obtin
andu-se astfel circuite tot mai complexe.
Datele de intrare si iesire ale acestor circuite sunt valorile de adev
ar 0/1
(fals/adev
arat).

Circuite logice
Portile sunt:

Operatiile de combinare sunt:

Desenarea s
agetilor > pe liniile de intrare sau iesire nu este obligatorie, dac
a
este evident sensul de circulatie al datelor; altfel, pe o linie se pot pune oric
ate
s
ageti.

Circuite logice
In general, circuitul care implementeaz
a o formul
a boolean
a se poate construi
combin
and portile n aceeasi ordine n care se compun operatiile booleene
implementate de ele pentru a se obtine formula.
a prin
De exemplu, formula f (x, y , z) = x y z + xy poate fi implementat
circuitul:

Putem spori claritatea desenului dac


a pe anumite linii (nu neap
arat pe toate)
ad
augam s
ageti > si/sau not
am n dreptul lor formula de calcul a valorii
emise pe acolo, de exemplu:

Circuite logice
In reprezent
arile grafice ale circuitelor, avem nevoie s
a distingem ntre o
intersectie de linii f
ar
a contact si una cu contact. In figurile anterioare am
folosit urm
atoarea simbolizare, pe care o vom utiliza si n continuare:

O alt
a variant
a de simbolizare, dar pe care nu o vom folosi, este:

Circuite logice

Intr
arile se pot nota n dreptul unor scurte linii de intrare sau direct l
ang
a
poarta n care intr
a; unele intr
ari sunt fixate pe 0 sau 1, iar acestea se vor nota
ca atare; de exemplu:

Circuite logice
O simplificare folosit
a uneori n reprezentarea grafic
a a circuitelor logice este
urm
atoarea: dac
a o poart
a NOT este legat
a n serie cu o poart
a OR,
AND, XOR, nu se mai deseneaz
a triunghiul iar cerculetul este lipit de
poarta respectiv
a; de exemplu:

Aceast
a simplificare st
a la baza simbolurilor folosite pentru portile NAND,
NOR, NXOR; de exemplu:

Circuite logice
Constat
am c
a pentru implementarea diverselor formule de calcul logic nu sunt
necesare toate portile considerate; de exemplu, sunt suficiente portile NOT,
AND, OR, restul portilor put
andu-se exprima n functie de acestea:

Circuite logice

Dou
a justific
ari pentru luarea n considerare a mai multor porti sunt
urm
atoarele:
Anumite portiuni de circuit (blocuri) apar foarte frecvent n structura
diverselor circuite; atunci, n loc s
a le desen
am detaliat de fiecare dat
a, le
asociem un simbol si desen
am simbolul. Astfel, circuitele sunt mai usor de
desenat si de nteles.
Situatia seam
an
a cu cea din programare c
and un anumit fragment de cod se
repet
a de multe ori, eventual cu alte variabile/valori, si n loc s
a-l rescriem de
fiecare dat
a, prefer
am s
a-l ncorpor
am ntr-o procedur
a, eventual cu parametri,
si s
a apel
am procedura.

Circuite logice
Realzarea unui circuit logic prin combin
ari de porti poate fi asem
anat
a cu
realizarea unui circuit electronic prin montarea unor compomente electronice
(tranzistori, rezistori, condensatori, diode, etc.) pe o plac
a cu contacte (cablaj
imprimat).
Procesarea efectuat
a de o component
a electronic
a se bazeaz
a pe fenomene
fizice foarte rapide care au loc n interiorul componentei - de exemplu
interactiunea dintre mai multe straturi de semiconductori - le vom numi
fenomene de tip (1). Comunicarea ntre componente se bazeaz
a pe fenomene
de circulatie a curentului electric prin liniile pl
acii de contacte - le vom numi
fenomene de tip (2). De exemplu, n circuitul:

procesarea presupune un fenomen de tip (1) desf


asurat n interiorul lui AND,
apoi un fenomen de tip (2) pentru comunicarea cu NOT, apoi un fenomen
de tip (1) n interiorul lui NOT.

Circuite logice
Dac
a acest circuit apare frecvent ca bloc n alte circuite, prefer
am s
a
ncorpor
am toat
a procesarea sa, printr-un fenomen de tip (1), n interiorul unei
singure componente (poart
a) de un tip nou, simbolizate:

Astfel, toate circuitele care vor contine noua poart


a n locul blocului anterior
vor functiona mai repede.
Aceast
a abordare este nt
alnit
a n cazul multor circuite electronice care apar
frecvent ca parte a altor circuite: n loc s
a se construiasc
a circuitul de fiecare
dat
a din mai multe componente simple montate pe placa cu contacte, se
construieste ca un circuit integrat (chip) care se monteaz
a ca o singur
a
component
a pe placa respectiv
a. Utilizarea frecvent
a a acestuia justifica
fabricarea sa n serie ca un nou tip de component
a electronic
a.
Circuitele care contin asemenea chip-uri sunt mai mici ca gabarit, mai ieftine si
mai rapide dec
at cele realizate din componente simple si multe.

Circuite logice
In cele ce urmeaz
a vor exista si alte circuite, mai complexe, care sunt
des nt
alnite ca blocuri n alte circuite si de aceea vor avea un simbol propriu, care
va fi folosit n locul circuitului detaliat: decodificator, multiplexor, sumator, etc..
Din punct de vedere tehnic, ele se pot realiza ca tipuri distincte de
componenete electronice, al
aturi de porti.
Printre acestea, sunt circuitele AND, OR, XOR, NAND, NOR,
NXOR cu mai multe intr
ari:

Realizarea lor se bazeaz


a pe asociativitatea si comutativitatea operatiilor , +,
. De exemplu:

Circuite logice
Uneori, la desenarea circuitelor logice cu multe linii se foloseste urm
atoarea
simbolizare mai simpl
a:

De exemplu:

Circuite logice

Subliniem c
a termenul de circuit logic se refer
a la o anumit
a logic
a de
organizare si functionare si un anumit scop la care este folosit circuitul, nu si la
mijloacele tehnice prin care este el construit.
Cel mai bine, ne imagin
am circuitele logice ca fiind niste niste circuite
conceptuale, prin care circul
a valori de adev
ar; ele descriu n mod abstract un
calcul logic.
Circuitele logice se pot realiza prin diverse mijloace tehnice: circuite
electronice, relee si contacte, angrenaje cu roti dintate, sisteme de p
arghii,
fr
anghii si scripeti, conducte de ap
a si robinete, etc.
Nu trebuie s
a confund
am ns
a circuitul logic cu un anumit mod de realizare
tehnic
a a sa.

Circuite logice
Exemplu: Realizare tehnic
a cu relee si contacte:
Realizarea portilor NOT, AND, OR si a intr
arilor constante 0 si 1:

Deci, liniile circuitului sunt perechi de linii electrice, 0 = f


ar
a tensiune, 1 = sub
tensiune. Fiecare poart
a poate avea propria surs
a de curent, sau toate portile
pot fi conectate la o aceeasi surs
a si nu conteaz
a respectarea unei polarit
ati
+/.

Circuite logice

Circuitul logic care implementeaz


a formula f (x, y , z) = x y + y x z este:

Circuite logice
Realizarea tehnic
a a circuitului este:

Circuite logice
O variant
a de realizare cu relee si contacte a portilor NOT, AND, OR si
a intr
arilor constante 0 si 1, care necesit
a doar o linie elecric
a pentru o linie
logic
a, este:

Asadar, 0 = f
ar
a tensiune, 1 = tensiune +.
Acum ns
a toate portile trebuie conectate la o aceeasi surs
a de curent si trebuie
respectat
a polaritatea +/.

Circuite logice

Realizarea tehnic
a a circuitului pentru formula f (x, y , z) = x y + y x z este:

Circuite logice

TODO: Realizarea tehnic


a a portilor prin mijloace mecanice (roti dintate,
p
arghii, etc.)
TODO: Realizarea tehnic
a a portilor prin mijloace electronice (componente
electronice simple: tranzistori, etc., pe o plac
a cu contacte).
A se vedea:
http://www.electronics-tutorials.ws/category/logic

Circuite logice

De obicei, circuitele logice sunt realizate tehnic prin mijloace electronice


(circuite electronice cu chip-uri), deoarece ofer
a gabarit si cost redus si vitez
a
de functionare mare; de aceea simbolistica si terminologia sunt preluate din
electronic
a.
C
and realiz
am circuitele logice prin mijloace electronice putem modela n
diverse moduri valorile 0/1; de exemplu:
0 = nu trece curentul, 1 = trece curentul;
0 = trece curentul, 1 = nu trece curentul;
si la 0 si la 1 trece curentul, dar are alt
a tensiune, modulare (transport
a un
alt tip de semnal).
De obicei este folosit
a ultima variant
a.

Circuite logice
Mai exact:
Circuitele electronice din interiorul calculatorului modern sunt circuite
digitale.
Electronica digital
a opereaz
a cu doar dou
a niveluri de tensiune electric
a
importante: o tensiune nalt
a (nivel nalt) si o tensiune joas
a (nivel jos).
Celelalte valori de tensiune sunt temporare si apar n timpul tranzitiei ntre cele
dou
a valori (o deficient
a n proiectarea digital
a poate fi prelevarea unui semnal
care nu este n mod clar nici nalt nici jos).
In diverse categorii de dispozitive logice, valorile si relatiile dintre cele dou
a
valori de tensiune difer
a.
Astfel, n loc s
a se fac
a referire la valorile de tensiune, se discut
a despre
semnale care sunt (logic) adev
arate, sau 1, sau activate (asserted) si despre
semnale care sunt (logic) false, sau 0, sau dezactivate (deasserted).
Valorile 0 si 1 sunt complemente sau inverse una celeilalte.

Circuite logice

Un circuit (bloc) este activ, dac


a iesirea sa este 1, si inactiv, dac
a iesirea sa
este 0.
O variabil
a logic
a, asociat
a unei intr
ari, poate controla un circuit (bloc)
activ
andu-l, dac
a ia valoarea 1, sau dezactiv
andu-l, dac
a ia valoarea 0.
Mai general, se vorbeste despre activare sau circuite (blocuri) active la nivel
nalt, respectiv la nivel jos, dup
a cum valoarea de intrare relevant
a (care
declansaz
a functionalitatea cea mai important
a a circuitului) este 1, respectiv 0.

Circuite logice

In orice moment al function


arii unui circuit logic, orice linie a sa transport
a
ceva: 0, 1 sau un semnal neclar, care poate fi interpretat la destinatie n mod
eronat ca 0 sau 1.
De aceea, uneori c
and vom analiza circuitul d.p.v. logic vom considera c
a liniile
sale sunt fie n situatia transport
a 0, fie n situatia transport
a 1, aceste
valori put
and fi si eronate.

Circuite logice
Dac
a schimb
am valorile pe liniile de intrare, vom avea alte valori pe liniile de
iesire, rezultate n urma proces
arii (calculului) efectuate de circuit. Valorile
rezultat nu apar si nu r
am
an stabile ns
a imediat ci dup
a un anumit interval de
timp, necesitat de structura circuitului si natura fenomenelor fizice folosite; p
an
a
atunci, valorile pe liniile de iesire pot fluctua si, n orice caz, nu sunt relevante.
Acest interval de timp este cu at
at mai lung cu c
at circuitul este mai dezvoltat
pe vertical
a (are mai multe niveluri de legare n serie).
De exemplu, n figura de mai jos, circuitul din st
anga este mai rapid dec
at cel
din dreapta, desi are mai multe porti:

Circuite logice
Pe l
ang
a portile NOT, AND, OR, XOR, NAND, NOR, NXOR,
prezentate mai devreme, uneori mai sunt considerate si alte porti, a c
aror
utilitate este legat
a de mijloacele tehnice prin care sunt construite circuitele
(fenomenele fizice folosite); de exemplu, n electronica digital
a se mai folosesc:
Bufferul:
Simbol si tabel
a de valori:

Asadar, bufferul transmite exact valoarea de la intrare la iesire, cu o mic


a
nt
arziere cauzat
a de procesarea sa intern
a.
Desi nu efectueaz
a un calcul semnificativ (implementeaz
a formula f (x) = x),
bufferul are mai multe utilit
ati:
Permite izolarea altor portiuni de circuit unele de altele, mpiedic
and
impedanta unui circuit s
a afecteze impedanta altuia.
In electronic
a, impedanta (impedance) este o m
arime fizic
a care
generealizeaz
a rezistenta electric
a (distinctia ntre cele dou
a se manifest
a n
cazul curentului alternativ), se noteaz
a cu Z si se m
asoar
a n ohmi ().

Circuite logice

Permite dirijarea unor nc


arc
ari mari de curent, cum ar fi cele folosite de
comutatoarele cu tranzistori, sau comandarea unui LED, deoarece poate furniza
la iesire curenti mult mai mari dec
at necesit
a ca semnal de intrare.
Cu alte cuvinte, bufferul poate fi folosit pentru amplificarea puterii semnalului
digital, av
and o capacitate fan-out (fan-out capability) ridicat
a. Parametrul
fan-out al unei porti sau bloc de circuit descrie capacitatea acestuia de a furniza
la iesire curenti mari, oferind o amplificare mai mare semnalului de intrare.
Aceast
a proprietate ne permite si s
a leg
am iesirea unui bloc la intrarea mai
multor alte blocuri.

Circuite logice
Intr-adev
ar, pentru a functiona corect, fiecare intrare consum
a o anumit
a
cantitate de curent din iesirea respectiv
a, a.. distribuirea iesirii la mai multe
blocuri creste nc
arcarea blocului surs
a. Atunci, inserarea unui buffer ntre
blocul surs
a si blocurile destinatie poate rezolva problema:

Parametrul fan-out este num


arul de nc
arc
ari paralele care pot fi dirijate
simultan de c
atre o singur
a poart
a. Action
and ca o surs
a de curent, un buffer
poate avea un rating fan-out nalt de p
an
a la 20 porti din aceeasi familie
logic
a.

Circuite logice

Dac
a o poart
a are un rating fan-out nalt (surs
a de curent), ea trebuie s
a
aib
a de asemenea un rating fan-in nalt (consumator de curent), Totusi,
nt
arzierea cauzat
a de procesarea intern
a a portii (propagation delay) se
deterioreaz
a rapid ca functie de fan-in, astfel c
a portile cu fan-in mai mare
dec
at 4 trebuie evitate.
Not
am c
a propriet
ati asem
an
atoare bufferului, cum ar fi efectul de amplificare a
semnalului, l au si alte porti, ca de exemplu NOT:
- de aceea, poarta
NOT se mai numeste si buffer inversor, sau doar inversor (inverter).

Circuite logice
Bufferul cu 3 st
ari (Tri-state Buffer): Este un tip de buffer a c
arui iesire
poate fi, la cerere, deconectat
a electronic de la circuitele la care este legat
a.
Mai exact, el poate genera la iesire un semnal care nu este logic nici 0, nici 1,
iar care d.p.v. functional se comport
a ca si c
and linia de iesire ar fi deconectat
a
de la intrare (se produce o conditie de circuit deschis); d.p.v. tehnic, poarta se
va comporta ca o component
a electronic
a cu impedant
a foarte mare, sau ca un
contact electric ntrerupt (ca rezultat, nu se consum
a curent de la surs
a); de
aceea, aceast
a valoare de iesire s.n. impedant
a nalt
a (Hi-Z).
Simbol si tabel de valori:

Putem considera Hi-Z ca o a treia valoare de adev


ar.

Circuite logice

Bufferul cu 3 st
ari este folosit atunci c
and, din motive tehnice, dorim s
a
decupl
am functional un bloc de la circuit, f
ar
a s
a-l elimin
am fizic (circuitul s
a
se comporte ns
a ca si c
and acel bloc n-ar exista).
De exemplu, ntr-un circuit logic nu se permite / nu se d
a sens contactului ntre
linii care aduc valori (n functie de modul tehnic de realizare, nt
alnirea ntre
cele dou
a semnale poate avea efecte imprevizibile (de exemplu, un scurtcircuit):

Circuite logice
Putem ns
a conecta alternativ mai multe iesiri la o aceeasi linie, folosind buffere
cu 3 st
ari:

Atunci:

Circuite logice
Bufferul cu 3 st
ari este folosit n multe circuite deoarece permit ca mai multe
dispozitive logice s
a fie conectate la o aceeasi linie sau bus f
ar
a distrugere fizic
a
sau pierderi de date.
De exemplu, putem avea o linie de date sau bus de date la care sunt conectate
memorii, dispozitive de I/O, alte dispozitive periferice sau procesor. Fiecare
dintre aceste dispozitive este capabil s
a emit
a sau s
a receptioneze date unul de
la altul prin acest unic bus de date n acelasi timp, cre
and o asa zis
a disput
a
(contention).
Disputele apar c
and mai multe dispozitive sunt conectate mpreun
a, deoarece
unele intentioneaz
a s
a emit
a la iesire o tensiune de nivel nalt, altele una de
nivel jos; dac
a aceste dispozitive ncep s
a emit
a sau s
a receptioneze date n
acelasi timp, poate ap
area un scurtcircuit atunci c
and un dispozitiv emite spre
bus o valoare 1 (care poate nsemna tensiunea sursei de curent), n timp ce
altul este pe valoarea 0 (care poate nsemna leg
atura cu p
am
antul, ground);
acesta poate cauza distrugerea fizic
a a unor dispozitive sau pierderi de date.

Circuite logice
Controlul bus-ului de date poate fi realizat folosind buffere cu 3 st
ari:

Circuite logice
Exist
a dou
a tipuri de buffer cu 3 st
ari: unul a c
arui iesire este controlat
a de un
semnal de control activ la nivel nalt (Active-HIGH) si unul care este controlat
de un semnal de control activ la nivel jos (Active-LOW).
Varianta descris
a p
an
a acum este bufferul cu 3 st
ari activ la nivel nalt (Active
HIGH Tri-state Buffer): el copiaz
a intrarea la iesire atunci c
and semnalul
Enable are valoarea 1 (altfel furnizeaz
a la iesire HI-Z).
Bufferul cu 3 st
ari activ la nivel jos (Active LOW Tri-state Buffer) copiaz
a
intrarea la iesire atunci c
and semnalul Enable are valoarea 0 (altfel furnizeaz
a
la iesire HI-Z).
Simbol si tabel de valori:

Circuite logice

Blocurile logice sunt mp


artite n dou
a categorii, dup
a cum au sau nu au
memorie.
Blocurile f
ar
a memorie se zic combinationale; la un asemenea bloc, iesirea
depinde doar de intrarea curent
a si poate fi descris
a printr-un tabel de adev
ar;
astfel, circuitul implementeaz
a de fapt o functie boolean
a; blocurile
combinationale sunt organizate ca circuite logice f
ar
a cicluri (0-DS).
In blocurile cu memorie, iesirea depinde at
at de intrarea curent
a c
at si de
valoarea curent p
astrat
a n memorie si care defineste starea blocului logic;
logica care include st
ari este logica secvential
a; blocurile cu memorie sunt
organizate ca circuite logice cu cel putin un nivel de cicluri (n-DS, n 1).

Circuite logice

O modelare teoretic
a a circuitelor logice care evidentiaz
a organizarea
(structura) acestora se face cu ajutorul grafurilor orientate.
Def: Un circuit este un graf orientat cu cel putin o intrare si cel putin o iesire,
care are dou
a tipuri de noduri: conectori si porti.
Intr
arile unui circuit primesc semnale, sub forma unor sisteme de valori din
multimea {0, 1}n (n fiind num
arul de intr
ari ale circuitului).
Iesirile unui circuit vor furniza, de asemenea, semnale.
TODO: Descrierea structurii de graf a unui circuit logic printr-o formul
a de
Network Algebra.

Sisteme digitale
O modelare teoretic
a a circuitelor logice care evidentiaz
a functionalitatea
acestora o constituie sistemele digitale.
Def: Un sistem digital (digital system, DS) este o structur
a hX , Y , f i, unde
X = V n , Y = V m , f : X Y , n, m N
I , iar V este un alfabet finit, nevid;
f s.n. functie de transfer.
Consider
am doar sisteme digitale binare, i.e. cu V = {0, 1} = B2 .
Cazurile n = 0 sau m = 0 corspund unor sisteme digitale speciale, de iesire,
respectiv intrare, care vor fi studiate separat.
Deocamdat
a presupunem n, m 6= 0.
Simbol:

unde

(flux de n date).

Sisteme digitale
Operatii cu sisteme digitale:
Extensia serial
a:

S1 = hX1 , Y1 , f i
S2 = hX2 , Y2 , g i
= S = hX1 , Y2 , g f i

Y1 = X2

Sisteme digitale
Extensia paralel
a:

S1 = hX1 , Y1 , f1 i
= S = S1 S2 = hX1 X2 , Y1 Y2 , f12 i,
S2 = hX2 , Y2 , f2 i
unde f12 (x1 , x2 ) = (f1 (x1 ), f2 (x2 ))

Observ
am c
a ntr-o extensie paralel
a cele dou
a sisteme nu interactioneaz
a.

Sisteme digitale
Extensia serial-paralel
a:
Si = hXi , Yi , fi i, Xi = {0, 1}ni , Yi = {0, 1}mi , 1 i 4 si m1 + m2 = n3 + n4
=
S = hX1 X2 , Y3 Y4 , f i, unde f = f34 f12 : X1 X2 Y3 Y4
(f12 , f34 sunt functiile de transfer ale extensiilor paralele S1 S2 , resp. S3 S4 )

Not
am c
a iesirile lui S1 pot fi distribuite at
at unor intr
ari ale lui S3 c
at si unor
intr
ari ale lui S4 ; la fel si iesirile lui S2 .

Sisteme digitale
Pentru a modela diversele posibilit
ati de ramificare sau permutare a unor linii
de circuit, se pot folosi niste sisteme speciale, care sunt angajate si ele n
extensiile pe care le facem:

Sisteme digitale
Inchiderea prin ciclu:
S = hX X1 , Y Y1 , hi, unde:
X1 = Y1 iar h = (f , f1 ), f : X X1 Y , f1 : X X1 Y1
=
S 0 = hX , Y , g i, unde g : X Y este definint
a prin g (x) = f (x, f1 (x, y ));
f1 s.n.functie de tranzitie si verific
a definitia recursiv
a y = f1 (x, f1 (x, y ))

Observ
am c
a apare o variabil
a nou
a ascuns
a care ia valori n multimea
Q = X1 = Y1 ; atunci f : X Q Y , f1 : X Q Q.

Sisteme digitale

Multimea Q caracterizeaz
a comportarea intern
a a sistemului, care se mai
numeste stare.
Uneori, elementele legate de stare sunt introduse n definitia sistemului
respectiv, a.. el se va scrie: S 0 = hX , Y , Q, f1 , g i.
Efectul fundamental al comport
arii interne const
a n evolutia sistemului pe
spatiul de valori Q, f
ar
a modific
ari ale intr
arii X .
Pentru un a X aplicat constant la intrare, iesirea poate prezenta variatii. De
aceea, spunem c
a autonomia unui sistem creste ca urmare a introducerii lui
ntr-un ciclu.
Def: Comportarea unui sistem digital este autonom
a d.d. pentru o intrare
constant
a iesirea are un comportament dinamic.

Sisteme digitale
Exemplu: Fie sistemul S1 = hX X1 , Y , f i, unde X = {0, 1},
X1 = Y = {0, 1}2 , iar f este definit
a prin tabelul:

Prin ramificarea n dou


a a iesirilor Y si apoi identificarea (legarea serial
a) a
uneia dintre ramific
ari cu X1 se obtine un nou sistem S:

Sisteme digitale
Functionalitatea sa este ilustrat
a mai jos (se face abstractie de timpul real c
at
este aplicat un semnal la intrare); n cerculete este notat
a starea curent
a
(elementul lui X1 = Y ); pe fiecare s
ageat
a sunt notate intrarea curent
a
(elementul lui X ) / iesirea curent
a (elementul lui Y ):

De exemplu, din starea 01, cu intrarea 0, se trece n starea 00 si se


emite iesirea 01.
Dependenta iesirii de intrare si stare este dat
a de tabelul lui f de mai devreme.

Sisteme digitale

Observatie: Sistemul initial S, f


ar
a cicluri, nu avea autonomie - iesirea sa
curent
a depindea doar de intrare. Dup
a nchiderea acestuia printr-un ciclu,
sistemul obtinut S 0 cap
at
a, n functie de tranzitie, un comportament al iesirii
autonom de intrare.
De exemplu, intrarea (constant
a) 11 . . . 1 n sistemul S 0 va determina iesirea
ciclic
a: 01 10 11 00 01 . . ..

Sisteme digitale

Mai not
am c
a functionalitatea circuitelor logice (sistemelelor digitale) f
ar
a
cicluri nu implementeaz
a ideea de etapizare - d.p.v. logic, este o functionare
atemporal
a, la niste intr
ari se asociaz
a niste iesiri, pe baza unui tabel; iesirea
curent
a depinde doar de intrarea curent
a.
Evident, utilizatorul poate folosi circuitul de mai multe ori, dar aceast
a etapizare
este a utilizatorului, nu a circuitului - el nu retine informatii de la o etap
a la
alta. De exemplu, un calculator de buzunar simplu (neprogramabil si f
ar
a
memorie) efectueaz
a fiecare operatie care i se comand
a ca si cum ar fi prima.

Sisteme digitale
La circuitele logice (sistemele digitale) cu cicluri, iesirea curent
a depinde at
at
de intrarea curent
a c
at si de o informatie existent
a n circuit (ca stare),
introdus
a acolo la o operare anterioar
a; de asemenea, n urma operatiei
efectuate se actualizeaz
a si informatia (starea) intern
a.
Astfel, functionalitatea circuitelor cu cicluri implementeaz
a ideea de etapizare.
Ele sunt folosite n sisteme unde functionarea este mp
artit
a n etape ce se
succed logic; controlul este asigurat cu ajutorul unui circuit special numit ceas,
care emite un semnal pulsatoriu n timp, iar aceste pulsatii declansaz
a etapele;
la fiecare etap
a, blocurile logice componente preiau o intrare, efectueaz
ao
operatie si produc un rezultat care depinde at
at de intrarea preluat
a c
at si de
starea lor curent
a; din acest rezultat este produs
a o iesire si o nou
a stare.
In proiectarea unor asemenea sisteme trebuie rezolvate probleme suplimentare
legate de durata fizic
a a ciclului de ceas (pentru a permite blocurilor logice s
a
efectueze operatiile implementate de ele), sincronizarea blocurilor logice
(rezultatul furnizat la iesirea unui bloc s
a fie disponibil atunci c
and l solicit
a ca
intrare blocul urm
ator), etc.

Sisteme digitale

In teoria circuitelor logice:


Logica combinational
a se refer
a la un tip de circuit a c
arui iesire depinde
doar de intrarea curent
a.
Logica secvential
a se refer
a la un tip de circuit a c
arui iesire depinde nu
numai de intrarea curent
a ci si de istoricul intr
arilor sale anterioare.
Aceasta nseamn
a c
a logica secvential
a are stare (memorie), n timp ce logica
combinational
a nu.
Cu alte cuvinte, logica secvential
a este logic
a combinational
a cu memorie.
Din cele de mai sus, rezult
a c
a circuitele logice (sistemele digitale) f
ar
a cicluri
sunt prezente n logica combinational
a, iar cele cu cicluri n logica secvential
a.

Sisteme digitale
Def: Un ciclu A este inclus n alt ciclu B dac
a A apartine unui sistem care face
parte dintr-o extensie serial
a nchis
a prin ciclul B.
Spunem c
a A este subciclu al lui B.
Exemplu: In figura de mai jos, (1) este subciclu al lui (2):

Sisteme digitale

Def: Un sistem digital de ordin n (n-digital system, n-DS), n 0, se


defineste recursiv astfel:
1. Orice circuit combinational (f
ar
a cicluri) este un 0-DS.
2. Un (n + 1)-DS se obtine dintr-un n-DS ad
aug
and un ciclu care include toate
ciclurile anterioare.
3. Orice n-DS se obtine aplic
and de un num
ar finit de ori regulile anterioare.

Sisteme digitale
Obs: Un n-DS are n niveluri de cicluri incluse unele n altele, nu n cicluri. De
exemplu:

(am presupus c
a blocurile simbolizate nu contin cicluri).

Sisteme digitale

Vom ar
ata urm
atoarea corespondent
a ierarhic
a pentru n-DS, care corespunde
arhitecturii unui calculator:
0-DS: circuite combinationale, functii booleene;
1-DS: memorii;
2-DS: automate finite;
3-DS: procesoare;
4-DS: calculatoare.

Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei

2 Aritmetica sistemelor de calcul


Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea

numerelor n matematic
a
numerelor n calculator
numerelor naturale ca ntregi f
ar
a semn
numerelor ntregi n complement fat
a de 2
numerelor reale n virgul
a mobil
a

3 Logica pentru calculatoare


Algebre booleene
Functii booleene
Particularizare la cazul B2

4 Circuite logice
Circuite logice, Sisteme digitale
0-DS (Circuite combinationale, Functii booleene)
1-DS (Memorii)
2-DS (Automate finite)

Circuite combinationale
Sistemele 0-DS sunt circuite logice f
ar
a cicluri.
La aceste circuite, iesirea curent
a depinde doar de intrarea curent
a, deci ele nu
au memorie si astfel sunt prezente n logica combinational
a; de aceea se mai
numesc si circuite combinationale (combinational logic circuit, CLC).
Dependenta iesirii curente de intrarea curent
a a unui 0-DS poate fi descris
a
printr-un tabel de valori, astfel c
a un 0-DS implementeaz
a o functie boolean
a.
Asa cum vom vedea mai t
arziu, orice functie boolean
a poate fi implementat
a
printr-un 0-DS, deci avem o echivalent
a ntre 0-DS si functii booleene.
Exist
a mai multe modalit
ati de a implementa o functie boolean
a ca un 0-DS:
implementare direct
a a unei formule date, minimizarea num
arului de operatii si
implementarea printr-un circuit minimal, implementarea printr-un circuit
general construit dup
a un anumit tipar, implementarea cu ajutorul unor blocuri
CLC speciale: codificator, multiplexor, etc.

Implementare directa
Implementare directa:
O functie boolean
a dat
a printr-o formul
a poate fi implementat
a combin
and
portile n aceeasi ordine n care se compun operatiile booleene implementate de
ele pentru a se obtine formula.
Exemplu: Functia f : B2 3 B2 , f (x, y , z) = (x + y )(z y ) + y z poate fi
implementat
a prin circuitul:

Circuit minimal
Circuit minimal:
O functie boolean
a poate fi implementat
a descriind-o mai nt
ai printr-o formul
a
cu num
ar minim de operatii si implement
and apoi direct aceast
a formul
a
(circuitul va avea un num
ar minim de porti).
Problema general
a a minimiz
arii circuitului este considerat
a intractabil
a
(intractable), i.e. poate fi rezolvat
a n teorie (de exemplu, fiind dat un timp
lung, dar finit), dar n practic
a dureaz
a prea mult pentru ca solutia ei s
a fie
util
a.
Exist
a ns
a metode euristice eficiente, ca h
artile Karnaugh (Karnaugh maps)
si algoritmul QuineMcCluskey.
In multe cazuri poate fi util s
a ncerc
am s
a transform
am formula, aplic
and
propriet
ati de algebr
a boolean
a, p
an
a c
and aceasta nu mai contine 0 sau 1 iar
variabilele nu se mai repet
a.

Circuit minimal
Exemplu: Pentru functia din exemplul anterior, avem:
f (x, y , z) = (x + y )(z y ) + y z = (x + y )(zy + z y ) + y z =
(x + y )(y z + y z) + y z = xy z + xy z + y y z + y y z + y z =
xyz + xy z + y z + yz = xyz + y z + yz = xyz + (y + y )z = xyz + z = xy + z
Astfel, ea poate fi implementat
a prin circuitul:

Circuit general
Circuit general:
O functie boolean
a poate fi implementat
a printr-un circuit general, construit
dup
a un anumit tipar, pornind de la o formul
a standard a functiei - de exemplu,
scrierea ei ca sum
a de produse sau ca FND.
Exemplu: Fie functia f = (f1 , f2 ) : B2 3 B2 2 (f1 , f2 : B2 3 B2 ) dat
a prin
tabelul:
x
0
0
0
0
1
1
1
1

y
0
0
1
1
0
0
1
1

z
0
1
0
1
0
1
0
1

f1
0
0
0
1
0
0
1
1

f2
0
0
1
0
0
0
1
0

Din tabel rezult


a c
a f1 , f2 au respectiv urm
atoarele FND:
f1 (x, y , z) = xy z + xy z + xy z
f2 (x, y , z) = xy z + xy z

Circuit general
Atunci, functia f poate fi implementat
a prin circuitul:

Observ
am c
a am folosit dou
a porti NOT pentru a calcula aceeasi valoare x si
dou
a porti NOT pentru a calcula aceeasi valoare z.

Circuit general
Putem evita folosirea mai multor porti NOT pentru negarea aceleiasi
variabile construind circuitul astfel:

Circuit general
O variant
a a circuitului de mai sus, pe care o vom prefera n cele ce urmeaz
a,
este urm
atoarea:

Plasarea portilor NOT imediat la intr


arile x, y , z are urm
atoarele avantaje
(datorate efectului de buffer al portilor NOT):
- se mpiedic
a p
atrunderea semnalelor perturbate ad
anc n circuit (din portile
NOT respective va iesi un semnal clar 0 sau 1);
- se izoleaz
a circuitul de alte circuite aflate la intrare, evit
and influienta
negativ
a a impedantei acestora;
- semnalul este amplificat si astfel poate fi distribuit mai multor porti AND
(un circuit cu n variabile de intrare poate avea p
an
a la 2n porti AND).

Circuit general
Putem minimiza scrierea functiei ca sum
a de produse (s
a avem c
at mai putine
operatii + si ) nainte de a o implementa prin circuitul general. Astfel, vom
obtine un circuit general minimal.
Exemplu: Pentru functia f din exemplul anterior, avem:
f1 (x, y , z) = xy z + xy z + xy z = xy z + xy (z + z) = xy z + xy =
(xz + x)y = (z + x)y = xy + y z
f2 (x, y , z) = xy z + xy z = (x + x)y z = y z
Atunci, f poate fi implementat
a prin circuitul:

Circuit general
Toate variantele de circuit general prezentate p
an
a acum, cu exceptia primeia,
au trei p
arti:
un bloc care calculeaz
a variabilele si negatiile lor;
un bloc care calculeaz
a produse AND;
un bloc care calculeaz
a sume OR
(prima variant
a constructiv
a calculeaz
a negatiile n blocul al doilea).
Structura primului bloc depinde doar de num
arul de variabile, n timp ce
structura blocurilor al doilea si al treilea depinde de functie.
Dac
a ne imagin
am c
a implement
am functiile cu un num
ar fixat de variabile prin
pl
aci de extensie inserate ntr-un soclu pe o plac
a de baz
a, primul bloc ar putea
fi integrat n soclu (pe placa de baz
a), iar blocurile al doilea si al treilea pe
placa de extensie.
Putem standardiza si mai mult circuitul general si s
a integr
am mai mult n
soclu dac
a n blocul al doilea am calcula toate cele 2n produse posibile cu cele
n variabile date (ele corespund liniilor din tabelul de valori al functiei) - atunci
structura primelor dou
a blocuri va depinde doar de num
arul de variabile (iar ele
vor putea fi integrate n soclu) si doar structura celui de-al treilea bloc va
depinde de functie (iar el va fi integrat n placa de extensie).
In acest caz, suma de produse implementat
a de circuit este FND.

Circuit general
Exemplu: Pentru functia f din exemplele anterioare, ale c
arei componente au,
reamintim, respectiv urm
atoarele FND:
f1 (x, y , z) = xy z + xy z + xy z, f2 (x, y , z) = xy z + xy z
obtinem circuitul urm
ator (am numerotat liniile din tabel, termenii din FND si
produsele din blocul AND pentru a observa mai usor corespondentele):

Circuit general
Putem desena mai rapid circuitul, observ
and urm
atoarele propriet
ati:
Punctele de contact ale produselor din blocul AND sunt n concordant
a
atori din FND, care
cu aparitiile cu/f
ar
a ale variabilelor n termenii corespunz
sunt n concordant
a cu valorile 0/1 ale acestor variabile n tabel, care traduc n
binar numerele de ordine ale liniilor tabelului; de aceea, ne putem g
andi c
a
transcriem n binar aceste numere de ordine direct prin puncte de contact (asa
cum s-au transcris prin sistemele de si deasupra termenilor din FND): 0
nseamn
a contact pe linia de jos, 1 nseamn
a contact pe linia de sus (n
perechea de linii care furnizeaz
a valoarea unei variabile si negatia ei);
Modul n care alterneaz
a valorile n tabel n coloanele variabilelor, cu
perioade care se njum
at
atesc odat
a cu sc
aderea semnificatiei variabilelor (n
coloana variabilei celei mai semnificative, jum
atate 0, jum
atate 1, n coloana
variabilei urm
atoare ca semnificatie, un sfert 0, un sfert 1, etc.) si care ne
permite s
a complet
am tabelul pe coloane, ne permite s
a plas
am punctele de
contact n blocul AND pe linii: n fiecare produs, variabila cea mai
semnificativ
a are jum
atate din contacte pe linia de jos, jum
atate pe linia de sus,
variabila urm
atoare ca semnificatie are un sfert din contacte pe linia de jos, un
sfert pe linia de sus, apoi iar un sfert pe linia de jos, un sfert pe linia de sus, etc..
Sumele din blocul OR au punctele de contact la produsele care corespund
liniilor din tabel unde componenta corespunz
atoare a functiei are valoarea 1.

Circuit general

Constat
am c
a orice functie boolean
a se poate implementa printr-un circuit
general, n oricare din variantele constructive prezentate mai sus, de aceea
circuitele de acest tip au statut de circuite universale.
Totodat
a, vedem cum orice functie boolean
a poate fi implementat
a printr-un
0-DS, ceea ce ncheie justificarea echivalentei ntre 0-DS si functii booleene,
afirmat
a mai devreme.

PLA si PROM
PLA si PROM:
Circuitele generale prezentate mai devreme se pot desena folosind urm
atoarele
conventii grafice mai simple:
Blocul care furnizeaz
a valorile variabilelor si negatiile lor se deseneaz
a la fel.
Fiecare produs din blocul AND (care acum se mai numeste si planul
AND) se deseneaz
a printr-o linie vertical
a care are contacte pe aceleasi linii
ca si produsul.
Fiecare sum
a din blocul OR (care acum se mai numeste si planul OR)
se deseneaz
a printr-o linie orizontal
a care are contacte pe aceleasi linii ca si
suma.
Asadar, liniile desenate au semantici diferite, n functie de pozitia lor pe desen:
cele orizontale din blocul de sus sunt linii de circuit, cele verticale din planul
AND sunt produse, cele orizontale din planul OR sunt sume.

PLA si PROM
Exemplu: Urm
atoarele circuite care implementeaz
a functia f din exemplele
anterioare (cel cu num
ar minim de produse/sume si cel cu toate produsele
posibile):

se vor desena astfel:

PLA si PROM

Circuitele generale desenate dup


a conventiile mai simple de mai sus s.n. PLA
(Programmable Logic Array); cel care are n planul AND toate produsele
posibile cu variabilele date se mai numeste si PROM (Programmable
Read-only Memory) (deci un PROM este un caz particular de PLA). De obicei
ns
a, denumirea de PLA este folosit
a doar pentru circuitul cu num
ar minim de
produse/sume.
Din punct de vedere tehnic, av
and n vedere gradul ridicat de standardizare,
aceste circuite se pot construi dup
a tehnologii diferite, mai simple, dec
at
circuitele alc
atuite din porti si av
and o organizare oarecare.
Intruc
at pot implementa orice functie boolean
a, PLA si PROM sunt circuite
universale.

Decodificator
Decodificator:
Un decodificator (decoder) cu selector pe n biti DCDn , n 1, este un circuit
care transform
a un cod numeric k pe n biti ntr-o alegere fizic
a, a liniei de iesire
cu num
arul k (prin care trimite 1).
De fapt, acesta este un caz particular de decodificator, numit decodificator
linie (line decoder).
Simbol:

El primeste ca intrare un sistem de valori xn1 , . . . , x0 , numit selector, care este


reprezentarea n calculator a unui num
ar natural k {0, 2n 1} ca ntreg f
ar
a
semn si furnizeaz
a ca iesire un sistem de valori y0 , . . . , y2n 1 a.. yk = 1 si
yi = 0 pentru i 6= k.
Liniile de iesire y0 , . . . , y2n 1 pot fi conectate la diverse echipamente (circuite)
si astfel va fi activat echipamentul cu num
arul k.
Deci, cu ajutorul unui decodificator, putem activa diverse echipamente,
selectabile printr-un cod numeric.

Decodificator
n

DCDn implementeaz
a o functie f : B2 B2

2n

av
and urm
atorul tabel de valori:

Asadar, coloana fiec


arei componente yk a functiei, 0 k 2n 1, contine o
singur
a valoare 1, anume pe linia k.
Atunci, dac
a implement
am aceast
a functie ca PROM, fiecare produs din planul
AND va participa la o singur
a sum
a.
In consecint
a, un decodificator este planul AND dintr-un PROM:

Decodificator
Pentru n = 1 obtinem decodificatorul elementar (elementary decoder),
EDCD; simbolizare:

Constructie:

Decodificator

Uneori este util


a o variant
a a decodificatorului, n care iesirile sunt
complementate:

El transform
a selectorul (xn1 , . . . , x0 ) = [k]un n sistemul de valori y0 , . . . , y2n 1
a.. yk = 0 si yi = 1 pentru i 6= k.

Decodificator

Pentru constructie, n planul AND al PROM-ului se nlocuiesc portile AND


cu porti NAND:

In cazul EDCD, se poate proceda astfel:

Codificator
Codificator:
Un (2n , p) - codificator (encoder) este un circuit cu 2n intr
ari dintre care la
fiecare moment doar una este activ
a (i.e. are valoarea 1) si care genereaz
a la
iesire o configuratie binar
a oarecare de lungime p. Simbol:

Pentru a se garanta c
a dintre cele 2n intr
ari la fiecare moment exact una este
activ
a, codificatorul este nsotit ntotdeauna de un decodificator:

Circuitul rezultat transform


a: (xn1 , . . . , x0 ) = [k]un , 0 k 2n 1
n
(y0 , . . . , y2 1 ) = (0, . . . , 0, 1, 0, . . . , 0) (1 este pe pozitia k) (z1 , . . . , zp ),
unde pentru orice 1 i p, zi = zi (k) = zi (xn1 , . . . , x0 ) : B2 n B2 este o
functie boolean
a scalar
a oarecare, deci z = (z1 , . . . , zp ) : B2 n B2 p este o
functie boolean
a vectorial
a oarecare.

Codificator
Intruc
at am v
azut c
a orice functie boolean
a se poate implementa ntr-un mod
standard ca PROM iar decodificatorul este planul AND al acestuia, rezult
a
c
a codificatorul poate fi construit ca planul s
au OR.
Mai exact, codificatorul se construieste ca un sistem de porti OR, fiecare
furniz
and ca iesire c
ate un zi , 1 i p, si primind ca intrare acei yk pentru
care, dac
a valoarea este 1, atunci si zi = 1:

Asadar, codificatorul este planul OR dintr-un PROM.


Intruc
at am v
azut c
a PROM-ul este un circuit universal, rezult
a c
a si
codificatorul (nsotit de decodificator) este un circuit universal, i.e. poate
implementa orice functie boolean
a.

Codificator
Exemplu: Implementati cu ajutorul unui codificator functia boolean
a
f : B2 3 B2 dat
a prin tabelul: x y z f
0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

0
0
0
1
0
0
1
1

Codificatorul va contine un OR ce furnizeaz


a ca iesire f si are ca intr
ari iesirile
yk al DCD3 ce corespund liniilor cu numerele k din tabel pentru care f = 1:

Codificator

Dac
a folosim un decodificator cu iesirile negate, n constructia codificatorului se
nlocuiesc portile OR cu porti NAND.
Exemplu: Pentru functia f din exemplul anterior, obtinem implementarea:

Demultiplexor
Demultiplexor:
Un demultiplexor (demultiplexer) cu selector pe n biti DMUXn , n 1, este
un comutator de tip one into many, care care poate conecta o intrare unic
a
la o iesire selectabil
a printr-un cod numeric.
Simbol:

El primeste ca intrare:
un sistem de valori xn1 , . . . , x0 , numit selector, care este reprezentarea n
calculator a unui num
ar natural k {0, 2n 1} ca ntreg f
ar
a semn;
o valoare E {0, 1};
si furnizeaz
a ca iesire:
un sistem de valori y0 , . . . , y2n 1 a.. yk = E si yi = 0 pentru i 6= k.

Demultiplexor
Constat
am c
a demultiplexorul este o generalizare a decodificatorului; mai exact,
un DCDn este un DMUXn unde am fixat E = 1.
De aceea, demultiplexorul se construieste usor cu ajutorul unui decodificator se conjug
a toate iesirile decodificatorului cu E :

Demultiplexor
Pentru n = 1 obtinem demultiplexorul elementar (elementary
demultiplexer), EDMUX ; simbolizare:

Constructie:

Demultiplexor
Putem construi o variant
a a demultiplexorului, n care intrarea E si iesirile
y0 , . . . , y2n 1 sunt negate.
Simbolizare:

Constructie:

Aceast
a variant
a are avantajul c
a si intrarea E va fi protejat
a iar semnalul va fi
amplificat nainte de combinarea cu cele 2n iesiri ale decodificatorului, datorit
a
efectului de buffer al portii NOT.

Multiplexor
Multiplexor:
Un multiplexor (multiplexer) cu selector pe n biti MUXn , n 1, este un
comutator de tip many into one, care care poate conecta o intrare selectabil
a
printr-un cod numeric la o iesire unic
a.
Simbol:

El primeste ca intrare:
un sistem de valori xn1 , . . . , x0 , numit selector, care este reprezentarea n
calculator a unui num
ar natural k {0, 2n 1} ca ntreg f
ar
a semn;
un sistem de valori oarecare i0 , . . . , i2n 1 ;
si furnizeaz
a ca iesire: ik .

Multiplexor
Constructie:

Decodificatorul transform
a selectorul k = (xn1 , . . . , x0 ) n sistemul de iesiri
0, . . . , 0, 1, 0, . . . , 0, unde 1 este pe pozitia k; aceste iesiri sunt conjugate cu
respectiv intr
arile i0 , . . . , i2n 1 , rezult
and sistemul de valori 0, . . . , 0, ik , 0, . . . , 0,
unde ik este pe pozitia k; aceste valori intr
a ntr-o poart
a OR, care
efectueaz
a 0 + + ik + + 0, rezult
and n final ik .

Multiplexor
Pentru n = 1 obtinem multiplexorul elementar (elementary multiplexer),
EMUX ; variante de simbolizare (n primul caz subntelegem c
a intrarea
corespunz
atoare selectorului s = 0 este n st
anga):

Constructie:

Multiplexor

De asemenea, vom folosi si MUX2 , pentru care avem si simbolizarea:

Multiplexor
Dac
a folosim un decodificator cu iesirile negate, n constructia multiplexorului
se interschimb
a portile nou ad
augate AND si OR:

Acum, decodificatorul transform


a selectorul k = (xn1 , . . . , x0 ) n sistemul de
iesiri 1, . . . , 1, 0, 1, . . . , 1, unde 0 este pe pozitia k; aceste iesiri sunt disjunse cu
respectiv intr
arile i0 , . . . , i2n 1 , rezult
and sistemul de valori 1, . . . , 1, ik , 1, . . . , 1,
unde ik este pe pozitia k; aceste valori intr
a ntr-o poart
a AND, care
efectueaz
a 1 . . . ik . . . 1, rezult
and n final ik .

Multiplexor
Multiplexorul este si el un circuit universal, deoarece putem implementa orice
funtie boolean
a scalar
a cu un multiplexor.
Exemplu: Implementati functia boolean
a urm
atoare cu un multiplexor:

Multiplexor

Intuitiv, fiecare sistem de valori ale variabilelor x, y , z, care este reprezentarea


unui num
ar natural 0 k 7, selecteaz
a:
din tabel, valoarea lui f din linia k;
cu muliplexorul, intrarea ik de sus.
Asadar, multiplexorul implementeaz
a pe f dac
a plas
am coloana valorilor lui f
ca sistem de intr
ari i0 , . . . , i7 ; ntruc
at sistemul de valori 0, 0, 0 ale variabilelor
selecteaz
a valoarea din linia de sus a tabelului si intrarea i din st
anga a
multiplexorului, coloana valorilor lui f trebuie plasat
a orizontal, cu partea de
sus spre st
anga; not
am c
a variabila cea mai semnificativ
a, x, a fost desenat
a,
conform conventiilor adoptate, n tabel n st
anga si la multiplexor jos.

Multiplexor
O functie boolean
a vectorial
a f : B2 n B2 k , k > 1, poate fi implemetat
a
printr-un sistem de k multiplexoare MUXn , fiecare calcul
and c
ate una din
componentele functiei, f1 , . . . , fk ; liniile corespunz
atoare variabilelor lui f intr
a
simultan ca selector n toate multiplexoarele, iar acestea au ca sisteme de
intr
ari i coloanele de valori ale componentelor lui f pe care le calculeaz
a:

Multiplexor
MUXn admite si o constructie recursiv
a; mai exact:

se poate construi ca:

Multiplexor

In interiorul dreptunghiurilor am notat intr


arile/iesirile proprii ale
multiplexoarelor (parametrii formali), iar l
ang
a dreptunghiuri am notat liniile
conectate la ele (parametri actuali).
De exemplu, intrarea i2n1 a lui MUXn este conectat
a la intrarea i0 a lui
MUXn1 din dreapta.

Multiplexor
Echivalenta celor dou
a circuite este usor de nteles dac
a facem o comparatie cu
tablul de valori al functiei implementate; vom ilustra pentru functia din
exemplul anterior, presupun
and c
a (x, y , z) = (0, 1, 0):

Multiplexor

Iesirea y a lui MUX3 este valoarea final


a a lui f ; dup
a valoarea variabilei celei
mai semnificative, x, ea este aleas
a din prima sau a doua jum
atate a tabelului,
respectiv din ceea ce furnizeaz
a primul sau al doilea MUX2 ; ntruc
at x = 0, se
alege din prima jum
atate a tebelului, respectiv ce furnizeaz
a MUX2 din st
anga.
Sistemul valorilor celor mai putin semnificative variabile, (y , z), apare de dou
a
ori n tabel, o dat
a n prima jum
atate, o dat
a n a doua jum
atate, si n fiecare
caz selecteaz
a valoarea lui f de pe o linie aflat
a la aceeasi distant
a d fat
a de
nceputul jum
at
atii; corepunz
ator, sistemul (y , z) intr
a ca selector n ambele
MUX2 si n fiecare caz selecteaz
a intrarea i cu acelasi indice d; ntruc
at
(y , z) = (1, 0), se alege din fiecare jum
atate a tabelului valoarea lui f din linia
2 (num
ar
and de la 0) si de la fiecare MUX2 intrarea i2 (d = 2 = 102 ).
Intruc
at variabila cea mai semnificativ
a este x = 0, prima dintre cele dou
a
valori, adic
a 0, este emis
a ca valoare final
a.

Multiplexor
Proprietatea algebric
a pe care se bazeaz
a constructia recursiv
a de mai sus este
teorema care d
a o descriere recursiv
a a unei functii booleene scalare cu n
variabile prin dou
a functii booleene scalare cu n 1 variabile:
xn1 , . . . , x0 B2 ,
f (xn1 , . . . , x0 ) = xn1 f (0, xn2 , . . . , x0 ) + xn1 f (1, xn2 , . . . , x0 )
MUXn construit recursiv implementeaz
a f : B2 n B2 ;
MUXn1 din st
anga (a c
arui iesire este selectat
a de EMUX pentru xn1 = 0)
implementeaz
a f0 : B2 n1 B2 , f0 (xn2 , . . . , x0 ) = f (0, xn2 , . . . , x0 );
MUXn1 din dreapta (a c
arui iesire este selectat
a de EMUX pentru xn1 = 1)
implementeaz
a f1 : B2 n1 B2 , f1 (xn2 , . . . , x0 ) = f (1, xn2 , . . . , x0 ).
Formula de recursie din teorem
a este functia implementat
a de un EMUX :
EMUX (s, a, b) = sa + sb.

Multiplexor

Observatie: S
i alte circuite 0 DS, ca de exemplu DCDn sau DMUXn , admit
o constructie recursiv
a (exercitiu).

Multiplexor

Putem continua constructia recursiv


a a lui MUXn de mai devreme, exprim
and
fiecare MUXn1 prin c
ate dou
a MUXn2 si un EMUX , s.a.m.d., p
an
a obinem
un circuit, asem
an
ator unui arbore, alc
atuit doar din EMUX -uri.
Astfel, ntruc
at orice functie boolean
a scalar
a se poate implementa cu un
multiplexor iar orice multiplexor se poate nlocui cu un arbore de EMUX -uri,
rezult
a c
a orice functie boolean
a scalar
a se poate implementa cu un circuit
alc
atuit doar din EMUX -uri.
Deci, si EMUX este circuit universal.
Observatie: Alte circuite universale sunt NAND si NOR (putem implementa
orice functie boolean
a folosind doar NAND-uri sau doar NOR-uri) - exercitiu.

Multiplexor
Exemplu: Functia din exemplul precedent se poate implementa cu EMUX -uri
astfel:

Dac
a p
astr
am conventiile anterioare privind pozitia intr
arilor si iesirilor pe
desenul EMUX -urilor, nu mai este nevoie s
a not
am aceste intr
ari si iesiri.

Multiplexor
O functie boolean
a vectorial
a f : B2 n B2 k , k > 1, poate fi implemetat
a
printr-un sistem de k arbori de EMUX -uri, fiecare calcul
and c
ate una din
componentele functiei, f1 , . . . , fk ; fiecare linie corespunz
atoare unei variabile a
lui f intr
a ca selector n EMUX -urile de pe un acelasi r
and n toti arborii, iar
acestia au ca sisteme de intr
ari i coloanele de valori ale componentelor lui f pe
care le calculeaz
a:

Multiplexor

Num
arul EMUX -urilor prin care se implementeaz
a o functie boolean
a poate fi
redus, dac
a observ
am c
a:

Astfel, dac
a accept
am si prezenta portilor NOT, EMUX -urile aflate pe
primul r
and al arborilor dispar, iar uneori dispar si EMUX -uri de pe r
andurile
urm
atoare.

Multiplexor
Exemplu: Reduceti la maxim num
arul de EMUX prin care se implementeaz
a
functia f din exemplele anterioare:

Desenul care p
astreaz
a doar EMUX -urile r
amase este:

Sfat: Desenul circuitului redus este bine s


a fie realizat de jos n sus, deoarece
avem o perspectiv
a mai clar
a care linii trebuie sterse sau redirectionate.

Observatie:
In notatiile si simboliz
arile grafice folosite p
an
a acum, dac
a d
am nume indexate
variabilelor, intr
arilor, iesirilor, nu mai este nevoie s
a respect
am o anumit
a
ordine de scriere/desenare a acestora. De exemplu, n cazul unui MUX3 , vom
sti c
a intrarea i3 corespunde valorii selectorului x2 = 0, x1 = 1, x0 = 1,
indiferent unde sunt scrise/desenate aceste linii:

Dac
a folosim nume neindexate, conteaz
a ordinea semnificatiilor variabilelor si
cea de scriere/desenare n functie de semnificatie. De exemplu, dac
a invers
am
ordinea liniilor selectorului unui MUX3 , intrarea i3 se interschimb
a cu i6 :

Oricare conventie de ordonare este bun


a, dar trebuie aleas
a una si p
astrat
a cu
consecvent
a.

Conventia de ordonare folosit


a n acest curs este:
- variabila cea mai semnificativ
a este scris
a n st
anga notatiei cu paranteze a
functiei, n coloana din st
anga a tabelului de valori si n partea de jos a
selectorului blocurilor decodificator, codificator, demultiplexor, multiplexor;
- iesirea y corespunz
atoare valorii 0 = (0, . . . , 0) a selectorului blocurilor
decodificator si demultiplexor este scris
a n st
anga sau sus;
- intrarea i corespunz
atoare valorii 0 = (0, . . . , 0) a selectorului blocului
multiplexor este scris
a n st
anga sau sus.

In cele ce urmeaz
a, p
an
a la sf
arsitul sectiunii referitoare la 0 DS, vom nota:
, , , , \, operatiile de algebr
a boolean
a OR, AND, NOT,
XOR, diferent
a
si vom nota:
+, , sau juxtapunere, div , mod , operatiile aritmetice pe numere ntregi
de adunare, sc
adere, nmultire, aflarea c
atului ntreg, aflarea restului ntreg.

Sumator

Sumator:
Un sumator pe n biti ADDn , n 1, este un circuit care implementeaz
a
operatia pe care la nceputul sectiunii Reprezentarea numerelor n calculator
am notat-o cu
+.
Mai exact, el primeste ca intrare dou
a siruri de biti an1 , . . . , a0 , bn1 , . . . , b0 si
eventual un transport de intrare cin (pentru pozitia 0) si le aplic
a algoritmul de
adunare cu reprezent
arile binare ale numerelor naturale folosit n matematic
a;
transportul din pozitia n 1 se pierde (de fapt, el este emis pe o linie separat
a).
Am v
azut c
a rezultatul acestei operatii are semnificatia de sum
a at
at n cazul
c
and sirurile de biti reprezint
a numere naturale ca ntregi f
ar
a semn, c
at si n
cazul c
and ele reprezint
a numere ntregi n complement fat
a de 2.

Sumator
Simbol:

sau, dac
a consider
am si un transport de intrare:

Vom defini mai nt


ai sumatorii pe un bit, apoi, pe baza acestora, sumatorii pe
mai multi biti.

Sumator

Sumator pe un bit:
Sumatorii pe un bit pot fi folositi:
- pentru adunarea bitilor cei mai putin semnificativi (bitii de rang 0, ai
unit
atilor) ai unor operanzi mai lungi si atunci nu avem transport de intrare
(carry in), dar avem transport de iesire (carry out); circuitul respectiv s.n. half
adder;
- pentru adunarea bitilor mai semnificativi (de rang 1) ai unor operanzi mai
lungi si atunci avem si transport de intrare (carry in) si transport de iesire
(carry out); circuitul respectiv s.n. full adder.

Sumator
Half adder (HA):
Primeste ca intrare: a, b (doi operanzi de un bit).
Efectueaz
a adunarea: a + b.
Furnizeaz
a ca iesire: s (bitul sum
a, trimis n locatia destinatie), cout (carry out).
Observ
am c
a: s = (a + b) mod 2, cout = (a + b) div 2.
Simbol si tabel de adev
ar:

Sumator
Constructia ca PROM:

O constructie cu mai putine porti se poate obtine observ


and din tabel c
a:
s = a b, cout = a b:

Half adder-ul implementeaz


a functia boolean
a
HA : B2 2 B2 2 , HA(a, b) = (HAs (a, b), HAc (a, b)), unde
HAs (a, b) = s = a b, HAc (a, b) = cout = a b.

Sumator
Full adder (FA):
Primeste ca intrare: a, b (doi operanzi de un bit), cin (carry in).
Efectueaz
a adunarea: a + b + cin .
Furnizeaz
a ca iesire: s (bitul sum
a, trimis n locatia destinatie), cout (carry out).
Observ
am c
a: s = (a + b + cin ) mod 2, cout = (a + b + cin ) div 2.
Simbol si tabel de adev
ar:

Full adder-ul implementeaz


a functia boolean
a
FA : B2 3 B2 2 , FA(a, b, c) = (FAs (a, b, c), FAc (a, b, c)), unde
FAs (a, b, c) = s = (a + b + c) mod 2, FAc (a, b, c) = cout = (a + b + c) div 2.

Sumator
Dac
a din tabelul anterior extragem FND, rezult
a c
a pentru a, b, c = cin date,
avem:
FAs (a, b, c) = (a b c) (a b c) (a b c) (a b c) =
(((a b) (a b)) c) (((a b) (a b)) c) =
((a b) c) (a b c) = (a b) c = HAs (HAs (a, b), cin )
FAc (a, b, c) = (a b c) (a b c) (a b c) (a b c) =
(((a b) (a b)) c) (a b (c c)) = ((a b) c) (a b) =
HAc (HAs (a, b), cin ) HAc (a, b) = HAc (HAs (a, b), cin ) HAc (a, b)
Ultima egalitate de jos se bazeaz
a pe faptul c
a HAc (HAs (a, b), cin ) si HAc (a, b)
nu pot fi simultan 1 (de aceea, n loc de putem folosi ); ntr-adev
ar,
conform tabelului lui half adder, dac
a HAc (a, b) = 1, atunci HAs (a, b) = 0,
deci HAc (HAs (a, b), cin ) = HAc (0, cin ) = 0.

Sumator
Atunci putem construi un circuit full adder folosind dou
a circuite half adder si
un OR sau XOR, astfel:

Sumator
Sumator serial:
Sumatorul serial pe n biti ADDn calculeaz
a bitii sumei succesiv, de la cel de
rang minim la cel de rang maxim, folosind la calculul fiec
arui nou bit
transportul (carry out) obtinut la bitul anterior.
El se poate defini (construi) recursiv, astfel:
ADD1 este un FA
ADDn , n > 1, este extensia serial
a a unui ADDn1 cu un FA:

Dezavantaj: dezvoltarea pe vertical


a a circuitului (num
arul de niveluri de legare
n serie) este mare si depinde de n; astfel, circuitul este lent.

Sumator
Sumator paralel:
Sumatorul paralel pe n biti ADDn este o variant
a mai rapid
a, care efectueaz
a
nsumarea separat
a a transportului fiec
arei sume binare, folosind un circuit CL
(carry lookahead).
Dac
a pentru orice 0 i n not
am:
ai , bi , si bitii de pe pozitia i ai operanzilor si, respectiv, sumei,
ci carry in la pozitia i (si carry out la pozitia i 1, dac
a i 1),
iar cn este carry out final (de pe pozitia n 1),
atunci, din formulele obtinute pentru FAs , FAc mai devreme, rezult
a c
a pentru
orice 0 i n, avem:
ci+1 = (ai bi ) ((ai bi ) ci ) = Gi (Pi ci ),
unde am notat:
Gi = ai bi , deplasarea generat
a la pozitia i,
Pi = ai bi , deplasarea propagat
a la pozitia i.
Av
and n vedere c
a ai bi si ai bi nu pot fi simultan 1 (se poate vedea, de
exemplu, folosind tabelele de valori), n formula lui ci+1 de mai sus n loc de
se poate folosi .

Sumator
Iter
and formula anterioar
a, rezult
a c
a pentru orice 0 i n avem:
ci+1 = Gi (Pi Gi1 ) (Pi Pi1 Gi2 ) (Pi Pi1 P0 c0 )
si, ca mai nainte, n aceast
a formul
a n loc de se poate folosi .
Intruc
at fiecare Gi , Pi depinde de ai , bi printr-o formul
a cu un nivel (o operatie
, respectiv ), iar fiecare ci+1 depinde de sistemul de Gi -uri, Pi -uri si c0
printr-o formul
a cu dou
a niveluri (o disjunctie de conjunctii ), rezult
a c
a
fiecare ci+1 depinde de sistemul de ai -uri, bi -uri si c0 printr-o formul
a cu trei
niveluri, deci se poate calcula din sistemul de ai -uri, bi -uri si c0 n timp
constant (care nu mai depinde de n).
Not
am c
a pentru orice 0 i n, cel mult unul din termenii disjunctiei prin
care se calculeaz
a ci+1 poate fi 1.
Intr-adev
ar, dac
a toti Gi , . . . , G0 sunt 0, atunci ci+1 = Pi Pi1 P0 c0 .
Altfel, fie 0 k i cel mai mare indice a.. Gk = 1; atunci, pentru j > k avem
Pi Pi1 Pj+1 Gj = 0, deoarece Gj = 0, iar pentru j < k avem
Pi Pi1 Pj+1 Gj = 0, deoarece termenul l contine pe Pk , care este 0
(Gk si Pk nu pot fi simultan 1); deci, ci+1 = Pi Pi1 Pk+1 Gk .

Sumator
Formula de calcul a lui ci+1 , 0 i n, de mai sus are asociate urm
atoarele
observatii intuitive:
la o pozitie 0 i n se genereaz
a carry out d.d. ai = bi = 1, i.e. Gi = 1; n
acest caz, suma r
amas
a pentru pozitia i este 0, iar Pi = 0;
carry out-ul generat la pozitia i se propag
a spre pozitii j aflate tot mai la
st
anga (valori j tot mai mari) at
at timp c
at la pozitiile respective s-au adunat
aj = 0 si bj = 1 sau aj = 1 si bj = 0 (pentru ca suma r
amas
a pentru pozitia j s
a
fie 1), adic
a at
at timp c
at Pj = 1; not
am c
a pentru aceste pozitii avem Gj = 0;
dac
a la st
anga lui i avem doar valori Pj = 1 (va rezulta Gj = 0), carry-ul
generat la pozitia i va fi carry out final cn ;
altfel, consider
am cea mai mic
a pozitie k > i a.. Pk = 0; atunci la pozitia k
s-au adunat ak = 0 si bk = 0 sau ak = 1 si bk = 1, deci suma r
amas
a pentru
pozitia k este 0 si atunci carry-ul generat la pozitia i se opreste n acest 0 (nu
se propag
a mai departe); nu este obligatoriu ca Gk = 1 (avem asa doar dac
a la
pozitia k s-au adunat ak = 1 si bk = 1), deci k este urm
atoarea pozitie
i 0 > i unde se genereaz
a carry out;

Sumator
astfel, cantitatea total
a transportat
a printr-o pozitie 0 i n nu va fi
niciodat
a > 1 (carry out-urile nu ajung s
a se cumuleze);
un carry out final cn+1 = 1 poate proveni:
- fie de la un c0 = 1, dac
a toate Pi , 0 i n, sunt 1 (atunci toate Gi ,
0 i n, sunt 0, deci nici o pozitie nu genereaz
a carry out, iar numerele de n
biti adunate sunt unul complementul fat
a de unu al celuilalt);
- fie de la cea mai mare pozitie 0 i n unde s-a generat carry out, adic
a
Gi = 1, dac
a pentru pozitiile j > i avem Pj = 1 (adic
a se permite propagarea);
eventualele carry out venite din spate se vor opri cel mult n pozitia k.

Sumator

Circuitul CL implementeaz
a formula anterioar
a de calcul pentru toate carry
out-urile ci , 1 i n, si are dou
a niveluri (un nivel si un nivel ), deci
num
arul de niveluri si timpul de calcul nu depind de n.
Simbol:

Sumator
Constructie pentru n = 4:

Circuitul implementeaz
a formulele:
c4 = G3 (P3 G2 ) (P3 P2 G1 ) (P3 P2 P1 G0 ) (P3 P2 P1 P0 c0 )
c3 = G2 (P2 G1 ) (P2 P1 G0 ) (P2 P1 P0 c0 )
c2 = G1 (P1 G0 ) (P1 P0 c0 )
c1 = G0 (P0 c0 )

Sumator
Constructia sumatorului:

Intr-adev
ar, formulele anterioare ne arat
a c
a pentru orice 0 i n 1 avem:
si = FAs (ai , bi , ci ) = HAs (HAs (ai , bi ), ci ) = HAs (ai , bi ) ci
Gi = ai bi = HAc (ai , bi )
Pi = ai bi = HAs (ai , bi )
Circuitul are 4 niveluri de legare n serie (deoarece HA are un nivel iar CL dou
a
niveluri), deci num
arul de niveluri si timpul de calcul nu depind de n.

Circuit pentru incrementare


Circuit pentru incrementare:
Un circuit pentru incrementare pe n biti INCn , n 1 este un circuit care
adun
a aritmetic 1 la un num
ar natural/ntreg reprezentat binar pe n biti,
transportul din bitul cel mai semnificativ fiind emis pe o linie separat
a; cu alte
cuvinte, efectueaz
a
+1, n sensul operatiei
+ definit
a la nceputul sectiunii
Reprezentarea numerelor n calculator.
Simbol:

Variante de constructie:
Constructie serial
a - exercitiu:
n = 1 : NOT
n n + 1 : INCn extins serial cu HA
ADDn cu intrarea b fixat
a pe |0 . {z
. . 01};
n

Circuit pentru incrementare


Constructie paralel
a (cea mai perfomant
a):
Se bazeaz
a pe urm
atoarele observatii:
la ADDn , dac
a fix
am bi = 0, 0 i n 1, si c0 = 1, obtinem INCn ;
la CL, dac
a fix
am bi = 0, 0 i n 1, si c0 = 1, atunci
pentru orice 0 i n 1 avem Gi = ai 0 = 0, Pi = ai 0 = ai , deci
ci+1 = Gi (Pi ci ) = ai ci = = ai a0 c0 = ai a0 .
Atunci obtinem circuitul:

Intuitiv: la fiecare pozitie i se adun


a ai cu carry venit din urm
a ai1 a0
si se obtine un bi si un carry out ce nu mai trebuie calculat aici, deoarece se
recalculeaz
a la pozitia i + 1.
Circuitul are doar dou
a niveluri de legare n serie, deci este rapid (iar timpul de
calcul nu depinde de n); aceast fapt este important, deoarece programele
efectueaz
a n general multe increment
ari (ex: ++i ntr-o instructiune for)
si este important ca ele s
a se execute repede.

Circuit pentru scadere

Circuit pentru scadere:


Un circuit pentru sc
adere pe n biti SUBn , n 1, este un circuit care
implementeaz
a operatia pe care la nceputul sectiunii Reprezentarea numerelor
n calculator am notat-o cu
.
Mai exact, el primeste ca intrare dou
a siruri de biti an1 , . . . , a0 , bn1 , . . . , b0 si
un mprumut de intrare cin si le aplic
a algoritmul de sc
adere cu reprezent
arile
binare ale numerelor naturale folosit n matematic
a, obtin
and un sir de biti ai
rezultatului (diferentei) dn1 , . . . , d0 si un mprumut de iesire cout , care este
emis pe o linie separat
a.
Am v
azut c
a rezultatul acestei operatii are semnificatia de diferent
a at
at n
cazul c
and sirurile de biti reprezint
a numere naturale ca ntregi f
ar
a semn, c
at
si n cazul c
and ele reprezint
a numere ntregi n complement fat
a de 2.

Circuit pentru scadere


Simbol:

Variante de constructie:
Constructie serial
a - exercitiu:
n = 1 : se defieste un circuit FS (full substract), n aceeasi manier
a ca FA;
n n + 1 : se extinde serial SUBn cu un FS
(si se mai pot face niste simplific
ari).
Constructia bazat
a pe ADDn :
Se bazeaz
a pe observatia c
a dac
a a, b sunt numere naturale/ntregi pe n biti,
c sunt numerele obtinute neg
c este num
arul 0 sau 1 pe un bit, iar
a, b,
and
bitii din reprezent
arile lui a, b, respectiv c (complementele fat
a de 1), atunci:
= 2n 1, c + c = 1,
b+b
deci
2n + 1 + c 1 = a + b
+ c 2n .
abc =a+b

Circuit pentru scadere

Rezult
a circuitul:

Asadar, sc
aderea se reduce la adunare (se poate efectua cu circuitul pentru
adunare).

Multiplicator

Multiplicator:
Un multiplicator pe n biti MULn , n 1, este un circuit care primeste ca
intrare dou
a siruri de biti an1 , . . . , a0 , bn1 , . . . , b0 si le aplic
a algoritmul de
nmultire cu reprezent
arile binare ale numerelor naturale folosit n matematic
a,
obtin
and un sir de biti ai rezultatului (produsului) x2n1 , . . . , x0 .
Cu un asemenea circuit se poate efectua nmultirea unor numere
naturale/ntregi.
Prezent
am mai jos varianta de constructie descris
a n cartea:
Adrian Atanasiu: Arhitectura calculatorului, Ed. InfoData, 2006:

Multiplicator
Se foloseste un bloc pentru nmultirea pe un bit (cu ajutorul unei porti AND)
si adunarea produselor si carry-urilor vecine (cu ajutorul unui FA); constructia
blocului (st
anga) si simbolul s
au (dreapta) sunt urm
atoarele:

Multiplicator
Constructia multiplicatorului pe n biti este ilustrat
a mai jos, pentru n = 4:

Multiplicator

Dezavantaj: dezvoltarea pe vertical


a a circuitului (num
arul de niveluri de legare
n serie) este mare si depinde de n; astfel, circuitul este lent.
De aceea, pentru nmultirea hardware nu se foloseste un 0 DS, care
efectueaz
a calculul ntr-un singur pas foarte lent, ci un 2 DS, care efectueaz
a
calculul prin adun
ari si shift
ari repetate, pe parcursul mai multor pasi rapizi
(vom vedea mai t
arziu).

Comparator
Comparator:
Un comparator pe n biti CAn , n 1, este un circuit care efectueaz
a
comparatia aritmetic
a a dou
a numere ntregi.
El primeste ca intrare reprezent
arile celor dou
a numere a si b n complement
fat
a de 2 pe n biti, an1 , . . . , a0 si respectiv bn1 , . . . , b0 , si furnizeaz
a trei iesiri
de un bit, corespunz
atoare celor trei relatii posibile n care se pot afla a si b:
z1 (a < b), z2 (a = b), z3 (a > b) (fiecare iesire este 1 sau 0 dup
a cum relatia
respectiv
a are sau nu loc).
Simbol:

Comparator

numerele obtinute prin negarea bitilor din


Not
and ca mai nainte
a, b
reprezent
arile lui a, respectiv b (complementele fat
a de 1), vom avea:
+ 1 2n > 0 a + b
> 2n 1
a>b ab >0a+b

a + b are carry out = 1.


Similar, a < b
a + b are carry out = 1.
In fine, a = b i {0, . . . , n 1}, ai = bi
i {0, . . . , n 1}, ai bi = 1 ( . . este operatia NXOR)
a0 b0 . . . an1 bn1 = 1.

Comparator
Atunci, putem construi comparatorul astfel:

Comparator

unde am folosit urm


atoarele simboluri:

Comparator

O variant
a mai simpl
a, cu un singur sumator, se poate obtine observ
and c
a:
are carry out = 1 (am v
a>b a+b
azut).
+ 1 2n = 0 a + b
= 2n 1
a=b ab =0a+b

este 1.
a + b are toti bitii 1 conjunctia a bitilor lui a + b
a < b cel
alalt caz NOR-ul (adic
a nici-ul) celorlalte dou
a cazuri.

Comparator
Obtinem circuitul:

Shifter
Circuit pentru deplasare (shifter):
Un circuit pentru deplasare (shifter) pe n biti, n 1, este un circuit care
primeste ca intrare un sir de n biti an1 , . . . , a0 si un num
ar natural k prin
reprezentarea sa n calculator ca ntreg f
ar
a semn si furnizeaz
a ca iesire sirul
deplasat la st
anga sau la dreapta cu k pozitii. Bitii care ies din sistemul de n se
pierd (eventual sunt recuperati pe alte linii), iar locurile goale ap
arute n partea
opus
a se completeaz
a dup
a o anumit
a regul
a, n functie de tipul de shiftare.
Exist
a trei tipuri de shiftare:
Shiftare logic
a la st
anga (instructiunea sll din limbajul MIPS):
Furnizeaz
a sirul: ank1 , ank2 , . . . , a0 , 0, . . . , 0
| {z }
k biti
Shiftare logic
a la dreapta (instructiunea srl din limbajul MIPS):
Furnizeaz
a sirul: 0, . . . , 0, an1 , an2 , . . . , ak
| {z }
k biti
Shiftare aritmetic
a la dreapta (instructiunea sra din limbajul MIPS):
Furnizeaz
a sirul: an1 , . . . , an1 , an1 , an2 , . . . , ak
|
{z
}
k biti

Shifter

Dac
a an1 , . . . , a0 este reprezentarea n calculator a unui num
ar natural a ca
ntreg f
ar
a semn sau a unui num
ar ntreg a n complement fat
a de 2, atunci:
shiftarea logic
a la st
anga cu k furnizeaz
a reprezentarea lui a 2k ;
shiftarea logic
a la dreapta cu k furnizeaz
a reprezentarea lui ba/2k c, doar
pentru numere a 0;
shiftarea aritmetic
a la dreapta cu k furnizeaz
a reprezentarea lui ba/2k c,
pentru orice num
ar ntreg a reprezentat n complement fat
a de 2 (ea
completeaz
a locurile goale ap
arute n st
anga cu copii ale bitului de semn).
In toate cazurile, proprietatea are loc cu conditia ca rezultatul s
a se afle n
multimea valorilor reprezentabile (s
a nu apar
a overflow).
Deci, shift
arile pot fi folosite pentru a efectua rapid nmultiri si mp
artiri ale
unor numere ntregi cu puteri ale lui 2.

Shifter

Pentru construtia circuitului, presupunem 0 k 2p 1; ca s


a reprezent
am
valorilorile k ca ntregi f
ar
a semn, avem nevoie de p biti.
Atunci, pentru fiecare bit destinatie bi , 0 i n 1, construim un MUXp
care, n functie de num
arul de pozitii k de shiftare (k este valoarea de selectie a
multiplexorului), alege dintre ai , . . . , ai2p +1 (n cazul shift
arii la st
anga) sau
dintre ai+2p 1 , . . . , ai (n cazul shift
arii la dreapta), anume l alege pe aik .
Intr
arile multiplexoarelor care corespund unor aj inexistenti vor primi 0 (n cazul
shift
arilor logice) sau an1 (n cazul shift
arii aritmetice la dreapta).

Shifter

Dac
a desen
am generic aceast
a asociere evidentiind intr
arile legate la o iesire bi ,
obtinem:
pentru shiftarea la st
anga:

Shifter
pentru shiftarea la dreapta:

Shifter

Dac
a desen
am generic aceast
a asociere evidentiind iesirile la care este legat
ao
intrare ai , obtinem:
pentru shiftarea la st
anga:

Shifter
pentru shiftarea la dreapta:

Regul
a de tinut minte: fiecare ai se ramific
a de 2p ori spre directia de shiftare.

Shifter
Exemplu: Explicitati circuitele de shiftare pentru n = 4, p = 2.
Shiftarea logic
a la st
anga:

Shifter
Shiftarea logic
a la dreapta:

Shifter
Shiftarea aritmetic
a la dreapta:

Unitate aritmetica si logica


Unitate aritmetica si logica (ALU):
O unitate aritmetic
a si logic
a (arithmetic logic unit, ALU) pe n biti ALUn ,
n 1, este un circuit care aplic
a unor operanzi numere ntregi pe n biti o
operatie aritmetic
a sau logic
a selectat
a printr-un cod numeric; operanzii si
codul operatiei sunt dati prin reprezentarea lor n calculator ca sir de biti.
Simbol:

unde: a, b sunt operanzii (pe n biti), op este codul operatiei (pe k biti), r este
rezultatul (pe n biti), e este un sistem de p alte iesiri: carry out, overflow, etc.
(uneori, o parte din aceste iesiri se deseneaz
a n partea de jos a simbolului).
ALU implementeaz
a un num
ar t 2k de operatii, a.. valorile valide ale lui op
sunt doar t dintre numerele de la 0 la 2k 1 (nu neap
arat succesive).

Unitate aritmetica si logica

O implementare direct
a se poate face astfel:
- construim t blocuri 0 DS, care implementeaz
a operatiile considerate;
presupunem c
a valorile valide ale lui op sunt numerele succesive de la 0 la t 1;
not
am blocurile operatiilor corespunz
atoare acestor valori OP0 , . . ., OPt1 ;
- operanzii a si b intr
a simultan n blocurile OP0 , . . ., OPt1 ;
- fiecare iesire final
a ri sau ei , este aleas
a dintre iesirile corespunz
atoare cu
acelasi i ale blocurilor OP0 , . . ., OPt1 folosind un MUXk ce are ca selector pe
op (op intr
a simultan ca selector n toate aceste multiplexoare).

Unitate aritmetica si logica


Constructia circuitului:

Unitate aritmetica si logica

O implementare cu mai putine componente ar presupune s


a nu construim
blocuri separate pentru fiecare operatie ci s
a refolosim c
at mai multe
componente - de exemplu, sc
aderea se face cu sumatorul, dar introduc
and b si
cin negate.
O alt
a idee este s
a construim c
ate un ALU optimizat ca mai sus pentru fiecare
bit, iar ALU pe n biti s
a se obtin
a prin legarea n paralel a n ALU pe un bit.
Vom ilustra aceast
a ultima variant
a pe un caz particular: ALU32 folosit n
diversele variante de procesor MIPS care vor fi prezentate mai t
arziu.

Unitate aritmetica si logica


Simbol:

a (32b)

b (32b)

?
?
ALU Op @
- @
-Carry Out
(3b)
(1b)
@ ALU
?
efectueaz
a: +, , AND, OR, slt
Overflow (1b)
?
Result (a op b) (32b)
?
Zero (1b)

a, b, Result, sunt operanzii, respectiv rezultatul, operatiei (32 biti), ALU Op


este codul operatiei (3 biti), Carry out, Overflow , Zero sunt iesiri de 1 bit prin
care se emite 1 d.d. la efectuarea operatiei a existat transport sau mprumut n
bitul cel mai semnificativ, respectiv a avut loc dep
asire, respectiv rezultatul a
avut toti bitii 0.

Unitate aritmetica si logica

Acest ALU implementeaz


a operatiile: + (adunare), (sc
adere), AND (si pe
biti), OR (sau pe biti), slt, deci numai 5 dintre cele 8 numere naturale care
se pot scrie pe 3 biti: 0, . . . , 7, sunt valori valide ale lui op.
slt (set if less then) este operatia MIPS care se aplic
a la trei registrii:
slt reg1, reg2, reg3

1, dac
a reg 2 < reg 3
si efectueaz
a: reg 1 :=
0, altfel

Unitate aritmetica si logica


Operatia slt este util
a la implementarea calculelor booleene. De exemplu,
secventa de cod n limbajul C:
x = (a < b) && (c < d)
poate fi tradus
a de compilator n :
lw $t0, a
# se incarca operandul a din memorie in registrul $t0
lw $t1, b
# se incarca operandul b din memorie in registrul $t1
slt $t2, $t0, $t1
# registrul $t2 primeste valoarea 1/0 a expresiei a < b
lw $t0, c
# se incarca operandul c din memorie in registrul $t0
lw $t1, d
# se incarca operandul d din memorie in registrul $t1
slt $t3, $t0, $t1
# registrul $t3 primeste valoarea 1/0 a expresiei c < d
and $t0, $t2, $t3
# registrul $t0 primeste valoarea expresiei
#
(a < b) & (c < d) ("si" pe biti in limbajul C);
# intrucat $t2, $t3 pot contine 1 doar in bitul de rang 0,
#
aceasta este echivalenta cu
#
(a < b) && (c < d) ("si" in limbajul C);
sw $t0, x
# se scrie rezultatul din registrul $t0 in variabila x din memorie

Astfel, expresia conditional


a se evalueaz
a cu un cod ce se execut
a liniar, n
locul unor blocuri conditionale mbricate.

Unitate aritmetica si logica

Pentru constructia circuitului ALU32 , vom construi blocuri ALU1 (ALU pe 1


bit), apoi vom lega n paralel 32 asemenea blocuri.
ALU1 se construieste diferit n functie de rangul bitului: 0, 1 i 30, 31 (de
exemplu, valoarea 1/0 furnizat
a de slt este determinat
a la pozitia 31 si emis
a
ca rezultat la pozitia 0).
Vom nota aceste ALU1 cu ALU0, ALUi (1 i 30), respectiv ALU31 (a nu
se confunda notatia indexat
a ALUi , care nseamn
a ALU pe i biti, cu ALUi,
care nseamn
a ALU1 de la pozitia i).

Unitate aritmetica si logica


Cazul 0:
Simbol:

a, b sunt operanzii (1 bit);


lt este o informatie emis
a ca rezultat n cazul slt
(rezultatul pe 32 biti va fi |{z}
0 . . . 0 |{z}
0 sau |{z}
0 . . . 0 |{z}
1 );

b31
b0
b31
b0

binv este 0 sau 1 dup


a cum se va aduna a cu b sau a cu b;
+ 1);
(la adunare trebuie efectuat a + b, la sc
adere trebuie efectuat a + b
op este 0, 1, 2, 3 (reprezentat pe 2 biti) pentru a desemna respectiv operatiile
, , +/ (distinctia va fi f
acut
a de binv ), <; nu este intrarea ALU Op a lui
ALU32 , dar se calculeaz
a din aceasta si binv ;
r este rezultatul operatiei (1 bit);
P, G vor fi intr
ari pentru circuitul CL.

Unitate aritmetica si logica


Constructia circuitului:

Observatii:
- folosim HA, nu FA, deoarece 
asa este construit circuitul ADD cu CL;
0, n cazul +
- pentru pozitia 0, avem cin =
= binv ; de aceea binv se
1, n cazul
compune XOR cu s pentru a da r (a se vedea circuitul ADD cu CL);
- lt este generat de ALU1 de la pozitia 31 si emis prin pozitia 0.

Unitate aritmetica si logica


Cazul 1 i 30:
Simbol:

Unitate aritmetica si logica


Constructia circuitului:

Observatie: aici avem cin , care vine din CL , iar lt este mereu 0, deoarece
numai n pozitia 0 se poate emite ceva 6= 0 (la operatia lt rezultatul este
0 . . . 00 sau 0 . . . 01).

Unitate aritmetica si logica


Cazul 31:
Simbol:

Observatie: Apare n plus iesirea Set, care va intra ca lt n ALU de la pozitia 0.

Unitate aritmetica si logica


Constructia circuitului n cazul 31 este asem
an
atoare celei din cazurile
1 i 30, cu sigura diferent
a c
a iesirea din XOR iese si prin Set:

Intr-adev
ar, avem lt = 1 d.d. pentru operanzii pe 32 biti a si b avem a < b,
d.d. a b < 0, d.d. bitul de rang maxim al lui a b (i.e. s XOR cin n cazul
31) este 1; n cazul 31 el nu trebuie emis prin r (care trebuie s
a fie tot 0) ci
printr-o iesire separat
a Set.
Constructia lui ALU pe 32 biti este pe slide-ul urm
ator.

Unitate aritmetica si logica

Observatie: pentru slt se efectueaz


a sc
aderea si se testeaz
a dac
a rezultatul este
< 0, i.e. are bitul de rang 31 egal cu 1; acesta d
a intrarea lt din ALU de la
pozitia 0, dar este scos la pozitia 31 prin Set, deoarece la slt bitul de rang
maxim r31 al rezultatului trebuie s
a fie tot 0.

Unitate aritmetica si logica


Ctrl este un circuit 0 DS ce sintetizeaz
a din ALU Op pe binv si op, pe baza
urm
atorului tabel:

Exercitiu: Implementati acest circuit ca PLA, PROM (sau mai simplu,


observ
and c
a binv = ALU Op2 , op1 = ALU Op1 , op0 = ALU Op0 ).

Unitate aritmetica si logica


Detectie Overflow este un circuit 0 DS care detecteaz
a dep
asirea la +, ,
dup
a urm
atoarea regul
a:

Observatie: A avea dep


asire nu este totuna cu a avea transport/mprumut n
bitul cel mai semnificativ (desi poate exista o leg
atur
a ntre ele). De exemplu,
n limbajul C pe 32 biti, calculul 0 - 1 = -1 efectuat n cadrul tipului int
(numere ntregi pe 32 biti) are mprumut n bitul cel mai semnificativ (deoarece
pe biti se efectueaz
a 0 . . . 00 0 . . . 01 = 1 . . . 1), dar nu are dep
asire,
deoarece rezultatul 1 ncape n multimea de valori {231 , 231 1} a tipului
int.

Unitate aritmetica si logica


Conform regulilor de reprezentare a numerelor ntregi n complement fat
a de 2,
avem x 0 d.d. x31 = 1. Atunci tabelul de valori implementat de circuitul
Detectie Overflow este urm
atorul:

Observatie: Overflow are sens doar la +, si de aceea, n rest, spunem c


a
valoarea Overflow este 0.
Exercitiu: Implementati acest circuit ca PLA, PROM.

Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei

2 Aritmetica sistemelor de calcul


Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea

numerelor n matematic
a
numerelor n calculator
numerelor naturale ca ntregi f
ar
a semn
numerelor ntregi n complement fat
a de 2
numerelor reale n virgul
a mobil
a

3 Logica pentru calculatoare


Algebre booleene
Functii booleene
Particularizare la cazul B2

4 Circuite logice
Circuite logice, Sisteme digitale
0-DS (Circuite combinationale, Functii booleene)
1-DS (Memorii)
2-DS (Automate finite)

Cicluri
Sistemele 1-DS sunt sisteme 0-DS nchise prin exterior printr-un ciclu (mai
general, pot avea mai multe cicluri, dar un singur nivel de cicluri).
Apare un prim grad de autonomie a circuitului, prin stare - ea depinde doar
partial de intrare, ceea ce conduce la o independent
a partial
a a iesirii de intrare.
Evolutia iesirilor r
am
ane sub controlul intr
arilor, dar st
arile dau o autonomie
partial
a.
O alt
a caracteristic
a a 1-DS este c
a pot p
astra informatia de intrare pentru o
perioad
a determinat
a de timp, proprietate specific
a memoriilor - de aceea,
sistemele 1-DS sunt folosite pentru a construi diverse circuite de memorie
(RAM, registrii, etc.).
Informatia memorat
a este pus
a la dispozitia diverselor circuite n anumite faze
de lucru, de aceea trebuie s
a existe o sincronizare a operatiilor n desf
asurare,
a.. ele s
a poat
a conlucra corect si eficient.
Pentru aceasta se foloseste un dispozitiv general de control al circuitelor,
ceasul (CK) - el este un circuit bistabil ce asigur
a o discretizare a timpului de
calcul, f
ac
and posibil
a definirea unor notiuni temporale, ca: moment actual,
tact, istoric, dezvoltare ulterioar
a, etc.

Cicluri

Exist
a dou
a tipuri de cicluri ce nchid un CLC:
Cicluri stabile: contin un num
ar par de complement
ari;
ele genereaz
a o stare stabil
a si sunt utile n constructia circuitelor digitale.
Cicluri instabile: contin un num
ar impar de complement
ari;
ele genereaz
a o stare instabil
a la iesire si pot fi folosite la constructia ceasului.
Pentru a fi stabil, un circuit trebuie s
a treac
a printr-un num
ar par de
complement
ari pentru toate combinatiile binare aplicate la intrare (altfel,
pentru anumite combinatii, se destabilizeaz
a).

Cicluri
Exemplu: In figura de mai jos, circuitul (a) contine un ciclu instabil, circuitul
(b) contine un ciclu stabil:

In cazul (a), dac


a avem de exemplu starea y0 = 0 = x0 , atunci vom obtine la
iesire y1 = 0 si noua stare y0 = 1 = x0 , apoi vom obtine la iesire y1 = 1 si noua
stare y0 = 0 = x0 , etc.; astfel, cele dou
a iesiri ale decodificatorului sunt
instabile, comut
and de pe 0 pe 1 si invers.
Momentul de schimbare a valorii de iesire (din 0 n 1 si invers) defineste
frecventa circuitului si s.n. tact.
In cazul (b), dac
a avem de exemplu y1 = 0 = x0 , atunci starea y1 va fi fixat
a la
valoarea 0 iar la iesire vom avea constant y0 = 1; similar, dac
a y1 = 1 = x0 (la
iesire vom avea constant y0 = 0); deci, acest circuit are dou
a st
ari stabile.
Deocamdat
a ns
a nu stim cum s
a comut
am ntre st
ari, circuitul neav
and o
intrare prin care s
a putem controla schimbarea.

Cicluri
Exemplu: Consider
am urm
atorul circuit cu 3 niveluri de complementare (ciclu
instabil):

Dac
a la intrare aplic
am comanda C = 0, pe fiecare linie valoarea semnalului
r
am
ane constant
a, circuitul si conserv
a starea.
Dac
a aplic
am comanda C = 1, circuitul genereaz
a un semnal periodic.
Comportarea circuitului este descris
a de diagrama din dreapta.
Constat
am c
a este nevoie de un anumit timp pentru ca semnalul s
a se propage
prin circuit, timp care depinde de structura circuitului si natura fenomenelor
fizice folosite (am marcat cu arce intervalele de timp necesare propag
arii
semnalului la dou
a cicl
ari succesive).

Cicluri
Asa cum am v
azut si n exemplul precedent, schimbarea st
arii unui circuit nu
este instantanee si depinde de anumite caracteristici fizice si structurale ale
circuitului.
Vom nota cu tpLH intervalul de timp n care un circuit comut
a de la starea 0 la
starea 1 si cu tpHL intervalul de timp de trecere de la starea 1 la starea 0.
Ambele valori sunt numere 0 si considerate constante pentru un circuit; ele
nu sunt neap
arat egale ntre ele.

Situatia real
a este cea din figura (a) de mai sus.
Uneori se consider
a o situatie ipotetic
a, de schimbare instantanee a st
arilor, iar
evolutia se aproximeaz
a ca n figura (b).

Cicluri
Ceasul produce un semnal autonom cu perioad
a (frecvent
a) fix
a.
El se foloseste n logica secvential
a pentru a decide momentul n care trebuie
actualizat un element ce contine stare.
Un sistem actionat cu ceas se mai numeste si sistem sincronizat.
Semnalul de ceas are urm
atoarele componente:

Cicluri
La circuitele controlate de ceas, schimb
arile de stare se pot produce:
- fie n intervalul c
and semnalul este de nivel nalt (n acest interval modificarea
intr
arilor determin
a modificarea st
arii iesirii);
not
am acest lucru prin:
- fie pe un front de ceas, cresc
ator (ascendent) sau descresc
ator (descendent);
aceasta s.n. actionarea pe frontul ceasului si se noteaz
a:
, respectiv
actionarea pe front este mai bun
a, deoarece se poate preciza mai exact
momentul instal
arii noii st
ari.
In metodologia action
arii pe front, frontul cresc
ator / descresc
ator care
determin
a producerea schimb
arilor de stare s.n. front activ.
Alegerea lui depinde de tehnologia implement
arii si nu afecteaz
a conceptele
implicate n proiectarea logicii.
Constr
angerea principal
a ntr-un sistem sincronizat este c
a semnalul ce trebuie
scris n elementele de stare trebuie s
a fie valid (n particular stabil, s
a nu se mai
modifice p
an
a nu se modific
a intr
arile) la aparitia frontului de ceas activ.
De aceea, perioada ceasului trebuie s
a fie suficient de lung
a a.. semnalele
respective s
a se stabilizeze (exist
a o limit
a inferioar
a a perioadei).

Zavor elementar

In continuare, prezent
am principalele circuite cu un ciclu intern:

Zavor elementar eterogen

Zavor elementar cu ceas

Zavor de date

Structura master-slave

Flip-flop cu ntarziere

RAM

RAM

Registru serial

Registru paralel

Registru serial-paralel

Fisier de registri

Fisier de registri

Fisier de registri

Aplicatie la 1-DS
Exercitiu (aplicatie la 1-DS):

Aplicatie la 1-DS

Aplicatie la 1-DS

Aplicatie la 1-DS

Aplicatie la 1-DS

Coeficientii ai trebuie ns
a introdusi toti o dat
a si mentinuti la intrare la fiecare
tact, n timp ce coeficientii bj se introduc pe r
and, la tacti succesivi.

Aplicatie la 1-DS

Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei

2 Aritmetica sistemelor de calcul


Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea
Reprezentarea

numerelor n matematic
a
numerelor n calculator
numerelor naturale ca ntregi f
ar
a semn
numerelor ntregi n complement fat
a de 2
numerelor reale n virgul
a mobil
a

3 Logica pentru calculatoare


Algebre booleene
Functii booleene
Particularizare la cazul B2

4 Circuite logice
Circuite logice, Sisteme digitale
0-DS (Circuite combinationale, Functii booleene)
1-DS (Memorii)
2-DS (Automate finite)

Automate finite

Automate finite

Automate finite

Automate finite

Automate finite

Automate finite

Automate finite

Automatul DFF
Prezent
am c
ateva automate importante, ce pot fi folosite ca bistabili (flip-flop)
de eficient
a sporit
a:

In acest caz, Q + = D, iar y = Q (sau y = D cu nt


arziere de un tact).
Unui automat DFF trebuie s
a-i d
am comanda D = r , pentru a-l determina s
a
treac
a din starea curent
a Q = s n starea nou
a Q + = r (pe scurt: D = r ,
pentru s r ); la iesire va furniza starea curent
a s.

Automatul TFF

Automatul JKFF

Observatie: Dac
a la implementarea general
a a unui automat, n locul
bistabililor DFF (care sunt 1-DS) folosim automate DFF, TFF sau JKFF (care
sunt 2-DS), circuitul rezultat nu va mai fi un 2-DS, ci un 3-DS.

Aplicatie la 2-DS

Exercitiu (sinteza unui automat finit):


Construiti un automat finit care recunoaste aparitia secventei 1011 n cadrul
unei secvente binare citite succesiv (i.e. furnizeaz
a la iesire 1 d.d. ultimii 4 biti
cititi formeaz
a secventa 1011).
z }| {z }| {
Exemplu: IN: 0 1 0 1 0 1 1 0 1 1 1 0 0 1 1
OUT: 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0
Rezolvare: TODO

Aplicatie la 2-DS

TODO (au fost predate la curs sau laborator, iar unele au fost furnizate n
fisiere separate, le-am indicat mai jos):
- Alte circuite 2-DS:
Num
ar
ator (counter), Stiv
a, Sumator serial, Sumator prefix.
- Algoritmi de nmultire si mp
artire hardware
(fisierul as_ii.pdf).
- 3-DS (procesoare) si 4-DS (calculatoare).
- n-DS, n > 4, Stiv
a organizat
a ca n-DS cu n mare.
- Arhitectura MIPS
(fisierele _mips1b.txt, _mips2b.txt, _mips3c.txt)
- Procesorul MIPS cu 1 ciclu per instructiune (fisierul opi.pdf).
- Procesorul MIPS cu cicluri multiple (fisierul iccm_mic.pdf).

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