Sommatori Ripple Carry e CLA
Transcript
Sommatori Ripple Carry e CLA
Università degli studi di Parma Dipartimento di Ingegneria dell’Informazione Politecnico di Milano Aritmetica e architetture Sommatori Ripple Carry e CLA Bozza da completare del 7 nov 03 La rappresentazione dei numeri Rappresentazione dei numeri: binaria Le cifre binarie sono dette bit (Binary digIT) Un numero binario è costituito da un vettore di bit B = bn-1…b1b0 bi = {0, 1} Il valore di B e’ dato da: V(B) = bn-1×2n-1 + … + b1×21 + b0×20 Un vettore di n bit consente di rappresentare i numeri naturali nell’intervallo da 0 a 2n-1. Per rappresentare i numeri positivi e negativi si usano diverse codifiche -2- Addizione senza segno La somma di numeri positivi si esegue sommando coppie di bit parallele, partendo da destra. Si ha riporto quando si deve eseguire la somma 1+1. Le tabelle seguenti mostrano le regole per la somma. 0 + 0 0 + 1 1 + 0 1 + 1 0 1 1 1 0 Riporto in uscita Utilizzando queste regole in modo diretto è possibile Realizzare sommatori modulari Composti da blocchi elementari identici Circuiti aritmetici di questo tipo sono detti bit-slice -3- Addizione senza segno Un tale sommatore è strutturato in modo che il modulo in posizione i-esima: Riceve in ingresso i bit ai e bi degli operandi Riceve in ingresso il riporto ci del modulo precedente Produce la somma si Produce il riporto ci+1 Il modulo in posizione 0 ha il bit di riporto c0=0 Il riporto c0 può essere sfruttato per sommare il valore 1 Necessario per il calcolo del complemento a 2 La somma di numero ad n bit richiede un tempo pari ad n volte circa quello richiesto da un modulo di somma -4- Half adder e Full Adder Mostrare uso di XOR e altre porte per somma e riporto e organizzazione a partire da HA e poi FA ……Vedere Capitolo 4 del testo Morris-Mano -5- Addizione senza segno Il calcolo esatto del ritardo si effettua basandosi sulla seguente architettura Siano Ts e Tr i ritardi per il calcolo della somma e del riporto rispettivamente an-1 bn-1 a1 b1 a0 b0 c0 FAn-1 cn FA1 c2 sn-1 s1 FA0 c1 s0 Il ritardo totale è dato dall’espressione: Ttot = (n-1)Tr + Ts Il percorso critico è quindi quello del riporto -6- Addizione veloce Le espressioni di somma e riporto per lo stadio i sono: si = xi'yi'ci + xi'yi'ci' + xiyi'ci' xiyici ci+1 = xiyi + xici + yici Fattorizzando la seconda espressione si ha: ci+1 = Gi + Pici con Gi = xiyi e Pi = xi + yi Le funzioni Gi e Pi Sono dette funzioni di generazione e propagazione Possono essere calcolate in parallelo. Quando la funzione di generazione dello stadio i (cioè Gi) è uguale a 1, allora il riporto ci+1 e’ uguale a 1 indipendentemente dal riporto in ingresso ci -7- Addizione veloce L’espressione per ci è: ci = Gi-1 + Pi-1ci-1 Sostituendo nell'espressione di ci+1 si ha: ci+1 = Gi + Pi(Gi-1+Pi-1ci-1) = Gi + PiGi-1+ PiPi-1ci-1 Continuando con l'espansione fino a c0 si ottiene: ci+1 = Gi + PiGi-1 + PiPi-1Gi-1 + ... + + PiPi-1...P1G0 + + PiPi-1...P1c0 Il riporto può quindi essere ottenuto Mediante una forma a due livelli Attravarsando sue sole porte logiche -8- Addizione veloce Il ritardo totale per ottenere tutte le somme ed il riporto più a sinistra ci+1 è dato dalla somma di: Un ritardo di porta per il calcolo delle funzioni di generazione e di propagazione 2 ritardi di porta logica per calcolare il riporto i-esimo 1 ritardo di porta logica per negare il valore del riporto 2 ritardi di porta logica per calcolare la somma i-esima Totale: 6 ritardi di porta logica Il ritardo non indipende dalla lunghezza degli operandi Problema: Realizzazione circuitale per operandi lunghi (ad esempio 32 bit) fa uso di porte con un fan-in molto elevato -9- Addizione veloce Divisione del sommatore completo in blocchi Un sommatore a 4 bit, ad esempio, richiede porte a 5 ingressi, come mostra l’equazione seguente: c4 = G3 + P3G2 + P3P2G1 + P3P2P1G0 + P3P2P1P0c0 Il riporto c4 è generato con ritardo di 2 porte Collegando in cascata 8 di tali sommatori si ottiene un sommatore a 32 bit con ritardo pari a: 1 ritardo di porta logica per le funzioni Gi e Pi 2 ritardi di porta logica per i c4, c8, …, c28 e c31 3 ritardi per la somma s31 Totale: 1 + 2*8 + 3 = 20 ritardi di porta logica - 10 - Addizione veloce I sommatori che sfruttano il meccanismo della generazione dei riporti in anticipo sono detti Carry-Look-Ahead Adders o CLA Il meccanismo presentato può essere applicato ricorsivamente ai blocchi di 4 bit dell’esempio precedente In questo modo si ottengono sommatori ancora più veloci pur mantenendo limitato il fan-in delle porte in ingresso - 11 - Architetture I metodi visti per l'esecuzione delle oerazioni aritmetiche su numeri rappresentati secondo una specifica codifica binaria possono essere implementati mediante opportune architetture Tali architetture Dipendono dalla scelta della codifica Naturale, Modulo e segno, Complemento a 2, ... Sono caraterizzate da una efficienza variabile Possono essere o meno facilmente scalabili Nel seguito sono presentate alcune delle principali architetture aritmentiche - 12 - Sommatori: Full Adder si = x i y i c i + x i y i c i + x i y i c i + x i y i c i xi yi ci Full Adder si xi c i +1 = x i y i + x i c i + y i c i ci+1 yi Full Adder xi yi ci si ci+1 - 13 - ci Sommatori: Ripple Carry [1] Ripple-Carry Architecture xn-1 yn-1 cn Full Adder x1 cn-1 c2 Full Adder sn-1 x0 y1 c1 xn-1 yn-1 cn x0 y0 n-bit Ripple Carry Adder sn-1 - 14 - Full Adder s0 s1 Ripple-Carry Adder y0 s0 c0 c0 Sommatori: Ripple Carry [2] Ripple-Carry Block Architecture xknkn-1 yknkn-1 x2n2n-1 y2n2n-1 xn yn n-bit Ripple Carry ckn Adder skn-1 c(k-1)n s(k-1)n n-bit Ripple Carry c2n Adder s2n-1 - 15 - sn xn-1 yn-1 cn x0 y0 n-bit Ripple Carry Adder sn-1 s0 c0 Sommatori: Carry Look-Ahead [1] Carry Look-Ahead Logic: Internal architecture xn-1 yn-1 x1 y1 Gn-1 Pn-1 G1 x0 y0 P1 G0 P0 Carry Look-Ahead Logic x0 y0 xn-1 yn-1 cn c0 CLA Logic cn-1 c1 - 16 - c2 c0 c1 Sommatori: Carry Look-Ahead [2] Carry Look-Ahead Logic x0 y0 xn-1 yn-1 cn c0 Carry Look-Ahead Logic xn-1 yn-1 cn-1 x1 y1 c1 x0 y0 Full Adder Full Adder Full Adder sn-1 s1 s0 - 17 - Addizione veloce calcolo dei riporti in parallelo L’espressione per il riporto ci+1 può essere calcolata in modo iterativo. Infatti ci = Gi-1 + Pi-1ci-1 Sostituendo nell'espressione di c i+1 si ha: ci+1 = Gi + Pi(Gi-1+Pi-1ci-1) = Gi + PiGi-1+ PiPi-1ci-1 Continuando con l'espansione fino a c0 si ottiene: ci+1 = Gi + PiGi-1 + PiPi-1Gi-1 + + ... + + PiPi-1...P1G0 + + PiPi-1...P1c0 Le espressioni ottenute sono forme a due livelli (ritardo: 2 porte) Il riporto in uscita di ogni singolo stadio può essere calcolato in parallelo tramite: le i funzioni di generazione Gi e le i funzioni di propagazione Pi il riporto in ingresso allo stadio 0, c0 I sommatori che sfruttano il meccanismo della generazione dei riporti - 18 in anticipo sono detti Carry-Look-Ahead Adders o CLA Addizione veloce calcolo delle prestazioni 1 1 1 P3 G3P2 G2P1G1P0G0 P2 G2P1 G1P0G0 P1 G1 P0 G0 1 P0 G0 2 2 2 2 3 c4 x3 y3 c3 x2 y2 2 c2 x1 y1 2 5 s3 5 s2 s1 •c1=G0+P0c0 •c2= G1+P1G0+P1P0c0 •c3= G2+P2G1+P2P1G0+P2P1P0c0 •c4 = G3 + P3G2 + P3P2G1 + P3P2P1G0 + P3P2P1P0c0 - 19 - x0 y0 c0 2 2 5 c1 2 s0 Addizione veloce calcolo delle prestazioni Il ritardo totale per ottenere tutte le somme ed il riporto più a sinistra ci+1 è dato dalla somma di: Un ritardo di porta per il calcolo delle funzioni di generazione e di propagazione (Gi = xiyi e Pi = xi + yi) Due ritardi di porta logica per calcolare il riporto i-esimo (SOP) Due ritardi di porta logica per calcolare la somma i-esima (SOP) Totale: 5 ritardi di porta logica Il ritardo è indipendente dalla lunghezza degli operandi Problema: Realizzazione circuitale per operandi lunghi (ad esempio 32 bit) fa uso di porte con un fan-in molto elevato: non praticabile!! Soluzione: addizionatore -veloce a blocchi 20 - Addizione veloce a blocchi Il sommatore completo a n bit è ottenuto utilizzando un insieme di blocchi costituiti da CLA a m bit Il blocco è costituito da un sommatore CLA a 4 bit (ragionevole). Il riporto finale di questo sommatore ha la seguente espressione: c4 = G3 + P3G2 + P3P2G1 + P3P2P1G0 + P3P2P1P0c0 che può essere riscritta come cuscita = G + Pc0 con il tempo di ritardo per il calcolo di P e G: P = attraversamento di 2 porte logiche (1 per calcolare P3, P2, P1 e P0 , 1 per calolare il prodotto) G = attraversamento di 3 porte logiche - 21 - Addizione veloce CLA a 4 bit 1 1 1 P3 G3P2 G2P1G1P0G0 P2 G2P1 G1P0G0 P1 G1 P0 G0 1 P0 G0 2 2 2 3 c4 x3 y3 c3 2 s3 1 x1 y1 c1 5 2 5 s2 s1 1 3 s0 X3-0 y3-0 4-bit CLA 2 P G - 22 - c0 2 2 P x0 y0 2 P3 P2P1 P0G3 G2G1 G0 1 2 c2 2 5 P3 P2P1 P0 x2 y2 3 5 G c0 S3-0 Esempio Sommatore a 16 bit costruito con CLA a 4 bit X15-12 y15-12 X11-8 y11-8 c12 2 P 3 G 6 S15-12 c4= …….. X3-0 y7-4 c8 2 P 3 G 6 c3= …….. y3-0 c0 0 c4 S11-8 2 P 3 G 6 2 P S7-4 3 4 4 4 c16 X7-4 c2= G1+P1G0+P1P0c0 4 - 23 - c1=G0+P0c0 G 5 S3-0