6 ARITMETICA: ALGORITMI E CIRCUITI. Mariagiovanna Sami. Franco Fummi 6.1 INTRODUZIONE. Università di Verona. Politecnico di Milano

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "6 ARITMETICA: ALGORITMI E CIRCUITI. Mariagiovanna Sami. Franco Fummi 6.1 INTRODUZIONE. Università di Verona. Politecnico di Milano"

Transcript

1 INTRODUZIONE LA RAPPRESENTAZIONE DEI NUMERI I NUMERI INTERI POSITIVI I NUMERI RELATIVI I NUMERI REALI CODICI BIUNIVOCI E CODICI RIDONDANTI PRECISIONE E LIMITI DI RAPPRESENTABILITÀ REALIZZAZIONE DI UN'OPERAZIONE ARITMETICA OPERAZIONI ARITMETICHE SU NUMERI INTERI SOMMA SOTTRAZIONE PRODOTTO DIVISIONE RAPPRESENTAZIONE MEDIANTE SIS MEMORIE ROM PER REALIZZARE OPERAZIONI ARITMETICHE MOLTIPLICATORE IN DOPPIA PRECISIONE MOLTIPLICATORE BASATO SU LOGARITMO ED ESPONENZIALE MOLTIPLICATORE BASATO SULLA RELAZIONE (A+B) 2 - (A-B) 2 = 4AB LA RAPPRESENTAZIONE DEI NUMERI IN VIRGOLA MOBILE RAPPRESENTAZIONE NON BIUNIVOCA DEFINIZIONE DELLA MANTISSA NUMERO DI BIT DELLA MANTISSA E DELL'ESPONENTE ECCEZIONI OPERAZIONI ARITMETICHE IN VIRGOLA MOBILE SOMMA SOTTRAZIONE PRODOTTO DIVISIONE...59 Franco Fummi Università di Verona Mariagiovanna Sami Politecnico di Milano La presente dispensa è stampabile e riproducibile esclusivamente per gli scopi didattici dei corsi del Politecnico di Milano e dell'università di Verona; ogni altro uso deve essere preventivamente autorizzato dagli autori. Febbraio INTRODUZIONE In questo capitolo si descriveranno gli algoritmi per l esecuzione di operazioni aritmetiche e i circuiti basati su questi algoritmi. Le unità aritmetiche che verranno descritte trovano applicazione sia nelle unità centrali di elaborazione dei calcolatori sia in quelle dedicate ad applicazioni specifiche (in particolare, alla elaborazione di segnali trasformate, filtri numerici sia per segnali monodimensionali, come il suono, sia bidimensionali, come le immagini) e negli elaboratori speciali indicati normalmente come DSP (Digital Signal Processors). Pur basandosi sugli stessi principi, le unità aritmetiche per calcolatori e quelle per unità speciali di elaborazione dei segnali hanno proprietà e caratteristiche diverse: Il requisito di velocità è sempre presente, ma mentre nel caso delle CPU esso si traduce essenzialmente nel vincolo di una bassa latenza L (dove per latenza si intende l intervallo di tempo che trascorre fra l istante in cui si presentano gli operandi agli ingressi dell unità e quello in cui il risultato è stabile in uscita) nel caso di elaborazione di segnale e immagine spesso si richiede elevato throughput, cioè elevata frequenza di esecuzione. Il throughput τ indica infatti l intervallo di tempo che intercorre fra l istante in cui si presenta in ingresso un campione di dati su cui operare e quello in cui si presenta il campione successivo su cui ripetere la stessa operazione (e, ovviamente, anche l intervallo di tempo che trascorre fra la presentazione in uscita di due risultati successivi). Si pensi ad esempio all elaborazione di un'immagine televisiva: le operazioni di calcolo su un immagine devono essere terminate prima dell'arrivo dell'immagine seguente. Throughput e latenza possono essere indipendenti l uno dall altra; se nell istante t 1 si presenta il primo campione di dati, il corrispondente risultato sarà disponibile nell istante t 1 +L ma, se il circuito è stato progettato opportunamente, il successivo campione potrà essere presentato in ingresso in un istante t 1 +τ con τ<l e il corrispondente risultato sarà disponibile solo τ unità di tempo dopo il primo. Tornando all elaborazione di immagine televisiva, possiamo accettare una latenza anche elevata nella presentazione del risultato dell elaborazione sulla prima immagine, ma successivamente la frequenza di presentazione dei risultati deve mantenersi costante e pari a quella di presentazione degli ingressi. Le istruzioni di un calcolatore prevedono in genere una singola operazione aritmetica su uno o due operandi (ad esempio un istruzione di prodotto viene eseguita su due fattori e produce un unico risultato, il prodotto) o comunque la composizione di un numero molto ridotto di operazioni aritmetiche elementari in operazioni più complesse (molte CPU moderne dispongono dell operazione Multiply and Accumulate, che effettua A*B+C); nel caso di unità dedicate a specifiche operazioni di elaborazione su segnale - ad esempio, trasformata 2

2 bidimensionale di Fourier su un immagine - si prevedono invece spesso l operazione contemporanea su un gran numero di campioni del segnale o dell immagine originale e la simultanea produzione di un gran numero di risultati. Nel seguito si descriveranno le singole operazioni aritmetiche elementari. Le caratteristiche principali che dovranno essere soddisfatte sono Velocità: è il requisito fondamentale. Come si vedrà in seguito, nelle unità aritmetiche ci sono problemi di riporti - vi sono cioè segnali che, passando da un ingresso a un uscita, devono attraversare un elevato numero di circuiti logici, ognuno dei quali introduce un ritardo. Per ogni operazione si studieranno quindi metodi per ridurre il ritardo totale. Spesso il ritardo totale di un unità aritmetica è un valore statistico, poiché dipende dal valore degli operandi; si deve sempre tenere conto del ritardo massimo (caso pessimo), anche se statisticamente tale situazione risulta poco probabile. Precisione: alcune operazioni aritmetiche forniscono sempre il risultato corretto, (ad esempio, la somma o il prodotto di numeri interi); in altri casi (ad esempio, per le operazioni in virgola mobile su numeri reali) il risultato è approssimato; è opportuno quindi prevedere metodi che limitino l approssimazione ottenendo una precisione adeguata. Affidabilità: il problema riguarda la possibilità di rilevare ed eventualmente correggere errori dovuti a guasti o difetti; nel caso delle unità aritmetiche si possono usare tecniche specifiche (codici aritmetici) di trattamento degli errori. Prima di affrontare gli algoritmi e le strutture aritmetiche hardware, si darà nel paragrafo 6.2 una classificazione dei vari metodi per rappresentare numeri; infatti algoritmi e circuiti per realizzare una determinata operazione aritmetica dipendono fortemente dal metodo di rappresentazione degli operandi. Nel paragrafo 6.3 si discuteranno i problemi legati alla precisione ed ai limiti di rappresentabilità dovuti al limitato numero di bit a disposizione per rappresentare un numero. Nel paragrafo 6.4 si presenteranno modi diversi per realizzare un operazione aritmetica; nel paragrafo 6.5 si descriveranno i circuiti per la realizzazione di sommatori, sottrattori, moltiplicatori e divisori per numeri interi, mentre nel paragrafo 6.8 si esamineranno i circuiti per i numeri reali. 6.2 LA RAPPRESENTAZIONE DEI NUMERI Abitualmente, nelle CPU e nelle unità aritmetiche commerciali per quanto riguarda i numeri interi positivi si ricorre alla notazione binaria naturale, una notazione pesata in cui i pesi sono potenze del due. Sono però possibili anche altri tipi di notazioni, in cui i pesi non sono potenze del due; di particolare interesse sono le notazioni basate sui residui. Per quanto riguarda i numeri interi dotati di segno, i modi più diffusi di rappresentazione sono quello in modulo e segno, quello in complemento a 2 (di gran lunga il più usato nelle CPU) e quello in complemento a 1. Passando ai numeri reali si citeranno due casi - quello di virgola in posizione fissa (virgola fissa) e quello di virgola (in posizione) mobile - il più diffuso nel calcolo scientifico, e oggetto di specifici standard di formato I numeri interi positivi Il metodo più comune fa riferimento a una rappresentazione posizionale pesata con pesi pari a potenze di una base: la forma generale è A = n 1 i= 0 a i b i dove b è la base e a i la singola cifra. Nel nostro caso, la base è 2 Una rappresentazione posizionale ma non pesata è quella basata sui residui. Dato un numero intero A ed una base, anche essa intera, b, si definisce residuo R(A) b del numero A rispetto alla base b il resto della divisione di A per b: A = Qb + R(A) b Si consideri dapprima un insieme [b 1, b 2,, b n ] di n basi rappresentate da n numeri primi (come vedremo questa condizione può essere valida ma è troppo stringente) e si calcoli il residuo di un numero A rispetto a ciascuna di tali basi: tale insieme di residui viene associato ad A: A={R(A) b1, R(A) b2, R(A) bn } e rappresenta biunivocamente un numero intero nell'intervallo 0 A b 1 b 2..b n -1. In seguito si vedrà come eseguire operazioni aritmetiche tra operandi codificati mediante residui e si indicheranno i vantaggi che si possono trarre da tale rappresentazione I numeri relativi I metodi più tradizionali per rappresentare numeri interi positivi e negativi sono i seguenti. Modulo e segno: il segno può essere rappresentato mediante un bit, generalmente 0 per + e 1 per -. Avendo a disposizione n bit, un numero può essere rappresentato con il modulo su n-1 bit ed un bit per il segno. La rappresentazione dello zero è ridondante: +0 e -0 hanno rappresentazioni diverse (+0=0000; -0=1000). Somma e sottrazione richiedono circuiti diversi. 3 4

3 Complemento a 1: il generico valore negativo viene ottenuto dal corrispondente valore positivo complementando i bit uno ad uno. Ad esempio, +67 viene rappresentato con otto bit come , -67 come Questo metodo ha qualche applicazione (ad esempio, nei moltiplicatori che fanno uso di ROM) ma le operazioni sono abbastanza complesse; anche qui si ha una doppia rappresentazione del numero 0 (00000=+0; 11111=-0) Complemento a 2: è la rappresentazione più usata; il cambiamento di segno viene ottenuto complementando tutti i bit e sommando 1 nella posizione meno significativa (-67 vale ). I vantaggi che ne giustificano la quasi generale adozione riguardano la facilità con cui si eseguono somma e sottrazione mediante un solo circuito ed il fatto che si ha una rappresentazione unica per lo zero I numeri reali Per quanto riguarda la rappresentazione di numeri reali, ossia con virgola, si distinguono rappresentazioni in virgola fissa e in virgola mobile. Virgola in posizione fissa: sia dato un numero binario x 1 x 2 x 3 x 4, y 1 y 2 y 3 dove x 1 x 2 x 3 x 4 rappresenta la parte intera (con pesi 1, 2, 4, 8 partendo da destra) e y 1 y 2 y 3 rappresenta la parte frazionaria (con pesi ½, ¼, 1/8 da sinistra a destra). Se tutti i numeri su cui si deve operare hanno la stessa forma, con la virgola in terza posizione da destra (tre cifre di parte frazionaria), tutte le operazioni aritmetiche saranno eseguite come se i numeri fossero interi: algoritmi e circuiti aritmetici sono quelli validi per la rappresentazione intera. L utente dovrà però tenere conto della posizione della virgola: la somma di due numeri di sette bit (fatta come se si operasse su interi) può fornire un risultato di otto bit, con la virgola sempre in terza posizione; il prodotto di due fattori di sette bit fornisce invece un risultato di 14 bit con la virgola in sesta posizione. Virgola in posizione mobile: in questo caso occorre fornire due informazioni: il valore normalizzato del numero - cioè il valore riportato a una posizione fissa della virgola - e l informazione sulla reale posizione della virgola, cioè l esponente da applicare alla base perché - moltiplicandola per il valore normalizzato, o mantissa - fornisca il dato di partenza. Ad esempio, il numero 5,75 - che, con una rappresentazione in virgola fissa che ammetta due posizioni dopo la virgola risulta dato da può essere rappresentato da mantissa e esponente -2 se si vuole normalizzare la mantissa a intero o da ed esponente +3 se si vuole normalizzare la mantissa ad un valore compreso fra 0 e ½ (alternativa normalmente scelta). Il numero in virgola mobile è genericamente rappresentato da A= M 2 E. Mantissa ed esponente vengono rappresentati con interi dotati di segno; il segno di M è il segno del numero in virgola mobile. Lo scopo principale nell'uso di numeri in virgola mobile è quello di poter rappresentare numeri molto piccoli (esponenti negativi con valore assoluto grande) e molto grandi (esponenti positivi molto grandi). Un problema evidente è quello della compatibilità fra rappresentazioni in virgola mobile adottate da diversi produttori di circuiti o di CPU; se le convenzioni di rappresentazione sono diverse (in particolare, la posizione della virgola per la mantissa, il numero di bit riservato a mantissa ed esponente ecc.) il progettista che voglia comporre fra di loro parti prodotte da aziende diverse si troverà a dover progettare appositi circuiti di conversione; più in generale, dati identici elaborati da sistemi digitali con le stesse funzionalità ma di produttori diversi potrebbero portare a risultati diversi, in conseguenza delle diverse approssimazioni che si potrebbero rendere necessarie. Per ovviare a ciò, la IEEE (Institute of Electrical and Electronic Engineers) ha proposto standard per la rappresentazione in virgola mobile (facendo riferimento a differenti lunghezze di parola - 16, 32 e 64 bit) cui i produttori si sono in genere adeguati. Maggiori informazioni su questi standard sono riportate nel paragrafo Codici biunivoci e codici ridondanti Il codice binario naturale è un codice biunivoco: dato un numero A esiste una sola rappresentazione binaria, ossia un solo insieme di bit a 0, a 1,,a n che lo rappresenti, e viceversa dato un insieme di bit a 0, a 1,,a n, esiste un solo numero A da essi rappresentato. Si supponga ora di usare una rappresentazione in base b in cui le cifre a i escano dai limiti tra 0 e b-1; in questo caso, dato un insieme di cifre a 0, a 1,,a n, esiste un solo numero A da essi rappresentato, ma dato un numero A, possono esistere più insiemi di cifre a 0, a 1,.,a n che lo rappresentano. Si consideri ancora la rappresentazione binaria (b=2) ma con cifre a i che possono assumere i valori -1, 0, +1; in questo caso i due insiemi di cifre e rappresentano entrambe il numero 3; questo è un esempio di codice non biunivoco, ossia di codice ridondante. Si vedrà in seguito come i codici ridondanti possano essere utili per rendere veloci le operazioni aritmetiche eliminando il problema dei ritardi dovuti alla propagazione di riporti (in realtà, i problemi dovuti ai riporti vengono solo rimandati alla fine di un certo numero di operazioni aritmetiche). 6.3 PRECISIONE E LIMITI DI RAPPRESENTABILITÀ In un sistema digitale esistono evidentemente limiti precisi alla rappresentabilità dei numeri, dovuti alle dimensioni dei registri, dell unità aritmetica e delle parole di memoria. Precisioni e limiti di rappresentabilità maggiori possono essere ottenuti adottando più parole per la rappresentazione di un solo numero: ad esempio, nel caso 5 6

