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
16
Embed
Addizionatori: metodo Carry-Lookahead Costruzione di ...unina.stidue.net/Architettura dei Sistemi di Elaborazione/Materiale... · ALU & somma veloce Considerazioni sulla velocità
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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
Addizionatori
" La tabella di verità dell ’addizionatore a singolo bit
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
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
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
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 ...
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
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
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
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:
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
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
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
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
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!!)
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
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
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 )
Standard IEEE754
Esempio: scrivere - 0. 2510 in notazione floating point, usando lo standardIEEE754