Lezione 6. Lezione 6

Documenti analoghi
Architetture aritmetiche

Firmware Division & Floating pointer adder

Lezione 7 ALU: Moltiplicazione e divisione

Architettura degli Elaboratori

Firmware Division & Floating gpointer adder

Somma di numeri floating point. Algoritmi di moltiplicazione e divisione per numeri interi

Lezione 4. Lezione 4. Rappresentazioni numeriche. Rappresentazioni numeriche. Rappresentazioni numeriche. Rappresentazioni numeriche

Lezione 7 Sommatori e Moltiplicatori

0ROWLSOLFD]LRQHH'LYLVLRQH WUDQXPHULUHODWLYL

Addizionatori: metodo Carry-Lookahead. Costruzione di circuiti combinatori. Standard IEEE754

Calcolo numerico e programmazione Rappresentazione dei numeri

Moltiplicazione e Divisione tra numeri relativi

Lezione 4. Lezione 4. Rappresentazioni numeriche. Rappresentazioni numeriche. Rappresentazioni numeriche. Rappresentazioni numeriche

Lezione 4. Lezione 4

Firmware Division. Prof. Alberto Borghese Dipartimento di Informatica Università degli Studi di Milano

Moltiplicazioni e Divisioni. G. Michele Pinna (1)

Rappresentazione dei numeri reali in un calcolatore

Aritmetica dei Calcolatori Elettronici

Numeri reali. Notazione scientifica (decimale) Floating Point. Normalizzazione. Esempi. Aritmetica del calcolatore (virgola mobile)

La codifica. dell informazione

Somma di numeri binari

La rappresentazione dei numeri. La rappresentazione dei numeri. Aritmetica dei calcolatori. La rappresentazione dei numeri

Rappresentazione numeri relativi e reali

Analogico vs. Digitale. LEZIONE II La codifica binaria. Analogico vs digitale. Analogico. Digitale

Esercitazione del 09/03/ Soluzioni

UNIVERSITÁ POLITECNICA DELLE MARCHE

Lezione 4. Sommario. L artimetica binaria: I numeri relativi e frazionari. I numeri relativi I numeri frazionari

Conversione binario-decimale. Interi unsigned in base 2. Esercitazioni su rappresentazione. dei numeri e aritmetica

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Laboratorio del 21/10/2010- Numeri binari e conversione

Rappresentazione dei Numeri

Sistemi di Numerazione Binaria

Esercitazione del 2/3/2010- Numeri binari e conversione

La rappresentazione dei dati

Rappresentazione di Numeri Reali. Rappresentazione in virgola fissa (fixed-point) Rappresentazione in virgola fissa (fixed-point)

Calcolatori Elettronici Parte III: Sistemi di Numerazione Binaria

CONVERSIONE DA DECIMALE A BINARIO

Rappresentazione di numeri interi

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

LA TRASMISSIONE DELLE INFORMAZIONI SECONDA PARTE 1

Note sull implementazione in virgola fissa di filtri numerici

Codifica. Rappresentazione di numeri in memoria

Architettura hardware

Moltiplicazione. Divisione. Multipli e divisori

Fondamenti di Informatica - 1. Esercizi A.A. 2011/2012

La codifica binaria. Sommario

Architettura degli Elaboratori

Sistema Numerico Decimale

Sperimentazioni di Fisica I mod. A Lezione 3

Lezione 3. I numeri relativi

Appunti di informatica. Lezione 3 anno accademico Mario Verdicchio

I sistemi di numerazione e la numerazione binaria

FUNZIONI BOOLEANE. Vero Falso

Lezione 2. La conoscenza del mondo

Lezione 7 Sommatori e Moltiplicatori

I sistemi di numerazione. Informatica - Classe 3ª, Modulo 1

Aritmetica in virgola mobile Algebra di Boole e reti logiche Esercizi. Mercoledì 8 ottobre 2014

Esercitazioni di Reti Logiche. Lezione 4

PSPICE simulazione di circuiti digitali Flip Flop M/S, Moltiplicatore parallelo, Memoria SRAM, sommatore, comparatore

