Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2...

32
28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 1 Aritmetica binaria 28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 2 Codifica binaria dell’informazione Il calcolatore utilizza un alfabeto binario: usiamo dispositivi elettronici digitali in grado di assumere due solo stati: acceso/spento, ON/OFF, 1/0, VERO/FALSO. Un alfabeto binario non limita le funzionalità di un calcolatore. Il simbolo o cifra binaria si indica con bit (da Binary digIT): quantità d’informazione che si ottiene selezionando una configurazione da un insieme che ne contiene due. La risposta SI oppure NO a una domanda porta 1 bit di informazione.

Transcript of Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2...

Page 1: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 1

Aritmetica binaria

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 2

Codifica binaria dell’informazione

Il calcolatore utilizza un alfabeto binario: usiamo dispositivi elettronici digitali in grado di assumere due solo stati: acceso/spento, ON/OFF, 1/0, VERO/FALSO.Un alfabeto binario non limita le funzionalità di un calcolatore.Il simbolo o cifra binaria si indica con bit (da Binary digIT): quantità d’informazione che si ottiene selezionando una configurazione da un insieme che ne contiene due.La risposta SI oppure NO a una domanda porta 1 bitdi informazione.

Page 2: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 2

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 3

Codifica binaria

Numeri binari: base b = 2Alfabeto binario: cifre ci ∈ { 0 , 1}

Notazione posizionale in base 2:(ck … c1 c0)2 rappresenta: N = ck x 2k + ck-1 x 2k-1 + … + c0 x 20 =

= Σ(i=0… k) ci x 2 i

c0 bit meno significativock bit più significativo

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 4

Codifica binaria su n bit

Con una sequenza di n bit si possono rappresentare 2n numeri interi assoluti da 0 a 2n-1.Esempio: n = 4 bit ⇒ 24 = 16 numeri interi assoluti da 0 a 15.La lunghezza delle sequenze di bit adottate stabilisce il massimo numero che può essere rappresentato.

Page 3: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 3

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 5

Codifica binaria su n+1 bit

Se passiamo da una sequenza di lunghezza n bit ad una sequenza di n+1 bit si raddoppiano i numeri che si possono rappresentare (2n+1).Esempio: • n = 4 bit ⇒ 24 = 16 numeri da 0 a 15.• n = 5 bit ⇒ 25 = 32 numeri da 0 a 31.

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 6

Codifica binaria su 2n bit

Se raddoppiamo la lunghezza di una sequenza dan bit a 2n bit i numeri che si possono rappresentare aumentano esponenzialmente (22n)Esempio: • n = 4 bit ⇒ 24 = 16 numeri da 0 a 15.• n = 8 bit ⇒ 28 = 256 numeri da 0 a 255.

Esempio: Con 32 bit si possono rappresentare 232 numeri naturali da 0 a 232-1= 4 294 967 295 ≈ 4 x 109.Con 64 bit si possono rappresentare 264 numeri naturali da 0 a 264-1= 16 x 1018 = 1,6 x 1019

Page 4: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 4

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 7

Addizione binaria

Addizione binaria tra due bit (a + b):oltre al bit di somma S occorre memorizzare il bit di riporto R (carry):

1011

0101

0110

0000

RSba

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 8

Addizione binaria su n bit

Addizione binaria tra due numeri interi assoluti di lunghezza n bit:• si allineano i due numeri in colonne da destra verso

sinistra (cioè partendo dal bit meno significativo);• si eseguono le somme bit a bit da destra verso

sinistra considerando per ogni colonna (successiva alla colonna corrispondente al bit meno significativo) il riporto generato dalla colonna alla sua destra

Page 5: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 5

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 9

Addizione binaria tra 2 bit ai e bi con riporto in ingresso Ri

11111

10011

10101

01001

10110

01010

01100

00000

Ri+1SiRibiai

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 10

Esempio

4 bit: A = 0101 B = 0011R 1 1 1A 0 1 0 1 510

