Università degli Studi dell’Insubria
Dipartimento di Scienze Teoriche e Applicate Architettura degli Elaboratori
Prof. Marco Tarini
Cognome e nome Matricola
Esercizio 1 (5 pts)
Si desidera un circuito combinatorio che realizza la funzione da a,b,c,d a Z definita dalla tavola delle verità qui a fianco .
Realizzare il circuito, utilizzando le mappe di Karnaugh, e sintetizzando l’espressione come prodotto di somme.
Esercizio 2 (4 pts)
Mostare la rappresentazione del numero 52:
in complemento a due su 8 bit, esteso in segno a 12 bit
in virgola mobile con 6 bit di mantissa e 5 bit di esponente (offset a 16).
Esercizio 3 (3 pts)
Scrivere la tabella di verità dell’espressione: (a NAND b) XOR a .
Esercizio 4 (6 pts)
Si supponga di avere a disposizione il datapath mostrato a fianco (è quello visto a lezione). L’ALU dispone delle funzioni:
Add: R = A+B Pass: R = B Sub: R = A – B IsZero: R = A and B Shl: R = shift left(A)
Not: R = not A ALU
PC
MAR MDR
IR
Reg. file R0..Rn
Temp Addr
Data
V
Z
A B
R 4
select
ALUctrl MUX
Zin Zout Vin MDRin
Ri_in Ri_out Temp_in Temp_out
IRin ZExtout SignExtout
MDRout MARin
PCin PCout
Extender
CPU BUS
Si scriva un microprogramma che realizza l’operazione StoreTwo Rd Rs Rt
avente opcode = 42 e che ha l’effetto di assegnare il valore di Rd alla locazione di memoria indicata da Rs, e Rt in quella immediatamente successiva (quattro bytes avanti). Si richiede di minimizzare il numero di microistruzioni. Non è richiesta la fase di fetch: il microprogramma parte dal passo di indice 3, dopo la fase di fetch.
a b c d Z 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 1 0 1 0 0 1 0 1 0 1 X 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 0
Esercizio 5 (4 pts)
Si desidera realizzare un circuito avente le seguenti caratteristiche:
L’ingresso A, da 5 bit, è un numero intero rappresentato in complemento a due.
L’ingresso B, da 5 bit, è un numero naturale.
L’uscita U rappresenta un numero intero in complemento a due su 6 bit: U = |A|+B.
Progettare il circuito. Si possono usare sommatori, multiplexer, selezionatori, etc.
Esercizio 6 (3 pts)
In un sistema di memoria con due livelli di cache, si ha:
hit rate di livello 1 = 75%, tempo di accesso 4 ns;
hit rate di livello 2 = 80%, tempo di accesso 10 ns;
tempo di accesso alla memoria principale: 120 ns.
Si calcoli il tempo medio di accesso a memoria. Suggerimento: usare frazioni, non percentuali.
Esercizio 7 (6 pts)
Si completi il programma Assembly MIPS qui sotto.
Nella sezione dati, come si vede, viene memorizzato un array, terminato da 0, che contiene una sequenza di anni di nascita. Il programma deve riempire un secondo array, “età” (il cui spazio, come si vede, è già allocato), che contiene le rispettive età alla mezzanotte del 31 Dic 2016. Non è necessario che il secondo array sia terminato da 0.
Indizio: bastano meno di una dozzina fra istruzioni ed etichette.
Per agevolare la scrittura, si fornisce qua a fianco una tabella con le sintassi di alcune possibili istruzioni.
Scrivere solo il codice da sostituire alla parte indicata.
.
data
anni_nascita:
.word 1978 2001 1999 2010 0 eta: .space 16
.globl main .text
main:
<il tuo codice viene copiato qui>
over:
# exit program li $v0 10
syscall
la reg , etichetta load address (copia l’indirizzo nel registro)
li reg , valore load immediate (copia il valore nel registro)
lw reg , offset(reg) load word
(l’offset è opzionale) sw reg , offset(reg) store word
(l’offset è opzionale) add reg , reg , reg add (somma) addi reg,reg,valore add immediate sub reg , reg , reg subtract (differenza)
j etichetta jump
jr reg jump register
jal etichetta jump and link bnez reg , etichetta branch on not equal
zero
beqz reg , etichetta branch on equal zero