Architettura degli Elaboratori e delle Reti 7. ALU Architettura degli Elaboratori e delle Reti ALU – Unità Aritmetico Logica AA 2000/01 © Rosti/Bettini 1 A.d.E.R. 7. ALU ALU • Esegue le operazioni aritmetico logiche • potenza di calcolo del processore • Insieme di circuiti combinatori • Opera su parole di 32 bit • da ALU a 1 bit a ALU a 32 • combinazione di blocchi base visti nelle precedenti lezioni AA 2000/01 © Rosti/Bettini © Rosti/Bettini 2 A.d.E.R. 7. ALU 1 Architettura degli Elaboratori e delle Reti 7. ALU ALU • Operazioni da implementare • AND, OR, somma e sottrazione • dimensione degli input: 1 bit • circuito generale in grado di svolgere una qualunque delle operazioni sopra • la scelta di quale operazione eseguire in funzione di un valore specificatogli AA 2000/01 © Rosti/Bettini A.d.E.R. 7. ALU 3 ALU A 0 0 1 1 selettore dell’operazione A risultato B 0 1 0 1 AB 0 0 0 1 A OR B 0 1 1 1 S B esecutore delle operazioni AA 2000/01 © Rosti/Bettini © Rosti/Bettini 4 A 0 B 1 r i s u l t a t o A.d.E.R. 7. ALU 2 Architettura degli Elaboratori e delle Reti 7. ALU ALU • Aggiungiamo la somma • full adder a un bit • 3 input (due bit e riporto-in) • 2 output (bit somma e riporto-out) rin a0 0 0 0 0 0 1 0 1 1 0 1 0 1 1 1 1 b0 0 1 0 1 0 1 0 1 rout 0 0 0 1 0 1 1 1 s0 0 1 1 0 1 0 0 1 AA 2000/01 © Rosti/Bettini rout = ~rina0b0 + rin~a0b0 + rina0~b0 + rina0b0 = a0b0 (~rin + rin) + rin~a0b0 + rina0~b0 = a0b0 + rin(a0 XOR b0) s0 = ~rin~a0b0 + ~rina0~b0 + rin~a0~b0 + rina0b0 = ~rin (a0 XOR b0) + rin (a0 XNOR b0) A.d.E.R. 7. ALU 5 ALU – full adder rin a0 0 0 0 0 0 1 0 1 1 0 1 0 1 1 1 1 b0 0 1 0 1 0 1 0 1 rout 0 0 0 1 0 1 1 1 s0 0 1 1 0 1 0 0 1 a0 b0 r in rin a0 b0 F rout s0 rout = a0b0 + rin(a0 XOR b0) s0 rout s0 = ~rin (a0 XOR b0) + rin (a0 XNOR b0) AA 2000/01 © Rosti/Bettini © Rosti/Bettini 6 A.d.E.R. 7. ALU 3 Architettura degli Elaboratori e delle Reti 7. ALU ALU rin rin selettore della operazione 0 A r is u l t a t o 1 B A S risultato F B esecutore delle operazioni 2 rout AA 2000/01 © Rosti/Bettini A.d.E.R. 7. ALU 7 ALU rin rin selettore della operazione 0 A r is u l t a t o 1 B A S risultato F B esecutore delle operazioni AA 2000/01 © Rosti/Bettini © Rosti/Bettini 2 rout 8 A.d.E.R. 7. ALU 4 Architettura degli Elaboratori e delle Reti 7. ALU ALU a 32 bit Operazione r0 rin a0 b0 ALU0 Risultato0 rout r0 non serve nella somma dei LSB - forzato a 0 rin a1 b1 ALU1 Risultato1 rout rin a2 b2 ALU2 Risultato2 rout AA 2000/01 © Rosti/Bettini rin a31 b31 ALU31 rout Risultato31 9 A.d.E.R. 7. ALU ALU • Aggiungiamo la sottrazione • in 2C, sottrarre equivale a sommare il numero negativo • A – B = A + (-B) = A + (~B +1) • dobbiamo sapere se invertire B • serve la costante 1 • recuperiamo il riporto r0 dell’ALU del LSB invertib b 0 1 AA 2000/01 © Rosti/Bettini © Rosti/Bettini 10 A.d.E.R. 7. ALU 5 Architettura degli Elaboratori e delle Reti 7. ALU ALU invertiB A rin ALUi S 0 1 0 B F 1 AA 2000/01 © Rosti/Bettini 11 2 rout rin = 1 se ALU0 e si deve eseguire r A-B i s u l t a t o rin = routi-1 se ALUi A.d.E.R. 7. ALU ALU • Aggiungiamo il supporto hw per eseguire il confronto • slt rd, rs, rt : rd = 1 sse rs < rt • rd è tutto a 0 salvo eventualmente il LSB • Serve un altro ingresso al MUX • ulteriore operazione tra cui scegliere • il risultato della nuova operazione è sempre 0 salvo per LSB • input Less a 0 costante per ALU1-ALU31 AA 2000/01 © Rosti/Bettini © Rosti/Bettini 12 A.d.E.R. 7. ALU 6 Architettura degli Elaboratori e delle Reti 7. ALU ALU invertiB A rin ALUi S 0 1 0 B F 1 2 Less ALU1-ALU30 rin = routi-1 Less = 0 r i s u l t a t o ALU0 rin = 1 Op = slt 3 AA 2000/01 © Rosti/Bettini 13 rout A.d.E.R. 7. ALU ALU • Come eseguire il confronto tra due numeri a=a31…a0 e b=b31…b0 • slt rd, a, b • LSB di rd vale 1 se a < b, 0 se a > b • se a < b, a-b < 0 • MSB di a-b ha lo stesso valore del LSB di rd • è sufficiente/corretto collegare il MSB del sommatore all’input di Less in ALU0 (che produce il LSB di rd)? • NO, perché se l’operazione scelta è slt, il MUX in uscita dà 0 (Less) AA 2000/01 © Rosti/Bettini © Rosti/Bettini 14 A.d.E.R. 7. ALU 7 Architettura degli Elaboratori e delle Reti 7. ALU ALU • ALU31 deve essere costruita diversamente • serve un output aggiuntivo • il risultato del sommatore, detto Set • diventa l’input di Less di ALU0 • serve anche dell’hw che individui l’overflow • può capitare se a è negativo AA 2000/01 © Rosti/Bettini A.d.E.R. 7. ALU 15 ALU invertiB A rin ALU31 S 0 1 B 0 F 1 2 Less 3 overflow detector AA 2000/01 © Rosti/Bettini © Rosti/Bettini 16 rout ALU31 rin = rout30 r i s u l t a t o Set Overflow A.d.E.R. 7. ALU 8 Architettura degli Elaboratori e delle Reti 7. ALU ALU a 32 bit InvertiB CarryIn ALU0 Less CarryOut a1 b1 0 CarryIn ALU1 Less CarryOut a2 b2 0 CarryIn ALU2 Less CarryOut Risultato0 Risultato1 Risultato2 CarryIn a31 b31 0 AA 2000/01 © Rosti/Bettini Operazione … a0 b0 … ALU a 32 bit con slt CarryIn CarryIn ALU31 Less Risultato31 Set Overflow 17 A.d.E.R. 7. ALU ALU • Ottimizzazione del controllo • nella sottrazione, invertiB = 1 e rin di ALU0 sono a1 • sono entrambi a 0 nelle operazioni logiche e nella somma • fondiamo le due linee in un’unica: NegaB AA 2000/01 © Rosti/Bettini © Rosti/Bettini 18 A.d.E.R. 7. ALU 9 Architettura degli Elaboratori e delle Reti 7. ALU ALU • Aggiungiamo il test di uguaglianza • beq rs, rt, label • se rs = rt, rs –rt = 0 • hw per il test a 0 • NOT(OR di tutti i bit risultato del confronto) • Interpretazione delle linee di controllo • NegaB e Op (selezionatore dell’operazione) come linea a 3 bit che dice: AND (000), OR (001), somma (010), sottrai (110), slt (111) AA 2000/01 © Rosti/Bettini A.d.E.R. 7. ALU 19 ALU a 32 bit • Aggiungiamo test di uguaglianza • Nota le linee di controllo: 000 001 010 110 111 = = = = = and or add subtract slt Nota: zero è un 1 quando il risultato di a - b è zero, cioè quando i due registri sono uguali a bit a bit AA 2000/01 © Rosti/Bettini © Rosti/Bettini NegaB Operazione a0 b0 CarryIn Risultato0 ALU0 Less CarryOut a1 b1 0 CarryIn Risultato1 ALU1 Less CarryOut a2 b2 0 CarryIn Risultato2 ALU2 Less CarryOut a31 b31 0 CarryIn ALU31 Less 20 Zero Risultato31 Set Overflow A.d.E.R. 7. ALU 10 Architettura degli Elaboratori e delle Reti 7. ALU ALU a 32 bit ALU op a Zero Risultato Overflow b AA 2000/01 © Rosti/Bettini © Rosti/Bettini 21 A.d.E.R. 7. ALU 11