B 0 0 1 1 310

A+B 1 0 0 0 810

Page 6: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 6

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 11

Overflow

Se si considerano due numeri interi assoluti rappresentati su n bit ⇒ si verifica la condizione di overflow ogni volta che il risultato supera 2n-1Esempio: 4 bit: A = 0101 B = 1011R 1 1 1 1A 0 1 0 1 510

B 1 0 1 1 1110

A+B 1 0 0 0 0 1610

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 12

Rappresentazione dei numeri interi relativi (o con segno)

Codifica modulo e segno

Codifica in complemento a due

Page 7: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 7

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 13

Codifica modulo e segno

Soluzione: indicare il segno seguito dal valore assoluto.• 1 bit per indicare il segno

(convenzione: 0 positivo e 1 negativo)• Restanti (n-1) bit per rappresentare il modulo (o valore

assoluto) del numero

Indispensabile indicare il numero n di bit utilizzati• Esempio: 4 bit +610 = 0110ms –610 = 1110ms

Problema: ci sono 2 rappresentazioni dello zero: • Esempio: 4 bit +010 = 0000ms –010 = 1000ms

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 14

Codifica modulo e segno

Con una sequenza di n bit si possono rappresentare 2n numeri interi assoluti da 0 a 2n-1.Con una sequenza di n bit si possono rappresentare con la codifica modulo e segno 2n-1 numeri interi relativi compresi nell’intervallo da – (2n-1 –1) a 2n-1-1.Esempio: • 4 bit ⇒ 16 numeri interi assoluti da 0 a 15• 4 bit ⇒ 15 numeri interi relativi da –7 a 7

Page 8: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 8

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 15

Diverse interpretazioni della codifica binaria su 4 bit

000000

-7151111

-6141110

-5131101

-4121100

-3111011

-2101010

-191001

-081000

770111

660110

550101

440100

330011

220010

110001

Rappr. numeri interirelativi (modulo e segno)

Rappres. numeri interi assoluti

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 16

Codifica in complemento a due

Alfabeto binario:• Anche il segno è rappresentato da 0 o 1• Indispensabile indicare il numero n di bit utilizzati

Complemento a due:• Date le sequenze di n bit, per rappresentare il

numero X si utilizza il valore binario corrispondente a 2n + x

• Esempio: • 4 bit +610 ⇒ 24 + 6 = 22 ⇒ [1] 0110 ⇒ 0110C2

• 4 bit -610 ⇒ 24 - 6 = 10 ⇒ [0] 1010 ⇒ 1010C2

Page 9: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 9

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 17

Codifica in complemento a due

Con una sequenza di n bit si possono rappresentare con la codifica in complemento a due 2n numeri interi relativi compresi nell’intervallo da – 2n-1 a 2n-1-1.Esempio: 4 bit ⇒ 16 numeri interi relativi da –8 a 7Notare: c’è una sola rappresentazione dello zero:• 4 bit: +010 = 0000C2 (mentre 1000C2 = -810)

Ciò impedisce il bilanciamento tra numeri positivi e negativi: • 4 bit: zero + 7 numeri positivi (fino a 7) + 8 numeri negativi

(fino a –8).

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 18

Codifica in complemento a due

Primo metodo pratico per calcolare la rappresentazione di –X a partire da quella di X:• Effettuare il complemento di ogni bit di X e

aggiungere 1.

Esempio: 4 bit • +610 = 0110C2

• Complemento di tutti i bit: 1001C2

• Aggiungere 1: (1001 + 0001) = 1010C2 = -610

Page 10: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 10

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 19

Codifica in complemento a due

Secondo metodo pratico per calcolare la rappresentazione di –X a partire da quella di X:• Partendo da destra verso sinistra, lasciare invariati

tutti i bit fino al primo 1 compreso, e complementare tutti gli altri bit.

Esempio: 4 bit • +610 = 0110C2

• Gli ultimi due bit rimangono invariati __10 • Complementare gli altri 2 bit: 1010C2 = -610

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 20