4 di numeri in virgola mobile, si può destinare una sola parola di 32 bit all'intero numero (24 bit, compreso un bit di segno, per la mantissa M e 8 bit per l'esponente E) oppure due parole (53 bit per la mantissa e 11 per l'esponente) ecc. Quando un numero (intero oppure in virgola mobile) è contenuto in una sola parola si parla di precisione semplice; se richiede più parole, si parla di precisione multipla. I limiti di rappresentabilità, dovuti al limitato e fisso numero di bit utilizzabili, fanno nascere quindi, nelle diverse operazioni, il problema dell overflow, ovvero del superamento di capacità: la somma di due numeri, ciascuno rappresentabile entro i limiti, può fornire un risultato che esce dai limiti di rappresentazione. Le unità aritmetiche hanno normalmente un segnale di riporto in uscita; la situazione di overflow può essere identificata e trattata in modo opportuno (in un calcolatore, normalmente viene segnalata al sistema operativo come una eccezione ). Quando si progettano sistemi dedicati, è anche possibile tenere conto delle dimensioni maggiori dei risultati rispetto agli operandi prevedendo registri (e bus) di dimensioni differenti all entrata e all uscita delle unità aritmetiche. Un altro problema che riguarda la precisione è quello della gestione degli errori (intendendo con errore un risultato non esatto dovuto al limitato numero di bit; non si deve confondere questa accezione con quella usata parlando di affidabilità, dove errore si intende un risultato non corretto dovuto a un guasto). A tale fine si introducono i concetti di aritmetica degli intervalli e di aritmetica esatta. Nel primo caso ogni numero è rappresentato da una coppia di numeri, uno approssimato in difetto ed uno approssimato in eccesso: si può così valutare l'attendibilità del risultato di un elaborazione confrontando le due approssimazioni e valutando l'errore percentuale. Nel secondo caso ogni numero può essere rappresentato usando un numero comunque grande di bit (quanti ne servono per non avere errori); per memorizzare un numero non si usano registri ma aree anche grandi della memoria centrale del calcolatore. 6.4 REALIZZAZIONE DI UN'OPERAZIONE ARITMETICA La rappresentazione utilizzata per gli operandi influisce ovviamente sia sull algoritmo che implementa un operazione, sia sul circuito che realizza tale algoritmo (in questo corso non ci occupiamo delle soluzioni totalmente software che - partendo dalla disponibilità di un numero molto limitato di operazioni aritmetiche elementari, realizzano le operazioni più complesse mediante programmi). È possibile però, indipendentemente dall algoritmo, distinguere anche due diversi approcci tecnologici: Approccio hardware: è quella che ci interessa maggiormente. Alle operazioni aritmetiche corrispondono circuiti specifici (addizionatore, moltiplicatore, divisore ); Approccio firmware: si dispone di circuiti specifici solo per alcune operazioni aritmetiche elementari (tipicamente, addizione e sottrazione); operazioni più complesse vengono sintetizzate a partire dall algoritmo di implementazione, realizzando una unità di controllo (in genere, microprogrammata - di qui l indicazione firmware ) che attiva opportunamente le unità aritmetiche, i registri che ospitano dati e risultati intermedi, i percorsi fra tali dispositivi. Tale approccio rientra nelle più generali tecniche di progetto di sistemi dedicati basati sulla filosofia controllore-data path di cui si parla nel capitolo 7. La prima soluzione è la più veloce ma anche la più costosa; la seconda ha caratteristiche intermedie fra una totalmente hardware e una software su CPU - è comunque necessario risolvere l operazione complessa mediante un insieme di operazioni semplici. La scelta dell approccio di implementazione dipende dal tipo di operazione aritmetica e dal costo ammissibile per l unità aritmetica. Quanto ai microprocessori commerciali, e anche ai microcontrollori a basso costo per sistemi embedded, essi sono tutti forniti di addizionatori hardware e per la maggior parte anche di moltiplicatori per fattori interi. Nei microcontrollori spesso le operazioni di divisione per numeri interi e le operazioni su numeri in virgola mobile vengono eseguite in firmware, se non addirittura lasciate a una soluzione software. Le operazioni più complesse e di uso molto specifico vengono sempre realizzate in software, con poche eccezioni legate al particolare microprocessore e al campo di applicazioni previsto (casi tipici sono la Multiply and Accumulate, la radice quadrata presente in alcune delle più recenti CPU l unità parallela per le istruzioni MMX della famiglia Pentium MMX Intel, ecc.). La scelta delle istruzioni da implementare in hardware dipende fortemente dalla frequenza media con cui le varie operazioni aritmetiche verranno eseguite in normali programmi di calcolo (per le CPU di tipo generale) o nei programmi specifici per la classe di applicazioni considerata (nelle CPU o nei processori dedicati): l introduzione di un unità aritmetica hardware per il calcolo poco frequente di una funzione complicata porterebbe infatti all impiego di una grande area di silicio quasi sempre inattiva. Uso di memorie ROM. Con questo approccio (diverso dalla soluzione firmware) le operazioni aritmetiche vengono implementate mediante tabelle memorizzate in ROM. Si voglia calcolare il quadrato A 2 di un numero A; si predispone una memoria ROM ogni parola della quale contiene il quadrato del proprio indirizzo; per valutare il quadrato di A, si scrive A nel registro di indirizzamento e dalla ROM si legge il valore A 2. Il concetto fondamentale consiste nel calcolare a priori tutti i risultati desiderati per tutti i possibili valori dell operando A, così da determinare il contenuto di tutte le parole della ROM. Vantaggi e limiti di tale metodo verranno discussi nel paragrafo 6.6 quando si applicherà questo approccio al prodotto di numeri interi ed 7 8

5 alla divisione di numeri in virgola mobile. Per ciò che riguarda la presentazione dei dati in ingresso ed in uscita, si possono distinguere alcune alternative. Presentazione in parallelo: i bit degli operandi sono presentati in entrata - e i risultati calcolati - contemporaneamente; nell esempio in figura 6.1a, i quattro bit di ciascuno dei due addendi vengono presentati contemporaneamente alle otto entrate di un addizionatore parallelo e contemporaneamente, a meno dei ritardi di propagazione nell unità aritmetica, i cinque bit della somma appaiono in uscita. A B ADD a) S A B ADD Figura 6.1. Alternative di presentazione dei dati. b) S A B ADD Presentazione seriale pura: si consideri la figura 6.1b: il sommatore qui è provvisto di due sole linee di entrata e di una di uscita: alle linee di entrate vengono presentati, sequenzialmente nel tempo (in serie) i corrispondenti bit dei due addendi, e analogamente i bit del risultato appaiono all'uscita sequenzialmente. Per l ordine di presentazione dei bit si possono prevedere due alternative: i bit dei due addendi possono essere applicati all unità aritmetica a partire dal bit meno significativo e fino al più significativo (presentato per ultimo): questo è il caso di presentazione seriale normale; se invece si usa l ordine opposto (il bit più significativo è il primo, quello meno significativo è l ultimo) siamo nel caso di presentazione seriale on-line. Scherzosamente, è invalso l uso di indicare le sue alternative come little-endian (a partire dal bit meno significativo) e big-endian (a partire dal bit più significativo) 1 Presentazione seriale a byte: in questo caso byte indica genericamente un gruppo di pochi bit (non necessariamente otto). È un metodo di presentazione intermedio tra i due precedenti: ad esempio, se i due addendi hanno ognuno 32 bit, questi vengono suddivisi in otto gruppi (byte) di quattro bit ciascuno; le due coppie di 1 Si tratta di una citazione dai Viaggi di Gulliver : gli abitanti di Lilliput erano lacerati da una guerra fra chi voleva aprire l uovo sodo dal lato più appuntito (little end) o più arrotondato (big end). c) S 9 quattro bit di pari posizione vengono applicate contemporaneamente (in parallelo) mentre gli otto byte vengono applicati sequenzialmente nel tempo (in serie). Presentazione mista: uno dei due operandi viene presentato con modalità in parallelo (figura 6.1c), l altro con modalità seriale. Il tipo di presentazione influisce sulla natura dell unità aritmetica (che sarà una rete combinatoria nel caso di presentazione parallela, sequenziale per gli altri due casi), sulla sua complessità (un unità aritmetica seriale è sicuramente più piccola, quindi più economica di una parallela), sulla sua velocità (la rete seriale, richiedendo un certo numero di impulsi di clock, è sicuramente più lenta). Una delle differenze più importanti consiste nel numero di linee per il trasferimento dei dati in entrata e in uscita: l addizionatore parallelo per addendi di n bit ha 2n linee di ingresso e n+1 linee di uscita, quello serie-parallelo ha n+1 linee di ingresso e una linea di uscita, quello seriale ha 2 linee di ingresso e una linea di uscita. 6.5 OPERAZIONI ARITMETICHE SU NUMERI INTERI Si considerano ora le quattro operazioni aritmetiche (somma, sottrazione, prodotto e divisione), gli algoritmi per il loro calcolo ed alcuni circuiti tipici che le realizzano. Per ogni metodo di rappresentazione dei numeri si hanno algoritmi e circuiti diversi Somma Si esamina innanzitutto la somma di numeri interi positivi. Sia data la somma 5+11=16: addendi e risultato siano rappresentati mediante sei bit. Le varie fasi dell'operazione sono presentate nella seguente tabella: riporto addendo addendo risultato Le regole per la somma sono quelle usate per eseguire manualmente l'operazione, con la sola variante che si usa la numerazione binaria invece di quella decimale: partendo dalla coppia di bit a destra (i bit meno significativi dei due addendi) si sommano 1+1: il risultato è 10. Si scrive 0 nell ultima colonna a destra del risultato e 1 nella riga del riporto nella seconda colonna da destra; si sommano nella seconda colonna da destra il riporto dalla colonna precedente ed i due bit dei due addendi (1+0+1=10); si scrive 0 nella riga del risultato, seconda colonna da destra, e 1 nella riga del riporto, terza colonna da destra; 10

6 si prosegue così fino alla prima colonna da sinistra; si verificare immediatamente che la riga del risultato contiene il valore corretto 16. Da questo algoritmo per eseguire la somma si può essere derivare il circuito che esegue la somma di due numeri interi positivi di sei bit ciascuno. Siano a 5, a 4, a 3, a 2, a 1, a 0 ; b 5, b 4, b 3, b 2, b 1, b 0 ; s 5, s 4, s 3, s 2, s 1, s 0 rispettivamente i sei bit dei due addendi e della somma; la struttura dell'addizionatore (detta a propagazione di riporto) è riportata in figura 6.2. b5 a5 b4 a4 b3 a3 b2 a2 b1 a1 b0 a0 somma A+B, a uno se si desidera il risultato A+B+1 (ciò può essere comodo per eseguire la sottrazione oppure per ottenere l incremento di un numero A; in questo caso si pone B=0 e c 0 =1 ed il risultato vale A+1; un circuito del genere può essere usato, ad esempio, per incrementare il contenuto del registro contatore di programma di un calcolatore). L addizionatore risulta in questo caso più regolare, essendo realizzato con celle () tutte identiche. A questa struttura, riportata in figura 6.3, si farà riferimento nel seguito. b5 a5 b4 a4 b3 a3 b2 a2 b1 a1 b0 a0 c6 c5 c4 c3 c2 c1 HA c6 c5 c4 c3 c2 c1 c0 s5 s4 s3 s3 s1 s0 s5 s4 s3 s3 s1 s0 Figura 6.2. Sommatore a propagazione di riporto. La cella a destra riceve i bit meno significativi dei due addendi e produce la somma s 0 ed il riporto c 1 in entrata alla seconda cella; la seconda cella da destra riceve i bit a 1 e b 1 dei due addendi ed il riporto c 1 dallo stadio precedente e produce la somma s 1 ed il riporto c 2 allo stadio successivo, e così via. Ad eccezione della prima cella a destra (marcata H A, cioè Half Adder, semi-sommatore), che ha due soli bit in ingresso, tutte le altre celle (, Full Adder, sommatori completi) sono identiche ed eseguono l operazione definita dalla seguente tabella: a i b i c i c i+1 s i Figura 6.3. Sommatore composto tutto da full-adder. Si considerino ora alcuni problemi riguardanti la somma fra numeri interi. Overflow nella somma di interi positivi: dati n bit per la rappresentazione di addendi e risultato, si ha overflow ogni volta che il risultato supera 2 n. La situazione viene segnalata semplicemente dal valore 1 del riporto in uscita dal Full Adder in posizione più significativa. Somma algebrica di numeri in complemento a 2: si consideri il seguente esempio, in cui si vuole ottenere la somma algebrica -5+11; operando in complemento a 2, sei bit consentono di rappresentare tutti i numeri compresi fra -2 5 e (cioè fra -32 e +31): applicando l algoritmo di somma si ottiene la seguente tabella: riporto addendo addendo risultato da cui si ricava il risultato corretto (+6) più un riporto nella colonna a sinistra di quella più significativa, che deve essere ignorato. Volendo eseguire +5-11, dalla seguente tabella si verifica come il risultato sia il valore corretto in complemento a 2 - cioè -6 - mentre non si genera riporto: In modo analogo si definisce il circuito half-adder, ovviamente più semplice. In realtà molto spesso anche la prima cella a destra viene realizzata mediante un ; in questo caso il bit di riporto in ingresso c 0 viene posto a zero se si desidera eseguire la 11 12