Il Sistema di numerazione decimale

Rappresentazione dell informazione. Argomenti trattati: Codifica: Teoria generale. Proprietà di una codifica:

Aritmetica dei Calcolatori

Indice. Prefazione. sommario.pdf 1 05/12/

Rappresentazione dell informazione

GLI ERRORI. Problema. valutare l'accuratezza del risultato di un calcolo e quindi l'affidabilità del risultato stesso. Prof.

Un monomio è in forma normale se è il prodotto di un solo fattore numerico e di fattori letterali con basi diverse. Tutto quanto sarà detto di

ACCURATEZZA. L accuratezza esprime la vicinanza del risultato al valore vero o accettato come tale. PRECISIONE

Lezione 1. Lezione 1. Microcontrollori (mc) Microcontrollori (mc) Microcontrollori (mc) Microcontrollori (mc) Materiale di riferimento.

Rappresentazione dell Informazione

7 2 =7 2=3,5. Casi particolari. Definizione. propria se < impropria se > e non è multiplo di b. apparente se è un multiplo di. Esempi.

Argomenti trattati: Rappresentazione dell informazione. Proprietà di una codifica: Codifica: Teoria generale

Algebra di Boole e porte logiche

Conversione di base. Conversione decimale binario. Si calcolano i resti delle divisioni per due

I sistemi di numerazione

Rappresentazione dell informazione. Argomenti trattati: Codifica: Teoria generale. Proprietà di una codifica:

Gli errori nella risoluzione di un problema

4 + 7 = 11. Possiamo quindi dire che:

= < < < < < Matematica 1

Riassunto Nell'esercitazione di oggi e' stata introdotta la codifica binaria naturale, intera e razionale in virgola fissa. Il materiale teorico

Sistemi di numerazione

Il Modello di von Neumann (2) Prevede 3 entità logiche:

Rappresentazione dei dati in memoria

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Il processore. Istituzionii di Informatica -- Rossano Gaeta

Calcolatori Elettronici Parte II: Sistemi di Numerazione Binaria. Prof. Riccardo Torlone Università di Roma Tre

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU

Informatica Generale 1 - Esercitazioni Flowgraph, algebra di Boole e calcolo binario

Rapida Nota sulla Rappresentazione dei Caratteri

Circuiti Combinatori

Cap. 2 - Rappresentazione in base 2 dei numeri interi

Rappresentazione e Codifica dell Informazione

La "macchina" da calcolo

Abilità Informatiche e Telematiche

1. Si effettui la divisione di 7/5 utilizzando un efficiente algoritmo e illustrando la corrispondente architettura hardware.

Blocchi di più parole

Rappresentazione dei numeri binari.

Codice binario. Codice. Codifica - numeri naturali. Codifica - numeri naturali. Alfabeto binario: costituito da due simboli

Esercitazione Informatica I (Parte 1) AA Nicola Paoletti

Lo schema seguente presenta le principali informazioni che devono essere rappresentate mediante codici binari.

La codifica. dell informazione

Transcript:

Lezione 6 Sommario Moltiplicatori veloci a look-up table Moltiplicatori veloci a matrice Divisione Circuiti per aritmetica floating point Simone Buso - Microcontrollori e DSP - Lezione 6 1 Materiale di riferimento Lezione 6 1. D. A. Patterson, J. L. Hennessy, Computer Organization and Design, Morgan Kaufmann, cap. 4 pagg. 230-264. 2. A. Clements, "The principles of computer hardware", Oxford, 2000, cap. 4, pagg. 169-184. 3. W. Kleitz, "Digital and microprocessor fundamentals", Pearson Education, 2003, cap. 3 e 6. 4. P. Lapsley, J. Bier, A. Shoham, E.A. Lee, "DSP Processor Fundamentals - Architectures and Features", IEEE Press, New York, 1997, cap 3, cap. 4. Simone Buso - Microcontrollori e DSP - Lezione 6 2 1

