Sommatori - full adder e ripple-carry
In questa pagina 5
I blocchi aritmetici fondamentali di una ALU (Blocchi logici di un microprocessore - ALU, bus e logica tri-stateUn microprocessore semplice è formato da un'unità di controllo (decodifica le istruzioni e abilita gli altri blocchi), una ALU (operazioni aritmetiche e logiche), la memoria e i registri, collegati da bus (linee condivise unidirezionali o bidirezionali). La ALU combina un sommatore con un'unità logica e un multiplexer di selezione dell'operazione: la sottrazione è A + B̄ + 1 (XOR su B e riporto in ingresso a 1), le flag (zero, riporto, segno, overflow) descrivono il risultato. Un bus è una linea pilotata da più sorgenti: per evitare conflitti ogni uscita collegata è tri-state (il segnale enable la mette in alta impedenza) oppure open-drain (solo PDN: ciascuna può imporre 0, serve un pull-up per l'1).Blocchi logici di un microprocessore - ALU, bus e logica tri-state →) sono i sommatori, i traslatori, i comparatori e i moltiplicatori. Tutti gli altri si costruiscono sul sommatore (la sottrazione è : Rappresentazione dei numeri e dell'informazioneUn'informazione digitale è una stringa di bit. Numeri senza segno: N bit rappresentano 0…2^N − 1; in esadecimale ogni cifra raggruppa 4 bit. Numeri con segno: complemento a due (range −2^(N−1)…2^(N−1) − 1; si nega invertendo i bit e sommando 1; il bit più significativo è il segno e l'estensione di segno lo replica). Il BCD codifica ogni cifra decimale con 4 bit (0…9) e si ottiene dal binario con l'algoritmo double dabble (shift a sinistra, e +3 a ogni gruppo maggiore di 4 prima dello shift). Il codice Gray cambia un solo bit tra valori consecutivi. I numeri frazionari si trattano in virgola fissa (4 bit di parte frazionaria = multipli di 1/16), i caratteri in ASCII, gli errori con un bit di parità.Rappresentazione dei numeri e dell'informazione →).
Addizione di bit e di numeri
La somma di due bit dà un bit di somma e un bit di riporto (carry) : , , , (riporto , somma ). Un half adder ha , . Per sommare numeri a più bit, ogni posizione deve sommare anche il riporto della posizione precedente: tre bit , , danno somma e riporto .
Full adder
Il full adder (sommatore completo a un bit) ha per tabella di verità Il riporto d'uscita è la funzione maggioranza: vale se almeno due ingressi valgono . Si ottimizza il circuito con tre segnali:
- generate : lo stadio genera un riporto indipendentemente da ;
- propagate (o ): lo stadio propaga il riporto d'ingresso;
- delete (kill) : lo stadio cancella il riporto (uscita qualunque ). Allora Una scomposizione utile è in due fasi: set-up (calcolo di e da e , indipendenti da ) e carry/sum (calcolo di ed , che dipendono da ). Una realizzazione a gate di trasmissione (Logica a pass-transistor e gate di trasmissioneNella logica a pass-transistor gli ingressi pilotano sia i gate sia i terminali di source/drain di una rete di interruttori (N transistor per N ingressi, nessun consumo statico, alcune funzioni, come AND, MUX e XOR, richiedono pochi transistor). Gli n-MOS trasmettono bene gli 0 ma male gli 1 (V_DD − V_Tn, con effetto body: circa 1,8 V da 2,5 V), i p-MOS al contrario (V_Tp in modulo per lo 0): il livello degradato non è rigenerato e può far condurre un inverter successivo (consumo statico). Il gate di trasmissione (n-MOS e p-MOS in parallelo, con G e nG complementari) trasmette bene entrambi i livelli, con resistenza R_n‖R_p quasi costante, ma costa due transistor e raddoppia le capacità. Una catena di n pass-transistor ha ritardo ∝ n² (Elmore, 0,69 R C n(n+1)/2): si inseriscono buffer ogni m = 1,7√(t_buf/(R_eq C)) stadi.Logica a pass-transistor e gate di trasmissione →) usa per scegliere: se , altrimenti (se il riporto è ); e una XOR a gate di trasmissione per .
Sommatore ripple-carry
Un sommatore a bit si ottiene collegando full adder in cascata: . Il riporto "si propaga a onda" (ripple) dal bit meno significativo al più significativo. Indicati il ritardo del sum (da a ) e il ritardo di carry (da a ) di un full adder, e con :
- il bit dà la somma al tempo ;
- nel caso peggiore (riporto che attraversa tutti gli stadi: tutti ) l'ultimo bit attende ritardi di carry: Si include il set-up quando vale: .
Esempio numerico. , : : ; : ; : : raddoppiando il numero di bit il ritardo raddoppia circa. È il sommatore più semplice e compatto, ma lento: per le larghezze maggiori si usano architetture più veloci (Sommatori veloci - carry-bypass, carry-select e square-rootIl ripple-carry ha ritardo lineare in N. Il carry-bypass divide i bit in blocchi da M: se tutti i propagate del blocco valgono 1 (BP = P0P1…P_{M−1} = 1) un multiplexer fa saltare il riporto dall'ingresso all'uscita del blocco. Ritardo: t = t_setup + M t_carry + (N/M − 1) t_mux + (M−1) t_carry + t_sum, ottimo per M = √(N t_mux/(2 t_carry)); è determinato principalmente dal tempo di riporto. Il carry-select calcola in ogni blocco le somme per riporto 0 e per riporto 1 e un mux sceglie quella giusta: t = t_setup + M t_carry + (N/M) t_mux + t_sum, M ottimo √(N t_mux/t_carry); lo square-root carry-select usa blocchi di dimensione crescente (M, M+1, M+2…) perché il riporto arriva ogni volta un mux dopo: N ≈ K²/2 e t = t_setup + M t_carry + √(2N) t_mux + t_sum, cioè ritardo ∝ √N.Sommatori veloci - carry-bypass, carry-select e square-root →).
Ritardo dipendente dagli operandi
Il ritardo reale dipende dai dati. Si assumono , applicati insieme e noto. Il riporto in uscita dallo stadio è disponibile dopo un tempo se lo stadio è generate o delete (la sua uscita non dipende da ) e se è propagate. Il tempo totale è più il massimo ritardo del riporto entrante in uno stadio, cioè per il numero di stadi consecutivi della catena più lunga (un generate o delete e i propagate che lo seguono).
Esempio dalle slide (stadi con ): lo stadio è propagate ( è comunque contato: è disponibile a ), lo stadio propagate (), lo stadio generate (resetta la catena), lo stadio delete. Le somme sono pronte a , , e (lo stadio riceve il riporto dello stadio , che dipende solo da ): .
Operandi uguali bit a bit ( in ogni posizione): ogni stadio è generate o delete, nessun riporto si propaga e (i due operandi devono coincidere in ogni posizione, cioè essere lo stesso numero: se differissero anche solo in alcuni bit comparirebbero stadi propagate). Per esempio la somma di due numeri a bit identici si completa in e non in .
Esempio con operandi a 16 bit (, , LSB a destra): le posizioni sono, nell'ordine, D, D, P, G, D, G, D, G, D, P, D, G, D, P, P, G. Il ritardo del riporto entrante nel bit è il massimo: nasce dallo stadio D in posizione (), poi due stadi P (posizioni e ): . Quindi , molto minore del caso peggiore (). (Esercizio 17 · quesiti rapidi sui sommatori con dati numerici (temi d'esame 2025-2026) discute questo caso.)
Lunghezza dei numeri e overflow
La somma di due numeri a bit richiede bit (il riporto d'uscita è il bit in più). In complemento a due l'overflow si rivela con il confronto dei segni oppure come (riporto entrante e uscente nell'ultimo stadio).
Errori comuni
- Usare o invece di (la somma si calcola una sola volta, in fondo).
- Ritenere il ritardo valido per ogni coppia di numeri: è il caso peggiore.
- Dimenticare che un bit generate o delete interrompe la catena del riporto.
- Confondere propagate () e generate ().
Versione ripasso
- Full adder: , (maggioranza). , , : , ; set-up () indipendente dal riporto.
- Ripple-carry: full adder in cascata; caso peggiore , lineare ( ps: ps).
- Dipendenza dai dati: G o D azzera la catena, P la prolunga; ritardo (stadi della catena più lunga). Slide: . Operandi uguali: . , : .
- Overflow: bit per la somma; con segno .
- Errori: ; caso peggiore sempre; G/D non interrompono; P e G scambiati.