7 riporto addendo addendo risultato Il circuito addizionatore è quindi in grado di eseguire sia somme tra numeri positivi sia somme algebriche fra numeri rappresentati in complemento a Sottrazione Cambiamento di segno in complemento a 2. Sia dato un numero B contenuto in un registro di sei bit; dato che i bistabili del registro forniscono, a costo nullo, sia l uscita normale che quella complementata, il numero -B può essere ottenuto mediante un addizionatore del tipo indicato in figura 6.3 in cui i bit dell'addendo B sono complementati, quelli dell'addendo A sono nulli e il riporto c 0 vale 1. Operazione di sottrazione: la sottrazione di due numeri A-B, ciascuno rappresentato in complemento a 2, si ottiene sommando A+(-B); ciò può essere ottenuto mediante il circuito di figura b5 a5 b4 a4 b3 a3 b2 a2 b1 a1 b0 a0 riporto addendo addendo risultato Il primo esempio corrisponde alla somma (+18)+(+22) il cui risultato corretto è +40: il risultato ottenuto viene invece interpretato come -24. Il secondo esempio corrisponde alla somma (-18)+(-22), il cui risultato corretto sarebbe -40, genera il risultato errato +24. In ambedue i casi i risultati ottenuti sono errati in quanto quelli corretti (+40 e -40) escono dai limiti di rappresentabilità. Se si sommano algebricamente un addendo positivo ed uno negativo, purché ambedue entro i limiti, anche il risultato è corretto e non esce dai limiti. Si ha invece superamento di capacità se, sommando due numeri positivi, si ottiene un risultato negativo (primo esempio), oppure se, sommando due numeri negativi, si ottiene un risultato positivo (secondo esempio). Velocità del sommatore con riporto: il problema principale nell'uso della struttura riportata in figura 6.2 (oppure in figura 63) è quello dei riporti e quindi della velocità del sommatore. Si considerino i seguenti esempi, ove i due addendi sono numeri positivi, quindi non rappresentati in complemento a 2. c6 c5 c4 c3 c2 c1 HA 1 riporto addendo riporto addendo s5 s4 s3 s3 s1 s0 2 addendo addendo Figura 6.4. Circuito sottrattore. Overflow nella somma algebrica: Si considerino i seguenti due esempi: riporto addendo addendo risultato e risultato risultato L'esempio di sinistra corrisponde alla somma 5+26=31, quello di destra alla somma 5+27=32; nei due esempi cambia solo il bit meno significativo del secondo addendo mentre nei due risultati cambiano tutti i bit, dal meno al più significativo (pur non essendoci overflow). Considerando il circuito, si può osservare che esiste un percorso dei segnali dalla posizione più a destra a quella più a sinistra tramite i segnali di riporto c 4,c 3,c 2,c 1 ; se si suppone che tutti i bit dei due addendi siano noti contemporaneamente all'istante iniziale, e che ogni cella produca le sue due uscite con un ritardo fisso τ, uguale per entrambe le uscite, rispetto al più lento fra i suoi tre ingressi, il bit più significativo della somma viene calcolato all'istante nτ. Si veder così come la propagazione di un riporto attraverso un numero elevato di circuiti sia causa di bassa velocità nei circuiti aritmetici. Si noti che il ritardo nτ è il ritardo massimo. Se in uno stadio intermedio i-esimo i due addendi hanno ambedue i bit nulli (a i = b i =0), qualsiasi sia il valore del riporto c i in ingresso dallo stadio 13 14

8 precedente, il riporto c i+1 in uscita è nullo. Se invece i due addendi hanno entrambe i bit pari ad 1 (a i = b i =1); qualsiasi sia il valore del riporto c i in ingresso il riporto c i+1 in uscita vale 1. In ambedue i casi la catena di propagazione del riporto è interrotta allo stadio i-esimo; si hanno, nel peggiore dei casi, due riporti che si propagano contemporaneamente: il primo dal primo stadio a destra allo stadio (i-1)-esimo ed il secondo dallo stadio i-esimo fino all ultimo a sinistra. Il ritardo è, in questo caso, il massimo tra iτ e (n-i)τ. Pur essendo il ritardo massimo nτ poco probabile (i due addendi dovrebbero avere l uno gli stessi bit dell'altro ma complementati, a meno del bit più significativo), occorre prevedere che il ritardo massimo sia compatibile con la durata del clock (tra due impulsi di clock l'addizionatore deve terminare la propria operazione) e ciò limita la frequenza massima del clock di un sistema di che utilizzi l'addizionatore. Si accenna ora ad alcuni metodi per ottenere addizionatori veloci. Probabilmente il circuito elementare full-adder è il circuito combinatorio a tre entrate e due uscite più studiato; tutte le soluzioni oggi note sono state studiate in modo che il calcolo del bit di riporto risulti più veloce del calcolo del bit di somma. Trattandosi di progetto elettronico piuttosto che logico, non ci si sofferma qui su questo argomento. Sono state proposte nuove architetture con propagazione limitata del segnale di riporto ed addizionatori che eliminano totalmente la propagazione di riporto o precalcolando simultaneamente i riporti in ingresso a tutte le celle oppure tramite l'uso di codici binari ridondanti. Alla prima classe appartengono gli addizionatori Cond.SA (Conditional Sum Adders) e quello CarrySA (Carry Save Adders) mentre al secondo tipo corrispondono gli addizionatori ad anticipazione di riporto basati su codici ridondanti. Una soluzione flessibile è fornita dagli addizionatori Carry- Lookahead (ad anticipazione di riporto), ampiamente disponibili anche nella componentistica e nelle librerie di celle standard; il concetto di base è il seguente. Nella generica cella i-esima di un addizionatore a propagazione di riporto, il riporto in uscita c i+1 deriva da una componente generata localmente (il riporto vale 1 tutte le volte che ambedue i bit i-esimi degli addendi valgono 1) e una propagata dovuta al riporto in ingresso (che viene propagato all uscita se e solo se almeno uno dei bit i- esimi dei due addendi vale 1): si può scrivere c i+1 =G i +P i c i con G i =a i.b i e P i =a i b i. Per ora, si è solamente effettuata una riscrittura della relazione che fornisce il riporto in uscita; si può però iterare la stessa formulazione su c i, ricavandone c i =G i-1 +P i-1 c i-1 = a i-1.b i-1 + a i-1 b i-1. c i-1 e, riportando questa espressione in quella che dà c i+1, ricavando c i+1 = a i.b i + a i b i (a i-1.b i-1 + a i-1 b i-1. c i- 1) e così via, iterativamente, fino ad esprimere il riporto c i+1 in funzione dei bit da i a 0 dei due addendi. Ciò permette di calcolare simultaneamente tutti i riporti e quindi di valutare il risultato della somma con un ritardo che riguarda solamente tale calcolo 15 e non deve aspettare una propagazione. Il prezzo da pagare è la mancanza di regolarità della struttura che calcola i riporti l espressione logica è diversa per ogni cella e (non appena il valore di i diventa relativamente alto) la complessità della rete logica che calcola il riporto (che diventa una rete con numero di ingressi molto elevato). Spesso, si ricorre a un compromesso, suddividendo gli addendi di n bit in blocchi ad esempio, di quattro bit e adottando la soluzione ad anticipazione di riporto internamente ai blocchi, lasciando poi quella a propagazione di riporto fra un blocco e l altro Prodotto Il problema del prodotto di due fattori interi può essere suddiviso in due fasi: la determinazione di una matrice iniziale di bit e la somma dei bit di tale matrice. Nel seguito si studieranno i seguenti punti: determinazione della matrice iniziale per fattori interi positivi, determinazione del prodotto con somme per righe dei bit della matrice iniziale, determinazione del prodotto con somme per diagonali dei bit della matrice iniziale, determinazione del prodotto con somme per colonne, determinazione della matrice iniziale quando i fattori siano codificati in complemento a Determinazione matrice per il prodotto di fattori positivi Siano dati due fattori A e B (ad esempio, di quattro bit ciascuno) di cui si desidera il prodotto P=AB (che risulterà di otto bit). I due fattori, in rappresentazione binaria senza segno, sono: A=a a a a B=b b b b Il prodotto A.B è esprimibile come: P= AB =(a a a a )(b b b b ) = = a 3 b (a 2 b 3 + a 3 b 2 ) (a 1 b 3 + a 2 b 2 + a 3 b 1 ) (a 0 b 3 + a 1 b 2 + a 2 b 1 + a 3 b 0 ) (a 0 b 2 + a 1 b 1 + a 2 b 0 ) (a 0 b 1 + a 1 b 0 ) a 0 b

9 Ciascuno dei 16 termini a i b j è il prodotto aritmetico di due cifre, una del moltiplicando A e l'altra del moltiplicatore B, ed ha peso 2 i+j. Dato che ogni cifra può assumere solo i valori 0 e 1, il prodotto aritmetico a i.b j coincide con il prodotto logico dei due bit a i e b j (AND). I sedici bit del prodotto indicati possono essere posizionati in una matrice iniziale diagonale, incolonnati in funzione del loro peso. a 3 a 2 a 1 a Prodotto come somma per righe Le quattro righe della tabella 6.1 sono viste come quattro parole (i posti vuoti sono zeri ). Si consideri la figura 6.6: mostra un addizionatore parallelo (il primo e l ultimo stadio sono half-adder in quanto ricevono solo due entrate) che riceve in entrata le prime due righe della tab. 1; il bit a 0 b 0 non viene sommato ad alcun altro bit e quindi rappresenta già il bit p 0 meno significativo del prodotto. a 3 b 0 a 2 b 0 a 1 b 0 a 0 b 0 b 0 a 3 b 1 a 2 b 1 a 1 b 1 a 0 b 1 b 1 a3b1 a2b a3b0 a1b a2b0 a0b a1b0 a0b a 3 b 2 a 2 b 2 a 1 b 2 a 0 b 2 b 2 HA HA a 3 b 3 a 2 b 3 a 1 b 3 a 0 b 3 b 3 Tabella 6.1. Fattori di un prodotto ordinati. Dato che, come si è detto in precedenza, i vari prodotti aritmetici sono equivalenti a prodotti logici, i 16 bit della matrice di tabella 6.1 possono essere ottenuti mediante la rete di figura 6.2 con 16 circuiti AND a due ingressi. La determinazione della matrice diagonale di tab. 1 ed il circuito di figura 6.5 che la realizza possono essere considerati la prima fase dell'operazione di prodotto. Il prodotto finale si ottiene, in base all'equazione sopra riportata, sommando opportunamente i 16 bit della tabella 6.1. a3 a2 a1 a0 b0 Figura 6.6. Circuito di base per la somma per righe. L'uscita del primo addizionatore viene ora sommata alla terza riga della tabella 6.1 mediante un secondo addizionatore (figura 6.7). a3b1 a3b2 HA a2b a2b a2b0 a3b0 a1b a1b a0b HA a0b a1b0 a1b0 p0 a0b HA b1 p1 p0 b3 b2 Figura 6.7. Aggiunta della seconda riga. L'uscita di questo viene sommata poi alla quarta riga di tabella 6.1 mediante un terzo addizionatore (figura 6.8), ottenendo in questo modo tutti i bit del prodotto. Figura 6.5. Circuito che effettua i prodotti. Ci sono due modi fondamentali per considerare i 16 bit in tabella 6.1 come quattro parole da sommare: somma per righe e somma per diagonali

10 a3b1 a2b1 a3b0 a1b1 a0b1 a1b0 a0b0 entrambe le strutture sono facilmente integrabili su silicio sono fortemente regolari e ripetitive, HA HA a3b2 a1b0 a2b2 a1b2 a0b2 HA la velocità privilegia la struttura di figura 6.9 (il percorso critico qui è lungo solo 7). a3b1 a3b0 a2b1 a1b1 a2b0 a0b1 a1b0 a0b0 a3b3 a2b3 a1b3 a0b3 a3b2 a2b2 HA HA a1b2 a0b2 HA HA p7 p6 p5 p4 p3 p2 p1 p0 a3b3 a2b3 a1b3 a0b3 Figura 6.8. Circuito completo per la somma per righe. Per analizzare i ritardi, si supponga per semplicità che gli half-adder abbiano la stessa velocità dei full-adder; si supponga inoltre che l'uscita di riporto e quella di somma abbiano uguali ritardi e si ponga pari a 1 tale ritardo. Queste ipotesi valgono in prima approssimazione: un analisi più accurata richiederebbe la conoscenza dei ritardi introdotti da HA e da sia sull uscita di riporto che su quella di somma. HA Si supponga che i bit a i del moltiplicando e i bit b j del moltiplicatore siano noti all'istante 0. Tutti gli AND in figura 6.5 sono attivi simultaneamente, quindi i sedici bit a i b j risultano noti all'istante 1. Per quanto riguarda i, indicando con t a, t b, t c e t cs gli istanti in cui sono noti rispettivamente i tre segnali di entrata e le due uscite, queste risultano note un tempo elementare dopo l'ultima delle entrate: t cs = max(t a, t b, t c ) + 1 Il ritardo massimo può essere valutato cercando il percorso critico attraverso la rete di figura 6.8; si calcola rapidamente che il moltiplicatore richiede nove ritardi elementari, uno per ottenere la matrice iniziale (figura 6.5) e otto per sommare le quattro righe di tabella 6.1. Dato che i riporti si propagano tutti nella stessa direzione, i tempi richiesti per la moltiplicazione dipendono linearmente dal numero di bit dei fattori (i ritardi sono quindi circa doppi di quelli necessari per la somma). Figura 6.9. Circuito per la somma per diagonali Prodotto come somma per colonne È il metodo più vicino a quello con cui vengono eseguite manualmente le moltiplicazioni tra numeri interi decimali. La matrice iniziale di tabella 6.1 viene innanzitutto schematizzata come in figura 6.10a, dove si indicano solo le posizioni dei vari bit, cioè delle uscite del circuito di figura Prodotto come somma per diagonali In tabella 6.1 si nota che le due diagonali a sinistra possano essere considerate come due numeri da sommare; ciò porta al circuito di figura 6.2. Un confronto con quello di figura 6.9 permette di stabilire che: il costo (numero di HA e di ) è identico, a) b) Figura Circuito per la somma per colonne