Diverse interpretazioni della codifica binaria su 4 bit

-1-7151111

-2-6141110

-3-5131101

-4-4121100

-5-3111011

-6-2101010

-7-191001

-8-081000

7770111

6660110

5550101

4440100

3330011

2220010

1110001

0000000

Rappr. numeri interirelativi (C2)

Rappr. numeri interirelativi (MS)

Rappres. numeri interi assoluti

minint

maxint

Page 11: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 11

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 21

Codifica in complemento a due

Data la rappresentazione di un numero su n bit, la rappresentazione dello stesso numero su n+1 bit si ottiene aggiungendo a sinistra un bit uguale al bit più significativo (operazione di estensione del segno – sign extension) in modo da rispettare il valore del numero.Esempio: • Rappresentazione di –6 su 4 bit = 1010C2

• Rappresentazione di –6 su 5 bit = 11010C2

• Rappresentazione di –6 su 8 bit = 11111010C2

• Rappresentazione di –6 su 16 bit = 1111111111111010C2

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 22

Codifica in complemento a due

Operazione di estensione del segno (sign extension)• Propagazione a sinistra del MSB (rispetta il valore del

numero)

Operazione di estensione di zero (zero extension)• Riempimento con 0 dei bit più significativi (può non

rispettare il valore del numero).• Es.: da 4 a 8 bit: 0011 ⇒ 0000 0011 (da 3 a 3)• Es.: da 4 a 8 bit: 1010 ⇒ 0000 1010 (da –6 a 10)

Nella costruzione di costanti su32 bit (superiori a 65535) può servire il riempimento con 0.

Page 12: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 12

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 23

Numeri in C2 su 32 bit0000 0000 0000 0000 0000 0000 0000 00002 = 010

0000 0000 0000 0000 0000 0000 0000 00012 = 110

0000 0000 0000 0000 0000 0000 0000 00102 = 210

….0111 1111 1111 1111 1111 1111 1111 11012 = 2 147 483 64510

0111 1111 1111 1111 1111 1111 1111 11102 = 2 147 483 64610

0111 1111 1111 1111 1111 1111 1111 11112 = 2 147 483 64710

1000 0000 0000 0000 0000 0000 0000 00002 = -2 147 483 64810

1000 0000 0000 0000 0000 0000 0000 00012 = -2 147 483 64710

1000 0000 0000 0000 0000 0000 0000 00102 = -2 147 483 64610

….1111 1111 1111 1111 1111 1111 1111 11012 = -310

1111 1111 1111 1111 1111 1111 1111 11102 = -210

1111 1111 1111 1111 1111 1111 1111 11112 = -110

minint

maxint

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 24

Osservazioni

In entrambe le rappresentazioni (MS e C2) i numeri positivi iniziano con 0, quelli negativi con 1 (è come se il primo bit rappresentasse il segno del numero).Nella rappresentazione C2:• 1000 … 0000 è minint• 1111 … 1111 è -1

Page 13: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 13

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 25

Osservazioni

Principale vantaggio della notazione in complemento a due: la sottrazione tra due numeri (a – b) si effettua come somma algebrica a + (-b)C2

Esempi:4 – 6 = 4 + (-6)C2 = 0100 + 1010 = 1110 = (-2)C2

7 – 3 = 7 + (-3)C2 = 0111 + 1101 = [1]0100 = +4

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 26

Somma algebrica

Si consideri l’operazione di somma algebrica di due numeri interi di n bit dotati di segno e rappresentati in complemento a dueIl risultato dell’addizione è corretto, a patto che cada nel campo dei valori rappresentabili (-2n-1 ≤ N ≤ 2n-1 –1), pur di trascurare l’eventuale riporto in uscita dal bit piùsignificativo.

Page 14: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 14

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 27

Esempi

