Università degli Studi dell’Insubria
Dipartimento di Scienze Teoriche e Applicate Architettura degli elaboratori
Prof. Marco Tarini
Cognome e nome ____________________________ Matricola __________
Esercizio 1
Una calcolatrice in base 16 mostra le cifre con 7 led come indicato di seguito:
(a) Realizza un circuito ottimizzato che controlla il led centrale (orizzontale), quando in input riceve la rappresentazione in base 2 della cifra. Usa le mappe di Karnaough scrivendo l’espressione in 2nda forma normale. Puoi usare porte AND e OR con qualsiasi numero di ingressi.
(b) Simula il circuito e verifica il corretto funzionamento per la cifra B
(c) Calcola il tempo di commutazione se ipotizziamo che le porte ad 1,2,3,4 ingressi impiegano 2,3,4,5 nanosecondi rispettivamente.
Esercizio 2
Un’archiettura usa numeri in virgola mobile a 16 bit, con 5 bit di esponente (offset a 16). (l’esponente precede la mantissa e segue il segno)
(a) Quale numero è rappresentato da:
e da:
(la risposta può essere data in forma di frazione, se preferisci).
(b) Gli stessi word del punto precedente vengono ora interpretati come numeri interi senza segno.
Riporta il loro valore in base 16.
Esercizio 3
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.
(a) Si calcoli il tempo medio di accesso a memoria. Suggerimento: usare frazioni, non percentuali.
(b) Un progettista ha stimato che, incrementando il costo, si può ottenere uno a scelta dei seguenti due effetti: incrementare la dimensione della cache di secondo livello, dimezzandone i cache miss, oppure, decrementare il tempo d’accesso alla memoria principale di 20 ns. Determina la scelta migliore.
Esercizio 4
Disegna un circuito che funziona come segue. Il circuito ha un ingresso D da 3 bit, un ingresso N da 2 bit e un’uscita Z da un bit. N rappresenta un numero naturale.
Z vale:
0 quando il numero di uni in D è minore di N
1 quando il numero di uni in D è maggiore o uguale a N Ad es:
• quando N = 01 e D = 110, Z = 1, perché in D ci sono 2 uni e N=1 (2 ≥1)
• quando N = 10 e D = 100, Z = 0, perché in D c`è un solo uno e N=2 (1 < 2) Si possono usare i blocchi funzionali visti a lezione.
Evitare di usare più componenti del necessario.
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
2 Esercizio 5
Si ha a disposizione il datapath
mostrato a fianco (è uno di quelli visto a lezione). L’ALU dispone delle funzioni:
Add: R = A+B PassA: R = A PassB: R = A Sub: R = A – B Shl: R = shift left(A) Not: R = not A E come esiti
IsAPos = vale 1 se A è pos IsBPos = vale 1 se B è pos
Scrivi un microprogramma che realizza l’operazione SKIP-ONE-ON-GREATER-THAN rd rs
avente opcode = 12, e che ha l’effetto di saltare la prossima istruzione del programma quando il valore del registro memorizzato in rd è maggiore a quello di rs. Le istruzioni saltate quindi sono una oppure nessuna. Il registro 0 non va considerato un registro utente. Includi anche la fase di fetch.
Il micorprogramma deve consistere in una tabella che riporti, come input: la microistruzione, il codice dell’istruzione corrente, e gli esiti; e, come output: i comandi da madare al datapath e il passo successivo.
Esercizio 6
Completa il programma Assembly MIPS qui sotto.
Nella sezione dati, come si vede, viene memorizzato un array “voti”, terminato da 0, che contiene una sequenza di voti (di lunghezza non nota). Il programma deve stampare a schermo il numero degli esiti sufficienti (maggiori od uguali a 18).
Si forniscono qua a fianco le sintassi di alcune possibili istruzioni e qui sotto le chiamate di sistema
.
data voti:
.word 18 21 30 12 … 0 .globl main
.text main:
<tuo codice qui>
Codice chiamata (in $v0)
Effetto
(argomento/i in $a0, $a1…)
4 Stampa stringa
5 Stampa intero
Comando mips Significato la reg , etichetta load address li reg , valore load immediate move regA , regB copia il registro B nel
registro A 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
bgez reg , etichetta branch on greater or equal than zero bgtz reg , etichetta branch on greater than
zero
bnez reg , etichetta branch on not equal zero
beqz reg , etichetta branch on equal zero slt regA, regB, regC Set on less than
(se regB<regC, allora regA viene messo ad 1; altrimenti, a 0)