ARITMETICAARITMETICABINARIABINARIA
Rappresentazione BinariaRappresentazione 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 segnoRappresentazione Numeri con segno
1. Modulo e Segno
2. Complemento a 1
3. Complemento a 2
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
Addizione di numeri positiviAddizione di numeri positivi
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 SommatoreStruttura di un Sommatore
si= xi yi ci + xi yi ci + xi yi ci + xi yi ci
yi
xi
si
ci
Struttura di un SommatoreStruttura di un Sommatore
ci= yi ci + xi ci + xi yi
yi
xi
ci+1
ci
Sommatore a propagazione di riportoSommatore a propagazione di riporto
xi yi
si
cici+1Adder
x0 y0
s0
c0
c1Adder
x1 y1
s1
cn-1
Adder…..
xn-1 yn-1
sn-1
Addercn c2
PrestazioniPrestazioni
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 + efficienteRete 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
Gi= xi yi Pi= (yi + xi )
G = funzione di generazione
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 riportoSommatore ad anticipo di riporto
x3
s1
c0c4Adder
c4= G3 + P3G2 + P3 P2G1 + P3 P2 P1G0 + P3 P2 P1P0c0
x2 x1 x0
s0s2s3
x3
s1
c0
c4Adder
x2 x1 x0
s0s2s3
x7
s5
c8Adder
x6 x5 x4
s4s6s7
…..
x31
s29
c31c32Adder
x30 x29 x28
s28s30s31
Addizione e sottrazione con segnoAddizione e sottrazione con segno
SOMMAsommare bit a bit le rappresentazionidei due addendi ignorando il riportodalla posizione più significativa.
DIFFERENZA
sommare il numero con il complemento a 2 del sottraendo.
Risultato [-2n-1, 2n-1 –1] OVERFLOW
OVERFLOWOVERFLOW
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 sommanonumeri concordi in segno
il riporto non è sufficiente
Condizione di OverflowCondizione di Overflow
Se i due addendi hanno segno concorde l’overflowsi verifica quando la somma ha segno diverso daQuello degli addendi
OVERFLOW = xn-1 yn-1sn-1 + xn-1 yn-1sn-1
Moltiplicazione tra numeri positiviMoltiplicazione tra numeri positiviMolt.do
Molt.ore
0
0
0
0
0000
m0m1m2m3m4m5m6m7
Parz. m
q
ci-1
ci
s
A
Algoritmo di BoothAlgoritmo di Booth
Si verifica con le seguenti regole scorrendo il numero binarioDa destra a sinistra
bit i+1 bit i
0 0 0 x Moltiplicando
0 1 1 x “”
1 0 -1 x “”
1 1 0 x “”
Es: 110110 0-1+10-10
Codifica a coppie di bitCodifica 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 interiDivisione tra interi
Sommatorea n bit
0n-1 0
0
n-1
n-1
Registro A Quoziente
Divisore
Macchina Sequenzialedi controllo
Add/Sub
Left shift
Rappresentazione Floating PointRappresentazione 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 PointRappresentazione Floating Point
B = bn-1 bn-2….. b1 b0.
V(B) = -b0 • 20+…..+ b-(n-2) • 2-(n-2)+ b-(n-1) • 2-(n-1)
B = b0. b-1….. b - (n-2) b- (n-1)
Rappresenta numeri nell’intervallo:
-1 V(B) 1 –2-(n-1)
Rappresentazione Floating PointRappresentazione 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 PointRappresentazione 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 23 bit
Bit segno
esponenteexcess-127
mantissa
Rappresentazione Floating PointRappresentazione Floating Point
8 bit 23 bit
Bit segno
esponenteexcess-127
mantissa
Single Precision (1038 con mantissa a 7 cifre decimali):
Double Precision (10308 con mantissa a 16 cifre decimali):
11 bit 52 bit
Bit segno
esponenteexcess-1023
mantissa
Operazioni Floating PointOperazioni 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
3. Eseguire la somma o la differenza tra le mantisse
2. Assegnare al risultato l’esponente più grande
4. Normalizzare il risultato
Operazioni Floating PointOperazioni Floating Point
Prodotto:
1. Sommare gli esponenti e sottrarre 127
3. Normalizzare il risultato
2. Prodotto delle mantisse
Operazioni Floating PointOperazioni Floating Point
Divisione:
1. Sottrarre gli esponenti e sommare 127
3. Normalizzare il risultato
2. Divisione delle mantisse
ApprossimazioneApprossimazione
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
ApprossimazioneApprossimazione
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
PROCESSORIPROCESSORIA CONFRONTOA CONFRONTO
Processor PerformancesProcessor Performances
Processor PerformancesProcessor Performances