Addizionatori: metodo Carry-Lookahead Costruzione di circuiti …architet/AA00-01/SLIDES/... ·...

16
A dd i z i on a t o r i : m e t odo C a rr y - L ook a h e a d C o s t r u z i on e d i c i r c u i ti c o m b i n a t o r i S t a nd a r d I EE E 754 A d d i z i on a t o r i Il circuito combinatorio che implementa l’addizionatore a n bit si basa su 1-bit adder collegati in sequenza - il circuito usa lo stesso metodo usato dall’algoritmo carta e penna - il segnale deve attraversare più livelli di logica - porte con fan-in limitato

Transcript of Addizionatori: metodo Carry-Lookahead Costruzione di circuiti …architet/AA00-01/SLIDES/... ·...

Page 1: Addizionatori: metodo Carry-Lookahead Costruzione di circuiti …architet/AA00-01/SLIDES/... · 2001-03-21 · Addizionatori: metodo Carry-Lookahead Costruzione di circuiti combinatori

Addizionatori: metodo Carry-Lookahead

Costruzione di circuiti combinatori

Standard IEEE754

Addizionatori

Il circuito combinatorio che implementa l’addizionatore a n bit si basa su1-bit adder collegati in sequenza

- il circuito usa lo stesso metodo usato dall ’algoritmo carta e penna- il segnale deve attraversare più livelli di logica- porte con fan-in limitato

Page 2: Addizionatori: metodo Carry-Lookahead Costruzione di circuiti …architet/AA00-01/SLIDES/... · 2001-03-21 · Addizionatori: metodo Carry-Lookahead Costruzione di circuiti combinatori

Addizionatori

" La tabella di verità dell ’addizionatore a singolo bit

A B CarryIn Sum CarryOut 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1

1

1 1 1

ABCarryIn 00 01 11 10

0

1

CarryOut

1 1

1 1

ABCarryIn 00 01 11 10

0

1

Sum

Sum = (~A ~B CarryIn) + (~A B ~CarryIn) + (A B CarryIn) + (A ~B ~CarryIn)

CarryOut = (B CarryIn) + (A CarryIn) + A B

1-bit ALU

" 1-bit ALU usata per eseguire le istruzioni macchina seguenti:

– and $2, $3, $4– or $2, $3, $4– add $2, $3, $4

– Operation è un segnale di controlloa 2 bit

" determina il ti po di operazione chel’ALU deve eseguire

– l’ALU ? la tipica componente che faparte del Datapath (Parte operativa)del processore

– La Parte Controllo comanda l’esecuzionedelle varie istruzioni

" settando opportunamente i segnalidi controllo dell ’ALU (e dellealtre componenti della Parteoperativa)

0

2

Operation

1Result

CarryIn

CarryOut

b

a

Page 3: Addizionatori: metodo Carry-Lookahead Costruzione di circuiti …architet/AA00-01/SLIDES/... · 2001-03-21 · Addizionatori: metodo Carry-Lookahead Costruzione di circuiti combinatori

32-bit ALU

- catena di 1-bit ALU con propagazione del Carry

- segnale di controllo per determinare l’operazione che l’ALU deve eseguire: Operation propagato a tutte le 1-bit ALU

- Il segnale CarryIn di ogni ALU viene propagato sulla ALU successiva

ALU & somma veloce

Considerazioni sulla velocità dell ’ALU nell ’eseguire la somma:

" l’ ingresso CarryIn dipende dal funzionamento dell ’adiacente sommatore a 1 bit

" se si risale lungo la catena delle dipendenze, si nota che il bit più significativo della somma è legato a quello meno significativo

" il bit più significativo della somma deve attendere la valutazione sequenziale di 32 sommatori a 1 bit ==> LENTO

... ci sono metodi per velocizzare il calcolo del riporto, cercando di far passare il segnale per un numero minore di porte. Uno di questi metodi è il Carry Lookahead

Page 4: Addizionatori: metodo Carry-Lookahead Costruzione di circuiti …architet/AA00-01/SLIDES/... · 2001-03-21 · Addizionatori: metodo Carry-Lookahead Costruzione di circuiti combinatori

Carry Lookahead