Moltiplicatori veloci Il ritardo introdotto dalle implementazioni di moltiplicatore basate su iterazioni di somme e operazioni di shift è spesso inaccettabile per i processori che debbano essere dedicati al controllo real-time di processi. Nell ambito dei microcontrollori e DSP, è quindi molto comune trovare CPU dotate di moltiplicatori veloci, capaci di eseguire il prodotto di due numeri in un solo ciclo di clock del processore. Le soluzioni circuitali possibili sono molte. Simone Buso - Microcontrollori e DSP - Lezione 6 3 Moltiplicatori a look-up table Questo tipo di moltiplicatori fa uso di circuiti di memoria dove sono immagazzinati i valori pre-calcolati di tutti i possibili prodotti di due numeri a n bit (unsigned). L esecuzione della moltiplicazione consiste quindi in un semplice accesso alla memoria in corrispondenza del valore cercato. Per identificare velocemente il valore cercato, si fa in modo che l indirizzo della sua cella di memoria corrisponda in modo semplice ai valori degli operandi di cui esso è il prodotto. Simone Buso - Microcontrollori e DSP - Lezione 6 4 2

Moltiplicatori a look-up table La scelta più comune è quella di formare l indirizzo accostando i due operandi. Es: 1101 2 0110 2 = 01001110 2 1101 0011 00100111 Un circuito opportuno 1101 0100 1101 0101 00110100 01000001 (decoder di indirizzo) identifica la 1101 0110 01001110 locazione di memoria 1101 0111 01011011 interessata e riversa il suo contenuto in un registro buffer. Simone Buso - Microcontrollori e DSP - Lezione 6 5 Moltiplicatori a look-up table E interessante valutare la dimensione (in bit) della memoria necessaria a contenere i prodotti di due numeri a n bit. n bit indirizzo numero di righe bit memoria 2n 2 2n 2n 2 2n 2 3 4 5 6 7 8 4 6 8 10 12 14 16 16 64 256 1024 4096 16384 65536 64 384 2048 10240 49152 229376 1048576 Simone Buso - Microcontrollori e DSP - Lezione 6 6 3

Moltiplicatori a look-up table La crescita della dimensione della memoria è esponenziale con il numero di bit n degli operandi. Già con 8 bit è necessario 1Mbit di memoria. Questo è chiaramente inaccettabile (costo, area di Si richiesta). Con questa strategia è quindi ragionevole realizzare solo moltiplicatori a pochi bit (ad esempio 4). Questi però possono poi essere usati per costruire moltiplicatori con operandi rappresentati su un numero di bit maggiore. Simone Buso - Microcontrollori e DSP - Lezione 6 7 Moltiplicatori a look-up table Si ricorre ancora una volta alla fattorizzazione del prodotto in prodotti parziali. Considerando due numeri A e B a 8 bit, suddivisi in due blocchi di 4 bit, si ha la seguente situazione: A = A H 16 A L, B = B H 16 B L A B = A H B H 256 (A H B L A L B H ) 16 A L B L Il prodotto si può quindi ottenere sommando i quattro prodotti parziali, avendo cura di allineare correttamente le uscite dei moltiplicatori a 4 bit. Simone Buso - Microcontrollori e DSP - Lezione 6 8 4

Moltiplicatori a look-up table A H A L B H B L X 4 bit X 4 bit X 4 bit X 4 bit A H B H A L B H A H B L A L B L A L B L A H B L A L B H A H B H A H B H 256 (A H B L A L B H ) 16 A L B L Simone Buso - Microcontrollori e DSP - Lezione 6 9 Moltiplicatori a matrice Una soluzione molto usata consiste nella generalizzazione a n bit del circuito combinatorio che realizza la moltiplicazione di due numeri a 1 bit. 0 0=0 0 1=0 1 0=0 1 1=1 Dalla tabellina si vede che il moltiplicatore a un bit non è altro che una porta logica di tipo AND. A B A B Simone Buso - Microcontrollori e DSP - Lezione 6 10 5

