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-1sn-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 (1038 con mantissa a 7 cifre decimali): 8 bit Bit segno esponente excess-127 23 bit mantissa Double Precision (10308 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