Documente Academic
Documente Profesional
Documente Cultură
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
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
4 Circuite logice
Circuite logice, Sisteme digitale
0-DS (Circuite combinationale, Functii booleene)
1-DS (Memorii)
2-DS (Automate finite)
Bibliografie:
Adrian Atanasiu:
Arhitectura calculatorului,
Ed. InfoData, 2006
Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei
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
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
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
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:
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
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))
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
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
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 ?
Exercitiu rezolvat
Rezolvare:
Din enunt ni se dau:
(3)
ip
A
FB = TCBB = 1.2C
=
TB
= 800 MHz
Comentariu:
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:
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
CPI
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
Masurarea performantei
Din formulele
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
este greu de m
asurat - el depinde de program, de date si de arhitectur
a
(mp
artirea instructiunilor n cicli).
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
media numerelor
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.
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
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
1
2
A
2
4
B
1
1
C
2
1
Exercitiu rezolvat
Rezolvare:
a) Not
am:
Exercitiu rezolvat
b) Not
am:
Exercitiu rezolvat
c) Not
am:
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
MIPS =
106 la numitor,
I
(8)
T 106
m
asurat
a n milioane de instructiuni pe secund
a (millions instructions per
second).
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
Consider
am dou
a programe si niste date, pentru care s-au m
asurat:
Program
programul
programul
1
2
A
5
10
B
1
1
C
1
1
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:
Exercitiu rezolvat
a) Folosind formula (6), avem:
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
Exercitiu rezolvat
b) 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
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
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
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
4 Circuite logice
Circuite logice, Sisteme digitale
0-DS (Circuite combinationale, Functii booleene)
1-DS (Memorii)
2-DS (Automate finite)
|
b
|-------| cat0 |
b
.
|-------.
| cat1
.
.
Obtinem reprezentarea:
rest1
.
C1
.
cat(n-1) |
b
.
|-------.
| 0
.
restn
Cn
<======= citim
-----------Cn ... C1 C0
| 16
|----| 264 | 16
16 |------ | 16 | 16
104
16 |----96
-- | 1 | 16
-0
0 |----==8
0
- | 0
8
1
1
<=======
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
|
|
|
|
|
|
|
|
1
0
0
1
0
1
1
/\
||
||
||
||
||
||
- 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;
|
|
|
|
1
1
1
/\
||
||
|
|
|
|
|
zecimala_1
zecimala_2
|
|
|
|
|
1
1
0
0
||
||
||
\/
|| citim
||
||
||
\/
Exemplu: (7.8)5 = ?
7
1
0
|
|
|
2
1
0.8
0
|
|
4
stop, am intalnit partea fractionara 0
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.
Exemplu: (4.(3))2 = ?
4
2
1
0
|
|
|
|
0
0
1
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)
baza b1 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.
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
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.
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.
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.
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
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
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
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
&
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
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
Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei
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
4 Circuite logice
Circuite logice, Sisteme digitale
0-DS (Circuite combinationale, Functii booleene)
1-DS (Memorii)
2-DS (Automate finite)
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.
<-----|
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).
Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei
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
4 Circuite logice
Circuite logice, Sisteme digitale
0-DS (Circuite combinationale, Functii booleene)
1-DS (Memorii)
2-DS (Automate finite)
[.]n :=
[.]sn
: {2
n1
,...,2
n1
1} Cn ,
[x]sn
x 0
x <0
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.
Ne putem imagina c
a intervalul {128, . . . , 127} este parcurs circular:
<-----------|
[------------|------------]
-128|
0
|127
------------->
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
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).
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.
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
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
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:
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).
Constat
am c
a notatia stiintific
a normalizat
a pentru un num
ar real nenul este
unic
a.
b0
fractie (n k 1 biti)
k1
bias = 2
iar n c
ampul de
n si k (sau de p , Emin ,
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;
Numerele de forma
s {0, 1},
c1 , . . . , cp1 {0, 1} si cel putin unul dintre ci
este
s {0, 1}.
Ele sunt reprezentate astfel:
bn1 = s , semnul;
+, 1 = );
bn2 . . . bnk1 = 2 1, reprezentat prin sirul de biti 1 . . . 1;
bnk2 . . . b0 = 0 . . . 0, fractia nula.
k
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;
k1
[22
n+k
k1
n+k
(2nk 1)]
[0, 22
k1
n+k
(2nk 1)]
22
+2
|0.0 .{z
. . 01}2 = 22
k1
n+k+3
reprezentat:
0 0| .{z
. . 0} 0| . .{z. 0 1}
|{z}
22
1.1
. . . 1}2 = 22
| {z
k1
n+k
(2nk 1),
reprezentat:
0 1| . .{z. 1 0} 1| .{z
. . 1}
|{z}
[2 , 2
i+1
(0, 22
[22
k1
k1
n+k+3
n+k+3
n+k+3
k1
, 22
+3
sunt
k1
[22 1 , 22
2k1 n+k
sunt reprezentate cu pasul 2
.
n+k
(2nk 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
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
...
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)
0 |1 . .{z
. 1 0} 1| .{z
. . 1}
|{z}
s(1)
c(k)
f(n-k-1)
+:
. . 0}
0 1| .{z
. . 1} 0| .{z
|{z}
s(1)
c(k)
f(n-k-1)
ceea ce exprim
a ideea c
a
n = 1 + k + (p 1) = k + p .
Rezult
a:
2126 0.0
. . 01}2 = 2149 ,
| .{z
24 cifre ale mantisei
reprezentat:
0 0| .{z
. . 0} 0| . .{z. 0 1}
|{z}
2127 1.1
. . . 1}2 = 2104 (224 1),
| {z
24 cifre ale mantisei
reprezentat:
0 1| . .{z. 1 0} 1| .{z
. . 1}
|{z}
149
(0, 2149 )
[2149 , 2125 ]
Pentru orice
...
(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
...
pas 2149
= 2126
...
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)
...
0 1
. . 0} = 2126 1.0 . . . 02
|{z}
| . . .{z1 0 1} 0
| .{z
s(1)
c(8)
f(23)
...
= 2126
pas 2103
...
= 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)
21022 0.0
. . 01}2 = 21074 ,
| .{z
53 cifre ale mantisei
reprezentat:
0 0| .{z
. . 0} 0| . .{z. 0 1}
|{z}
21023 1.1
. . . 1}2 = 2971 (253 1),
| {z
53 cifre ale mantisei
reprezentat:
0 1| . .{z. 1 0} 1| .{z
. . 1}
|{z}
1074
(0, 21074 )
[21074 , 21021 ]
Pentru orice
...
(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
...
pas 21074
= 21022
...
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)
...
. . 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.
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
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
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
C0980000
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
C013000000000000
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
Orice r
ad
acin
a p
atrat
a valid
a va avea semnul +, mai putin 0, care va fi 0.
(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.
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).
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.
(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.
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.
1
16
= 0.0625.
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.
1
2
+ 14 )
1
8
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:
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
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
Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei
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
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
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
4 Circuite logice
Circuite logice, Sisteme digitale
0-DS (Circuite combinationale, Functii booleene)
1-DS (Memorii)
2-DS (Automate finite)
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
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 .
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
Multimi ordonate
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
Latici
Def: S.n. latice Ore o multime ordonat
a hA, i a.. x, y A,
inf{x, y }
sup{x, y }
Latici
Cele dou
a notiuni de latice definite mai devreme sunt echivalente, mai exact:
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
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
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
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
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
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
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
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
f (x1 , . . . , xn ) = f (x1 , . . . , xn )
d
0(x1 , . . . , xn ) = 0
d
1(x1 , . . . , xn ) = 1
Functii booleene
Bn
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
(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}
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
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
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:
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
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)
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
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
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:
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
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
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
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
Algebra booleana B2
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
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
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
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
4 Circuite logice
Circuite logice, Sisteme digitale
0-DS (Circuite combinationale, Functii booleene)
1-DS (Memorii)
2-DS (Automate finite)
Circuite logice
Circuite logice
Portile 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:
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:
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:
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:
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:
Circuite logice
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
Circuite logice
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
Circuite logice
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:
Circuite logice
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:
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:
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
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:
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 ):
Sisteme digitale
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
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
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
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
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
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:
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):
PLA si PROM
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:
Decodificator
n
DCDn implementeaz
a o functie f : B2 B2
2n
av
and urm
atorul tabel de valori:
Decodificator
Pentru n = 1 obtinem decodificatorul elementar (elementary decoder),
EDCD; simbolizare:
Constructie:
Decodificator
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
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:
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:
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
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
Multiplexor
Dac
a folosim un decodificator cu iesirile negate, n constructia multiplexorului
se interschimb
a portile nou ad
augate AND si OR:
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
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:
Multiplexor
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
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
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:
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 :
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:
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:
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:
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:
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.
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
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
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
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
Comparator
Atunci, putem construi comparatorul astfel:
Comparator
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
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:
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).
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).
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)
b31
b0
b31
b0
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.
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).
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.
Cuprins
1 Performata calculatoarelor
Conceptul de performant
a
M
asurarea performantei
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
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:
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 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
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
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:
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
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).