L’equazione generale per il calcolo di CarryOut è

CarryOut = (B•CarryIn) + (A•CarryIn) + A•B

Il CarryOut di un 1-bit adder è il CarryIn del 1-bit adder successivo:

CarryIn1 = (b0•CarryIn0) + (a0•CarryIn0) + a0•b0CarryIn2 = (b1•CarryIn1) + (a1•CarryIn1) + a1•b1.....In forma più compatta si può scrivere:

c1 = (b0c0) + (a0c0) + a0b0c2 = (b1c1) + (a1c1) + a1b1......Sostituendo in c2 l’espressione relativa a c1 si ottienec2 = (b1a0b0)+(b1a0c0) +(b1b0c0)+(a1a0b0)+(a1a0c0)+(a1b0c0)+(a1b1)

L’equazione si espande in modo esponenziale a mano a mano chesi passa a bit di ordine più elevato ==> hardware costoso

Carry Lookahead

Come semplificare il calcolo di ci+1?

ci+1 = (bici) + (aici)+(aibi) = (aibi) + (ai+bi)ci = gi + pi ci

gi = GENERAZIONE se gi = 1 allora ci+1 = gi + pici = 1 + pici = 1 cio? il sommatore genera 1 indipendentemente dal valore di cipi = PROPAGAZIONE se gi = 0 e pi = 1 allora ci+1 = 0 + 1ci = ci cioè il sommatore propaga il CarryIn sul CarryOut

Quindi:

ci+1 = 1 se gi = 1 oppure pi = 1 e ci = 1ci+1 = 0 altrimenti

Page 5: Addizionatori: metodo Carry-Lookahead Costruzione di circuiti …architet/AA00-01/SLIDES/... · 2001-03-21 · Addizionatori: metodo Carry-Lookahead Costruzione di circuiti combinatori

Carry Lookahead

Per un sommatore a 4 bit si ha:

c1 = g0 + p0c0c2 = g1 + p1c1 = g1 + (p1g0) + (p1p0c0)c3 = g2 + p2c2 = g2 + (p2g1) + (p2p1g0) + (p2p1p0c0)c4 = g3 + p3c3 = g3 + (p3g2) + (p3p2g1) + (p3p2p1g0) + (p3p2p1p0c0)

Il segnale CarryIn vale 1 se qualchesommatore precedente ha generatoun riporto e tutti i sommatori intermedilo propagano

Carry Lookahead

Il sommatore con Carry Lookahead visto alla pagina precedente genera comunquelunghe equazioni. . . non è pensabile realizzarlo per blocchisuperiori a 4 bit

Allora si considera il sommatore a 4 bit con logica di Carry Lookaheadcome blocco elementare

" attraverso il riporto si collegano blocchi simili i n cascata

" per 16bit la somma sarà più veloce rispetto alla versione senza Carry Lookahead: vediamo come viene realizzato ...

Page 6: Addizionatori: metodo Carry-Lookahead Costruzione di circuiti …architet/AA00-01/SLIDES/... · 2001-03-21 · Addizionatori: metodo Carry-Lookahead Costruzione di circuiti combinatori

Carry Lookahead

Per eseguire il Carry Lookahead con i sommatori a 4bit è necessario considerare isegnali genera e propaga di “ordine superiore”

Il segnale di propagazione uscente da un sommatore a 4bit è vero solo se ciascunodei bit del gruppo propaga un riporto

P0 = p3p2p1p0P1 = p7p6p5p4P2 = p11p10p9p8P3 = p15p14p13p12

Il segnale di generazione uscente da un sommatore a 4bit è vero se" genera è vero per il bit più significativo o" un precedente genera è vero e tutti i segnali propaga intermedi, incluso quello del bit più significativo, sono anch’essi veri

G0 = g3 + (p3g2) + (p3p2g1) + (p3p2p1g0)G1 = g7 + (p7g6) + (p7p6g5) + (p7p6p5g4)G2 = g11 + (p11g10) + (p11p10g9) + (p11p10p9g8)G3 = g15 + (p15g14) + (p15p14g13) + (p15p14p13g12)

Carry Lookahead

Ecco come vengono generati i segnali P0 e G0:

