ARITMETICA
BINARIA
Rappresentazione Binaria
Un numero binario è un vettore di n bit:
B = bn-1 bn-2….. b1 b0
con bi  {0,1} con 0  i  n-1
questo vettore rappresenta valori interi positivi V(B)  {0,2n-1}
V(B) = bn-1 • 2n-1+…..+ b1 • 21+ b0 • 20
Rappresentazione Numeri con segno
1. Modulo e Segno
2. Complemento a 1
3. Complemento a 2
Addizione di numeri positivi
xi
yi
ci
si
ci+1
0
0
0
0
0
0
0
1
1
0
0
1
0
1
0
0
1
1
0
1
1
0
0
1
0
1
0
1
0
1
1
1
0
0
1
1
1
1
1
1
si= xi  yi ci + xi yi ci + xi yi ci + xi yi ci
ci+1= xi yi ci + xi yi ci + xi yi ci + xi yi ci
= yi ci + xi ci + xi yi
Struttura di un Sommatore
si= xi  yi ci + xi yi ci + xi yi ci + xi yi ci
xi
yi
ci
si
Struttura di un Sommatore
ci= yi ci + xi ci + xi yi
xi
yi
ci
ci+1
Sommatore a propagazione di riporto
xi
yi
Adder
ci+1
ci
si
xn-1
x1
yn-1
cn
cn-1
Adder
sn-1
…..
y1
c2
Adder
s1
x0
c1
y0
Adder
s0
c0
Prestazioni
Operazione di somma in un ciclo di clock
Clock = 100 Mhz
Ciclo = 10 ns
Ritardo ci e ci+1 = 1 ns
Ritardo per p.l. = 0.5 ns
Tempo x 32 bit = (31x1)+1.5 = 32.5ns > 10ns
Adottare una tecnologia più veloce
Struttura di rete logica più efficiente
Rete logica + efficiente
si= xi  yi ci + xi yi ci + xi yi ci + xi yi ci
ci+1= yi ci + xi ci + xi yi
ci+1= xi yi + (yi + xi )ci
G = funzione di generazione
Gi = x i y i
Pi= (yi + xi )
P = funzione di propagazione
ci+1= Gi + PiGi-1 + Pi Pi-1Gi-2 + ….. + Pi Pi-1 …. P1G0 + Pi Pi-1 …. P0c0
Sommatore ad anticipo di riporto
c4= G3 + P3G2 + P3 P2G1 + P3 P2 P1G0 + P3 P2 P1P0c0
x3 x2 x1 x0
Adder
c4
s3 s2
x31 x30x29 x28
c32
Adder
s31 s30 s29 s28
c31
…..
c8
c0
s1 s0
x7 x6 x5 x4
Adder
s7 s6 s5 s4
x3 x2 x1 x 0
c4
Adder
s3 s2 s1 s0
c0
Addizione e sottrazione con segno
SOMMA
sommare bit a bit le rappresentazioni
dei due addendi ignorando il riporto
dalla posizione più significativa.
DIFFERENZA
sommare il numero con il complemento
a 2 del sottraendo.
Risultato [-2n-1, 2n-1 –1]
OVERFLOW
OVERFLOW
Per numeri positivi il riporto è un indicatore di overflow
Non valido per aritmetica con segno
Verificare per : (+7) + (+4)
e
(-4) + (-6)
Regole per l’overflow
si verifica quando si sommano
numeri concordi in segno
il riporto non è sufficiente
Condizione di Overflow
Se i due addendi hanno segno concorde l’overflow
si verifica quando la somma ha segno diverso da
Quello degli addendi
OVERFLOW = xn-1 yn-1sn-1 + xn-1 yn-1sn-1
Moltiplicazione tra numeri positivi
Parz.
Molt.do
m
0
0
0
0
0
q
ci
A
Molt.ore
ci-1
0
s
0
0
m7
m6
m5
m4
m3
m2
m1
m0
Algoritmo di Booth
Si verifica con le seguenti regole scorrendo il numero binario
Da destra a sinistra
bit i+1 bit i
0
0
0 x Moltiplicando
0
1
1x
“”
1
0
-1 x
“”
1
1
0x
“”
Es: 110110

