Esercitazione di Calcolatori Elettronici Prof. Fabio Roli Corso di Laurea in Ingegneria Elettrica ed Elettronica Capitolo 6 Unità di Elaborazione Aritmetica di Macchina Progettazione ALU
Outline Aritmetica dei calcolatori Rappresentazione dei numeri Algoritmo della somma nei calcolatori Progettazione ALU
Aritmetica di macchina: cose da ricordare Un numero binario in virgola fissa senza segno si rappresenta come: N 1 M i i a i 2 bi 2 i0 i1 Dove: a N-1 a 0 sono gli N bit della parte intera; b 1 b M sono gli M bit della parte frazionaria (dal più significativo). Omettendo le potenze di due, un numero in virgola fissa si rappresenta con la sequenza di N+M bit: a N-1 a 0. b 1 b M Punto separatore della parte intera da quella frazionaria
q q q N N i i 1 1 1 0 M M i i N N i i q q 2 1 2 2 1 2 2 2 1 1 1 0 Parte intera: Parte frazionaria: Queste formule sono utili per il calcolo del massimo valore assumibile, in valore assoluto, dalla parte intera e dalla parte frazionaria di un numero binario, in quanto tutti i bit sono posti a 1: cose da ricordare (cont d)
Es. 1 - Aritmetica dei calcolatori Si consideri un campo di 5 bit, utilizzati per la rappresentazione dei numeri in virgola mobile secondo i seguenti formati: 1 bit segno, 2 bit per l esponente (eccesso 1), 2 bit per la mantissa (1.M) 1 bit segno, 3 bit per l esponente (eccesso 3), 1 bit per la mantissa (1.M) 1. Indicare quanti sono i valori rappresentabili nei due casi. 2. Indicare il minimo e il massimo valore positivo rappresentabili, escluso lo zero, dettagliando i passaggi intermedi. 3. Rappresentare il valore 5 nei due casi, specificando a quale valore esso venga approssimato nel caso non sia rappresentabile esattamente.
Soluzioni 3. 1. Il numero di valori rappresentabili in entrambi i formati è 32=2 5, avendo a disposizione 5 bit Non importa il formato, ma il numero di bit disponibili! 2. Minimo e massimo valore positivo rappresentabile: Rappresentazione n.1. Minimo: 0.5; massimo: 7 Rappresentazione n.2. Minimo: 2-3 ; massimo: 24 5 10 = 101 2 = 1.01 * 2 2 S E M Rappresentazione 1: 0 11 01 Rappresentazione 2: 0 101 0 * Si noti che, a causa del numero limitato di bit disponibili per la mantissa, la rappresentazione 2 non è in grado di rappresentare il numero dato. Si provi infatti a convertire il numero in decimale.
Es. 2 - Aritmetica dei calcolatori (16/01/03) Sono dati i seguenti formati per la rappresentazione dei numeri in un calcolatore (campo complessivo 28 bit): Interi senza segno. Reali in virgola fissa con bit di segno, parte intera e nove bit per la parte frazionaria. Reali in virgola mobile con bit di segno, esponente in eccesso 63 (7 bit) e mantissa frazionaria e normalizzata in segno e valore 1.M. 1. Si richiede il minimo e massimo valore raggiungibili in valore assoluto, escluso lo zero. 2. Rappresentare il numero 121.25 in ciascuno dei tre formati.
Soluzione Interi senza segno Minimo valore: 1 Massimo valore: 2 28-1 Virgola fissa con bit di segno Minimo valore: 2-9 Massimo valore: 2 18-2 -9
Soluzione Virgola mobile con bit di segno (1.M) Minimo valore: 2-63 Massimo valore: 2 64 * (2-2 -20 )
Rappresentare 121.25 nei tre formati Interi senza segno Possiamo rappresentare solo la parte intera: 121 Virgola fissa 121.25 = 1111001.01 Virgola mobile 121.25 = 1111001.01 = 1.11100101 * 2 6 6 = 110 eccesso 63 110 + 0111111 = 1000101
Calcolare il range dei seguenti formati, con 32 bit a disposizione Rappresentazione in virgola fissa in segno e valore con bit di segno, e 9 bit per la parte frazionaria Rappresentazione in virgola mobile con esponente di 8 bit in eccesso 128 e mantissa frazionaria, normalizzata in segno e valore 0.M Rappresentazione in virgola mobile con esponente di 8 bit in complemento a due e mantissa frazionaria, normalizzata in segno e valore 0.M Rappresentazione in virgola mobile con esponente di 8 bit in eccesso 127 e mantissa frazionaria, normalizzata in segno e valore 1.M (standard IEEE 754) Verificate con MARS (Tools->Floating Point Representation) http://courses.missouristate.edu/kenvollmar/mars/download.htm Attenzione alle rappresentazioni di NaN, Inf, etc http://steve.hollasch.net/cgindex/coding/ieeefloat.html
Es. 3 - Aritmetica dei calcolatori Si considerino i numeri interi decimali 121.25 e 32.75. Rappresentarli nel formato in virgola mobile dato dal precedente esercizio: Reali in virgola mobile con bit di segno, rappresentati su 28 bit, con esponente in eccesso 63 (su 7 bit) e mantissa frazionaria, normalizzata in segno e valore 1.M Sommare i due numeri rappresentati in virgola mobile seguendo i passi dell algoritmo usato nei calcolatori
Soluzione 121.25 = 1111001.01 = 1.11100101 * 2 6 32.75 = 100000.11 = 1.0000011 * 2 5 1. Confronto esponenti ed allineamento mantisse 1.0000011 * 2 5 = 0.10000011 * 2 6 2. Somma delle mantisse 1.11100101 + 0.10000011 = 10.01101000 3. Normalizzazione della mantissa del risultato 10.01101000 * 2 6 = 1.001101000 * 2 7 Risultato:
Es. 4 - Aritmetica dei calcolatori Si consideri il seguente formato per la rappresentazione binaria dei numeri in virgola mobile: 24 bit, con esponente a 8 bit in eccesso 125, mantissa frazionaria e normalizzata in segno e valore (1.M). 1. Si calcoli il minimo e il massimo numero positivo rappresentabili, escluso lo zero. 2. Si rappresentino nel formato dato i numeri 130.25 e 120.75. 3. Si sommino i due numeri seguendo i passi usati nell algoritmo dei calcolatori.
Soluzione 1. Minimo numero: 2-125. Massimo numero: (2-2 -15 )* 2 130. 2. 130.25 = 10000010.01 = 1.000001001 * 2 7. 120.75 = 1111000.11 = 1.11100011 * 2 6. In eccesso 125: 7 111 + 1111101 = 10000100 6 110 + 1111101 = 10000011 S Esponente Mantissa 130.25 0 10000100 0000010010000000 120.75 0 10000011 1110001100000000
Soluzione 3. Seguendo l'algoritmo dei calcolatori, la somma si realizza coi seguenti passi: a) Confronto degli esponenti e allineamento. L'esponente del primo numero è superiore a quello del secondo, per cui il secondo numero viene portato allo stesso esponente del primo. Per far ciò la mantissa scorre verso destra di una posizione, venendo così denormalizzata: 1.11100011 -> 0.111100011 b) Somma delle mantisse. Ora è possibile sommare le mantisse: 1.000001001 + 0.111100011 = ----------------------- 1.111101100 c) Eventuale normalizzazione del risultato. Non v'è alcun bisogno di normalizzare il risultato, essendo il riporto dopo il primo bit della parte intera nullo, per cui il risultato si rappresenta con lo stesso esponente e con la parte frazionaria della mantissa: S Esponente Mantissa 251.00 0 10000100 1111011000000000
Progettazione ALU: cose da ricordare Schema progettuale C in Trasformazione operandi bit a bit attraverso reti combinatorie dedicate Parallel adder per svolgere la somma finale e realizzare la funzione richiesta in uscita A 1 A N B 1 B N S 1 S 0 Rete Combinatoria per il riporto Rete Combinatoria A.. Rete Combinatoria A Rete Combinatoria B.. Rete Combinatoria B A 1 new A N new B 1 new B N new P A R. A D D E R R 1.. R N
Es. 1 - Progettazione ALU (16/01/03) Progettare una ALU che esegua le seguenti operazioni su due operandi A e B di n bit: Implementare la ALU utilizzando le opportune reti logiche e un parallel adder. Indicare uno schema più efficiente, in termini di tempi di ritardo, di quello presentato nei punti precedenti.
Schema base di una ALU a n bit Bit di controllo C in S 1 S 0 Rete Combinatoria per il riporto Primo operando Secondo operando A 1 A N B 1 B N Rete Combinatoria A.. Rete Combinatoria A Rete Combinatoria B.. Rete Combinatoria B new A 1 new A N new B 1 new B N P A R. A D D E R R 1.. R N
Soluzione Seconda domanda: Per uno schema più efficiente basta sostituire un carry lookahead adder al posto del parallel adder, in modo da evitare il problema dei ritardi dovuti al riporto. E possibile anche sostituire le varie reti combinatorie con dei multiplexer.
Es. 2 - Progettazione ALU Progettare una ALU che realizzi le seguenti funzionalità: dove A e B sono i due operandi a N bit. 1. Realizzare la ALU utilizzando un parallel adder e un opportuna rete logica, illustrando graficamente lo schema progettuale. 2. Realizzare la ALU utilizzando un MUX 4-1 in luogo delle reti logiche del punto precedente.
Soluzione 1. L esercizio si risolve semplicemente implementando le reti logiche che elaborano ogni bit degli operandi prima di passarli al parallel adder. Tali reti logiche si ricavano analizzando la tabella di verità nel testo dell esercizio:
Soluzione Lo schema progettuale è il seguente:
Soluzione 2. Per quanto riguarda i due MUX 4-1, devono essere pilotati come segue (si supponga che dal primo ingresso in alto i bit di selezione valgano 00,01,10,11): Bi 0
Es. 3 - Progettazione ALU Progettare una ALU che esegua le seguenti operazioni su due operandi A e B di n bit: A+B Si utilizzi un parallel adder a n bit e una opportuna rete logica, tenendo conto che c è il bit di riporto in ingresso al parallel adder. Si sostituisca la rete logica del passo precedente con due MUX 4-1.
Soluzione prima domanda
Soluzione seconda domanda