Circuiti Aritmetico-Logici in un PC, le operazioni aritmetiche e logiche tra i dati sono svolte nell’ALU (Arithmetic Logic Unit) con la supervisione della CU (Control Unit). In particolare la ALU può svolgere: operazioni aritmetiche: +,-,*,/ operazioni logiche: AND, OR, NOT, EX-OR, complemento a 1, a 2,… operazioni di scorrimento e rotazione architettura di Von Neumann esempio: la CU preleva dalla memoria un’istruzione di somma (es. ADD AX,BX) la CU comanda la ALU, mediante opportuni segnali di controllo, ed eseguire la somma dei dati contenuti nei due registri AX, BX il risultato viene memorizzato nel registro AX
Somma binaria ad ogni passo del processo di addizione: si esegue la somma di 3 bit: il bit del primo addendo, il corrispondente bit del secondo addendo e un bit di riporto dalla posizione precedente il risultato produce 2 bit: un bit di somma e un bit di riporto che sarà sommato nella posizione successiva questo processo è seguito per i bit di ciascun peso
Sommatore completo (FA, Full Adder) B Cin S Cout 1
Sommatore parallelo (ripple carry)
Propagazione del riporto tcarry_out=n*tP,FA all’aumentare del numero di bit il tempo di generazione del carry_out diventa eccessivo sommatori Look-Ahead-Carry (LAC): utilizzano delle porte logiche per generare il riporto in anticipo, in quanto ognuno di essi può essere espresso come funzione logica solo degli ingressi A e B e del carry_in: es: i sommatori LAC realizzano un buon compromesso tra velocità di risposta e complessità circuitale
Sottrazione binaria qualunque sottrazione binaria (es: 45-18=27) può essere trasformata in una somma utilizzando la rappresentazione in complemento a 2 del numero negativo:
Impiego del sommatore per eseguire differenze
ALU L’unità aritmetico logica (ALU) è in grado di compiere operazioni logiche ed aritmetiche su dati espressi in forma binaria A, B = dati di ingresso (operandi) R = risultato carry = (eventuale) riporto generato in uscita S0…S3 (linee di selezione) = definiscono l’operazione da compiere l’ALU è un circuito combinatorio e programmabile
Unità Logica AB A+B AB not A nell’unità logica (LU), ciascun bit del primo operando viene portato, insieme al corrispondente bit del secondo operando, all’ingresso di diverse porte logiche; l’uscita di ciascuna porta viene portata ad un MUX perciò, tramite le linee di selezione, è possibile scegliere l’operazione voluta S1 S0 operazione AB 1 A+B AB not A
Unità Aritmetica per costituire l’unità aritmetica (AU) è necessario utilizzare 8 full-adder in cascata, in modo che il Cout di uno sia collegato al Cin del successivo; ad ogni FA vengono poi inviati direttamente i bit del primo operando, mentre attraverso un MUX è possibile inviare al secondo ingresso del FA: 00000000 11111111 B not B le linee S1,S0 agiscono direttamente sugli ingressi di selezione del MUX mentre l’ulteriore segnale di selezione S2 consente di immettere o meno un bit di carry all’ingresso del primo FA
Unità Aritmetica A+0=A A-1 A+B A-B-1 A+1 A A+B+1 A-B S2 S1 S0 operazione A+0=A 1 A-1 A+B A-B-1 A+1 A A+B+1 A-B
Unione dei sottosistemi LU, AU