Page 7: Addizionatori: metodo Carry-Lookahead Costruzione di circuiti …architet/AA00-01/SLIDES/... · 2001-03-21 · Addizionatori: metodo Carry-Lookahead Costruzione di circuiti combinatori

Carry Lookahead

Le equazioni per il riporto in ingresso ad ogni gruppo di sommatori a 4bitall ’ interno di un sommatore a 16 bit sono:

C1 = G0 + P0c0C2 = G1 + (P1G0) + (P1P0c0)C3 = G2 + (P2G1) + (P2P1G0) + (P2P1P0c0)C4 = G3 + (P3G2) + (P3P2G1) + (P3P2P1G0) + (P3P2P1P0c0)

Il meccanismo del Carry Lookahead rende il calcolo dei riporti più veloceperchè prevede l’uso di un numero minore di porte logiche per trasmettere il segnaledi riporto in ingresso ==> il tempo di risposta è minore

Carry Lookahead

Sommatore a 16bit composto di quattroALU a 4bit con logica di Carry-Lookahead

Si osservi che i riporti provengonodall’unità di Carry-Lookahead e nondalle ALU a 4 bit

Page 8: Addizionatori: metodo Carry-Lookahead Costruzione di circuiti …architet/AA00-01/SLIDES/... · 2001-03-21 · Addizionatori: metodo Carry-Lookahead Costruzione di circuiti combinatori

Carry Lookahead

Esempio: calcolare i segnali gi, pi, Gi, Pi per i seguenti due numeri

a 0010 1011 1111 1000b 0001 0100 1101 0110gi = aibi 0000 0000 1101 0000pi = ai + bi 0011 1111 1111 1110

I segnali Pi per gruppi di 4bit sono dati dall ’AND dei relativi piP3 = 0•0•1•1 = 0P2 = 1•1•1•1 = 1P1 = 1•1•1•1 = 1P0 = 1•1•1•0 = 0

I segnali Gi sono dati da:G0 = g3+(p3g2)+(p3p2g1)+(p3p2p1g0) = 0+(1•0)+(1•1•0) +(1•1•1•0)=0G1 = g7+(p7g6)+(p7p6g5)+(p7p6p5g4) = 1+(1•1)+(1•1•0) +(1•1•1•1)=1G2 = g11+(p11g10)+(p11p10g9)+(p11p10p9g8)=0+(1•0)+(1•1•0) +(1•1•1•0)=0G3 = g15+(p15g14)+(p15p14g13)+(p15p14p13g12)=0+(0•0)+(0•0•0) +(0•0•1•0)=0

Carry Lookahead

Esempio (continua): la somma a+b genera riporto?

E' suff iciente calcolare il riporto dell’ultimo sommatore a 4bit:

C4 = G3 + (P3G2) + (P3P2G1) + (P3P2P1G0) + (P3P2P1P0c0) = 0 + (0•0) + (0•1•1) + (0•1•1•0) + (0•1•1•0•0) = 0 + 0 + 0 + 0 + 0 = 0

Page 9: Addizionatori: metodo Carry-Lookahead Costruzione di circuiti …architet/AA00-01/SLIDES/... · 2001-03-21 · Addizionatori: metodo Carry-Lookahead Costruzione di circuiti combinatori

Realizzazione di circuiti combinatori

Esercizio: Dati tre ingressi A, B, C realizzare un circuito chefornisca in uscita tre segnaliD è vera se almeno uno degli i ngressi è veroE è vera se esattamente due input sono veriF è vera se tutti e tre gli input sono veri

A B C D E F Somme di Prodotti

0 0 0 0 0 0 D = (∼A∼BC)+(∼AB∼C)+(∼ABC)+0 0 1 1 0 0 (A∼B∼C)+(A∼BC)+(AB∼C)+(ABC)0 1 0 1 0 00 1 1 1 1 0 E = (∼ABC)+(A∼BC)+(AB∼C)1 0 0 1 0 01 0 1 1 1 0 F = ABC1 1 0 1 1 01 1 1 1 0 1

Realizzazione di circuiti combinatori

