Salta al contenuto
Note per Studenti Esercizio 17 · quesiti rapidi sui sommatori con dati numerici (temi d'esame 2025-2026)

Esercizio 17quesiti rapidi sui sommatori con dati numerici (temi d'esame 2025-2026)

Esame

Questa pagina non ha ancora la versione ripasso: qui sotto c'è il testo completo.

In questa pagina 7

Quesiti a risposta multipla sui sommatori dai temi di giugno 2024 (e luglio 2025), settembre 2024 (e settembre 2026), giugno 2025 e luglio 2026. Chiave ufficiale solo per giugno 2024 / luglio 2025; le altre risposte sono ricavate e per due quesiti con dati numerici si discute l'ambiguità.

Teoria usata: Sommatori - full adder e ripple-carryLa somma di due bit con riporto in ingresso è realizzata dal full adder: S = A ⊕ B ⊕ C_in, C_out = AB + BC_in + AC_in. Con generate G = AB, propagate P = A ⊕ B (e delete D = Ā B̄) si scrive C_out = G + P·C_in e S = P ⊕ C_in: G e P non dipendono dal riporto in ingresso (fase di set-up), solo C_out ed S ne dipendono. Il sommatore ripple-carry collega N full adder in cascata: il riporto attraversa gli stadi uno dopo l'altro, nel caso peggiore t_add = (N−1) t_carry + t_sum (lineare in N). Il ritardo effettivo dipende dagli operandi: un generate o un delete azzera la catena, un propagate la prolunga; per operandi uguali bit a bit vale t_carry + t_sum.Sommatori - full adder e ripple-carry →, 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 →.

Notazione dei temi: tPC=tcarryt_{PC}=t_{carry} (propagazione del riporto in uno stadio), tPS=tsumt_{PS}=t_{sum}, tsut_{su} set-up, tmuxt_{mux}.


1. Due numeri identici a 16 bit con ripple-carry (giugno 2024, luglio 2025)

Il tempo necessario per sommare (tutte le uscite della somma al valore finale) due numeri a 1616 bit identici con un sommatore ripple-carry vale: a. tcarry+tsumt_{carry}+t_{sum}; b. 15 tcarry+tsum15\,t_{carry}+t_{sum}; c. 16 tcarry+tsum16\,t_{carry}+t_{sum}.

Risposta: a (chiave: "si presti attenzione al fatto che i due bit devono essere identici"). Se Ai=BiA_i=B_i in ogni posizione, ogni stadio è generate (1,11,1) o delete (0,00,0): il riporto in uscita dipende solo dagli ingressi locali e non attende il riporto precedente. Quindi ogni riporto è pronto dopo tcarryt_{carry} e la somma dopo tcarry+tsumt_{carry}+t_{sum} (il caso peggiore 15 tc+ts15\,t_c+t_s si ha solo con tutti gli stadi in propagate).

2. Somma di due numeri a 16 bit con ripple-carry (giugno 2025)

Sommatore a 1616 bit ripple-carry. Tempo per calcolare la somma di (LSB a destra) A=1010101010101000A=1010101010101000, B=1100100010101100B=1100100010101100: a. 4tPC+tPS4t_{PC}+t_{PS}; b. 5tPC+tPS5t_{PC}+t_{PS}; c. 6tPC+tPS6t_{PC}+t_{PS}.

Analisi. Posizioni 0…150\ldots15 (da destra): (Ai,Bi)=(0,0)(A_i,B_i)=(0,0) D, (0,0)(0,0) D, (0,1)(0,1) P, (1,1)(1,1) G, (0,0)(0,0) D, (1,1)(1,1) G, (0,0)(0,0) D, (1,1)(1,1) G, (0,0)(0,0) D, (1,0)(1,0) P, (0,0)(0,0) D, (1,1)(1,1) G, (0,0)(0,0) D, (0,1)(0,1) P, (0,1)(0,1) P, (1,1)(1,1) G. Con il modello del corso (la catena riparte da tct_c in ogni stadio G o D; i P la prolungano): le catene più lunghe sono "D in posizione 1212, P in 1313, P in 1414", cioè il riporto che entra nel bit 1515 è pronto dopo 3 tPC3\,t_{PC}, e la somma dopo 3 tPC+tPS3\,t_{PC}+t_{PS} (verificato con Python). Nessuna delle opzioni (4, 5, 6) coincide con 33. Il valore 4 tPC+tPS4\,t_{PC}+t_{PS} (opzione a) si ottiene se la catena parte dal generate in posizione 1111 e non si azzera al delete in posizione 1212: il riporto "11" generato nel bit 1111 attraverserebbe i bit 12,13,1412,13,14 (44 stadi). Questo conteggio, però, contraddice la risposta al quesito dei numeri identici (se un delete non azzerasse la catena, due numeri nulli identici richiederebbero 15 tc15\,t_c). Poiché mancano la chiave e il testo originale delle opzioni, la risposta attesa è con tutta probabilità (a), ma il valore del modello del corso è 3 tPC+tPS3\,t_{PC}+t_{PS}.

3. Sommatori carry-bypass (settembre 2024, giugno 2025, settembre 2026)

Nei sommatori carry-bypass il tempo di ritardo per il calcolo della somma finale è determinato principalmente dai tempi di: a. somma; b. riporto; c. set-up.

Risposta: b. tadd=tsetup+(2M−1) tcarry+(N/M−1) tmux+tsumt_{add}=t_{setup}+(2M-1)\,t_{carry}+(N/M-1)\,t_{mux}+t_{sum}: set-up e somma compaiono una sola volta, il riporto 2M−12M-1 volte (più i multiplexer di bypass). Numeri (TT unitario, N=32N=32): ripple 33T33T, carry-bypass con M=4M=4 (ottimo M=32/2=4M=\sqrt{32/2}=4): 1+7+7+1=16T1+7+7+1=16T.

4. Linear carry-select a 20 bit (luglio 2026)

Sommatore a 2020 bit di tipo linear carry-select (44 blocchi da 55 bit); tempo per calcolare la somma (LSB a sinistra) A=11111 11111 11111 11111A=11111\ 11111\ 11111\ 11111, B=10010 00000 00000 00001B=10010\ 00000\ 00000\ 00001 [con tmux<tct_{mux}<t_c]: a. tsu+2tc+4tmux+tst_{su}+2t_c+4t_{mux}+t_s; b. tsu+5tc+4tmux+tst_{su}+5t_c+4t_{mux}+t_s; c. tsu+5tc+3tmux+tst_{su}+5t_c+3t_{mux}+t_s.

Risposta ricavata: c. Il primo blocco (ripple): bit 00 (1,1)(1,1) G, 11 (1,0)(1,0) P, 22 (1,0)(1,0) P, 33 (1,1)(1,1) G, 44 (1,0)(1,0) P: il riporto uscente è pronto dopo 2 tc2\,t_c (il generate del bit 33 e il propagate del bit 44). Nei blocchi 22, 33 e 44 i riporti sono calcolati in parallelo per entrambe le ipotesi (cin=0,1c_{in}=0,1): i blocchi 22 e 33 hanno A=11111A=11111, B=00000B=00000 (tutti propagate): la catena di 55 stadi richiede 5 tc5\,t_c (più dei 2 tc2\,t_c del blocco 11). I multiplexer scelgono poi il riporto vero: il riporto del blocco 22 dopo 5tc+tmux5t_c+t_{mux}, quello del blocco 33 dopo un altro tmuxt_{mux}, e la selezione delle somme del blocco 44 dopo un terzo tmuxt_{mux}: tre multiplexer (il primo blocco non ne ha). Con tmux<tct_{mux}<t_c la catena dei multiplexer non supera i 5 tc5\,t_c del calcolo parallelo. Totale: tsu+5tc+3tmux+tst_{su}+5t_c+3t_{mux}+t_s. La formula generale (tsu+M tc+(N/M) tmux+tst_{su}+M\,t_c+(N/M)\,t_{mux}+t_s, con N/M=4N/M=4) conta 44 multiplexer: è un limite superiore (opzione b), che l'esame usa verosimilmente come distrattore, insieme all'opzione (a) che considera solo la catena del primo blocco.

5. Square-root carry-select (confronto numerico)

Blocchi di M,M+1,…M,M+1,\ldots: con TT unitario e N=32N=32, M=3M=3: blocchi da 3,4,5,6,7,83,4,5,6,7,8 (=33=33 bit), K=6K=6 multiplexer: t=1+3+6+1=11Tt=1+3+6+1=11T, contro 14T14T del linear select e 33T33T del ripple (∝N\propto\sqrt N contro ∝N\propto N).

Verifica numerica

Python: modello a catena del riporto sulle due coppie di operandi (identici: 1 tc1\,t_c; giugno 2025: 3 tc3\,t_c con "G o D azzera", 4 tc4\,t_c con "solo G azzera"); conteggio dei multiplexer per il carry-select; tabella dei ritardi di bypass/select/square-root per N=16,32,64N=16,32,64.

Errori comuni

  • Usare il caso peggiore (N−1)tc+ts(N-1)t_c+t_s per operandi che non lo realizzano.
  • Dimenticare che un delete (come un generate) azzera la catena.
  • Contare in un carry-select N/MN/M multiplexer quando il primo blocco non ne ha.
  • Dire che il ritardo di un carry-bypass sia dominato dalla somma.

Esercizio 17 - quesiti rapidi sui sommatori con dati numerici (temi d'esame 2025-2026)

  • Operandi identici a 16 bit: ogni stadio è G o D (azzera la catena): tc+tst_c+t_s (a).
  • Giugno 2025 (ripple, A=1010101010101000A=1010101010101000, B=1100100010101100B=1100100010101100): D(12), P(13), P(14): 3tPC+tPS3t_{PC}+t_{PS} nel modello del corso; opzioni 4/5/64/5/6: probabilmente (a) 4tPC+tPS4t_{PC}+t_{PS} se il delete non azzera (incoerente con il primo quesito).
  • Carry-bypass: t=tsetup+(2M−1)tc+(N/M−1)tmux+tst=t_{setup}+(2M-1)t_c+(N/M-1)t_{mux}+t_s: dominato dal riporto (b); N=32N=32: 33T→16T33T\to16T (M=4M=4).
  • Linear carry-select 2020 bit: primo blocco 2tc2t_c, blocchi 22-44 in parallelo 5tc5t_c, 33 mux in cascata: tsu+5tc+3tmux+tst_{su}+5t_c+3t_{mux}+t_s (c); formula generale con 44 mux (b) = limite superiore.
  • Square-root select: N=32N=32, M=3M=3: 11T11T (14T14T linear, 33T33T ripple).
  • Errori: caso peggiore sempre; D non azzera; N/MN/M mux nel primo blocco; bypass dominato da sum.

Teoria collegata