Moltiplicatori a matrice Consideriamo il caso a 2 bit: A 1 A 0 C 1,0 P 3 = C 0,2 C 0,0 C 0,1 P 2 P 0 P 1 Simone Buso - Microcontrollori e DSP - Lezione 6 11 B 0 B 1 P 0 = A 0 B 0 C 0,0 =0 C 1,0 =0 P 1 = A 0 B 1 A 1 B 0 C 0,1 =0 oppure 1 P 2 = A 1 B 1 C 0,1 C 0,2 =0 oppure 1 P 3 = C 0,2 Moltiplicatori a matrice E possibile generalizzare a n bit: A 3 A 2 A 1 A 0 C 3,0 C 2,0 C 1,0 C 0,0 B 0 P 0 C 3,1 C 2,1 C 1,1 C 0,1 B 1 P 1 C 3,2 C 2,2 C 1,2 C 0,2 B 2 P 2 C 3,3 C 2,3 C 1,3 C 0,3 B 3 Simone Buso - Microcontrollori e DSP - Lezione 6 12 P 3 6

Moltiplicatori a matrice Si tratta di una matrice di n sommatori a n bit. La struttura è regolare quindi semplice da realizzare. Le prestazioni dipendono dai sommatori: se questi non sono veloci il prodotto può essere ottenuto solo dopo 2n (ordine di grandezza) ritardi elementari (2n per i sommatori, il contributo delle porte AND è trascurato). E possibile però utilizzare sommatori veloci, (CLA) riducendo i tempi di ritardo in modo molto significativo. Simone Buso - Microcontrollori e DSP - Lezione 6 13 Moltiplicatori a matrice Esistono numerosi altri approcci alla realizzazione di moltiplicatori combinatori. Si tratta sempre di matrici di circuiti logici semplici (porte AND, sommatori a 1 bit, contatori ) organizzati secondo varie strategie. Una delle più comuni è quella della somma per colonne. Il metodo è simile a quello che usiamo per eseguire la moltiplicazione a mano. Ne esistono diverse realizzazioni (ridotto, di Wallace ) Simone Buso - Microcontrollori e DSP - Lezione 6 14 7

Moltiplicatori a matrice A 2 A 1 A 0 x B 2 B 1 B 0 = A 2 B 0 A 1 B 0 A 0 B 0 A 2 B 1 A 1 B 1 A 0 B 1 M 0 A 2 B 2 A 1 B 2 A 0 B 2 P 5 P 4 P 3 P 2 P 1 P 0 - Somme per colonna M 0 è la matrice dei prodotti parziali. Ha n righe e 2n-1 colonne. Simone Buso - Microcontrollori e DSP - Lezione 6 15 Moltiplicatori a matrice Il circuito combinatorio che realizza la somma per colonne è composto, nella sua versione più semplice, da una schiera di contatori parallelo che operano sulla matrice dei prodotti parziali (che è una matrice di porte AND). Ogni contatore riceve in ingresso una colonna della matrice M 0 e i riporti dei contatori precedenti. Esso conta gli 1 della colonna. In questo modo genera il bit di prodotto corrispondente e, eventualmente, i riporti per i contatori successivi (più a sinistra). Simone Buso - Microcontrollori e DSP - Lezione 6 16 8

Moltiplicatori a matrice prodotto parziale riporto prodotto P 9 P 8 P 7 P 6 non c è mai! P 5 P 4 P 3 P 2 P 1 P 0 Esempio a 5 bit. La struttura non è regolare. Il ritardo è dell ordine di 2n. Simone Buso - Microcontrollori e DSP - Lezione 6 17 Moltiplicatori a matrice E possibile velocizzare il precedente circuito operando una progressiva riduzione per passi successivi della matrice M 0. In questo modo si evita la propagazione dei riporti all interno della stessa matrice, accelerando la convergenza. Il circuito ha una struttura ancora irregolare, i.e. con sommatori di colonna diversi, ma produce una matrice di due sole righe. Queste costituiscono l ingresso di un ulteriore sommatore, il cui ritardo è generalmente dominante. Simone Buso - Microcontrollori e DSP - Lezione 6 18 9