Esercizio: (continua) Realizzare le uscite D, E, F mediante PLA(Programming Logic Array)D = (∼A∼BC)+(∼AB∼C)+(∼ABC)+ (A∼B∼C)+(A∼BC)+(AB∼C)+(ABC)E = (∼ABC)+(A∼BC)+(AB∼C)F = ABC

Page 10: Addizionatori: metodo Carry-Lookahead Costruzione di circuiti …architet/AA00-01/SLIDES/... · 2001-03-21 · Addizionatori: metodo Carry-Lookahead Costruzione di circuiti combinatori

Realizzazione di circuiti combinatori

Esercizio: Realizzare l’ uscita E dell ’esercizio precedenteE = (∼ABC)+(A∼BC)+(AB∼C) nei seguenti casi:

1. utilizzando porte AND e OR a due ingressi

2. utilizzando porte NAND a tre ingressi

Realizzazione di circuiti combinatori

Esercizio: (continua) E = (~ABC)+(A∼BC)+(AB∼C)Realizzazione util izzando porte AND e OR a due ingressi

Page 11: Addizionatori: metodo Carry-Lookahead Costruzione di circuiti …architet/AA00-01/SLIDES/... · 2001-03-21 · Addizionatori: metodo Carry-Lookahead Costruzione di circuiti combinatori

Realizzazione di circuiti combinatori

Esercizio: (continua) E = (∼ABC)+(A∼BC)+(AB∼C)Realizzazione util izzando porte NAND a tre ingressi

E = (∼ABC)+(A∼BC)+(AB∼C) = [applico De Morgan] ∼[∼(∼ABC) • ∼(A∼BC) • ∼(AB∼C)]

Realizzazione di circuiti combinatoriEsercizio: (continua)

Realizzare il circuito usando porte AND e OR a due soli ingressi

E = ∼A∼B∼C + ∼A∼C∼D + ∼B∼C∼D + ∼A∼B∼D + BCD + ABC + ABD + ACD

Page 12: Addizionatori: metodo Carry-Lookahead Costruzione di circuiti …architet/AA00-01/SLIDES/... · 2001-03-21 · Addizionatori: metodo Carry-Lookahead Costruzione di circuiti combinatori

Realizzazione di circuiti combinatori

Esercizio: (continua) E = ∼A∼B∼C + ∼A∼C∼D + ∼B∼C∼D + ∼A∼B∼D + BCD + ABC + ABD + ACD

Provate asemplificarloraggruppandoopportunamentei segnali di ingresso

Rappresentazione dei numeri razionaliin virgola mobile (floating point)

Un numero reale R può essere scritto come R = ±m•Be

m = mantissae = caratteristicaB = base

Esempi: B = 10

R1 = 3.1569 x 103

R2 = 2054.00035 x 10-6

R3 = 0.1635 x 102

R4 = 0.0091 x 10-12

" notazione scientifica: m = 0 . d-1...d-k" notazione scientifica normalizzata: m = d0 . d-1...d-k con d0 ≠ 0 (per B=2 si ha d0 = 1 fisso!!)

Page 13: Addizionatori: metodo Carry-Lookahead Costruzione di circuiti …architet/AA00-01/SLIDES/... · 2001-03-21 · Addizionatori: metodo Carry-Lookahead Costruzione di circuiti combinatori

Rappresentazione dei numeri razionaliin virgola mobile (floating point)

Una volta fissato il numero di bit totale per la rappresentazione deinumeri razionali rimane da decidere

" quanti bit assegnare per la mantissa ?(maggiore ? il numero di bit e maggiore ? l’accuratezza con cui si riescono a rappresentare i numeri)

" quanti bit assegnare per l’esponente ?(aumentando i bit si aumenta l’ intervallo dei numeri rappresentabili )

OVERFLOW: si ha quando l’esponente positivo è troppo grande per poter essere rappresentato con il numero di bit assegnato all ’esponente

UNDERFLOW: si ha quando l’esponente negativo è troppo grande per poter essere rappresentato con il numero di bit assegnato all ’esponente

Standard IEEE754

" Standard IEEE754: Singola precisione (32 bit)

si riescono a rappresentare numeri 2.010 • 2-38 ÷ 2.010 •

238

" Standard IEEE754: Doppia precisione (64 bit)