2 + 3 = 0010 + 0011 = 0101 = 5-5 - 2 = (-5)+ (-2) = 1011 + 1110 = [1]1001 = -7-3 – (-7) = (-3)+ 7 = 1101 + 0111 = [1]0100 = +4-7 – 1 = (-7)+ (-1) = 1001 + 1111 = [1]1000 = -8+2 – (-3) = 2 + 3 = 0010 + 0011 = 0101 = +5

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 28

Overflow/underflow

Il segnale di riporto in uscita non è sufficiente per indicare un overflow/underflow di una somma algebrica di numeri interi con segno.Sommando 2 numeri di n bit, la somma può eccedere gli n bit (il bit di segno prende il valore del risultato anziché il valore del segno corretto).Si ha superamento di capacità se:• Sommando due numeri positivi si ottiene un risultato

negativo (generazione di overflow)• Sommando due numeri negativi si ottiene un risultato

positivo (generazione di underflow)

Page 15: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 15

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 29

Esempi

7 + 4 = 0111 + 0100 = 1011 = -5 NO! OVERFLOW!-4 - 6 = (-4)+ (-6) = 1100 + 1010 = [1]0110 = 6 NO! UNDERFLOW!

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 30

Overflow/underflow

Nel processore MIPS le istruzioni:• add, addi, sub causano eccezione in caso di

overflow• addu, addiu, subu NON causano eccezione in

caso di overflow (utili per manipolare indirizzi di memoria).

Page 16: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 16

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 31

Caratteristiche dei numeri in C2

Una sola rappresentazione dello 0Intervallo di rappresentazione asimmetico • -231; 231 – 1

MSB rappresenta il bit di segnoOccorre fare attenzione tra la rappresentazione di numeri signed e unsignedLa sottrazione tra due numeri si effettua come somma algebrica

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 32

Caratteristiche dei numeri in C2

Signed vs. unsigned• Gli indirizzi di memoria sono solo positivi (sfruttano

tutti e 32 i bit): • (2 32–1) max indirizzo di memoria possibile

• MSB = 1 in un numero unsigned più grande di 0111 … 1111 (maxint)

• MSB = 0 non c’è differenza tra unsigned e signed.

Nel processore MIPS ci sono istruzioni apposite che operano con numeri unsigned

Page 17: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 17

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 33

Circuiti Aritmetici

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 34

Half Adder

Addizionatore binario tra due bit (xi + yi)con uscite il bit di somma si e il bit di riporto ci+1 (carry):

1011

0101

0110

0000

ci+1siyixiHALF

ADDERxi

yi

si

ci+1

Page 18: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 18

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 35

Half Adder

si = xi xor yici+1 = xi and yi

xi

yi

si

ci+1

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 36

Full Adder

Addizionatore binario tra due bit (xi + yi) con riporto in ingresso ci (carry in) e con uscite il bit di somma si e il bit di riporto ci+1 (carry out):

FULL ADDERxi

ci

si

ci+1

yi

11111

10011

10101

01001

10110

01010

01100

00000

ci+1siciyixi

Page 19: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 19

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 37

Full Adder: Implementazione

Calcoliamo la prima forma canonica di si e ci+1

si = xi’ yi’ ci + xi’ yi ci’ + xi yi’ ci’ + xi yi ci

ci+1 = xi’ yi ci + xi yi’ ci + xi yi ci’ + xi yi ci

Possiamo semplificare ci+1:ci+1 = xi’ yi ci + xi yi ci+ xi yi’ ci + xi yi ci+ xi yi ci’ + xi yi ci

= (xi’ + xi ) yi ci+ (yi’ + yi ) xi ci+ (ci’ + ci ) xi yi

= 1 yi ci+ 1 xi ci+ 1 xi yi

= yi ci+ xi ci+ xi yi

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 38

Full Adder: Implementazione AND-OR (2 livelli)

si = xi’ yi’ ci + xi’ yi ci’ + xi yi’ ci’ + xi yi ci

ci+1 = xi yi + xi ci + yi ci

Page 20: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 20

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 39

