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
Scarica

Architettura degli Elaboratori e delle Reti ALU