11 Eseguire la somma per colonne significa sommare tutti i bit di ciascuna colonna in figura 6.10a, quindi contare quanti di questi bit valgono 1. La figura 6.10b indica il componente fondamentale per eseguire tale operazione: il circuito contatore parallelo, cioè un circuito combinatorio con n ingressi e m=lg(n+1) di uscite; queste ultime forniscono la codifica binaria del numero di ingressi che, a un dato istante, valgono 1. Se le sei entrate del contatore parallelo di figura 6.10b sono i sei bit della colonna centrale della matrice iniziale di figura 6.10a, tali sei bit hanno tutti lo stesso peso 2 5 (è la sesta colonna da destra); dei tre bit in uscita, quello meno significativo ha lo stesso peso 2 5, quello centrale ha peso 2 6 e quello più significativo ha peso 2 7. Il disegno di figura 6.11a è identico a quello di figura 6.10b, ma con entrate ed uscite posizionate in modo da apparire in colonne con il peso opportuno; ad esempio tutte le sei entrate e l uscita meno significativa sono allineate sulla stessa colonna; nelle colonne successive appaiono le altre due uscite. La figura 6.11b riporta un comodo modo per rappresentare il contatore parallelo: una linea racchiude le entrate mentre le uscite vengono indicate come in figura 6.11a. La tabella 6.2 riporta, per comodità, la funzione m=lg(n+1), ossia il legame tra numero di entrate e numero di uscite di un contatore parallelo. a) b) Figura Schema del contatore parallelo. n entrate n uscite Tabella 6.2. Legame entrate/uscite del contatore parallelo. In particolare si noti che: non esiste un contatore ad un solo ingresso: il numero di uni in un solo bit coincide con il bit stesso; un contatore a due ingressi ed uno a tre ingressi coincidono, per definizione, rispettivamente con un circuito HA ed uno. 21 Infine, esistono diversi metodi per ottenere il prodotto di due numeri interi positivi mediante il metodo della somma per colonne; la figura 6.12 riporta l'inizio di un primo metodo, mostrando la matrice iniziale per fattori di sei bit ciascuno. cp3 Figura Schema del circuito di somma per colonne. e d c b a cp 2 cp 1 p3 p2 p1 p0 La prima colonna a destra (livello 0) é costituita dal solo bit a 0 b 0 che, come già detto, è il conteggio di se stesso e rappresenta il primo bit p 0 del prodotto. La seconda colonna è costituita dai due bit a 1 b 0 e a 0 b 1 che sono le entrate di un contatore parallelo a due entrate e due uscite; l uscita meno significativa è il secondo bit p 1 del prodotto mentre quella più significativa viene riportata nella terza colonna (livello 2) con il quadrato pieno a (come se fosse un riporto alla colonna successiva). La terza colonna da destra (livello 2; peso 2 2 ) contiene tre bit della matrice iniziale (a 2 b 0, a 1 b 1 e a 0 b 2 ) ed il riporto a dalla colonna precedente; si usa un contatore parallelo cp 2 con quattro ingressi e tre uscite la cui uscita meno significativa rappresenta il terzo bit p 2 del prodotto; le altre due uscite sono i riporti b alla quarta colonna e d alla quinta colonna da destra. Al livello 3 si hanno quattro bit dalla matrice iniziale ed un bit b di riporto dalla colonna precedente; si usa quindi un contatore parallelo cp 3 con cinque ingressi e tre uscite; l'uscita meno significativa rappresenta il quarto bit p 3 del prodotto mentre le altre due uscite sono i bit c al livello 4 ed e al livello 5. Il procedimento si itera fino a realizzare la struttura completa, su cui si possono fare le seguenti osservazioni: la struttura presenta 13 uscite da p 0 a p 12 mentre un moltiplicatore con fattori di sei bit ciascuno produce solo 12 uscite; qualsiasi siano i due fattori, il tredicesimo bit p 12 sarà sempre nullo; la struttura rappresenta il modo più naturale per estendere al caso binario e ad una struttura hardware il metodo comunemente usato per eseguire manualmente l operazione di moltiplicazione di numeri decimali, ma presenta diversi svantaggi 22

12 rispetto ad altre soluzioni che verranno discusse in seguito. Uno degli svantaggi, comune a tutte le soluzioni basate sulla somma per colonne, consiste nella perdita di regolarità dei circuiti e delle connessioni. Un altro svantaggio riguarda la velocità: accettando che un Full-Adder, uno Half-Adder o un contatore parallelo con un qualsiasi numero di entrate presentino le uscite con un ritardo pari a un tempo elementare dopo la più lenta delle entrate (ipotesi difficilmente accettabile per un circuito complesso come un contatore parallelo a molte entrate), la sola somma dei vari bit della matrice iniziale richiede 3n-4 tempi elementari per la somma per righe, 2n-2 tempi elementari per la somma per diagonali e 2n-1 tempi elementari per il metodo ora visto di somma per colonne; pertanto il metodo sopra esposto ha velocità paragonabile al metodo della somma per diagonali (sempre che l'ipotesi sopra indicata possa essere considerata valida). a M0 M1 Proprio per migliorare la velocità, si descrive ora un secondo metodo. Si consideri la figura 6.13: in alto si riporta una diversa rappresentazione di un contatore parallelo: la linea chiusa rappresenta il contatore; i cerchi pieni interni al simbolo del contatore sono le entrate (allineati sulla stessa verticale in quanto hanno lo stesso peso); le tre uscite (su colonne adiacenti in quanto hanno pesi diversi) sono unite da una linea per indicare che derivano dallo stesso contatore. La figura 6.13 in basso presenta lo schema completo del moltiplicatore (ad eccezione della matrice di circuiti AND che calcola la matrice iniziale); i soli bit della matrice iniziale vanno in ingresso a una serie di contatori (matrice M 0 ) le cui uscite costituiscono gli ingressi a una seconda matrice di contatori M 1. Si può dimostrare che: la somma dei vari bit della matrice iniziale M 0 (sei righe) rappresenta il prodotto finale (ipotesi iniziale), la somma dei vari bit della matrice M 1 (tre righe) rappresenta ancora lo stesso prodotto finale. Il procedimento viene ripetuto per passare dalla matrice M 1 (tre righe) alla matrice M 2 (due sole righe). Ancora, come ai punti precedenti, si può affermare che il prodotto finale corrisponde alla somma dei vari bit della matrice M 2. Raggiunta una matrice di due sole righe, la somma può essere eseguita mediante un normale addizionatore, come indicato in figura Si noti che, come per il primo metodo, per un moltiplicatore con fattori di sei bit si ottengono 13 bit di risultato; il tredicesimo bit sarà sempre nullo. 23 Sommatore veloce p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0 Figura Schema alternativo di circuito per la somma per colonne. La figura 6.14 indica la struttura generale di un moltiplicatore basato sulla somma per colonne (del tipo di figura 6.13 oppure di quelli presentati in seguito): il prodotto viene ottenuto in tre fasi successive: la prima fase determina, mediante una matrice di circuiti AND, la matrice M 0 iniziale, la seconda fase utilizza contatori parallelo per ridurre il numero di righe della matrice iniziale fino ad arrivare ad una matrice composta da due sole righe, la terza fase utilizza un addizionatore per sommare le due righe dell'ultima matrice ottenuta alla seconda fase. Si noti che la seconda fase riduce il numero di righe in un numero molto limitato di passi: l'ultima matrice ha due righe: i bit di tali righe sono le uscite dei contatori della matrice precedente che pertanto deve avere non più di tre righe (un contatore con due uscite non può avere più di tre entrate); la penultima matrice ha tre righe ed i bit di tali righe sono le uscite dei contatori M2 24

13 della terzultima matrice e questa pertanto deve avere non più di sette righe (un contatore con tre uscite non può avere più di sette entrate); la terzultima matrice ha sette righe ed i bit di tali righe sono le uscite di eventuali contatori della quartultima matrice (se esiste); dato che un contatore a sette uscite può avere fino a entrate, la quartultima matrice può avere fino a 127 righe e quindi un moltiplicatore con fattori da 8 fino a 127 bit (tutti i moltiplicatori usati normalmente rientrano in questo caso) riducono il numero di righe dalla matrice iniziale ad una matrice finale di due righe in al massimo tre passi (matrici M 0, M 1, M 2, M 3 ) utilizzando al massimo tre tempi elementari. A Generazione M0 Riduzione a due righe B ciascun addizionatore fosse stato sostituito con un addizionatore veloce. L interesse del circuito di figura 6.13 nasce dal fatto che questo richiede un solo addizionatore veloce ma costoso, mentre la struttura con somma per righe ne richiederebbe n-1. Uno degli svantaggi del moltiplicatore di figura 6.13 consiste nel richiedere contatori con un numero diverso (e potenzialmente molto alto) di entrate (due contatori con diverso numero di entrate sono circuiti diversi che devono essere progettati separatamente) - con fattori di n bit vi è sicuramente un contatore con n entrate. Diversi studiosi si sono dedicati al progetto di moltiplicatori non solo veloci, ma anche realizzati con contatori paralleli di pochissimi tipi diversi, quindi con strutture fortemente modulari. Così, il moltiplicatore di Wallace (una delle strutture più diffuse) usa solamente contatori paralleli a tre ingressi e due uscite (cioè dei Full- Adder) e contatori paralleli a due ingressi e due uscite (cioè degli Half-Adder). Anche qui si riduce successivamente il numero di righe dalla matrice iniziale M 0 ad una matrice finale con due sole righe in modo da poter utilizzare un solo addizionatore veloce per ottenere il prodotto finale. Sommatore Prodotto M0 Figura Struttura generale di moltiplicatore basato su somma per colonne. L'interesse del circuito del tipo di figura 6.13 (e per tutti quelli che da esso verranno successivamente derivati) consiste nella velocità: M1 tutti i bit della matrice iniziale M 0 risultano noti contemporaneamente dopo un solo tempo elementare, nella seconda fase tutti i contatori parallelo di una fascia orizzontale, ossia quelli che agiscono su bit di una determinata matrice, operano simultaneamente e quindi tutti i bit della matrice successiva vengono ottenuti contemporaneamente; nella maggior parte dei casi (fattori da 7 a 127 bit) la seconda fase richiede tre tempi elementari; la terza fase è quella che richiede la maggior parte del tempo: se l addizionatore è a propagazione di riporto, il bit più significativo del prodotto appare dopo 2n-1 tempi elementari nel caso generale di fattori di n bit ciascuno: in sostanza Praticamente tutto il ritardo è dovuto all'addizionatore finale: se si utilizza un addizionatore più complesso, ma molto più veloce di uno a propagazione di riporto, l intero moltiplicatore ha tempo di esecuzione dell'ordine di log(n). Si sarebbe ottenuto lo stesso risultato utilizzando una struttura con somma per righe in cui 25 Figura Moltiplicatore di Wallace. Si consideri la matrice iniziale M 0 di figura 6.15: il primo bit in alto a destra viene trasportato direttamente alla matrice M 1 (un bit della matrice iniziale non contato e trasportato in una matrice successiva viene M2 26

14 indicato con un cerchio vuoto); nella seconda colonna da destra si hanno due bit che costituiscono le entrate di un contatore a due ingressi e due uscite riportate alla matrice successiva M 1 ; nella terza colonna da destra si hanno tre bit; un contatore a tre ingressi produce due uscite che vengono riportate alla matrice successiva; nella quarta colonna si hanno quattro bit: tre di questi vengono contati, il quarto viene direttamente portato alla matrice successiva; nella quinta colonna si hanno cinque bit che costituiscono le entrate di due contatori, uno da due entrate ed uno da tre entrate; ecc. Si ottiene così da una matrice M 0 di sei righe una matrice M 1 di quattro, sulla quale: le prime due colonne a destra constano ognuna di un solo bit; tali bit vengono quindi trasportati ala matrice seguente; nella terza colonna si hanno due bit: un contatore a due ingressi produce due uscite portate alla matrice successiva; nella quarta e quinta colonna si hanno tre bit: si usano due contatori a tre entrate e due uscite; nella sesta colonna si hanno quattro bit: tre di questi vengono contati con un contatore a tre ingressi mentre il quarto viene trasportato alla matrice successiva ecc. Si ottiene in questo modo la matrice M 2 di tre righe e da questa, con lo stesso metodo, la matrice M 3 di due sole righe. un addizionatore (veloce, per ottenere un moltiplicatore di alta velocità), non indicato in figura 6.15, permette di ottenere il prodotto finale. Il principio di funzionamento del moltiplicatore di Wallace è molto simile a quello di figura 6.13, con due sole differenze: si usano solo due tipi di contatori a poche (2 o 3) entrate, quindi di ridotte dimensioni e maggiore velocità, la riduzione del numero di righe dalla matrice iniziale all'ultima matrice di due righe risulta molto più lenta, l ultima matrice ha due righe, queste sono le uscite di una fila di contatori con al massimo tre ingressi, la penultima matrice ha pertanto tre righe: due di queste possono essere le uscite di una fila di contatori a tre ingressi nella terzultima matrice mentre l ultima riga vie trasportata direttamente dalla terzultima matrice, la terzultima matrice ha quattro righe ed ogni coppia di queste rappresenta l uscita di una fila di contatori della quartultima matrice, la quartultima matrice ha sei righe e ciascuna delle tre coppie di queste rappresenta l'uscita di una fila di contatori della quintultima matrice (non segnata in figura 6.15), la quintultima matrice ha nove righe; una di queste è trasportata direttamente dalla sestultima matrice; le rimanenti otto rappresentano le uscite di quattro file di contatori nella sestultima matrice che pertanto ha 13 righe ecc. Si hanno pertanto matrici con il seguente numero massimo di righe: Ultima 2 Penultima 3 Terzultima 4 Quartultima 6 Quintultima 9 Sestultima 13 Settultima 19 ecc. La lentezza nella riduzione del numero di righe porta ad un maggior numero di circuiti (contatori) che devono essere attraversati per passare dalla matrice iniziale a quella finale, ma ciò viene ampiamente compensato dalla maggiore velocità di un contatore a pochi ingressi rispetto ad uno con un elevato numero di ingressi

