Esempi ed esercizi Aritmetica degli elaboratori e algebra di

Esempi ed esercizi
Aritmetica degli elaboratori e
algebra di commutazione
Fondamenti di Informatica
Michele Ceccarelli
Università del Sannio
[email protected]
Angelo Ciaramella
DMI-Università degli Studi di Salerno
[email protected]
Sommario
Aritmetica dei calcolatori
Algebra di commutazione e moduli combinatori
Aritmetica dei calcolatori
Rappresentazione degli interi
• Conversioni di base
Rappresentazione in complemento a due
• Somma e sottrazione
• Problemi di overflow
Rappresentazione in virgola mobile (floating point representation)
• Conversioni di base
• Notazione scientifica
• Standard IEEE 754
Errori di arrotondamento nei dati e nei calcoli
• Il più piccolo numero rappresentabile
• Disastri attribuibili ad errori nella computazione numerica
Esempi, esercizi
Algebra di commutazione e
moduli combinatori
Algebra di commutazione
• Funzioni di commutazione e tavole di verità
• Proprietà dell’ algebra booleana
• Forma normale e canonica SOP (POS)
• Connettivi AND, OR e NOT
• Espressione SOP minimale
Moduli combinatori
• Codificatori e Decodificatori
• Memorie a sola lettura (ROM) e array logici programmabili (PLA)
• Multiplexer e Demultiplexer
Esempi, esercizi
Rappresentazione dei numeri
In generale dato un numero N, per la sua rappresentazione in base b,
si usa una stringa di cifre tale che la rappresentazione posizionale
risulta
intero
frazione
N ≡ (an an−1...a0 . a−1a−2 ...a−m )b
punto
base
mentre il valore di N è dato dalla formula
N≡
n
∑ ai b
i =− m
i
Conversioni di base (interi)
Due problemi sono importanti in relazione alla notazione binaria:
A. ottenere la rappresentazione binaria di un dato valore N
B. ottenere il valore di una rappresentazione binaria data
Binario decimale
• Sostituzione:
sostituzione di ciascuna delle cifre binarie diverse da zero nella
rappresentazione di N con il suo peso rappresentato in decimale e
somma dei termini risultanti
Esempio
N ≡ 10110102
N = 1x 2 6 + 1x 2 4 + 1x 23 + 1x 21 = 90
Conversioni di base (interi)
Binario decimale
• Procedura:
a. Porre Sn = an
b. Per i = n – 1, n – 2, …, 0 calcolare Si = ai + 2 x Si+1
c. Porre N = S0
Esempio
N ≡ 11010012
MSB
S6 =
1
S5 =
1
+
2x1
= 3
S4 =
0
+
2x3
= 6
S3 =
1
+
2x6
= 13
S2 =
0
+
2x13 = 26
S1 =
0
+
2x26 = 52
S0 =
1
+
2x52 = 105 =
LSB
N
Conversioni di base (interi)
Decimale binario
• Procedura:
a. Porre S0 = N
b. Per i = 1, …, n calcolare ai come resto e quoziente della
divisione di Si per due (Si = 2 x Si-1 + ai)
Esempio
N = 10510
S0 =
105
= 2x52 + 1
S1 =
52
= 2x26 + 0
S2 =
26
= 2x13 + 0
S3 =
13
= 2x6
+ 1
S4 =
6
= 2x3
+ 0
S5 =
3
= 2x1
+ 1
S6 =
1
= 2x0
+ 1
stop
LSB
MSB
Complemento a due
Il complemento a due ci permette di rappresentare i numeri interi
relativi binari.
Sequenza binaria
an−1an−2 ...a1a0
n− 2
Interi positivi
A = ∑ ai 2
i
con
an−1 = 0
con
an−1 = 1
i =0
Interi negativi
A = − an−1 2
n −1
n−2
+ ∑ ai 2
i =0
i
Complemento a due
Caratteristiche:
• Unica rappresentazione per lo zero
• Per i numeri negativi il bit di segno è sempre 1
• Facilità nel calcolare l’opposto di un numero binario
• Facilità nel convertire un numero binario in complemento a due,
rappresentato su n bit, nel medesimo numero su di più di n bit
Complemento a due
Calcolo dell’opposto di un numero binario
1. Complementare ogni bit della sequenza binaria
2. Sommare 110 al risultato ottenuto
Calcolo della somma di due numeri binari
1. Addendi sommati bit a bit dall’ LSB al MSB
2. Propagazione dei riporti alle cifre più significative, verso
sinistra
Calcolo della sottrazione di due numeri binari
1. Il sottraendo va trasformato nel suo opposto
2. Somma del sottraendo con il minuendo
Complemento a due (Esempio)
Calcolare la somma e la sottrazione dei seguenti interi, usando 4 bit
A = 610
B = 710
Addizione
A ≡ 0110 2
B ≡ 01112
Sottrazione
0
1
1
12 =
710
0
1
1
12 =
710
0
1
1
02 =
610
1
0
1
02 =
-610
1
1
0
12 =
1310
0
0
0
12 =
110
Può accadere che la somma degli addendi abbia un valore troppo
grande per essere rappresentato dal numero di bit (traboccamentooverflow).
Complemento a due (Esercizi)
Effettuare le seguenti somme considerando l’operando a 6 bit
A=13 ; B= 23
A=13 ; B= 8
overflow
A=-13 ; B= -23
A=-13 ; B= -8
A=25 ; B= -13
A = 13 ; B= -25
Esercizi (C2.0)
Scrivere il risultato della somma in complemento a due dei numeri
10 e –28 su 6 bit (il 6° bit è quello del segno) ed indicare se si
verifica overflow.
Esercizi (C2.1)
A=13 ; B= 23
B (binario)
A (binario)
S0 =
13
= 2x6
+ 1
S0 =
23
= 2x11 + 1
S1 =
6
= 2x3
+ 0
S1 =
11
= 2x5
+ 1
S2 =
3
= 2x1
+ 1
S2 =
5
= 2x2
+ 1
S3 =
1
= 2x0
+ 1
S3 =
2
= 2x1
+ 0
S3 =
1
= 2x0
+ 1
A10 ≡ 0011012
B10 ≡ 0101112
Somma
overflow = 0
1
1
1
1
1
0
0
1
1
0
1
0
1
0
1
1
1
1
0
0
1
0
0
-28 errato
Esercizi (C2.2)
A= 13 ; B= 8
B (binario)
S0 =
8
= 2x4
+ 0
S1 =
4
= 2x2
+ 0
S2 =
2
= 2x1
+ 0
S3 =
1
= 2x0
+ 1
A10 ≡ 0011012
B10 ≡ 001000 2
Somma
overflow = 0
0
1
0
0
0
0
0
1
1
0
1
0
0
1
0
0
0
0
1
0
1
0
1
21 corretto
Esercizi (C2.3)
A=-13 ; B= -23
1310 ≡ 0011012
2310 ≡ 0101112
A10 ≡ 1100112
B10 ≡ 1010012
Somma
overflow = 1
0
0
0
1
1
1
1
0
0
1
1
1
0
1
0
0
1
0
1
1
1
0
0
28 errato
Esercizi (C2.4)
A=-13 ; B= -8
B10 (binario)
S0 =
8
= 2x4
+ 0
S1 =
4
= 2x2
+ 0
S2 =
2
= 2x1
+ 0
S3 =
1
= 2x0
+ 1
A10 ≡ 1100112
B10 ≡ 111000 2
Somma
overflow = 1
1
0
0
0
0
1
1
0
0
1
1
1
1
1
0
0
0
1
0
1
0
1
1
-21 corretto
Esercizi (C2.5)
A= 25 ; B= -13
A10 (binario)
S0 =
25
= 2x12 + 1
S1 =
12
= 2x6
+ 0
S2 =
6
= 2x3
+ 0
S3 =
3
= 2x1
+ 1
S3 =
1
= 2x0
+ 1
A10 ≡ 0110012
B10 ≡ 1100112
Somma
overflow = 1
1
0
0
1
1
0
1
1
0
0
1
1
1
0
0
1
1
0
0
1
1
0
0
12 corretto
Esercizi (C2.6)
A= 13 ; B= -25
B10 ≡ 0110012
A10 ≡ 0011012
B10 ≡ 1001112
Somma
overflow = 0
0
1
1
1
1
0
0
1
1
0
1
1
0
0
1
1
1
1
1
0
1
0
0
-12 corretto
Esercizi (C2.7)
L’esame degli esercizi presentati conduce alla seguente regola
per il rilevamento del traboccamento
A
B
≥0
<0
≥0
Traboccamento
se
cncn-1 = 01
Sempre corretto
<0
Sempre
corretto
Traboccamento
se
cncn-1 = 10
Dove cn e cn-1 sono rispettivamente il riporto del bit di
overflow e quello di segno
Rappresentazione in virgola mobile
La notazione scientifica è caratterizzata dall’avere un’unica cifra a sinistra della
virgola. Un numero reale rappresentato in notazione scientifica che non presenti
uno zero in testa è detto normalizzato
1.010 x10 −9
In binario la notazione scientifica normalizzata ha la seguente forma:
1.xxxxxxxxxx 2 yyyy
La notazione scientifica viene chiamata rappresentazione in virgola mobile
(floating point representation)
Vantaggi
• semplifica lo scambio di insiemi di dati contenenti numeri reali
• semplifica gli algoritmi per operazioni aritmetiche su numeri reali
• permette di aumentare la precisione con cui memorizzare numeri
reali in in parole di dimensione prefissata
Rappresentazione in virgola mobile
Rappresentazione in virgola mobile in uso nel linguaggio macchina
del processore MIPS (float-singola precisione)
s
1 bit
Esponente
(E)
parte frazionaria
(F)
23 bit
8 bit
s è il segno del numero (1 negativo)
esponente rappresenta il valore dell’esponente (con segno)
parte frazionaria rappresenta il valore delle cifre a destra della
virgola (rappresentazione in modulo e segno)
Rappresentazione
(−1) S x F x 2 E
Algebra di commutazione
• Una funzione binaria di variabili binarie si dice funzione di
commutazione. Un circuito o rete combinatoria è un sottosistema
digitale che realizza una funzione di commutazione.
• Il modo convenzionale per descrivere una funzione di commutazione
è tramite la tavola di verità
• Una espressione booleana ha queste caratteristiche:
Le variabili e le costanti sono espressioni
Se E1 ed E2 sono espressioni, lo sono anche i negati, E1*E2 ed
E1 + E2
descrive
Una rete combinatoria
con ingressi assegnati
espressione
realizza
Algebra di commutazione
• Le tecniche per la progettazione di reti combinatorie si basano
sulle proprietà di un sistema chiamato algebra booleana
Tavole di verità dei connettivi AND, OR e NOT
x2
x1
AND
x2
x1
OR
0
0
0
0
0
0
0
1
0
0
1
1
1
0
0
1
0
1
1
1
1
1
1
1
Connettivi
x
NOT
0
1
1
0
Algebra di commutazione
Proprietà dell’algebra di commutazione
1. x = x
involuzione
2. x1 • x2 = x2 • x1 e x1 + x2 = x2 + x1 commutatività
3. x • x = x x+x = x
idempotenza
4. x • 1 = x x + 0 = x
5. x • 0 = 0 x + 1 = 1
6. x • x = 0 x + x = 1
complementarietà
7. x(x+y) = x x + xy = x
assorbimento
8. x • (y + z) = xy + yz
x + yz = (x + y) • (x + z)
distribuitività
9. (xy)z=x(yz) (x+y) + z = x + (y + z) associatività
10. xy = x + y
leggi di De Morgan
x+y = x•y
Algebra di commutazione
• Una espressione è in forma normale SOP (somma di prodotti)
quando è l’OR di AND di letterali. E’ in forma canonica se tutti
i termini prodotto sono tutti mintermini (mi) (1 nella tvola di verità)
• Una espressione è in forma normale POS (prodotti di somme)
quando è l’AND di OR di letterali. E’ in forma canonica se tutti
i termini somma sono tutti maxtermini (Mi) (0 nella tavola di verità)
• Le tecniche di minimizzazione ci permettono di ottenere una
espressione SOP normale minimale
Moduli combinatori
Codificatori
È un modulo con s linee di ingresso L1,L2,…,Ls ed n linee di uscita
yn-1, … ,y0. A ciascuna linea di ingresso è associato un numero intero
non nullo (li f(i)). Un codificatore produce la codifica dell’intero
associato alla linea attiva.
a b c
≡
a
b
esempio input f(i) y y y y
c
3
2
1
0
L1
3
0 0 1 1
L2
5
0 1 0 1
L3
6
0 1 1 0
L4
9
1 0 0 1
L5
10
1 0 1 0
L6
12
11 0 0
L7
13
1 1 0 1
=>
L1
L2
L3
L4
L5
L6
L7
y3 y2 y1
y0
Moduli combinatori
Decodificatori
È un modulo con n linee di ingresso xn-1,…,x0 ed s linee di uscita
u1, … ,us. A ciascuna linea di uscita è associato un numero intero
non nullo j. Un codificatore produce la codifica dell’intero
associato alla linea attiva.
a b
≡
a
b
c
Decodificatore parallelo 2-a-4
x0
≡
x1
u0 u1 u2
u3
c
x0
x1
u0
u1
u2
u3
Simbolo convenzionale
Moduli combinatori
• Se poniamo in cascata un decodificatore e un codificatore
otteniamo un nuovo modulo, il transcodificatore.
• La nozione di transcodificatore può essere rapidamente estesa
per generare le memorie a solo lettura (ROM) o gli array
logici progammabili (PLA)
• ROM PLA
Applicazione dell’approccio ROM alla espressione minimale
Moduli combinatori (Esercizio 1)
Ricavare la tavola di verità
Decodificatore 3 a 8
x0
x1
x2
y5 y4 y3 y2 y1
Moduli combinatori (Esercizio 2)
Ricavare la tavola di verità