0-1+10-10
Codifica a coppie di bit
Bit
i+1
Bit
i
Bit
i-1
Risultato
0
0
0
0
0
0
1
+1
0
1
0
+1
0
1
1
+2
1
0
0
-2
1
0
1
-1
1
1
0
-1
1
1
1
0
Es: 11010  00-1+1-10 
0 -1 -2
Divisione tra interi
0
n-1
Registro A
0
n-1
Quoziente
Left shift
Sommatore
a n bit
Add/Sub
Divisore
n-1
0
Macchina
Sequenziale
di controllo
Rappresentazione Floating Point
Un numero binario è un vettore di n bit:
B = bn-1 bn-2….. b1 b0
con bi  {0,1} con 0  i  n-1
questo vettore rappresenta valori interi positivi V(B)  {0,2n-1}
V(B) = bn-1 • 2n-1+…..+ b1 • 21+ b0 • 20
Rappresentazione Floating Point
B = bn-1 bn-2….. b1 b0.
B = b0. b-1….. b - (n-2) b- (n-1)
V(B) = -b0 • 20+…..+ b-(n-2) • 2-(n-2)+ b-(n-1) • 2-(n-1)
Rappresenta numeri nell’intervallo:
-1  V(B)  1 –2-(n-1)
Rappresentazione Floating Point
Se n=32
Come Interi:
[-231, 231]

[-2.15 x 109, 2.15 x 109 ]
Come floating point:
[ -1, 1-2-31]  [-1, 1[
con precisione fino a 4.66 x 10-10
Rappresentazione Floating Point
 m0. m1 m2 m3 m4 m5 m6 x 10  xy
Rappresenta numeri:
[-1.0 x 1099 , 1.0 x 1099]
Con 32 bit:
8 bit
Bit segno
esponente
excess-127
23 bit
mantissa
Rappresentazione Floating Point
Single Precision (1038 con mantissa a 7 cifre decimali):
8 bit
Bit segno
esponente
excess-127
23 bit
mantissa
Double Precision (10308 con mantissa a 16 cifre decimali):
11 bit
Bit segno
esponente
excess-1023
52 bit
mantissa
Operazioni Floating Point
Somma e differenza
1.
Prende il numero con esponente più piccolo
e shiftare la mantissa a sinistra un numero
di volte pari alla differenza dei due esponenti
2. Assegnare al risultato l’esponente più grande
3.
Eseguire la somma o la differenza tra le mantisse
4. Normalizzare il risultato
Operazioni Floating Point
Prodotto:
1.
Sommare gli esponenti e sottrarre 127
2. Prodotto delle mantisse
3.
Normalizzare il risultato
Operazioni Floating Point
Divisione:
1.
Sottrarre gli esponenti e sommare 127
2. Divisione delle mantisse
3.
Normalizzare il risultato
Approssimazione
Chopping (approssimazione polarizzata (biased)):
Da 0. b-1 b-2 b-3 000
a 0. b-1 b-2 b-3 111
0. b-1 b-2 b-3
Arrotondamento di Von Neumann (approssimazione unbiased):
Se 0. b-1 b-2 b-3 000

0. b-1 b-2 b-3
Se 0. b-1 b-2 b-3 xxx con almeno un x=1 
 0. b-1 b-2 1
Approssimazione
Arrotondamento:
Se 0. b-1 b-2 b-3 xyz se x=0 allora 0. b-1 b-2 b-3
Se 0. b-1 b-2 b-3 xyz se x=1 allora 0. b-1 b-2 b-3 + 0.001
Errore da –1/2 a +1/2
Standard IEEE per operazioni Floating Point
PROCESSORI
A CONFRONTO
Processor Performances
Processor Performances
Scarica

Lezione 7