ARCHITETTURA DEI SISTEMI ELETTRONICI LEZIONE N° 7 Tabella riassuntiva aritmetica Codici Aritmetica a virgola mobile A.S.E.
Tabella Riassuntiva Con riferimento a una word di “n” bit, si ha: K = 2n H =2n-1 W numero in base 2 da convertire W’ numero convertito A.S.E.
Modulo e segno Somma [-2n-1<(X+Y)<2n-1] X= -1s x * Valido se |X| > |Y|. Scambiare X e Y se |Y| > |X|. Il segno del risultato è il segno del numero con modulo maggiore. A.S.E.
Traslazione Somma [-2n-1(X+Y)<2n-1] X=x+T x=X-T Operazioni Attenzione: si è assunto T=2n-1 ma non è necessario (vedi virgola mobile) A.S.E.
Complemento a 1 Somma [-2n-1<(X+Y)<2n-1] X=x se >0, 2n-1-|x| se <0 Osservare che K non è possibile rappresentarlo su n bit * se il risultato è negativo è già rappresentato in C. 1, non è necessaria la correzione ** è sempre necessario aggiungere 1 per ottenere il risultato in C. 1 A.S.E.
Esempi Parola di 4 bit 3 + 4 = 7 5 + (-3) = 2 (-5) + 3 = (-2) 3 + 4 = 7 5 + (-3) = 2 (-5) + 3 = (-2) (- 4) +(-3) = -7 6 + 5 =11 (-6) + (-5) =(-11) 1 1 1 1 1 1 A.S.E.
Complemento a 2 Somma [-2n-1(X+Y)<2n-1] X=2n+x Osservare che K non è possibile rappresentarlo su n bit * Per X < |Y| il risultato è rappresentato in C. 2 ** Per Y < |X| il risultato è rappresentato in C. 2 *** Il risultato è rappresentato in C. 2 A.S.E.
Esempi Parola di 4 bit 3 + 4 = 7 5 + (-3) = 2 (-5) + 3 = (-2) 3 + 4 = 7 5 + (-3) = 2 (-5) + 3 = (-2) (- 4) +(-3) = -7 6 + 5 =11 (-6) + (-5) =(-11) 1 1 1 1 1 1 A.S.E.
Osservazioni Se la word si estende “K” bit si ha Esempio per numeri positivi si aggiungono in testa K zeri per numeri negativi si aggiungono in testa K uno Esempio Word di 4 bit Word di 6 bit 3 0.011 0.00011 4 0.100 0.00100 7 0.111 0.00111 -3 1.101 1.11101 -4 1.100 1.11100 -7 1.001 1.11001 A.S.E.
Estensione di segno Prova: In C2, X=|x+2n|2^n=Xn x se x>0 Xm=| x+2m|2^m= | 2n+x+2m-2n|2^m= | Xn+2m -2n |2^m se x<0 Ma |2m -2n|2^m= 10…000…0 – 00…010…0 01…110…0 1…11 Xn e Xn=1xxxxx in quanto <0 quindi 1…111xxxx se x<0 0…000xxxx se x>0 2m 2n A.S.E.
Codici E’ possibile rappresentare con notazione binaria insiemi di simboli arbitrari Cio’ avviene attraverso dei codici, che associano ad ogni simbolo un numero binario Codici di comune impiego sono: BCD Gray ASCII …. A.S.E.
BCD (Binary-Coded Decimal numbers) Necessità di rappresentare i numeri decimali in codice binario 8421 BCD si codifica in binario ciascuna cifra decimale utilizzando i primi 10 numeri binari su 4 bit Esempio 45310 0100 0101 0011 è possibile eseguire somme e sottrazioni in BCD A.S.E.
BCD – Sette Segmenti Per visualizzare le cifre decimali si usa frequentemente un Display a sette segmenti È possibile realizzare un codificatore BCD SETTE SEGMENTI a b c e f d g A.S.E.
Tabella di verità La tabella di verità risulta 8 4 2 1 a b c d e f g 3 3 5 6 7 9 A.S.E.
Codice di Gray Nel mondo reale, ad esempio nelle trasmissioni, i bit possono venire affetti da errore Nella codifica binaria, l’effetto dell’errore dipende dal bit “colpito” Supponiamo di trasmettere x=01101 (=13|10) Se il bit 0 viene affetto da errore (=x-x’) riceviamo x’=01100 = 12|10 |errore| = 1 Se il bit 4 viene affetto da errore riceviamo x’=11101 = 29|10 |errore| = 16 La codifica binaria non e’ robusta nei confronti di errori A.S.E.
Codice di Gray Nel codice Gray, due numeri consecutivi differiscono per un solo bit Esempio su 2 bit: Su 3 bit 00 1 01 2 11 3 10 000 1 001 2 011 3 010 4 110 5 111 6 101 7 100 Utile nelle macchine asincrone A.S.E.
Codici a rilevamento di errore Si puo’ aggiungere ridondanza ai dati per poter rilevare errori sulla parola L’esempio piu’ semplice e’ il bit di parita’ Data una parola su n bit, si aggiunge un n+1esimo bit di valore pari ad 1 se e solo se il numero di ‘uni’ nella parola e’ dispari 011010 0110101, 011011 0110110 In questo modo, la parola complessiva ha sempre parita’ pari a 0 se non ci sono errori Qualunque errore di un singolo bit viene rilevato Errori multipli possono passare inosservati A.S.E.
Errori nella rappresentazione In generale, la rappresentazione con un numero finito di cifre di un numero reale introduce errore Se lavoriamo con interi, possiamo convertire un numero decimale attraverso l’arrotondamento o il troncamento 11.6 12 (arr.) o 11 (tronc.) 10101.1101001 10110 (arr.) o 10101 (tronc.) Per numeri frazionari si procede in maniera analoga 11.6531 su 2 cifre decimali 11.65 (sia arr. che tronc.) A.S.E.
Errori di rappresentazione Attenzione ai numeri negativi in C2 -11.75 -12 (arr.) o –11(tronc.) In C2 -11.75 = - 01011.110 = -01011110 *23= 10100010 *23=10100.010 Arr. 10100 = tronc. -01100 = -12 Il troncamento in C2 tronca verso -! A.S.E.
Errori di rappresentazione Detta x* la rappresentazione di x, si definiscono due errori: Errore assoluto: A=|x-x*| Errore relativo: R=|x-x*|/|x| Supponiamo di operare con 3 cifre intere e 1 decimale 314.1592 A=0.0008, R=2.5464 10-6 0.0308 A=0.0008, R=2.5974 10-2 Inoltre, supponiamo di voler rappresentare distanze per uso scientifico: Atomi: 10-10m Galassie: 1021m A.S.E.
Rappresentazione esponenziale La rappresentazione fixed point (e quindi quella intera) hanno in A costante Esistono rappresentazioni con R costante 31415.9212 = 3.141592 104 0.00314159212 = 3.141592 10-3 Evidentemente, A e’ molto diverso nei due casi In generale, d0. d-1 d-2 d-3 …d-n 10espon. d0 0 In base 2, l’unica cifra diversa da 0 e’ 1…. A.S.E.
Rappresentazione esponenziale La parte frazionaria viene rappresentata in modulo&segno, l’esponente in traslazione In binario, b0. b-1 b-2 b-3 …b-n 2espon.+trasl = 1. b-1 b-2 b-3 …b-n 2espon.+trasl Quindi possiamo sottintendere la cifra b0=1 e non rappresentarla 0.375 0.101|21.0100 2-1 = 1.0100 2010 Si e’ usato traslazione 011 Si rappresentano solo le cifre sottolineate A.S.E.
Standard IEEE-754 s 1. b-1 b-2 b-3 …b-n 2exp s – bit di segno, 0 ’+’, 1’-’ b-1 b-2 b-3 …b-n – parte frazionaria o mantissa exp – esponente N Nexp Trasl. Singola Prec. 23 8 127 Doppia Prec. 52 11 1023 A.S.E.
Standard IEEE-754 Valori Speciali dell'Esponente: esponente = 255 mantissa = 0 infinito con segno +/-INF mantissa != 0 NaN (not a number, ad es., 0/0, infinito – infinito) esponente = 0 mantissa = 0 zero mantissa != 0 denormalizzato (-1)s(0.m)(2-126) A.S.E.
Aritmetica in Virgola Mobile Consideriamo X=XMxBXE Somma Z = X+Y=(XM2 XE-YE +YM)x2YE Sottrazione Z = X-Y=(XM2XE-YE-YM)x2YE Moltiplicazione Z = XxY=(XMxYM)x2XE+YE Divisione Z = X÷Y=(XM÷YM)x2XE-YE Somma e sottrazione sono più complesse di moltiplicazione e divisione! Occorre allineare gli esponenti prima di effettuare l’operazione Slides adattate da webservices.polito.it/.../architettura_dei_calcolatori/ lucidi/aa1998-99/aritm-virg-mob.PDF A.S.E.
Somma e Sottrazione Richiedono che gli esponenti siano uguali prima di eseguire la somma (sottrazione) delle mantisse. La sottrazione può essere ricondotta alla somma cambiando il segno del sottraendo. La procedura si compone di 4 passi: identificazione di operandi nulli allineamento degli esponenti somma o sottrazione delle mantisse normalizzazione del risultato. A.S.E.
Identificazione di Operandi Nulli A.S.E.
Allineamento degli Esponenti A.S.E.
Somma/Sottrazione delle Mantisse A.S.E.
Normalizzazione del Risultato A.S.E.
Moltiplicazione e Divisione Si compongono delle seguenti fasi: identificazione di operandi nulli somma/sottrazione degli esponenti moltiplicazione/divisione delle mantisse normalizzazione e arrotondamento. A.S.E.
Somma/Sottrazione degli Esponenti A.S.E.
Polarizzazione dell’Esponente Se si esegue la somma/sottrazione su esponenti polarizzati, al termine è necessario sottrarre o sommare il valore della polarizzazione. Esempio Si supponga che il valore di polarizzazione sia 8. X E = 15 = 7+8 Y E = 5 = -3+8 ------------------------------------------ 20 = 4+8+8 Correzione: si sottrae 8. A.S.E.
Situazioni Particolari Se la mantissa diventa nulla, bisogna azzerare anche l’esponente. Nel caso di overflow ed underflow derivanti da operazioni sulla mantissa, si può riparare scalando la mantissa e incrementando/decrementando l'esponente. Nel caso di underflow ed overflow dell'esponente si deve produrre una segnalazione di errore. A.S.E.