Moltiplicatori a matrice prodotto parziale riporto prodotto matrice ridotta M 1 sommatore a 8 bit P 9 P 8 P 7 P 6 P 5 P 4 P 3 P 2 P 1 P 0 Esempio a 5 bit Simone Buso - Microcontrollori e DSP - Lezione 6 19 Moltiplicatori di Wallace Sfruttano il principio della riduzione a passi della matrice dei prodotti parziali. In aggiunta, regolarizzano la struttura facendo uso di soli sommatori parziali per gruppi di 2 o 3 bit (che equivalgono a un half adder e a un full adder rispettivamente). La riduzione della matrice è più lenta rispetto al caso precedente, ma il ritardo resta comunque dominato dal sommatore finale (che deve essere veloce). Simone Buso - Microcontrollori e DSP - Lezione 6 20 10

Moltiplicatori di Wallace matrice M 0 matrice ridotta M 1 matrice ridotta M 2 sommatore a 7 bit P 9 P 8 P 7 P 6 P 5 P 4 P 3 P 2 P 1 P 0 Esempio a 5 bit Simone Buso - Microcontrollori e DSP - Lezione 6 21 Divisione La divisione è un operazione richiesta piuttosto raramente nelle applicazioni dei mc e dei DSP. Tuttavia, alcuni processori offrono una sua realizzazione a livello hardware, che comunque non è mai veloce (i.e. richiede molti cicli macchina). Le realizzazioni più comuni sono basate su sottrazioni successive del divisore dal dividendo, considerati entrambi positivi. Il segno viene sistemato solo alla fine del calcolo. Simone Buso - Microcontrollori e DSP - Lezione 6 22 11

Divisione La divisione a virgola fissa e precisione finita, cioè con aritmetica intera a n bit, pone alcuni vincoli poco intuitivi sui valori che divisore e dividendo possono assumere. In primo luogo, la gestione del segno vincola il range dei valori possibili per quoziente e resto all intervallo [0, 2 n-1-1]. Di conseguenza, il range dei valori ammessi per il dividendo sarà a sua volta limitato. Ad esempio: con 5 bit, i possibili valori del resto e del quoziente saranno compresi tra 0 e 15. Il massimo dividendo sarà allora 239. Simone Buso - Microcontrollori e DSP - Lezione 6 23 Divisione Una volta assegnato il dividendo, i possibili divisori sono a loro volta limitati. Nell esempio precedente a 5 bit, i possibili divisori del numero 239, si riducono al solo 15. Il risultato della divisione sarebbe infatti 15, con resto di 14. Ogni altro divisore darebbe luogo ad un quoziente non rappresentabile nei 4 bit a disposizione. Invece, un dividendo come 65 può essere diviso per tutti gli interi maggiori o uguali di 4 (e minori o uguali di 15). Simone Buso - Microcontrollori e DSP - Lezione 6 24 12

Divisione Il più semplice algoritmo di divisione imita, ancora una volta, il modo in cui eseguiamo la divisione a mano. Ad ogni passo, il divisore è sottratto al dividendo corrente e viene controllato il segno del risultato. Se questo è positivo, il bit corrente del quoziente viene posto a 1, altrimenti a 0. In caso di 0, il valore corretto del dividendo viene ripristinato, ri-sommandogli il divisore. Questo viene poi spostato a destra di un bit e il ciclo si ripete. Simone Buso - Microcontrollori e DSP - Lezione 6 25 D Divisione shift shift divisore 2n bit quoziente n bit Q ALU shift a dx /- sottrazione 2n bit somma shift a sx controllo bit corrente R resto 2n bit scrittura segno Schema a blocchi di un divisore elementare per numeri unsigned a n bit Simone Buso - Microcontrollori e DSP - Lezione 6 26 13

