Cognome e Nome: Matricola:
Architettura degli Elaboratori A - Compito del 21 Giugno 2021
Usare un foglio separato per rispondere alle domande e risolvere gli esercizi, specificando nell’intestazione: Titolo del corso (Architettura degli Elaboratori – Modulo I ), Data esame, Cognome e Nome, Matricola.
Non `e possibile consultare libri o appunti.
Domande
1. Si consideri l’operazione A+B (con A e B numeri binari) nei seguenti casi:
(a) A, B sono numeri naturali senza segno rappresentati su 8 bit;
(b) A, B sono numeri interi espressi in complemento a due su 8 bit.
Si discutano le condizioni che possono causare overflow e come esse possono essere rilevate nei due casi elencati.
2. Scrivere la tabella di verit`a della funzione logica F = (A+B)C + A∼C e realizzare la funzione attraverso un multiplexer.
3. Si descriva il principio di progetto della CPU a singolo ciclo vista a lezione. Dire quali sono le risorse replicate per permettere l’esecuzione delle istruzioni e per quale motivo.
Esercizio 1
Dati i due numeri esadecimali A=C2C60000 e B=41DC0000 1. tradurre i due numeri in binario
2. interpretare le sequenze di bit ottenuti come numeri FP espressi secondo lo standard IEEE754 in singola precisione e tradurle in decimale;
3. eseguire poi la somma usando l’algoritmo di somma di numeri FP e specificando tutti i passaggi. Tradurre il risultato in decimale;
4. rappresentare il risultato ottenuto secondo lo Standard e tradurre la sequenza di bit in esadecimale.
Soluzione
1. Traduzione in binario:
A = 1 10000101 10001100000000000000000 B = 0 10000011 10111000000000000000000
2. Interpretazione delle sequenze come numeri FP IEEE754 in singola precisione:
SA = 1
EA = 100001012 = 13310 = 127 + 6 MA = 1+ 0.100011
Quindi A = - 1,100011 * 26 = - 11000112= - 9910
SB = 0
EB = 100000112 = 13110= 127 + 4 MB = 1+ 0.10111
Quindi B = + 1,10111 * 24= 11011,12 = 27,510
3. Somma dei numeri FP:
Allineamento esponenti:
MB = 1,10111 * 24= 0,0110111 * 26
I due numeri hanno segno opposto. Introduco la rappresentazione in complemento a due, passando dal valore assoluto:
|A| = 01,100011 * 26 con A negativo => A = 10,011101 * 26
|B| = 00,0110111 * 26 con B positivo => B = 00,0110111 * 26 Somma delle mantisse:
000 111110 A 10,0111010 + B 00,0110111 =
--- C 10,1110001
Rappresentazione del risultato in modulo e segno:
C = 10,1110001 * 26=> C = - 01,0001111 * 26 = -1000111,1 = -71,5 Normalizzazione risultato: non necessaria
4. Rappresentazione secondo lo Standard:
SC = 1
EC = 100001012= 13310 = 127 + 6 MC = 1+ 0,0001111
Cio`e:
C = 1 10000101 00011110000000000000000
Rappresentazione del risultato in esadecimale: C = C28F0000.
Esercizio 2
Si vuole realizzare un circuito combinatorio con quattro variabili in ingresso A,B,C,D e una funzione di uscita F.
Considerare le seguenti condizioni che descrivono il comportamento del circuito:
• F `e vera quando A `e falsa e C,D sono vere;
• F `e vera quando B `e vera e D `e falsa;
• F `e don’t care quando gli ingressi sono tutti falsi oppure tutti veri.
Si richiede di:
1. scrivere la tabella di verit`a di F;
2. scrivere F in forma canonica SP;
3. minimizzare F usando sempre la forma canonica SP;
4. disegnare il circuito finale.
Soluzione
1. La tabella di verit`a del circuito `e la seguente:
A B C D | F
---
0 0 0 0 | X
0 0 0 1 | 0
0 0 1 0 | 0
0 0 1 1 | 1
0 1 0 0 | 1
0 1 0 1 | 0
0 1 1 0 | 1
0 1 1 1 | 1
1 0 0 0 | 0
1 0 0 1 | 0
1 0 1 0 | 0
1 0 1 1 | 0
1 1 0 0 | 1
1 1 0 1 | 0
1 1 1 0 | 1
1 1 1 1 | X
2. F = ∼A∼BCD + ∼AB∼C∼D + ∼ABC∼D + ∼ABCD + AB∼C∼D - ABC∼D.
3. La mappa di Karnaugh `e la seguente:
C D
A B
00 01 11 10
00 01
11 10
1
1 1 1
1 1
X
X
Si ricava F = ∼ACD + B∼D.
4. Il circuito risultante si ricava direttamente dall’equazione minima.
Esercizio 3
Una macchina M esegue un dato benchmark in 18 secondi. Si supponga di riuscire a migliorare M in modo che tutte le operazioni in virgola mobile siano 2 volte pi`u veloci. Quale sar`a lo speedup nel caso in cui 1/3 del tempo di esecuzione del benchmark sia impiegato per l’esecuzione delle operazioni in virgola mobile?
Soluzione
Applico la legge di Amdahl: ExeTimeaf ter = (1/s · ExeTimebef ore) + [(1 - 1/s) · ExeTimebef ore] / n ExeTimeaf ter = (2/3 · ExeTimebef ore) + [(1/3) · ExeTimebef ore]/2 = 2/3 · 18 + (1/3 · 18)/2 = 12+3 = 15.
Da questo si ricava: SpeedUp = ExeTimebef ore/ExeTimeaf ter =18/15 = 1,2
Dunque, per il benchmark considerato, il miglioramento delle operazioni in virgola mobile porta ad una macchina 1,2 volte pi`u veloce.