Full Adder: Implementazione con Half Adder

Oppure possiamo riscrivere si e ci+1 come:si = xi’ yi’ ci + xi’ yi ci’ + xi yi’ ci’ + xi yi ci

= ci (xi’ yi’ + xi yi ) + ci’ ( xi’ yi + xi yi’ )= ci (xi xor yi)’ + ci’ ( xi xor yi)= (xi xor yi) xor ci

ci+1 = xi’ yi ci + xi yi’ ci + xi yi ci’ + xi yi ci

= ci (xi’ yi + xi yi’ )+ xi yi (ci’ + ci)= ci (xi xor yi)+ xi yi

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 40

Full Adder: Implementazione con Half Adder

HALF ADDERxi

yi

si

ci+1

xi

yi

ci

si

ci+1

HALF ADDERxi

yi

si

ci+1

FULL ADDER

Page 21: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 21

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 41

Full Adder: Generico stadio i di un addizionatore su n bit

FAxi

ci+1si

ci

yi

Ogni stadio i possiede un bit di riporto in ingresso ci(carry in) dallo stadio precedente (i-1) e un bit di riporto in ingresso ci+1 (carry out) verso lo stadio successivo (i+1).

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 42

Full Adder su n-bit

Per realizzare un addizionatore binario tra due vettori da n bit (X + Y) con riporto in ingresso ci (carryin) e con uscite il vettore somma S e il bit di riporto ci+1 (carry out): Si devono sommare le coppie di bit dei 2 vettori partendo dal bit meno significativo (a destra) e propagando il riporto verso le posizioni più significative (a sinistra)

Page 22: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 22

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 43

Esempio: 4-bit Ripple Carry Adder

Addizionatore a propagazione di riporto per numeri binari su 4 bit

c4

FAxi

ci+1si

ci

yi

FAxi

ci+1si

ci

yi

FAxi

ci+1si

ci

yi

FAxi

ci+1si

ci

yi c0c1c2c3

y0x0y1x1y2x2y3x3

4-bit RCA s0s1s2s3

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 44

Esempio: 4-bit Ripple Carry Adder

Quando c4=1:• Condizione di overflow cioè il risultato non può

essere rappresentato su 4 bit.• Oppure c4 può rappresentare il riporto verso un

successivo stadio nel caso di implementazione a cascata di addizionatori da 4 bit

Page 23: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 23

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 45

8-bit Ripple Carry Adder

4RCA

x3 0

c4

s3 0

c0

y3 0

4RCA

x3 0

c4

s3 0

c0

y3 0

y3 0x3 0y7 4x7 4

s3 0s7 4

c0c8

8-bit RCA

c4

Addizionatore a propagazione di riporto per numeri binari su 8 bit realizzato con 2 stadi da 4 bit collegati in cascata.

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 46

32-bit Ripple Carry Adder

Addizionatore a propagazione di riporto per numeri binari su 32 bit realizzato con 8 stadi da 4 bit collegati in cascata.

4RCA

x3 0

c4

s3 0

c0

y3 0

4RCA

x3 0

c4

s3 0

c0

y3 0

y3 0x3 0y31 28x31 28

s3 0s31 28

c0c32

32-bit RCA

c4…

Page 24: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 24

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 47

32-bit Ripple Carry Adder

Addizionatore a propagazione di riporto per numeri binari su 32 bit realizzato con 4 stadi da 8 bit collegati in cascata.

8RCA

x70

c8

s70

c0

y70

8RCA

x70

c8

s70

c0

y70

y7 0x7 0y31 24x31 24

s7 0s31 24

c0c32

32-bit RCA

c8…

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 48

Numeri in C2 su n-bit

Si considerino i numeri interi con segno rappresentati in complemento a 2 su n bit.Per sommare due numeri X e Y occorre fornire la loro rappresentazione in C2 all’addizionatore e ignorare il riporto in uscita dal bit più significativo. La somma in uscita costituisce il valore algebrico corretto del risultato in C2 per risultati compresi tra -2n-1 ≤ N ≤ 2n-1 –1

