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 Modulo e Segno Complemento a 1 Complemento a 2
Addizione di numeri positivi xi yi ci si ci+1 0 0 1 0 1 1 0 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 si ci ci+1 Adder x0 y0 s0 c0 c1 Adder x1 y1 s1 cn-1 ….. xn-1 yn-1 sn-1 cn c2
??? 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= xi yi 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 c0 c4 s3 s2 s1 s0 x3 s1 c0 c4 Adder x2 x1 x0 s0 s2 s3 x7 s5 c8 x6 x5 x4 s4 s6 s7 ….. x31 s29 c31 c32 x30 x29 x28 s28 s30 s31
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-1sn-1 + xn-1 yn-1sn-1
Moltiplicazione tra numeri positivi Molt.do Parz. m q ci-1 ci s A Molt.ore m7 m6 m0 m5 m4 m3 m2 m1
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 1 x “” 1 0 -1 x “” 1 1 0 x “” Es: 110110 0-1+10-10
Codifica a coppie di bit Risultato 1 +1 +2 -2 -1 Es: 11010 00-1+1-10 0 -1 -2
Divisione tra interi n-1 n-1 Registro A Quoziente Left shift Sommatore n-1 n-1 Registro A Quoziente Left shift Sommatore a n bit Macchina Sequenziale di controllo Add/Sub Divisore n-1
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 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 23 bit esponente excess-127 mantissa Bit segno
Rappresentazione Floating Point Single Precision (1038 con mantissa a 7 cifre decimali): 8 bit 23 bit esponente excess-127 mantissa Bit segno Double Precision (10308 con mantissa a 16 cifre decimali): 11 bit 52 bit esponente excess-1023 mantissa Bit segno
Operazioni Floating Point Somma e differenza 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: Sommare gli esponenti e sottrarre 127 2. Prodotto delle mantisse 3. Normalizzare il risultato
Operazioni Floating Point Divisione: Sottrarre gli esponenti e sommare 127 2. Divisione delle mantisse 3. Normalizzare il risultato
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
Standard IEEE per operazioni Floating Point 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