Divisione Il valore iniziale del resto (R) è il dividendo stesso. I bit più significativi (MSB) del divisore (D) e del dividendo devono essere pre-allineati. Ad esempio: 65:13 = 5. 01000001 : 1101 = 0101 _1101 > 1000, sposto a dx il divisore, scrivo 0 _10000 1101 0000110 sposto a dx il divisore, scrivo 1 1101 > 110, sposto a dx il divisore, scrivo 0 00001101 1101 scrivo 1 e ho finito. Simone Buso - Microcontrollori e DSP - Lezione 6 27 Divisione Azione Quoziente Divisore Resto (Q) (D) (R) 0 valori iniziali 0000 0110 1000 0100 0001 1 1.a R=R-D 0000 0110 1000 1101 1001 1.b <0, shift sx Q, Q 0 =0 0000 0110 1000 1101 1001 1.c ripristina R, shift dx D 0000 0011 0100 0100 0001 2 2.a R=R-D 0000 0011 0100 0000 1101 2.b >0, shift sx Q, Q 0 =1 0001 0011 0100 0000 1101 2.c shift dx D 0001 0001 1010 0000 1101 3 3.a R=R-D 0001 0001 1010 1111 0011 3.b <0, shift sx Q, Q 0 =0 0010 0001 1010 1111 0011 3.c ripristina R, shift dx D 0010 0000 1101 0000 1101 4 4.a R=R-D 0010 0000 1101 0000 0000 4.b =0, shift sx Q, Q 0 =1 0101 0000 1101 0000 0000 4.c fine 0101 0000 1101 0000 0000 Simone Buso - Microcontrollori e DSP - Lezione 6 28 14

Divisione In modo simile a quanto fatto per la moltiplicazione, è possibile ridurre la complessità anche dell hardware richiesto dalla divisione. In primo luogo, si può sostituire lo shift a destra del divisore con uno shift a sinistra del dividendo, il che permette di usare una ALU a n bit anziché a 2n bit. In secondo luogo, il quoziente può essere ospitato nella parte bassa del registro che contiene il resto; si risparmia così l uso di un registro apposito per il quoziente. Simone Buso - Microcontrollori e DSP - Lezione 6 29 Divisione Consideriamo un ulteriore esempio: 37 10 : 6 10 = 6 10 con resto 1 Azioni Divisore (D) Resto (R) 0 valori iniziali 0110 0010 0101 1 1.a shift sx R, R 0 =0 0110 0100 1010 2 2.a R=R-D, solo parte alta! 0110 1110 1010 2.b <0, ripristina R, shift sx R 0110 1001 0100 3 3.a R=R-D 0110 0011 0100 3.b shift sx R, R 0 =1 0110 0110 1001 4 4.a R=R-D 0110 0000 1001 4.b shift sx R, R 0 =1 0110 0001 0011 4 4.a R=R-D 0110 1011 0011 4.b <0, ripristina R, shift sx R 0110 0010 0110 Simone Buso - Microcontrollori e DSP - Lezione 6 30 15

Divisione Il primo passo porta sempre ad un risultato della sottrazione R = R-D (solo sulla parte alta) minore o uguale di 0. Ad esempio, nel nostro caso, il minimo divisore di 37 10 è3 10. Se così non fosse, il quoziente eccederebbe il massimo valore positivo rappresentabile su n- 1 bit. In effetti, questo è proprio il modo in cui viene rivelata una divisione non permessa, che quindi genererà un errore. Non dovendo eseguire la sottrazione, al primo passo viene allora sostituito un semplice shift a sinistra del dividendo. Simone Buso - Microcontrollori e DSP - Lezione 6 31 Divisione Allo shift deve sempre corrispondere l ingresso da sinistra di uno zero, a meno che la parte alta del dividendo e il divisore non siano uguali, nel qual caso entrerà un 1. Con questa organizzazione però, la unificazione dei registri di quoziente e resto porta il resto a venire shiftato a sinistra una volta di troppo. Per recuperare il suo valore corretto, alla fine del calcolo la sola parte alta di R deve essere shiftata a destra di un bit. Simone Buso - Microcontrollori e DSP - Lezione 6 32 16