15 Prodotto di interi con segno Nel caso in cui si vogliano moltiplicare fattori dotati di segno si possono usare più tecniche. La prima, e più ovvia, è quella di trasformare gli operandi in modo da ottenere fattori positivi, eseguire il prodotto di tali numeri positivi e, per ultimo, assegnare il segno opportuno al prodotto. Questo metodo è l unico possibile se i fattori sono rappresentati in modulo e segno: il prodotto viene ottenuto moltiplicando i moduli mediante uno dei moltiplicatori già descritti, e il segno del prodotto viene ottenuto mediante un operazione XOR sui segni degli operandi. Se invece i fattori sono rappresentati in complemento a 2, l'applicazione del metodo precedente è complessa e onerosa in termini di velocità: occorre infatti eseguire l'operazione di prodotto in più fasi: complementare il primo fattore se il bit più significativo vale 1: ciò richiede un addizionatore; complementare il secondo fattore se il bit più significativo vale 1: ciò richiede un secondo addizionatore, se l operazione è contemporanea a quella del punto precedente; eseguire la moltiplicazione ottenendo un prodotto positivo se uno ed uno solo degli operandi è negativo, cambiare segno al prodotto finale. Si preferisce quindi ricorrere a metodi che producano direttamente il prodotto con il segno giusto. Come si vedrà ora, è necessario modificare solo la generazione della matrice iniziale, utilizzando poi, per eseguire la somma dei vari bit della matrice iniziale, uno dei metodi già esposti per il caso di fattori senza segno. Figura Moltiplicatore di Dadda. Infine la figura 6.23 riporta un quarto metodo (moltiplicatore di Dadda). Fondamentalmente, mentre nel moltiplicatore di Wallace si cerca, ad ogni matrice (iniziale o intermedia), di contare il più possibile, nel moltiplicatore di Dadda si cerca invece di contare il meno possibile pur di soddisfare i requisiti della tab. 3. Ad esempio i tre contatori a tre ingressi ed i tre contatori a due ingressi rappresentano il minimo numero di contatori per passare dalla matrice M 0 di sei righe alla matrice successiva M 1 di quattro righe; i cinque contatori a tre ingressi ed il contatore a due ingressi rappresentano il minimo numero di contatori per passare dalla matrice M 1 di quattro righe alla matrice M 2 di tre righe ecc. Le due soluzioni di Wallace e di Dadda hanno la stessa velocità ma la seconda è più economica (un minor numero di contatori); Il risparmio aumenta al crescere della lunghezza dei fattori. Si consideri, come esempio, un numero A rappresentato mediante quattro bit a 3, a 2, a 1, a 0 ; un modo per considerare l insieme dei quattro bit come un numero rappresentato in complemento a 2 consiste nel considerare come negativo il bit più significativo (e indicatore del segno); il numero A pertanto vale A=(-a 3 )2 3 + a a a Se ambedue i fattori sono rappresentati in complemento a 2, si ha: A=(-a 3 )2 3 + a a a B=(-b 3 )2 3 + b b b e quindi la matrice diagonale è: 29 30

16 a 3 a 2 a 1 a 0 -a 3 b 0 a 2 b 0 a 1 b 0 a 0 b 0 b 0 -a 3 b 1 a 2 b 1 a 1 b 1 a 0 b 1 b 1 -a 3 b 2 a 2 b 2 a 1 b 2 a 0 b 2 b 2 +a 3 b 3 -a 2 b 3 -a 1 b 3 -a 0 b 3 b 3 Tabella 6.3. Fattori di un prodotto con segno. Si noti che il termine a 3 b 3 in basso a sinistra è il prodotto di due termini negativi e quindi risulta positivo. Il prodotto viene ottenuto, come per il caso di fattori positivi precedentemente discusso, sommando i vari termini della tabella precedente ma tenendo opportunamente in conto i segni di tali termini. Si indica qui solamente uno (il più semplice) dei vari metodi possibili: Si suddivide la tabella 6.3 nelle seguenti due tabelle: 0 a 2 b 0 a 1 b 0 a 0 b 0 0 a 2 b 1 a 1 b 1 a 0 b 1 0 a 2 b 2 a 1 b 2 a 0 b 2 a 3 b Tabella 6.4. Fattori positivi di un prodotto con segno. a 3 b a 3 b a 3 b Divisione Come per una divisione eseguita manualmente, l operazione di divisione richiede una successione di sottrazioni e di confronti: per questa ragione si inizia il paragrafo con l analisi del problema del confronto tra due numeri interi. Un circuito comparatore è un circuito che riceve (figura 6.17a) due numeri interi A e B e produce due uscite α e β con il seguente significato: se α=1 allora A>B, se β=1 allora A<B, se entrambe le uscite sono nulle (α = β = 0) allora i due numeri sono uguali, la situazione α=β=1 non si verifica mai (significherebbe A>B e contemporaneamente A>B. L operazione di confronto viene usata molto frequentemente, non solo nei divisori; la struttura che la realizza, riportata in figura 6.17b, è un interessante esempio di circuito con riporti che si propagano da sinistra a destra (in direzione opposta rispetto ad addizionatori e moltiplicatori). Se ambedue i numeri A e B sono interi senza segno - se cioè anche il bit più significativo ha peso positivo, si verifica facilmente che confrontano i bit di A e quelli di B a partire da sinistra verso destra (iniziando quindi dai bit più significativi) il risultato del confronto viene determinato non appena uno dei due numeri ha in posizione i-esima un bit di valore 0 e l altro lo ha di valore 1: il numero col bit a 1 è certamente il maggiore, indipendentemente dai valori dei bit meno significativi. In posizione i si pone allora a 1 l opportuno valore del riporto che indica il risultato del confronto (si porrà α i =1 se a i =1 e b i =0, dualmente β i =1 se a i =0 e b i =1); chiaramente, fino a quando non si determina la condizione di definizione del confronto ambedue i riporti in uscita restano a 0. Peraltro, non appena una cella riceve in ingresso un riporto diverso da 0, propaga tale valore ai riporti in uscita indipendentemente dai valori degli ingressi a e b. A B 0 a 2 b 3 a 1 b 3 a 0 b 3 Tabella 6.5. Fattori negativi di un prodotto con segno. α β a) dove la prima contiene solo i termini positivi mentre la seconda solo quelli negativi. a n b n a 2 b 2 a 0 b 0 Si sommano i vari bit di ciascuna tabella (usando i metodi per righe, diagonali o colonne già visti) ottenendo due risultati P + e P - ; il prodotto finale viene calcolato sottraendo il secondo dal primo P=P + - P - (si noti che la tabella 6.5 consiste solo in due righe e pertanto P - viene ottenuto mediante un sommatore). 0 0 α n β n α 2 β 2 Figura Schema di comparatori. α 1 β 1 α 0 β 0 b) La figura 6.17b riporta lo schema del comparatore derivato da questa analisi 31 32

17 dell'operazione di confronto: il comparatore è una rete iterativa di celle identiche, la cella i-esima riceve in entrata la coppia di bit a i e b i dei due numeri da confrontare e la coppia di riporti in ingresso α i+1 e β i+1 che indicano il risultato del confronto nelle celle precedenti, e produce i riporti in uscita α i e β i. La prima cella a sinistra riceve in entrata α n+1 = β n+1 =0; i valori di α 0 e β 0 indicano il risultato del confronto. La tabella 6.12 riporta la tabella delle verità della generica cella. figura α i+1 a i b i α i α i+1 β i+1 a i b i α i β i β i β i x x x x x x x x Tabella 6.6. Tabella delle verità della cella del comparatore. Dato che non può mai essere α i+1 =1 e β i+1 =1, in tutte le righe con α i+1 = β i+1 =1 si inseriscono per α i e β i delle condizioni di indifferenza. Se α i+1 = 1 oppure β i+1 =1, la determinazione del confronto è avvenuta negli stadi precedenti, quindi α i = α i+1 e β i = β i+1. Nella prima e quarta riga la determinazione del numero maggiore non è ancora avvenuta e le due entrate a i e b i sono uguali, quindi anche le due uscite sono nulle. Dalla tabella delle verità si ricava (figura 6.18) il circuito di ogni stadio della Figura Circuito corrispondente ad una cella del comparatore. Si vogliano ora confrontare due numeri in complemento a 2, e si tenti di usare ancora il circuito prima introdotto; se si confrontano due numeri ambedue negativi e rappresentati in complemento a 2, il risultato è corretto. Se invece i due numeri hanno segno opposto, è immediato verificare che il risultato sarebbe errato (verrebbe indicato come maggiore il numero negativo!): il problema può però essere risolto applicando, al primo stadio a sinistra di figura 6.17, i bit più significativi (e indicativi del segno) complementati. Se i due numeri hanno lo stesso segno i due bit più significativi sono uguali e la loro complementazione non modifica il risultato corretto del confronto. Se, invece, i due numeri hanno segno diverso, il bit più significativo del numero positivo vale ora 1 mentre quello del numero negativo vale ora 0; il primo stadio a sinistra del confrontatore determina quindi immediatamente che il numero positivo è maggiore di quello negativo. Si può ora affrontare il problema della divisione fra numeri interi positivi: si disponga di un numeratore N 0 e di un denominatore D non nullo (la verifica che il denominatore sia non nullo viene eseguita prima dell inizio della divisione): si desidera determinare un quoziente Q ed un eventuale resto R in modo che sia valida la relazione: N 0 = DQ+R eq. 1 con 0 R < D eq. 2 Sia n il numero di bit del denominatore D; dato che il resto può assumere al massimo un valore R=D-1, anche il resto è di n bit (denominatore e resto hanno lo stesso numero n di bit). Il massimo quoziente si ha con il minimo denominatore; dato che il denominatore è un intero positivo non nullo, il minimo denominatore vale 1 - in questo caso il 33 34