Page 25: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 25

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 49

Numeri in C2 su n-bit

Per sottrarre due numeri (X – Y) occorre calcolare il C2 di Y e sommarlo ad X come nel caso precedente. La somma in uscita costituisce il valore algebrico corretto del risultato in C2 per risultati compresi tra -2n-1 ≤ N ≤ 2n-1 –1.L’operazione di sottrazione richiede il calcolo del C2 del sottraendo.

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 50

4-bit Ripple Carry Adder/Sub

Addizionatore/Sottrattore a propagazione di riporto per numeri interi con segno in C2 su 4 bit

c4FA

xi

ci+1si

ci

yi

FAxi

ci+1si

ci

yi

FAxi

ci+1si

ci

yi

FAxi

ci+1si

ci

yi c0c1c2c3

x0x1x2x3

4-bit RCA s0s1s2s3

y0y1y3 y2

ADD/SUB

Page 26: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 26

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 51

4-bit Ripple Carry Adder/Sub

Il segnale di controllo ADD/SUB è c0:c0=0 per ADD (Applicati gli ingressi yi)c0=1 per SUB (Applicati gli ingressi yi’ con incremento di 1 per calcolare il C2 di Y).Seconda soluzione: posso sostituire gli xor con dei mux2 e degli inverter nel seguente modo.Anche in questo caso il segnale di controllo ADD/SUB è c0

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 52

4-bit Ripple Carry Adder/Sub

Addizionatore/Sottrattore a propagazione di riporto per numeri interi con segno in C2 su 4 bit

c4FA

xi

ci+1si

ci

yi

FAxi

ci+1si

ci

yi

FAxi

ci+1si

ci

yi

FAxi

ci+1si

ci

yi c0c1c2c3

x0x1x2x3

4-bit RCA s0s1s2s3

y0y1y3 y2

ADD/SUB

0 10 10 10 1

Page 27: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 27

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 53

Rappresentazione in C2

La rappresentazione dei numeri interi con segno in C2 viene scelta nei calcolatori per la semplicità e velocità delle operazioni aritmetiche di somma e sottrazione.

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 54

Overflow

Per le somme di numeri interi senza segno, il riporto in uscita indica la condizione di overflow oppure il riporto verso uno stadio successivo.Per le somme di numeri interi con segno in C2, l’overflow(underflow) si verifica quando si sommano due numeri dello stesso segno e il segno della somma non è concorde con il segno dei due numeri.

Page 28: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 28

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 55

Overflow per numeri in C2 su 4-bit

V

x3 y3 s3 y3x3 s3

V = x3y3s3’ + x3’ y3’ s3

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 56

Ripple Carry Adder

La commutazione dei circuiti combinatori non è istantanea, ma richiede un tempo di propagazionedel segnale elettrico che dipende dal numero di livelli logici attraversati dal segnale.Per esempio un’implementazione di tipo AND-OR richiede 2 livelli logici.Problema: L’addizionatore con propagazione di riporto è lento:• Il riporto si propaga sequenzialmente

Page 29: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 29

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 57

4-bit Ripple Carry Adder

Rivediamo il calcolo del riporti e dei ritardi associati:c1 = x0 y0 + x0 c0 + y0 c0 2 livellic2 = x1 y1 + x1 c1 + y1 c1 =

= x1 y1 + x1 (x0 y0 + x0 c0 + y0 c0) ++ y1 (x0 y0 + x0 c0 + y0 c0) 4 livelli

c3 = x2 y2 + x2 c2 + y2 c2 == x2 y2 + x2 (x1 y1 + ….) + y2 (x1 y1 + …) 6 livelli

c4 = x3 y3 + x3 c3 + y3 c3 == x3 y3 + x3 (x2 y2 + ….) + y3 (x2 y2 + …) 8 livelli

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 58

4-bit Ripple Carry Adder

