Circuiti Aritmetico-Logici in un PC, le operazioni aritmetiche e logiche tra i dati sono svolte...

12
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

Transcript of Circuiti Aritmetico-Logici in un PC, le operazioni aritmetiche e logiche tra i dati sono svolte...

Page 1: Circuiti Aritmetico-Logici in un PC, le operazioni aritmetiche e logiche tra i dati sono svolte nellALU (Arithmetic Logic Unit) con la supervisione della.

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

Page 2: Circuiti Aritmetico-Logici in un PC, le operazioni aritmetiche e logiche tra i dati sono svolte nellALU (Arithmetic Logic Unit) con la supervisione della.

Somma binaria

1111

111

0000

000

+

0

1

1

1

0

0

0

1

1

1

1

0

1

0

1

0

0

addendo 1(A X=45)

addendo 2(B X=77)

S O M M A (122)

R IP O R TO

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

Page 3: Circuiti Aritmetico-Logici in un PC, le operazioni aritmetiche e logiche tra i dati sono svolte nellALU (Arithmetic Logic Unit) con la supervisione della.

Sommatore completo (FA, Full Adder)

FA

AB

S

C in C out

A B Cin S Cout

0 0 0 0 0

0 0 1 1 0

0 1 0 1 0

0 1 1 0 1

1 0 0 1 0

1 0 1 0 1

1 1 0 0 1

1 1 1 1 1

inininin CBACBACBACBAS

inin CBABACBABA )()(

inin CBACBA )()(

inCBA )(

ininout CACBBAC

A

B

C in

S

C out

Page 4: Circuiti Aritmetico-Logici in un PC, le operazioni aritmetiche e logiche tra i dati sono svolte nellALU (Arithmetic Logic Unit) con la supervisione della.

Sommatore parallelo (ripple carry)

01011110

111 000 10

(0)

a0 b0

FA

A B

S

C inC out

FA

A B

S

C inC out

a1 b1

s0s1

FA

A B

S

C inC out

a7 b7

s7

...........carry_out

A=45

B=77

100

SOMMA122

1111 0000

carry_in

Page 5: Circuiti Aritmetico-Logici in un PC, le operazioni aritmetiche e logiche tra i dati sono svolte nellALU (Arithmetic Logic Unit) con la supervisione della.

Propagazione del riporto

a0 b0

FA

A B

S

C inC out

FA

A B

S

C inC out

a 1 b 1

FA

A B

S

C inC out

a 7 b 7

carry_out carry_ inFA

A B

S

C inC out

a2 b2

FA

A B

S

C inC out

a 3 b 3

FA

A B

S

C inC out

a 4 b 4

FA

A B

S

C inC out

a 5 b5

FA

A B

S

C inC out

a6 b6

s0s1s2s3s4s5s6s7

01234567 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: incarrybabababaCC outin _)()(,, 0000111112

i sommatori LAC realizzano un buon compromesso tra velocità di risposta e complessità circuitale

Page 6: Circuiti Aritmetico-Logici in un PC, le operazioni aritmetiche e logiche tra i dati sono svolte nellALU (Arithmetic Logic Unit) con la supervisione della.

Sottrazione binaria

0000 1100+18

1111 0011com plem ento a 1 +

1som m a 1

qualunque sottrazione binaria (es: 45-18=27) può essere trasformata in una somma utilizzando la rappresentazione in complemento a 2 del numero negativo:

0111 1011 -18

+1111 0000

0111 1011

1010 1100

11111

45 +

-18= =

27

Page 7: Circuiti Aritmetico-Logici in un PC, le operazioni aritmetiche e logiche tra i dati sono svolte nellALU (Arithmetic Logic Unit) con la supervisione della.

Impiego del sommatore per eseguire differenze

S O M M A TO R Ea 8 b it

A 0A 1A 2A 3A 4A 5A 6A 7B 0B 1B 2B 3B 4B 5B 6B 7

S 0S 1S 2S 3S 4S 5S 6S 7

(1 )carry_incarry_out

a0a1a 2a3a 4a5a 6a7b 0b 1b2b 3b4b 5b6b 7

A-B

Page 8: Circuiti Aritmetico-Logici in un PC, le operazioni aritmetiche e logiche tra i dati sono svolte nellALU (Arithmetic Logic Unit) con la supervisione della.

ALU

A LUA (a 0...a 7)

B (b 0...b 7)R (r0...r7)

carry

S 3 S 2 S 1 S 0

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

Page 9: Circuiti Aritmetico-Logici in un PC, le operazioni aritmetiche e logiche tra i dati sono svolte nellALU (Arithmetic Logic Unit) con la supervisione della.

Unità Logica

MUXda 4 a 1

a 0b 0

S 0S 1

r0

MUXda 4 a 1

a 7b 7

S 0S 1

r7

...

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

0 0 AB0 1 A+B1 0 AB1 1 not A

Page 10: Circuiti Aritmetico-Logici in un PC, le operazioni aritmetiche e logiche tra i dati sono svolte nellALU (Arithmetic Logic Unit) con la supervisione della.

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

MUXda 4 a 1

S 0S 1

b0

0

1FA

A

B

a0

S 2

1

C in r0

C out

S

MUXda 4 a 1

S 0S 1

b7

0

1FA

A

B

a7

C in r7

C out

S

......

Page 11: Circuiti Aritmetico-Logici in un PC, le operazioni aritmetiche e logiche tra i dati sono svolte nellALU (Arithmetic Logic Unit) con la supervisione della.

Unità Aritmetica

MUXda 4 a 1

S 0S 1

b 0

0

1FA

A

B

a 0

S 2

1

C in r0

C out

S

MUXda 4 a 1

S 0S 1

b 7

0

1FA

A

B

a 7

C in r7

C out

S

......

S2 S1 S0 operazione

0 0 0 A+0=A0 0 1 A-10 1 0 A+B

0 1 1 A-B-11 0 0 A+11 0 1 A1 1 0 A+B+11 1 1 A-B

Page 12: Circuiti Aritmetico-Logici in un PC, le operazioni aritmetiche e logiche tra i dati sono svolte nellALU (Arithmetic Logic Unit) con la supervisione della.

Unione dei sottosistemi LU, AU

A (a 0...a 7)B (b 0...b 7)

R (r0...r7)

S 3

S 2 S 1 S 0

LU

A U

M U XS 1 S 0