Università degli Studi dell’Insubria
Dipartimento di Scienze Teoriche e Applicate
Architettura degli elaboratori: Esame del 6/6/2017 Prof. Marco Tarini
Nome e Cognome: Matricola:
Tempo Massimo 2h e 15m
Esercizio 1 (tempo suggerito: 30 minuti: 20+9+1)
Data la funzione da a,b,c,d a R definita dalla tavola delle verità qui a fianco:
1.a) Utilizzando le mappe di Karnaugh, scrivi l’espressione equivalente ottimizzata sia come prodotto di somme, sia come somma di prodotti (specificando quale è quale).
1.b) Disegna i due circuiti corrispondenti (uno per ciascuna espressione), usando solo porte binarie e la porta NOT.
1.c) Quale dei due circuiti è più veloce, se le porte OR, AND e NOT hanno un tempo di commutazione di 0.3, 0.2, e 0.1 ns rispettivamente?
Esercizio 2 (tempo suggerito: 15 minuti)
Il signor Salviati afferma che le due espressioni (A )B xorA e (A )B xorB siano equivalenti. Il signor Simplicio lo nega con forza. Chi ha ragione? Come lo dimostreresti?
Esercizio 3 (tempo suggerito: 15 minuti) Un’architettura possiede registri di 6 bit.
3.a) Scrivi le rappresentazioni in complemento a due di A = 10 e B = -14.
3.b) Elabora la somma C = A+B svolgendo l’opportuna operazione sulle due rappresentazioni di A e B ottenenendo la rappresentazione in complemento a 2 di C.
3.c) Interpreta C come natuale in base 10, verificando così la correttezza del tuo procedimento.
Esercizio 4 (tempo suggerito: 15 minuti)
Disegna un circuito combinatorio che effettua la moltiplicazione fra due numeri a 4 bit dati,
utilizzando i blocchi funzionali standard come quelli visti a lezione (ma non, ovviamente, quello che effettua la moltiplicazione!).
(segue ) a b c d R
0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 1 0 0 0 0 1 0 1 1 0 1 1 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 1 1 1 0 1 0 0 1 0 1 1 1 1 1 0 0 0 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1
2 Esercizio 5 (tempo suggerito: 60 minuti :-- 40 + 20)
Hai a disposizione l’archietettura mostrata a fianco (è una di quelle visto a lezione). L’ALU ha come esiti i bit isZero e isPos, e dispone delle funzioni:
add: R = A+B pass: R = B sub: R = A – B
isAZero: isZero = 1 se A vale zero isBZero: isZero = 1 se B vale zero isAPos: isPos = 1 se A è positivo isBPos: isPos = 1 se B è positivo not: R = not A
5.a) Scrivi un microprogramma, come tabella con le colonne Step, Opcode, Esiti, Oridini, e NextStep, che realizza l’operazione:
order Rs Rd
avente opcode 60, che ha l’effetto di scambire fra loro i valori dei due registri indicati, se il primo è maggiore del secondo (dopo l’operazione, dunque, i due registri saranno sempre ordinati in ordine crescente, Rs ≤ Rd, indipendentemente dalloro valore iniziale). Ovviamente, nessuno degli altri registri utente deve essere “sporcato” dall’operazione. Minimizza il numero di microistruzioni utilizzate. Non è richiesta la fase di fetch, che occupa i passi 0,1,2 e 3 di ogni istruzione.
5.b) Anche avvalendosi di questa nuova istruzione, scrivi un piccolo programma MIPS che ordina i tre numeri dati, che sono registrati nella sezione dati sotto
làetichetta °numeri”, come illustrato qui sotto:
.
data numeri:
.word <i tre valori sono qui>
.globl main .text
main:
<il tuo codice va qui>
over:
# exit program li $v0 10
syscall
Per agevolare il compito, qui a fianco è riporatta la sintassi e la semantica di acluni altre istruzioni MIPS.
la rd , etichetta load address (copia l’indirizzo nel registro) li rd , valore load immediate
(copia il valore nel registro) lw rd , offset(rs) load word
(l’offset è opzionale) sw rd , offset(rs) store word (l’offset è opzionale) add rd , rs , rt add (somma) addi rd, rs, valore add immediate sub rd , rs , rt subtract
(differenza)
j etichetta jump
jr rd jump register
jal etichetta jump and link bnez rd , etichetta branch on not
equal zero beqz rd , etichetta branch on equal
zero