Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
17 / 10 / 2017
[PH] Appendice B.5
Punto della situazione
Oggi possiamo cominciare a «costruire» il nostro
primo componente del calcolatore!
Modello di calcolo
Il nostro obiettivo finale
Alla fine del corso saprete come funziona una versione semplificata
del processore MIPS
ALU
ALU (Arithmetic Logic Unit):
circuito combinatorio all’interno del processore
per l’esecuzione di istruzioni macchina di tipo
aritmetico/logiche:
• Funzioni logiche (AND, OR, NOR)
• Somme (add)
• Sottrazioni (sub)
• Istruzioni di confronto (slt, beq, bne)
La ALU
La ALU (a 32 bit) prende in ingresso 2 stringhe
a 32 bit:
Fornisce in uscita:
La stringa Result a 32 bit e due singoli bit:
Zero, Overflow (e eventualmente CarryOut).
Una ALU (Arithmetic Logic Unit)
• Costruiremo una ALU ad 1 bit e ne utilizzeremo Binvert CarryIn Operation
controllo 0 Less
CarryOut
di AND e OR b2
0
ALU2
Less
Result2
CarryOut
CarryIn
CarryIn
Sum
CarryOut
CarryOut
= ( a b) CarryIn + (a b)
CarryIn
Verificare per
esercizio
a
Sum
b
CarryOut
Addizione di stringhe a 32 bit
ALU i
ci
c32 c31 ci c2 c1
a31… ai…a2 a1a0 + ai si
ALU i
b31… bi…b2 b1b0 = bi
s31 … si … s2 s1 s0
ci+1
si bit di somma
ci bit di riporto / carry
Implementazione della ALU a 32 bit
Operation CarryIn Operation
CarryIn
a0 CarryIn
a Result0
ALU0
0 b0
CarryOut
1
Result a1 CarryIn
Result1
ALU1
b1
CarryOut
2
b
a2 CarryIn
Result2
ALU2
b2
CarryOut CarryOut
1-bit adder
a31 CarryIn
Result31
ALU31
b31
Sottrazione con la ALU (dalle slide 6)
Per eseguire A − B, la ALU eseguirà A + (− B).
A= an-1an-2 … a1 a0 e B= bn-1bn-2 … b1 b0
− B = bn-1bn-2 … b1 b0 + 1
cn cn-1 cn-2 c1 cn cn-1 cn-2 c1 1 c0=1
an-1an-2 … a1 a0 + an-1an-2 … a1 a0 +
bn-1bn-2 … b1 b0 + bn-1bn-2 … b1 b0 +
1=
sn-1 sn-2 … s1 s0
sn-1 sn-2 … s1 s0
e poi controlla l’overflow
E per la differenza (a – b) ?
• La differenza si ottiene a+ (-b).
• Per le proprietà del Complemento a 2, per ottenere l’opposto
di b, possiamo
– invertire i bit di b e
– sommare 1
Binvert Operation
• Una buona soluzione: CarryIn
– Binvert e
a
– Porre a 1 CarryIn di ALU0 0
(ricordiamolo quando
1
collegheremo le ALU) Result
b 0 2
CarryOut
Riepilogo e riferimenti
• Abbiamo costruito una componente che può
eseguire le seguenti operazioni: AND, OR,
somma, sottrazione.
• La completeremo in modo da supportare
anche: confronto <, test per l’uguaglianza e
NOR.
[PH] Appendice B.5
Esercizi
• Realizzare un multiplexer 4:1 utilizzando solo
multiplexer 2:1 e porte NOT (svolto)
• Esercizi da svolgere da [P]: 3.1, 3.5, 3.9, 3.10,
3.11; 4.1, 4.2, 4.3, 4.13 (vedi Domanda 2
appello febbraio 16 che segue), 4.19.
• Esercizi da svolgere da [PH], appendice B (C
nella terza edizione): B.7, B.8, B.9, B.10, B.11,
B.12, B. 14, B.24.
Appello 19 febbraio 2016
Domanda 2.
Un semi-addizionatore (o half-adder) è una rete logica con due
ingressi a e b e due uscite s e c, in cui s è il bit di somma di a con
b, e c il relativo riporto (in uscita). In altre parole, un semi-
addizionatore differisce da un addizionatore (completo) per il
fatto che non riceve un riporto in ingresso.
a. Mostrare la tavola di verità di un semi-addizionatore.
b. Costruire un circuito logico che realizzi un semi-addizionatore
utilizzando soltanto porte AND, OR, NOT, nel minor numero.
c. Costruire un circuito logico che realizzi un semi-addizionatore
utilizzando soltanto due multiplexer e una porta NOT.