D divisore n bit Divisione ALU controllo /- sottrazione somma n bit shift a sx shift a dx shift R resto quoziente scrittura 2n bit segno Schema a blocchi di un divisore elementare per numeri unsigned a n bit (semplificato) Simone Buso - Microcontrollori e DSP - Lezione 6 33 Divisione Come detto in precedenza, la gestione del segno degli operandi della divisione viene risolta alla fine del calcolo, imponendo che sia: Dividendo = Quoziente Divisore Resto Attenzione ad evitare errori, ad esempio: -13 : 4 = -3 con resto 1 NON -13 : 4 = -4 con resto 3 (che soddisfa la condizione di partenza ugualmente bene). Deve sempre essere: (x/y) = (-x)/y Simone Buso - Microcontrollori e DSP - Lezione 6 34 17

Divisione In mancanza di un circuito apposito per la divisione, questa operazione può essere realizzata anche per mezzo del circuito moltiplicatore. Il metodo assume che, nella divisione Q = N/D, il divisore D sia tale che: 0.5 < D < 1 cosa che, in generale, richiede lo scalamento del dato (pre-moltiplicazione di D per una opportuna potenza di 2). Si definisce poi Z = 1-D, di modo che risulta, ovviamente, D = 1-Z. Simone Buso - Microcontrollori e DSP - Lezione 6 35 Divisione Il quoziente cercato, Q, si potrà allora scrivere come: Q = N (1Z) (1Z 2 ) (1Z 4 ) (1Z 2n-1 ) 1-Z 2n Dato che 0 < Z < 0.5, il valore del denominatore tende rapidamente a 1 al crescere di n, sicché il valore di Q si può approssimare con il prodotto: Q N (1Z) (1Z 2 ) (1Z 4 ) (1Z 2n-1 ) Simone Buso - Microcontrollori e DSP - Lezione 6 36 18

Divisione E importante osservare che la dipendenza del denominatore 1-Z 2n da n è addirittura più che esponenziale, quindi la qualità dell approssimazione finale cresce molto rapidamente al crescere di n. Per esempio, se si dispone di una aritmetica a 8 bit, è sufficiente arrivare a n = 3 per avere la massima precisione. Inoltre, con n = 5, si può disporre di una precisione equivalente a quella di una aritmetica a 32 bit! Simone Buso - Microcontrollori e DSP - Lezione 6 37 Aritmetica a virgola mobile L aritmetica a virgola mobile comporta notevoli complicazioni nei circuiti necessari a realizzare anche le operazioni più elementari. La somma, per esempio, richiede una preliminare normalizzazione degli operandi che renda gli esponenti dei due numeri uguali fra loro. Solo con esponenti uguali ha infatti senso sommare fra loro le mantisse. Dopo la somma, può rendersi necessaria una nuova normalizzazione. Simone Buso - Microcontrollori e DSP - Lezione 6 38 19

Sommatore a virgola mobile s exp mantissa s exp mantissa - confronto esponenti MUX controllo MUX shift a dx MUX allineamento mantisse ALU somma MUX MUX inc/dec shift a dx/sx normalizzazione arrotondamento s exp mantissa Simone Buso - Microcontrollori e DSP - Lezione 6 39 Sommatore a virgola mobile Il sommatore a virgola mobile contiene numerosi circuiti aritmetici e logici: a) 2 ALU di dimensioni diverse: una per determinare l esponente maggiore e una per sommare le mantisse. b) 2 shifter: uno per allineare le mantisse (solo shift dx) e uno bidirezionale per la post-normalizzazione del risultato. c) Un circuito per incrementare o decrementare gli esponenti. d) Un circuito per la gestione dell arrotondamento. Simone Buso - Microcontrollori e DSP - Lezione 6 40 20

Aritmetica a virgola mobile I processori dotati di aritmetica a virgola mobile mantengono solitamente anche una sezione dedicata ai calcoli a virgola fissa. La complessità, l ingombro e il costo di quest ultima sono infatti del tutto trascurabili rispetto alla prima. E stato recentemente (Marzo 2006) introdotto sul mercato il primo mc con unità aritmetica ausiliaria a virgola mobile (Philips LPC3180). Tra i DSP, quelli più orientati alle applicazioni di controllo real-time sono ancora tutti a virgola fissa. Simone Buso - Microcontrollori e DSP - Lezione 6 41 Aritmetica a virgola mobile Simone Buso - Microcontrollori e DSP - Lezione 6 42 21