18 quoziente è uguale al numeratore; quindi quoziente e numeratore hanno lo stesso numero m di bit. Se i dati in entrata (numeratore e denominatore) hanno lo stesso numero di bit, si ha m=n, ossia tutti i quattro dati hanno uguale dimensione. Esistono diversi algoritmi per eseguire la divisione tra numeri interi positivi; se ne esamina qui uno che più si avvicina al metodo di divisione manuale su numeri decimali. Come in tale caso, le cifre del quoziente vengono determinate a partire dalla più significativa. Si determina innanzitutto il bit più significativo q n-1 del quoziente, essendo: Q = q n-1 2 n-1 + q n-2 2 n-2 + q n-3 2 n q q Si dimostra che se N 0-2 n-1 D < 0 allora q n-1 = 0, in caso contrario q n-1 = 1; si mette così in evidenza il bit più significativo q n-1. L equazione della divisione può quindi essere scritta come segue: N = D(qn -1 2 n 1+ Q 1 ) + R eq. 3 e, sottraendo ad entrambe i membri il termine D 2 n-1, N - D2 n-1 = D(2 n-1 (q n-1-1)+ Q 1 ) + R Da questa relazione si ricava il resto R: R = (N 0 - D2 n-1 ) - D(2 n-1 (q n-1-1)+ Q 1 Le condizioni espresse in eq. 2 possono quindi essere scritte come segue: (N 0 - D2 n-1 ) - D(2 n-1 (q n-1-1)+ Q 1 ) 0 eq. 2' (N 0 - D2 n-1 ) - D(2 n-1 (q n-1-1)+ Q 1 ) < D eq. 2" Si considerano ora i seguenti tre casi. N 0 - D 2 n-1 = 0: le condizioni (2') e (2") diventano: D [2 n-1 (q n-1-1)+ Q 1 ] 0 D [2 n-1 (q n-1-1)+ Q 1 ] > -D e poiché D è sicuramente positivo e non nullo, le condizioni precedenti diventano: [2 n-1 (1 - q n-1 ) - Q 1 ] 0 [2 n-1 (1 - q n -1 ) - Q 1 ] < 1 Poiché Q 1 non può essere negativo e che Q 1 2 n-1-1 (il segno di uguale vale solo se tutti i bit q n-2 q 0 di Q 1 valgono 1), nel caso fosse q n-1 =0 la seconda condizione non sarebbe verificata; d'altro canto la prima relazione, se fosse q n-1 =1, sarebbe verificata solo se Q 1 =0, ossia se tutti i bit q n-2 q 0 di Q 1 valessero 0. Si noti che in questo caso si sono determinati tutti i bit del quoziente ed il resto risulta nullo. N 0 - D 2 n-1 < 0: se q n-1 = 1, la condizione (2') diventa (N 0 - D2 n-1 ) - D Q 1 0; dato 35 che D e Q 1 non possono essere negativi, la condizione precedente non può mai essere verificata, pertanto l'unica condizione valida è q n-1 = 0. N 0 - D 2 n-1 > 0: se q n-1 = 0, la condizione (2") diventa (N 0 - D2 n-1 ) + D(2 n-1 - Q 1 )< D: dato che Q 1 2 n-1-1 (l uguaglianza vale solo se tutti i bit q n-2 q 0 di Q 1 valgono 1), la condizione precedente non può mai essere verificata, quindi l unica condizione valida è q n-1 = 1. Una volta determinato il bit più significativo q n-1 del quoziente, l equazione (3) può essere riscritta come N 1 = N 0 - Dq n-1 2 n-1 = DQ 1 + R eq. 3' e quanto detto può essere utilizzato per determinare il bit più significativo q n-2 di Q 1 : se N 1 - D 2 n-2 < 0 allora q n-2 = 0, altrimenti q n-2 = 1. Calcolato il bit q n-2, l'equazione (3') può essere scritta come: N 2 = N 1 - Dq n-2 2 n-2 = DQ 2 + R eq. 3" con Q 2 = q n-2 2 n-2 + q n-3 2 n-2 + +q q 0 Il procedimento viene ripetuto fino alla determinazione di q 0 - quando l'equazione (3) si riduce a N n = N n-1 - Dq = R eq. 3 n determinando con ciò, oltre a tutti i bit del quoziente, anche il resto della divisione. Si presentano ora alcuni esempi di applicazione del metodo esposto, con numeratore e denominatore di n=4 bit ciascuno (come quoziente e resto). Siano dati N 0 =13 (1101) e D=1; in questo caso il quoziente coincide con il numeratore (Q=1101) ed il resto è nullo. Si confronta il numeratore N 0 (parte evidenziata della prima riga di tabella 6.7) con il denominatore spostato di n-1=3 posizioni a sinistra (parte evidenziata della seconda riga di tabella 6.7) ossia con D 2 n-1 ; la prima riga è maggiore della seconda, quindi q n-1 = q 3 =1 (terza riga). Si calcola N 1 =N 0 -q 3 D2 3 (quarta riga; sottrazione della prima riga e della seconda riga) e si confronta N 1 con D2 n-2 (cioè con il denominatore spostato a sinistra di due posizioni: parte evidenziata della quinta riga). Dato che la quarta riga supera la quinta, è q 2 =1 (sesta riga). Si calcola N 2 =N 1 -q 2 D2 2 (settima riga) e dato che N 2 è inferiore a 2D (ottava riga) è q 1 =0 (nona riga). Si calcola N 3 =N 2 -q 1 D2 1 (decima riga) e dato che N 3 = D (undicesima riga) è q 0 =1 (dodicesima riga). 36

19 L ultima riga indica il resto (nullo) della divisione. Negli esempi successivi, tutti i bit non evidenziati nelle tabelle sono sempre nulli. N N D D q 3=1 q 3=0 N 1=N 0-q 3 D N 1=N 0-q 3 D D D q 2=1 q 2=1 N 2=N 1-q 2 D N 2=N 1-q 2 D D D q 1=0 q 1=1 N 3=N 2-q 1 D N 3=N 2-q 1 D D D q 0=1 q 0=0 R=N 3-q 0 D R=N 3-q 0 D Tabella 6.7. Es. 13/1 Q=13, R=0. Tabella 6.8. Es. 13/2 Q=6, R=1. Tabella 6.9. Es. 13/12 Q=0, R=13. N D q 3=0 N 1=N 0-q 3 D D q 2=0 N 2=N 1-q 2 D D q 1=0 N 3=N 2-q 1 D D q 0=0 R=N 3-q 0 D La figura 6.19 riporta lo schema di un primo circuito che implementa le prime 5 righe degli esempi sopra riportati e calcola il bit q 3 più significativo del quoziente; si vedrà poi come tale schema sia semplificabile Si utilizza un confrontatore a sette stadi per confrontare i due numeri N 0 e D2 3 (il denominatore è spostato a sinistra di tre posizioni). Se è β 0 = 0, è N 0 = D2 3 oppure N 0 > D2 3 - quindi q 3 =1 ed il valore di N 1 si otterrebbe sottraendo D2 3 da N 0. La sottrazione viene eseguita con un sommatore costituito dai quattro full-adders (non ne servono sette in quanto, se D2 3 non supera N 0, sicuramente è d 3,d 2,d 1 = 000) dove uno degli addendi è complementato e il riporto iniziale viene posto ad uno. Il nuovo numeratore N 1 è l uscita dell addizionatore se β 0 = 0, è il vecchio numeratore N 0 se β 0 = 1. La scelta tra N 0 e l'uscita del sottrattore viene eseguita mediante i quattro MUX comandati da β 0. 37

20 d3 0 0 CF 0 d2 0 d1 0 CF CF d0 CF n3 0 CF n2 0 n1 0 CF 0 1 MUX d3 d2 d1 n 3 d0 0 0 Figura Schema parziale di un divisore. 0 1 MUX 0 1 MUX CF 0 1 MUX n 2 n Una volta determinati i quattro valori n' 3 n' 0, i quattro bit del denominatore vengono spostati di una posizione a destra, completati con due 0 nelle posizioni meno significative e inviati in ingresso ad un secondo stadio identico (salvo che per il numero dei confrontatori, che sono qui sei) insieme alla configurazione 00 n' 3 n' 0. Lo schema completo del divisore si ottiene ripetendo quattro volte la struttura di figura 6.19, scalata ogni volta nel numero di confrontatori e nel posizionamento dei bit del denominatore; ognuna delle quattro parti di tale struttura genera un bit del quoziente e prepara i dati per effettuare la successiva operazione di divisione N 1 = DQ 1 + R, N 2 = DQ 2 + R, fino a R. Volendo valutare la velocità del circuito ora descritto, si deve notare che esso prevede riporti da sinistra a destra (nel confrontatore) e da destra a sinistra (nel sottrattore); confronto e sottrazione vengono eseguiti contemporaneamente ma la scelta, tramite il MUX, può essere compiuta solo nel momento in cui sia il confrontatore sia il sottrattore hanno terminato la loro operazione, cioè la propagazione dei loro riporti. Ciascuna delle n parti di un divisore per n bit ha un tempo di esecuzione proporzionale ad n; il tempo di esecuzione dell intero divisore risulta quindi proporzionale a n 2 (contrariamente al tempo di esecuzione di un sommatore o di un moltiplicatore, che è proporzionale a n). Il divisore è dunque un circuito molto lento, soprattutto se i dati sono costituiti da un elevato numero di bit (32 o 64). Una considerazione importante, però, è di tipo statistico: nella stragrande maggioranza dei casi, il numero di some e moltiplicazioni che devono essere compiute da un sistema digitale (sia esso parte di un sistema dedicato o di un normale calcolatore o DSP) è molto più elevato del numero di divisioni. La divisione quindi, pur essendo un operazione lenta, non incide molto sulla velocità complessiva di un sistema digitale in quanto è generalmente poco frequente. n0 1 n 0 β0 q Rappresentazione mediante SIS L'applicazione di SIS all'analisi degli operatore appena elencati permette di valutarne in maniera più accurata di compararne le caratteristiche principali in termini di velocità e costi. Si tenga però conto che gli strumenti CAD non sono normalmente utilizzati per la progettazione di componenti che eseguono operazioni aritmetiche poiché la loro efficienza deve essere così alta che vengono normalmente utilizzati componenti di libreria già ampiamente ottimizzati. L'utilizzo di SIS ha quindi solamente lo scopo di esemplificare meglio i concetti già presentati. Si rappresenti innanzi tutto un sommatore a propagazione di riporto che lavora su operandi a 4 bit. Il modo più semplice per ottenere questa rappresentazione è quello di creare il modello sommatore2 basato sull'istanza del modello sommatore e di costruire il modello sommatore4 collegando due modelli sommatore2. Il modello del sommatore (descritto con porte della libreria mcnc.genlib) è il seguente:.model SOMMATORE.inputs A B CIN.outputs O COUT.gate inv1 a=a O=[205].gate inv1 a=b O=[206].gate oai22 a=b b=[205] c=a d=[206] O=[207].gate inv1 a=[207] O=[221].gate inv1 a=cin O=[204].gate oai22 a=cin b=[221] c=[204] d=[207] O=O.gate nand2 a=[207] b=cin O=[229].gate oai21 a=[205] b=[207] c=[229] O=COUT.end Caricando in SIS questo modello è possibile valutarne le caratteristiche di area e ritardo. sis> rlib mcnc.genlib sis> read_blif sommatore.blif sis> print_map_stats Total Area = Gate Count = 8 sis> print_delay COUT O... using library delay model {COUT}: arrival=( ) required=( ) slack=( ) {O}: arrival=( ) required=( ) slack=( ) Si vede che ogni singolo sommatore ha un'area uguale a 17.0 ed il ritardo massimo (associato al calcolo del bit di somma) è 9.3. Si esamini ora il sommatore a 4 bit descritto come due istanze del sommatore a due bit, ossia:.model SOMMATORE2.inputs A1 A0 B1 B0 CIN.outputs O1 O0 COUT.subckt SOMMATORE A=A0 B=B0 CIN=CIN \ O=O0 COUT=C0.subckt SOMMATORE A=A1 B=B1 CIN=C0 \ O=O1 COUT=COUT.end.search sommatore.blif.model SOMMATORE4.inputs A3 A2 A1 A0 B3 B2 B1 B0 CIN 39 40

SISTEMI DI NUMERAZIONE E CODICI

SISTEMI DI NUMERAZIONE E CODICI SISTEMI DI NUMERAZIONE E CODICI Il Sistema di Numerazione Decimale Il sistema decimale o sistema di numerazione a base dieci usa dieci cifre, dette cifre decimali, da O a 9. Il sistema decimale è un sistema

Dettagli

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile Problemi connessi all utilizzo di un numero di bit limitato Abbiamo visto quali sono i vantaggi dell utilizzo della rappresentazione in complemento alla base: corrispondenza biunivoca fra rappresentazione

Dettagli

Sistemi di Numerazione Binaria NB.1

Sistemi di Numerazione Binaria NB.1 Sistemi di Numerazione Binaria NB.1 Numeri e numerali Numero: entità astratta Numerale : stringa di caratteri che rappresenta un numero in un dato sistema di numerazione Lo stesso numero è rappresentato

Dettagli

Lezione 7 Sommatori e Moltiplicatori

Lezione 7 Sommatori e Moltiplicatori Architettura degli Elaboratori e delle Reti Lezione 7 Sommatori e Moltiplicatori Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 7 1/36 Sommario!

Dettagli

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

Dettagli

Codifica binaria dei numeri relativi

Codifica binaria dei numeri relativi Codifica binaria dei numeri relativi Introduzione All interno di un calcolatore, è possibile utilizzare solo 0 e 1 per codificare qualsiasi informazione. Nel caso dei numeri, non solo il modulo ma anche

Dettagli

Rappresentazione dei numeri in un calcolatore

Rappresentazione dei numeri in un calcolatore Corso di Calcolatori Elettronici I A.A. 2010-2011 Rappresentazione dei numeri in un calcolatore Lezione 2 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Rappresentazione dei numeri

Dettagli

Codifica binaria dei numeri

Codifica binaria dei numeri Codifica binaria dei numeri Caso più semplice: in modo posizionale (spesso detto codifica binaria tout court) Esempio con numero naturale: con 8 bit 39 = Codifica in virgola fissa dei numeri float: si

Dettagli

Elementi di informatica

Elementi di informatica Elementi di informatica Sistemi di numerazione posizionali Rappresentazione dei numeri Rappresentazione dei numeri nei calcolatori rappresentazioni finalizzate ad algoritmi efficienti per le operazioni

Dettagli

Sistemi di Numerazione

Sistemi di Numerazione Fondamenti di Informatica per Meccanici Energetici - Biomedici 1 Sistemi di Numerazione Sistemi di Numerazione I sistemi di numerazione sono abitualmente posizionali. Gli elementi costitutivi di un sistema

Dettagli

Alessandro Pellegrini

Alessandro Pellegrini Esercitazione sulle Rappresentazioni Numeriche Esistono 1 tipi di persone al mondo: quelli che conoscono il codice binario e quelli che non lo conoscono Alessandro Pellegrini Cosa studiare prima Conversione

Dettagli

Informatica. Rappresentazione dei numeri Numerazione binaria

Informatica. Rappresentazione dei numeri Numerazione binaria Informatica Rappresentazione dei numeri Numerazione binaria Sistemi di numerazione Non posizionali: numerazione romana Posizionali: viene associato un peso a ciascuna posizione all interno della rappresentazione

Dettagli

Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri

Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri 1 Da base 2 a base 10 I seguenti esercizi richiedono di convertire in base 10 la medesima stringa binaria codificata rispettivamente

Dettagli

2.12 Esercizi risolti

2.12 Esercizi risolti Codifica dell'informazione 55 Lo standard IEEE prevede cinque cause di eccezione aritmetica: underflow, overflow, divisione per zero, eccezione per inesattezza, e eccezione di invalidità. Le eccezioni

Dettagli

Appunti sulla Macchina di Turing. Macchina di Turing

Appunti sulla Macchina di Turing. Macchina di Turing Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso

Dettagli

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo. DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti

Dettagli

I sistemi di numerazione

I sistemi di numerazione I sistemi di numerazione 01-INFORMAZIONE E SUA RAPPRESENTAZIONE Sia dato un insieme finito di caratteri distinti, che chiameremo alfabeto. Utilizzando anche ripetutamente caratteri di un alfabeto, si possono

Dettagli

SISTEMI DI NUMERAZIONE IL SISTEMA DECIMALE

SISTEMI DI NUMERAZIONE IL SISTEMA DECIMALE SISTEMI DI NUMERAZIONE IL SISTEMA DECIMALE La base del sistema decimale è 10 I simboli del sistema decimale sono: 0 1 2 3 4 5 6 7 8 9 Il sistema di numerazione decimale è un sistema posizionale. L aggettivo

Dettagli

Fondamenti di Informatica 2. Le operazioni binarie

Fondamenti di Informatica 2. Le operazioni binarie Corso di per il corso di Laurea di Ingegneria Gestionale Le operazioni binarie Università degli Studi di Udine - A.A. 2010-2011 Docente Ing. Sandro Di Giusto Ph.D. 1 L'algebra binaria Il fatto di aver

Dettagli

Corso di Calcolo Numerico

Corso di Calcolo Numerico Corso di Calcolo Numerico Dott.ssa M.C. De Bonis Università degli Studi della Basilicata, Potenza Facoltà di Ingegneria Corso di Laurea in Ingegneria Meccanica Sistemi di Numerazione Sistema decimale La

Dettagli

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico 1996-1997

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico 1996-1997 1 RAPPRESENTAZIONE BINARIA DEI NUMERI Andrea Bobbio Anno Accademico 1996-1997 Numeri Binari 2 Sistemi di Numerazione Il valore di un numero può essere espresso con diverse rappresentazioni. non posizionali:

Dettagli

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, 7155 2 = 1, 431 0, 431 2 = 0, 862 0, 896 2 = 1, 792 0, 724 2 = 1, 448 0, 448 2 = 0, 896

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, 7155 2 = 1, 431 0, 431 2 = 0, 862 0, 896 2 = 1, 792 0, 724 2 = 1, 448 0, 448 2 = 0, 896 2 Esercizio 2.2 La rappresentazione esadecimale prevede 16 configurazioni corrispondenti a 4 bit. Il contenuto di una parola di 16 bit può essere rappresentato direttamente con 4 digit esadecimali, sostituendo

Dettagli

ESEMPIO 1: eseguire il complemento a 10 di 765

ESEMPIO 1: eseguire il complemento a 10 di 765 COMPLEMENTO A 10 DI UN NUMERO DECIMALE Sia dato un numero N 10 in base 10 di n cifre. Il complemento a 10 di tale numero (N ) si ottiene sottraendo il numero stesso a 10 n. ESEMPIO 1: eseguire il complemento

Dettagli

Memorie ROM (Read Only Memory)

Memorie ROM (Read Only Memory) Memorie ROM (Read Only Memory) Considerando la prima forma canonica, la realizzazione di qualsiasi funzione di m variabili richiede un numero di porte AND pari al numero dei suoi mintermini e di prolungare

Dettagli

Parte II Indice. Operazioni aritmetiche tra valori rappresentati in binario puro. Rappresentazione di numeri con segno

Parte II Indice. Operazioni aritmetiche tra valori rappresentati in binario puro. Rappresentazione di numeri con segno Parte II Indice Operazioni aritmetiche tra valori rappresentati in binario puro somma sottrazione Rappresentazione di numeri con segno modulo e segno complemento a 2 esercizi Operazioni aritmetiche tra

Dettagli

Dimensione di uno Spazio vettoriale

Dimensione di uno Spazio vettoriale Capitolo 4 Dimensione di uno Spazio vettoriale 4.1 Introduzione Dedichiamo questo capitolo ad un concetto fondamentale in algebra lineare: la dimensione di uno spazio vettoriale. Daremo una definizione

Dettagli

4. Operazioni aritmetiche con i numeri binari

4. Operazioni aritmetiche con i numeri binari I Numeri Binari 4. Operazioni aritmetiche con i numeri binari Contare con i numeri binari Prima di vedere quali operazioni possiamo effettuare con i numeri binari, iniziamo ad imparare a contare in binario:

Dettagli

Un circuito integrato è una piastrina di silicio (o chip), quadrata o rettangolare, sulla cui superficie vengono realizzati e collegati

Un circuito integrato è una piastrina di silicio (o chip), quadrata o rettangolare, sulla cui superficie vengono realizzati e collegati Il Livello LogicoDigitale i Blocchi funzionali combinatori Circuiti integrati Un circuito integrato è una piastrina di silicio (o chip), quadrata o rettangolare, sulla cui superficie vengono realizzati

Dettagli

Codifica dei numeri negativi

Codifica dei numeri negativi E. Calabrese: Fondamenti di Informatica Rappresentazione numerica-1 Rappresentazione in complemento a 2 Codifica dei numeri negativi Per rappresentare numeri interi negativi si usa la cosiddetta rappresentazione

Dettagli

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.6. Unità di controllo microprogrammata

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.6. Unità di controllo microprogrammata Lezione n.6 Unità di controllo microprogrammata 1 Sommario Unità di controllo microprogrammata Ottimizzazione, per ottimizzare lo spazio di memoria occupato Il moltiplicatore binario Esempio di architettura

Dettagli

Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013

Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013 Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013 In questo documento vengono illustrate brevemente le operazioni aritmetiche salienti e quelle logiche ad esse strettamente collegate.

Dettagli

Codici Numerici. Modifica dell'informazione. Rappresentazione dei numeri.

Codici Numerici. Modifica dell'informazione. Rappresentazione dei numeri. Codici Numerici. Modifica dell'informazione. Rappresentazione dei numeri. A partire da questa lezione, ci occuperemo di come si riescono a codificare con sequenze binarie, quindi con sequenze di 0 e 1,

Dettagli

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter Informatica B a.a 2005/06 (Meccanici 4 squadra) Scaglione: da PO a ZZZZ PhD. Ing. Michele Folgheraiter Architettura del Calcolatore Macchina di von Neumann Il calcolatore moderno è basato su un architettura

Dettagli

4. Operazioni elementari per righe e colonne

4. Operazioni elementari per righe e colonne 4. Operazioni elementari per righe e colonne Sia K un campo, e sia A una matrice m n a elementi in K. Una operazione elementare per righe sulla matrice A è una operazione di uno dei seguenti tre tipi:

Dettagli

Architettura hardware

Architettura hardware Architettura dell elaboratore Architettura hardware la parte che si può prendere a calci Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione

Dettagli

La somma. Esempio: Il prodotto. Esempio:

La somma. Esempio: Il prodotto. Esempio: La somma L algoritmo della operazione di somma non cambia qualunque sia la base considerata. Naturalmente, le regole da imparare nel caso di una base b sono relative alle sole b 2 posssibili combinazioni

Dettagli

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1 LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1 I CODICI 1 IL CODICE BCD 1 Somma in BCD 2 Sottrazione BCD 5 IL CODICE ECCESSO 3 20 La trasmissione delle informazioni Quarta Parte I codici Il codice BCD

Dettagli

Sommario. Addizione naturale

Sommario. Addizione naturale Sommario Introduzione Rappresentazione dei numeri interi positivi Rappresentazione dei numeri interi Operazioni aritmetiche Modulo e segno Addizione e sottrazione urale Addizione e sottrazione in complemento

Dettagli

la scienza della rappresentazione e della elaborazione dell informazione

la scienza della rappresentazione e della elaborazione dell informazione Sistema binario Sommario informatica rappresentare informazioni la differenza Analogico/Digitale i sistemi di numerazione posizionali il sistema binario Informatica Definizione la scienza della rappresentazione

Dettagli

Utilizzo delle formule in Excel

Utilizzo delle formule in Excel Utilizzo delle formule in Excel Excel è dotato di un potente motore di calcolo che può essere utilizzato per elaborare i dati immessi dagli utenti. I calcoli sono definiti mediante formule. Ogni formula

Dettagli

Testi di Esercizi e Quesiti 1

Testi di Esercizi e Quesiti 1 Architettura degli Elaboratori, 2009-2010 Testi di Esercizi e Quesiti 1 1. Una rete logica ha quattro variabili booleane di ingresso a 0, a 1, b 0, b 1 e due variabili booleane di uscita z 0, z 1. La specifica

Dettagli

Obiettivi dell Analisi Numerica. Avviso. Risoluzione numerica di un modello. Analisi Numerica e Calcolo Scientifico

Obiettivi dell Analisi Numerica. Avviso. Risoluzione numerica di un modello. Analisi Numerica e Calcolo Scientifico M. Annunziato, DIPMAT Università di Salerno - Queste note non sono esaustive ai fini del corso p. 3/43 M. Annunziato, DIPMAT Università di Salerno - Queste note non sono esaustive ai fini del corso p.

Dettagli

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE LE SUCCESSIONI 1. COS E UNA SUCCESSIONE La sequenza costituisce un esempio di SUCCESSIONE. Ecco un altro esempio di successione: Una successione è dunque una sequenza infinita di numeri reali (ma potrebbe

Dettagli

Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella prof@quarella.

Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella prof@quarella. Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella prof@quarella.net Prestazioni Si valutano in maniera diversa a seconda dell

Dettagli

Esempi ed esercizi Aritmetica degli elaboratori e algebra di commutazione

Esempi ed esercizi Aritmetica degli elaboratori e algebra di commutazione Esempi ed esercizi Aritmetica degli elaboratori e algebra di commutazione Fondamenti di Informatica Michele Ceccarelli Università del Sannio ceccarelli@unisannio.it Angelo Ciaramella DMI-Università degli

Dettagli

Logica e codifica binaria dell informazione

Logica e codifica binaria dell informazione Politecnico di Milano Corsi di Laurea in Ingegneria Matematica e Ingegneria Fisica Dipartimento di Elettronica ed Informazione Logica e codifica binaria dell informazione Anno Accademico 2002 2003 L. Muttoni

Dettagli

CPU. Maurizio Palesi

CPU. Maurizio Palesi CPU Central Processing Unit 1 Organizzazione Tipica CPU Dispositivi di I/O Unità di controllo Unità aritmetico logica (ALU) Terminale Stampante Registri CPU Memoria centrale Unità disco Bus 2 L'Esecutore

Dettagli

Sintesi Combinatoria Uso di componenti diversi dagli operatori elementari. Mariagiovanna Sami Corso di reti Logiche 8 Anno 2007-08

Sintesi Combinatoria Uso di componenti diversi dagli operatori elementari. Mariagiovanna Sami Corso di reti Logiche 8 Anno 2007-08 Sintesi Combinatoria Uso di componenti diversi dagli operatori elementari Mariagiovanna Sami Corso di reti Logiche 8 Anno 27-8 8 Quali componenti, se non AND e OR (e NOT )? Si è detto inizialmente che

Dettagli

Esercitazione Informatica I AA 2012-2013. Nicola Paoletti

Esercitazione Informatica I AA 2012-2013. Nicola Paoletti Esercitazione Informatica I AA 2012-2013 Nicola Paoletti 4 Gigno 2013 2 Conversioni Effettuare le seguenti conversioni, tenendo conto del numero di bit con cui si rappresenta il numero da convertire/convertito.

Dettagli

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................

Dettagli

Esponenziali elogaritmi

Esponenziali elogaritmi Esponenziali elogaritmi Potenze ad esponente reale Ricordiamo che per un qualsiasi numero razionale m n prendere n>0) si pone a m n = n a m (in cui si può sempre a patto che a sia un numero reale positivo.

Dettagli

Strutturazione logica dei dati: i file

Strutturazione logica dei dati: i file Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer

Dettagli

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6 Appunti di Calcolatori Elettronici Esecuzione di istruzioni in parallelo Introduzione... 1 Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD...

Dettagli

Un ripasso di aritmetica: Rappresentazione binaria - operazioni. riporti

Un ripasso di aritmetica: Rappresentazione binaria - operazioni. riporti Un ripasso di aritmetica: Rappresentazione binaria - operazioni A queste rappresentazioni si possono applicare le operazioni aritmetiche: riporti 1 1 0 + 1 0 = 1 0 0 24 Un ripasso di aritmetica: Rappresentazione

Dettagli

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

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU Lezione n.7 Il moltiplicatore binario e il ciclo di base di una CPU 1 SOMMARIO Architettura del moltiplicatore Architettura di base di una CPU Ciclo principale di base di una CPU Riprendiamo l analisi

Dettagli

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell

Dettagli

Esame di INFORMATICA

Esame di INFORMATICA Università di L Aquila Facoltà di Biotecnologie Esame di INFORMATICA Lezione 4 MACCHINA DI VON NEUMANN Anni 40 i dati e i programmi che descrivono come elaborare i dati possono essere codificati nello

Dettagli

Rappresentazione delle informazioni

Rappresentazione delle informazioni Rappresentazione delle informazioni Abbiamo informazioni (numeri, caratteri, immagini, suoni, video... ) che vogliamo rappresentare (e poter elaborare) in un calcolatore. Per motivi tecnologici un calcolatore

Dettagli

Comparatori. Comparatori di uguaglianza

Comparatori. Comparatori di uguaglianza Comparatori Scopo di un circuito comparatore é il confronto tra due codifiche binarie. Il confronto può essere effettuato per verificare l'uguaglianza oppure una relazione d'ordine del tipo "maggiore",

Dettagli

TRAGUARDI PER LO SVILUPPO DELLE COMPETENZE AL TERMINE DELLA SCUOLA PRIMARIA

TRAGUARDI PER LO SVILUPPO DELLE COMPETENZE AL TERMINE DELLA SCUOLA PRIMARIA SCUOLA PRIMARIA DI CORTE FRANCA MATEMATICA CLASSE QUINTA TRAGUARDI PER LO SVILUPPO DELLE COMPETENZE AL TERMINE DELLA SCUOLA PRIMARIA L ALUNNO SVILUPPA UN ATTEGGIAMENTO POSITIVO RISPETTO ALLA MATEMATICA,

Dettagli

ISTITUTO COMPRENSIVO MONTEGROTTO TERME SCUOLA PRIMARIA DISCIPLINA: MATEMATICA - CLASSE PRIMA OBIETTIVI DI APPRENDIMENTO

ISTITUTO COMPRENSIVO MONTEGROTTO TERME SCUOLA PRIMARIA DISCIPLINA: MATEMATICA - CLASSE PRIMA OBIETTIVI DI APPRENDIMENTO PRIMA DELLA DISCIPLINA: MATEMATICA - CLASSE PRIMA L alunno si muove con sicurezza nel calcolo scritto e mentale con i numeri naturali. Legge e comprende testi che coinvolgono aspetti logici e matematici.

Dettagli

Informazione analogica e digitale

Informazione analogica e digitale L informazione L informazione si può: rappresentare elaborare gestire trasmettere reperire L informatica offre la possibilità di effettuare queste operazioni in modo automatico. Informazione analogica

Dettagli

Capitolo 2 Distribuzioni di frequenza

Capitolo 2 Distribuzioni di frequenza Edizioni Simone - Vol. 43/1 Compendio di statistica Capitolo 2 Distribuzioni di frequenza Sommario 1. Distribuzioni semplici. - 2. Distribuzioni doppie. - 3. Distribuzioni parziali: condizionate e marginali.

Dettagli

1. Distribuzioni campionarie

1. Distribuzioni campionarie Università degli Studi di Basilicata Facoltà di Economia Corso di Laurea in Economia Aziendale - a.a. 2012/2013 lezioni di statistica del 3 e 6 giugno 2013 - di Massimo Cristallo - 1. Distribuzioni campionarie

Dettagli

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it Excel A cura di Luigi Labonia e-mail: luigi.lab@libero.it Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo

Dettagli

Informatica Generale 02 - Rappresentazione numeri razionali

Informatica Generale 02 - Rappresentazione numeri razionali Informatica Generale 02 - Rappresentazione numeri razionali Cosa vedremo: Rappresentazione binaria dei numeri razionali Rappresentazione in virgola fissa Rappresentazione in virgola mobile La rappresentazione

Dettagli

RETI DI TELECOMUNICAZIONE

RETI DI TELECOMUNICAZIONE RETI DI TELECOMUNICAZIONE SISTEMI M/G/1 e M/D/1 Sistemi M/G/1 Nei sistemi M/G/1: i clienti arrivano secondo un processo di Poisson con parametro λ i tempi di servizio hanno una distribuzione generale della

Dettagli

Valutazione delle Prestazioni. Valutazione delle Prestazioni. Architetture dei Calcolatori (Lettere. Tempo di risposta e throughput

Valutazione delle Prestazioni. Valutazione delle Prestazioni. Architetture dei Calcolatori (Lettere. Tempo di risposta e throughput Valutazione delle Prestazioni Architetture dei Calcolatori (Lettere A-I) Valutazione delle Prestazioni Prof. Francesco Lo Presti Misura/valutazione di un insieme di parametri quantitativi per caratterizzare

Dettagli

Introduzione. Rappresentazione di numeri in macchina, condizion

Introduzione. Rappresentazione di numeri in macchina, condizion Introduzione. Rappresentazione di numeri in macchina, condizionamento e stabilità Dipartimento di Matematica tel. 011 0907503 stefano.berrone@polito.it http://calvino.polito.it/~sberrone Laboratorio di

Dettagli

1. PRIME PROPRIETÀ 2

1. PRIME PROPRIETÀ 2 RELAZIONI 1. Prime proprietà Il significato comune del concetto di relazione è facilmente intuibile: due elementi sono in relazione se c è un legame tra loro descritto da una certa proprietà; ad esempio,

Dettagli

MATEMATICA DEL DISCRETO elementi di teoria dei grafi. anno acc. 2009/2010

MATEMATICA DEL DISCRETO elementi di teoria dei grafi. anno acc. 2009/2010 elementi di teoria dei grafi anno acc. 2009/2010 Grafi semplici Un grafo semplice G è una coppia ordinata (V(G), L(G)), ove V(G) è un insieme finito e non vuoto di elementi detti vertici o nodi di G, mentre

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica per chimica industriale e chimica applicata e ambientale LEZIONE 2 Rappresentazione delle informazioni: numeri e caratteri 1 Codice La relazione che associa ad ogni successione ben formata di simboli di

Dettagli

Capitolo 13: L offerta dell impresa e il surplus del produttore

Capitolo 13: L offerta dell impresa e il surplus del produttore Capitolo 13: L offerta dell impresa e il surplus del produttore 13.1: Introduzione L analisi dei due capitoli precedenti ha fornito tutti i concetti necessari per affrontare l argomento di questo capitolo:

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica per chimica industriale e chimica applicata e ambientale LEZIONE 4 La CPU e l esecuzione dei programmi 1 Nelle lezioni precedenti abbiamo detto che Un computer è costituito da 3 principali componenti:

Dettagli

Operatori logici e porte logiche

Operatori logici e porte logiche Operatori logici e porte logiche Operatori unari.......................................... 730 Connettivo AND........................................ 730 Connettivo OR..........................................

Dettagli

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

Dettagli

Informatica. Rappresentazione binaria Per esempio +101010000 diventa +0.10101 10 18/10/2007. Introduzione ai sistemi informatici 1

Informatica. Rappresentazione binaria Per esempio +101010000 diventa +0.10101 10 18/10/2007. Introduzione ai sistemi informatici 1 Informatica Pietro Storniolo storniolo@csai.unipa.it http://www.pa.icar.cnr.it/storniolo/info200708 Numeri razionali Cifre più significative: : sono le cifre associate ai pesi maggiori per i numeri maggiori

Dettagli

Laboratorio di Architettura degli Elaboratori A.A. 2015/16 Circuiti Logici

Laboratorio di Architettura degli Elaboratori A.A. 2015/16 Circuiti Logici Laboratorio di Architettura degli Elaboratori A.A. 2015/16 Circuiti Logici Per ogni lezione, sintetizzare i circuiti combinatori o sequenziali che soddisfino le specifiche date e quindi implementarli e

Dettagli

I SISTEMI DI NUMERAZIONE

I SISTEMI DI NUMERAZIONE ISTITUTO DI ISTRUZIONE SUPERIORE G. M. ANGIOY CARBONIA I SISTEMI DI NUMERAZIONE Prof. G. Ciaschetti Fin dall antichità, l uomo ha avuto il bisogno di rappresentare le quantità in modo simbolico. Sono nati

Dettagli

SCHEDA DI RECUPERO SUI NUMERI RELATIVI

SCHEDA DI RECUPERO SUI NUMERI RELATIVI SCHEDA DI RECUPERO SUI NUMERI RELATIVI I numeri relativi sono l insieme dei numeri negativi (preceduti dal segno -) numeri positivi (il segno + è spesso omesso) lo zero. Valore assoluto di un numero relativo

Dettagli

Architettura (10/9/2003) Pag. 1/6. Cognome e Nome (in stampatello):

Architettura (10/9/2003) Pag. 1/6. Cognome e Nome (in stampatello): Architettura (10/9003) Pag. 1/6 Esame di Architettura (matr.0-1) del 10/9003 Per Fondamenti di Architettura NON rispondere Per le domande a risposta multipla cerchiare la risposta scelta. Non alle domande

Dettagli

risulta (x) = 1 se x < 0.

risulta (x) = 1 se x < 0. Questo file si pone come obiettivo quello di mostrarvi come lo studio di una funzione reale di una variabile reale, nella cui espressione compare un qualche valore assoluto, possa essere svolto senza necessariamente

Dettagli

Uso di base delle funzioni in Microsoft Excel

Uso di base delle funzioni in Microsoft Excel Uso di base delle funzioni in Microsoft Excel Le funzioni Una funzione è un operatore che applicato a uno o più argomenti (valori, siano essi numeri con virgola, numeri interi, stringhe di caratteri) restituisce

Dettagli

ALGEBRA DELLE PROPOSIZIONI

ALGEBRA DELLE PROPOSIZIONI Università di Salerno Fondamenti di Informatica Corso di Laurea Ingegneria Corso B Docente: Ing. Giovanni Secondulfo Anno Accademico 2010-2011 ALGEBRA DELLE PROPOSIZIONI Fondamenti di Informatica Algebra

Dettagli

Politecnico di Milano. Facoltà di Ingegneria Industriale. Corso di Analisi e Geometria 2. Sezione D-G. (Docente: Federico Lastaria).

Politecnico di Milano. Facoltà di Ingegneria Industriale. Corso di Analisi e Geometria 2. Sezione D-G. (Docente: Federico Lastaria). Politecnico di Milano. Facoltà di Ingegneria Industriale. Corso di Analisi e Geometria 2. Sezione D-G. (Docente: Federico Lastaria). Aprile 20 Indice Serie numeriche. Serie convergenti, divergenti, indeterminate.....................

Dettagli

Calcolatori Elettronici A a.a. 2008/2009

Calcolatori Elettronici A a.a. 2008/2009 Calcolatori Elettronici A a.a. 2008/2009 PRESTAZIONI DEL CALCOLATORE Massimiliano Giacomin Due dimensioni Tempo di risposta (o tempo di esecuzione): il tempo totale impiegato per eseguire un task (include

Dettagli

Dispense di Informatica per l ITG Valadier

Dispense di Informatica per l ITG Valadier La notazione binaria Dispense di Informatica per l ITG Valadier Le informazioni dentro il computer All interno di un calcolatore tutte le informazioni sono memorizzate sottoforma di lunghe sequenze di

Dettagli

Più processori uguale più velocità?

Più processori uguale più velocità? Più processori uguale più velocità? e un processore impiega per eseguire un programma un tempo T, un sistema formato da P processori dello stesso tipo esegue lo stesso programma in un tempo TP T / P? In

Dettagli

( x) ( x) 0. Equazioni irrazionali

( x) ( x) 0. Equazioni irrazionali Equazioni irrazionali Definizione: si definisce equazione irrazionale un equazione in cui compaiono uno o più radicali contenenti l incognita. Esempio 7 Ricordiamo quanto visto sulle condizioni di esistenza

Dettagli

A.S. 2012-1013 CLASSE PRIMA SCUOLA PRIMARIA D ISTITUTO COMPETENZA CHIAVE EUROPEA DISCIPLINA

A.S. 2012-1013 CLASSE PRIMA SCUOLA PRIMARIA D ISTITUTO COMPETENZA CHIAVE EUROPEA DISCIPLINA ISTITUTO COMPRENSIVO STATALE di Scuola dell Infanzia, Scuola Primaria e Scuola Secondaria di 1 grado San Giovanni Teatino (CH) CURRICOLO A.S. 2012-1013 CLASSE PRIMA SCUOLA PRIMARIA OBIETTIVI DI Sviluppa

Dettagli

La distribuzione Normale. La distribuzione Normale

La distribuzione Normale. La distribuzione Normale La Distribuzione Normale o Gaussiana è la distribuzione più importante ed utilizzata in tutta la statistica La curva delle frequenze della distribuzione Normale ha una forma caratteristica, simile ad una

Dettagli

OCCUPATI SETTORE DI ATTIVITA' ECONOMICA

OCCUPATI SETTORE DI ATTIVITA' ECONOMICA ESERCIZIO 1 La tabella seguente contiene i dati relativi alla composizione degli occupati in Italia relativamente ai tre macrosettori di attività (agricoltura, industria e altre attività) negli anni 1971

Dettagli

Il concetto di valore medio in generale

Il concetto di valore medio in generale Il concetto di valore medio in generale Nella statistica descrittiva si distinguono solitamente due tipi di medie: - le medie analitiche, che soddisfano ad una condizione di invarianza e si calcolano tenendo

Dettagli

Parte 2. Determinante e matrice inversa

Parte 2. Determinante e matrice inversa Parte. Determinante e matrice inversa A. Savo Appunti del Corso di Geometria 013-14 Indice delle sezioni 1 Determinante di una matrice, 1 Teorema di Cramer (caso particolare), 3 3 Determinante di una matrice

Dettagli

Laurea Specialistica in Informatica

Laurea Specialistica in Informatica Corso di Laurea in FISICA Laurea Specialistica in Informatica Fisica dell informazione 1 Elementi di Architettura degli elaboratori Prof. Luca Gammaitoni Informazioni sul corso: www.fisica.unipg unipg.it/gammaitoni/fisinfoit/gammaitoni/fisinfo

Dettagli

Laboratorio di Informatica di Base Archivi e Basi di Dati

Laboratorio di Informatica di Base Archivi e Basi di Dati Laboratorio di Informatica di Base Archivi e Basi di Dati Introduzione La memorizzazione dei dati è un aspetto molto importante dell informatica Oggi, mediante i computer, è possibile memorizzare e modificare

Dettagli

Kangourou della Matematica 2014 finale nazionale italiana Mirabilandia, 12 maggio 2014

Kangourou della Matematica 2014 finale nazionale italiana Mirabilandia, 12 maggio 2014 Kangourou della Matematica 2014 finale nazionale italiana Mirabilandia, 12 maggio 2014 LIVELLO STUDENT K,M N CD BC A S1. (5 punti ) In figura si vede una circonferenza della quale i segmenti AB, BC e CD

Dettagli

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO SISTEMI DI NUMERAZIONE DECIMALE E BINARIO Il sistema di numerazione decimale (o base dieci) possiede dieci possibili valori (0, 1, 2, 3, 4, 5, 6, 7, 8 o 9) utili a rappresentare i numeri. Le cifre possiedono

Dettagli

Ottimizzazione Multi Obiettivo

Ottimizzazione Multi Obiettivo Ottimizzazione Multi Obiettivo 1 Ottimizzazione Multi Obiettivo I problemi affrontati fino ad ora erano caratterizzati da una unica (e ben definita) funzione obiettivo. I problemi di ottimizzazione reali

Dettagli

Matematica generale CTF

Matematica generale CTF Successioni numeriche 19 agosto 2015 Definizione di successione Monotonìa e limitatezza Forme indeterminate Successioni infinitesime Comportamento asintotico Criterio del rapporto per le successioni Definizione

Dettagli