si riescono a rappresentare numeri 2.010 • 2-308 ÷ 2.010 •

2308

Page 14: Addizionatori: metodo Carry-Lookahead Costruzione di circuiti …architet/AA00-01/SLIDES/... · 2001-03-21 · Addizionatori: metodo Carry-Lookahead Costruzione di circuiti combinatori

Standard IEEE754

Si osservi che m = d0 . d-1...d-k con d0 = 1 fisso.Lo standard IEEE754 sceglie di rendere d0 = 1 implicito, mettendo uncircuito che somma automaticamente 1 alla cifra espressa dalla mantissa.Così si guadagna un bit per la rappresentazione della mantissa e si aumental’accuratezza dei numeri razionali espressi

Il numero espresso ? quindi: (-1)S• (1 + m) • 2e

Ma .... come si rappresenta lo zero?m = 00...0 ma non si deve sommare 1 ==> si usa l’esponente nullo comevalore riservato per indicare al circuito di non sommare 1Quindi lo zero viene rappresentato come:

Standard IEEE754

Come rappresentare i numeri in modo che sia facile realizzare il confrontotra interi (pensando soprattutto all ’ordinamento)?Lo standard IEEE754 ha scelto:" la posizione del segno in modo che sia facile il test >0 , <0, =0" la posizione dell ’esponente (prima della mantissa) per sempli ficare l’ordinamento dei numeri rappresentati ==> per esponenti con lo stesso segno il confronto è facile

Però gli esponenti negativi rappresentano un problema per l’ordinamento.Infatti, usando il complemento a due,

esponente negativo ==> bit più significativo a 1e quindi un esponente negativo appare come un numero grande(leggendolo come semplice numero binario)Esempio: 1.0 • 2-1

Esempio: 1.0 • 21

Page 15: Addizionatori: metodo Carry-Lookahead Costruzione di circuiti …architet/AA00-01/SLIDES/... · 2001-03-21 · Addizionatori: metodo Carry-Lookahead Costruzione di circuiti combinatori

Standard IEEE754

Una buona rappresentazione deve denotare l’esponente “più negativo”come 00...02 e quello “più positivo” come 11...12

Lo standard IEEE754 utili zza la notazione polarizzata

" Singola precisione: polarizzazione pari a 127 = 011111112" Doppia precisione: polarizzazione pari a 1023 = 011111111112

Allora, ad esempio:

" esponente -125 rappresentato come -125+127 = 000000102" esponente -1 rappresentato come -1+127 = 126 = 011111102" esponente 0 rappresentato come 0 + 127 = 127 = 011111112" esponente +1 rappresentato come 1+127 = 128 = 100000002" esponente +125 rappresentato come 125+127=252=111111002

Standard IEEE754

Per leggere un numero in notazione polarizzata si usa la regola:

(-1)S•(1+m)•2(e - polazizzazione)

Per scrivere un numero in notazione polarizzata bisogna:" non rappresentare la parte intera della mantissa (il bit 1 prima della virgola)" aggiungere all ’esponente la polarizzazione

Con la notazione polarizzata gli esponenti variano" da -126 a +127 per la singola precisione" da -1022 a +1023 per la doppia precisione

Si noti che:

" l’esponente 00...0 è riservato per lo zero" l’esponente 11...1 è riservato per casi particolari (fuori dall ’ insieme dei valori rappresentabili )

Page 16: Addizionatori: metodo Carry-Lookahead Costruzione di circuiti …architet/AA00-01/SLIDES/... · 2001-03-21 · Addizionatori: metodo Carry-Lookahead Costruzione di circuiti combinatori

Standard IEEE754

Esempio: scrivere - 0. 2510 in notazione floating point, usando lo standardIEEE754

- 0. 2510 = - 0. 012 = - 1. 0 • 2-2 = (-1)1 • (1 + 0.0) • 2(-2+127)

Esempio: Quale numero decimale rappresenta la seguente sequenza di bit,letta secondo lo standard IEEE754?

esponente: 000010112 = 1310mantissa: 0.012 = 0. 2510Il numero rappresentato è: (-1)1•(1+ 0.25)•2(13-127) = - 1. 25 •2(-114)