Costruzione di un unità ritmetico-logic Orgnizzzione dell lezione Operzioni logiche Addizione e sottrzione Hlf dder e Full dder ( bit) Complemento e sottrzione Altre operzioni Set on less thn, test di uguglinz Considerzioni di efficienz ALU propgzione di riporto ALU con crry-lookhed Moltipliczione Ptterson e Hennessy Cpitolo 3: sezioni 3.3, 3.4 [fino Booth escluso] Appendice B: sezioni B.5, B.6 [Esempi Verilog esclusi] Tnenbum, complementi 2
L ALU: visione di insieme Un volt recuperti operndi di registri si può Clcolre un indirizzo di memori (lod, store) Clcolre un risultto ritmetico (dd, sub, ) Effetture confronti (slt, beq, ) Dt Register # PC Address Instruction Instruction Registers Register # ALU memory Register # Address Dt memory Dt 3 Operzioni logiche Logicl shift opertions (non le implementeremo) right (srl) left (sll) Esempio: sll $s, $s8, 3 $s8 : $s : AND e OR bitwise Esempio: nd $s3, $s, $s6 or $s4, $s, $s6 $s : $s6 : $s3 : $s4 : 4 2
Addizioni e sottrzioni Addizione: Bit bit e riporto ll cifr successiv Sottrzione: Direttmente Addizione con il complemento due Overflow: I numeri sono rppresentti con un numero fissto di bit (limitti) L somm di due numeri di segno ugule può eccedere qulsisi rppresentzione L differenz di due numeri di segno opposto può eccedere qulsisi rppresentzione 5 Operzioni logiche nell ALU Costruzione di un ALU 32 bit (mpiezz dell prol MIPS) 32 ALU d bit Primo psso: operzioni logiche Opertion b Result 6 3
Full dder sommtore d bit Chimto nche sommtore (3,2) perché h 3 ingressi e 2 uscite : riporto proveniente dll somm del bit destr : riporto diretto ll somm del bit sinistr b Sum 7 Relizzzione di un full dder Costruzione dell SdP d tbell di verità Minimizzzione Esempio: generzione di co = b ci + b ci + b ci + b ci + b ci + b ci co = b ci + ci + b L uscit Sum si gener con lo stesso procedimento Esercizio b 8 4
Relizzzione di full dder trmite hlf dder () Gener somm e riporto (crry) tr due bit Non tiene in considerzione riporto d bit meno significtivi sum = A xor B crry = A nd B 9 Relizzzione di full dder trmite hlf dder (2) A prtire dllo hlf dder sum = (A xor B) xor crryout = (A nd B) or ((A xor B) nd ) Sum b 5
ALU d bit e 32 bit Un riporto dl bit meno significtivo si può propgre fino l bit più significtivo Sommtore propgzione di riporto (ripple crry dder) b ALU Opertion Result Opertion b ALU Result Result 2 b2 ALU2 Result2 b 2 3 b3 ALU3 Result3 Sottrzione Si f l somm tr il primo operndo e l versione negt del secondo operndo Complemento 2 Psso : si invertono tutti i bit Psso 2: si ggiunge Relizzzione Psso : multiplexer sceglie tr l operndo e il suo complemento Psso 2: si forz d il del bit meno significtivo + b+ = + (b+ ) = + ( b) = b b Binvert Opertion 2 Result Ecco perché complemento 2 è scelt stndrd! 2 6
Set on less thn () Istruzione slt richiede supporto hrdwre Verific dell condizione <b (ovvero (-b)<) Se verifict => risultto (ovvero ) Se non verifict => risultto (ovvero ) Prim modific Nuovo segnle di ingresso: I bit -3 del risultto sono sempre => = per i bit -3 Il bit meno significtivo del risultto dipende dl segno di -b => il suo segnle è il bit di segno dell differenz -b Second modific È necessrio modificre l ALU per il bit più significtivo Si ggiunge nche l logic per il rilevmento dell overflow) 3 Binvert Opertion Set on less thn (2) Binvert Opertion b 2 3 Result b ALU Result. Prim modific: ingresso Second modific (bit 3): overflow b ALU Result Binvert Opertion 2 b2 ALU2 Result2 b 2 Result 3 Set 3 b3 ALU3 Result3 Set Overflow Overflow detection Overflow 4 b. 7
ALU: versione finle () Ancor due ggiunte per rggiungere l versione finle Istruzioni di slto condizionto: richiedono supporto hrdwre Verific dell condizione =b (ovvero (-b)=) Si costruisce il segnle Zero Zero = ( b) Quindi Zero= -b= 3 + ( b) 3 + + ( b) Osservzione: (riporto su bit) e InvertiB sempre concordi Somm e operzioni logiche: =InvertiB= Sottrzione: =InvertiB= Allor, InvertiB sostituiti d un unico segnle NegB 5 b ALU opertion ALU: versione finle (2) ALU Zero Result Overflow Bnegte b ALU Result Opertion Linee di controllo (NegB,Operzione) ( bit + 2 bit) Funzione nd b 2 b2 ALU ALU2 Result Result2 Zero or somm sottrzione 3 b3 ALU3 Result3 Set Overflow set on less thn 6 8
Considerzioni di efficienz In un ALU d bit: Ritrdo nell generzione di è di 2 porte In un ALU n bit con sommtore propgzione di riporto Ritrdo nel sommtore è di 2n porte Progetto poco efficiente! È necessrio progettre schemi di riporto veloce Anticipo del crry (crry lookhed) f sì che il cso peggiore di propgzione del riporto bbi tempo logritmico e non linere 7 Riporto veloce ( con hrdwre infinito) Forme cnoniche: qulunque funzione logic h un relizzzione due livelli Ingressi nel sommtore:, b, c ( di bit) => I di bit -3 sono esprimibili come funzioni ( due livelli) di questi ingressi Esempio: c =(b c )+( c )+( b ) c 2 =(b c )+( c )+( b ) => c 2 =( b ) + ( c ) + ( b c ) + + (b b ) + (b c ) + (b b c ) + ( b ) b Per i bit di ordine più elevto l complessità esplode, schem troppo costoso 8 9
Riporto veloce: propgzione e generzione () Primo livello di strzione. Riscrittur dell equzione per il riporto: c i+ = (b i c i ) + ( i c i ) + ( i b i ) = ( i b i ) + ( i +b i ) c i Definizione di fttori di propgzione p i e generzione g i p i = ( i +b i ) g i = ( i b i ) Allor c i+ = g i + p i c i Se g i = => c i+ generto indipendentemente d c i Se g i = e p i = => c i propgto su c i+ Segnli di crry in un sommtore quttro bit c =g o +(p o c ) c 2 =g +(p g ) + (p p c ) c 3 =g 2 +(p 2 g ) + (p 2 p g ) + (p 2 p p c ) c 4 =g 3 +(p 3 g 2 ) + (p 3 p 2 g ) + (p 3 p 2 p g ) + (p 3 p 2 p p o c ) 9 Riporto veloce: propgzione e generzione (2) Ogni segnle ci è relizzto con logic due livelli Anche utilizzndo p i e g i l logic divent troppo compless nel cso di più bit Si ricorre d un secondo livello di strzione 2
Riporto veloce: propgzione e generzione (3) Anlogi idrulic L uscit del tubo c i+ èpien se Il segnle g i è perto oppure Il segnle p i è perto e c è cqu monte 2 Riporto veloce: secondo livello di strzione () Si costruiscono sommtori 4 bit con crry-lookhed Si costruisce sommtore 6 bit con 4 sommtori 4 bit in csct Si costruiscono segnli l livello superiore Propgzione P =p 3 p 2 p p P =p 7 p 6 p 5 p 4 P 2 =p p p 9 p 8 P 3 =p 5 p 4 p 3 p 2 Generzione G =g 3 +(p 3 g 2 ) +(p 3 p 2 g ) +(p 3 p 2 p g o ) G =g 7 +(p 7 g 6 ) +(p 7 p 6 g 5 ) +(p 7 p 6 p 5 g 4 ) G 2 =g +(p g ) +(p p g 9 ) +(p p p 9 g 8 ) G 3 =g 5 +(p 5 g 4 ) +(p 5 p 4 g 3 ) +(p 5 p 4 p 3 g 2 ) 22
Riporto veloce: secondo livello di strzione (2) Utilizzndo i P i e G i si generno i segnli di in ingresso ALU pi ciscuno dei sommtori 4 bit gi C =G o +(P o c ) C 2 =G +(P G ) + (P P c ) C 3 =G 2 +(P 2 G ) + (P 2 P G ) + (P 2 P P c ) C 4 =G 3 +(P 3 G 2 ) + (P 3 P 2 G ) + (P 3 P 2 P G ) + (P 3 P 2 P P o c ) b b 2 b2 3 b3 4 b4 5 b5 6 b6 7 b7 8 b8 9 b9 b b P G ALU P G ALU2 P2 G2 C C2 C3 ci + pi + gi + ci + 2 pi + 2 gi + 2 ci + 3 Result--3 Crry-lookhed unit Result4--7 Result8-- 2 b2 3 b3 4 b4 5 b5 ALU3 P3 G3 C4 pi + 3 gi + 3 ci + 4 Result2--5 23 Considerzioni di efficienz ALU con propgzione del riporto In ALU d bit ritrdo di è di 2 porte In ALU 6 bit ritrdo nel sommtore è di 32 porte ALU con nticipo del riporto C 4 (ultimo riporto) generto con 2 livelli di logic in termini di P i e G i P i e G i generti rispettivmente in e 2 livelli di logic in termini di p i e g i p i e g i generti in livello di logic in termini di i e b i In un ALU 6 bit ritrdo nel sommtore è di 5 porte Un sommtore 6 bit con nticipo del riporto è 6 volte più veloce di un sommtore 6 bit con propgzione del riporto 24 2
Moltipliczione Esempio di moltipliczione in bse 2: Usimo solo cifre o Risultto di n + m cifre Possibilità di overflow dieci dieci Moltiplicndo Moltiplictore Prodotto Prodotti przili (cifr i-esim di Mctore x Mcndo) Vlgono se cifr i-esim di Mctore = Vlgono Mcndo se cifr i-esim di Mctore = Risultto = Somm dei prodotti przili shiftti di i posizioni 25 Circuito logico ( versione) Registro Moltiplicndo 64 bit (per sclmento sx) Registro Moltiplictore 32 bit Registro Prodotto 64 bit (per evitre overflow) Abbimo bisogno di un ALU 64 bit! Left shift Moltiplicndo 64 bit Moltiplictore 32 bit Right shift ALU 64 bit 32 bit 64 bit Prodotto Controllo 26 3
Algoritmo ( versione) Inizio Prodotto = Prodotto + M.cndo bit = bit bit bit? di = di M.ctore left shift di di bit bit M.cndo right shift di di bit bit M.ctore 32 iterzione? No Fine Si 27 Algoritmo versione: 2 dieci x3 dieci ( due x due ) Iterzione Psso Mctore Mcndo Prodotto Vl. Inizili Prod=Prod+Mcndo LeftShift Mcndo RightShift Mctore 2 Prod=Prod+Mcndo LeftShift Mcndo RightShift Mctore 3 Nessun operzione LeftShift Mcndo RightShift Mctore 4 Nessun operzione LeftShift Mcndo RightShift Mctore 28 4
Circuito logico (2 versione) Si vorrebbe usre un ALU 32 bit Osservzione: metà dei bit del Mcndo sono sempre Ide: invece di sclre sinistr il Mcndo Scrivo nei bit più significtivi del Prodotto Sclo destr il prodotto Moltiplicndo 32 bit Moltiplictore 32 bit Right shift ALU 32 bit 32 bit Prodotto Right shift 64 bit Controllo 29 Algoritmo (2 versione) Inizio bit = bit bit bit? di = di m.ctore prte sinistr prod = prte sinistr prod + m.cndo right shift di di bit bit Prodotto right shift di di bit bit M.ctore 32 iterzione? No Si Fine 3 5
Algoritmo 2 versione: 2 dieci x3 dieci ( due x due ) Iterzione 2 3 4 Psso Vl. Inizili Prod=Prod+Mcndo RightShift Prodotto RightShift Mctore Prod=Prod+Mcndo RightShift Prodotto RightShift Mctore Nessun operzione RightShift Prodotto RightShift Mctore Nessun operzione RightShift Prodotto RightShift Mctore Mctore Mcndo Prodotto 3 Circuito logico (3 versione) Si vogliono ottimizzre ulteriormente tempi di clcolo e spzio occupto Osservzione: l psso i-esimo I (32-i) bit meno significtivi del Prodotto sono inutilizzti Il Mctore h (32-i) bit d controllre Si effettu RightShift di Prodotto e di Mctore Ide: scrivo il Mctore nei bit meno significtivi del Prodotto Moltiplicndo 32 bit ALU 32 bit Prodotto Right shift 64 bit Controllo 32 6
Algoritmo (3 versione) Inizio bit = bit bit bit? di = di Prodotto prte sinistr prod = prte sinistr prod + m.cndo Osservzione: ho ncor bisogno di un registro 64 bit per il Prodotto Il processore MIPS utilizz due registri 32 bit Hi e Lo per immgzzinre il Prodotto right shift di di bit bit Prodotto right shift di di bit bit M.ctore 32 iterzione? No Si Fine 33 Algoritmo 3 versione: 2 dieci x3 dieci ( due x due ) Iterzione Psso Mcndo Prodotto Vl. Inizili [] Prod=Prod+Mcndo [] RightShift Prodotto [] 2 Prod=Prod+Mcndo RightShift Prodotto [] [] 3 Nessun operzione RightShift Prodotto [] [] 4 Nessun operzione RightShift Prodotto [] [] 34 7
Prole chive Hlf dder e Full dder Set on less thn Zero Overflow Riporto Propgzione di riporto Anticipo di riporto (crry lookhed) Fttori di generzione e di propgzione Due livelli di strzione Moltipliczione Mcndo (sclmento sinistr) Mctore (sclmento destr) ALU 32 e 64 bit 35 8