Il ritardo nel calcolo del riporto incide sul ritardo associato ai bit di somma:

s0 = x0’ y0’ c0 + x0’ y0 c0’ + x0 y0’ c0’ + x0 y0 c0 2 livellis1 = x1’ y1’ c1 + x1’ y1 c1’ + x1 y1’ c1’ + x1 y1 c1 4 livellis2 = x2’ y2’ c2 + x2’ y2 c2’ + x2 y2’ c2’ + x2 y2 c2 6 livellis3 = x3’ y3’ c3 + x3’ y3 c3’ + x3 y3’ c3’ + x3 y3 c3 8 livelli

Page 30: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 30

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 59

Ripple Carry Adder

Si consideri un RCA su 16-bit. Calcolare i ritardi associati ai bit c16, s15.

Si consideri un RCA su 32-bit. Calcolare i ritardi associati ai bit c32, s31.

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 60

Ripple Carry Adder

Il calcolo del riporto è troppo lento per n grande.Obiettivo: modificare l’algoritmo il modo da esprimere il riporto in modo non sequenzialeProgettazione di addizionatori veloci: Addizionatori con anticipo del calcolo del riporto (Carry Look Ahead Adder).

Page 31: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 31

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 61

Carry Look Ahead Adderci+1 = xi yi + xi ci + yi ci = xi yi + (xi + yi) ci =

= Gi + Pi ci dove:Gi = xi yi GenerazionePi = xi + yi Propagazione

Se Gi = 1 ⇒ ci+1 = 1 indipendentemente da ciSe Pi = 1 ⇒ un riporto in ingresso ci genera un riporto in uscita ci+1Le funzioni Gi e Pi possono essere generate in maniera indipendente e in parallelo, dati xi e yi con un ritardo pari ad una porta logica elementare (1 livello).

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 62

4-bit Carry Look Ahead Adder

Calcolo del riporti e dei ritardi associati: c1 = G0 + P0 c0 3 livellic2 = G1 + P1 c1 = G1 + P1 G0 + P1 P0 c0 3 livellic3 = G2 + P2 c2 =

= G2 + P2 G1 + P2 P1 G0 + P2 P1 P0 c0 3 livellic4 = G3 + P3 c3 =

= G3 + P3 G2 + P3 P2 G1 + P3 P2 P1 G0 + P3 P2 P1 P0 c03 livelli

Si noti che c4 che utilizza porte logiche a 5 ingressi

Page 32: Aritmetica - Intranet DEIBhome.deib.polimi.it/silvano/FilePDF/ArchI/Aritmetica.pdf · 1010 10 -2 1001 9 -1 1000 8 -0 0111 7 7 0110 6 6 0101 5 5 0100 4 4 0011 3 3 0010 2 2 0001 1 1

28/04/2003

Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 32

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 63

n-bit Carry Look Ahead Adder

Il ritardo associato ai riporti ci è pari a 3 livelli (1 livello per Pi e Gi e 2 livelli per AND-OR) INDIPENDENTEMENTE DA n.Il ritardo associato ai bit di somma:

si = xi’ yi’ ci + xi’ yi ci’ + xi yi’ ci’ + xi yi ci

è pari a 5 livelli (3 livelli per ci e 2 livelli per AND-OR) INDIPENDENTEMENTE DA n.

28/04/2003 Corso Architettura degli Elaboratori e delle Reti – prof. C. Silvano 64

n-bit Carry Look Ahead Adder

Problema: L’estensione del CLA a n bit porta ad introdurre delle porte logiche a molti ingressi (in pratica aumenta il numero dei livelli logici)Soluzioni: • Combinare 8 addizionatori CLA a 4 bit in modo

seriale (con propagazione di riporto)• Oppure usiamo 8 addizionatori CLA a 4 bit e

applichiamo il principio del CLA anche al risultato dei singoli blocchi da 4-bit in modo da evitare la propagazione del riporto tra i blocchi da 4 bit.